Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Как раскидать 1 числовой массив на 3 при условии...

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
vitek74



Зарегистрирован: 31.10.2007
Сообщения: 5

СообщениеДобавлено: Ср Окт 31 2007 16:27    Заголовок сообщения: Как раскидать 1 числовой массив на 3 при условии... Ответить с цитатой

Всем откликнувшимся, ПРИВЕТ!
Помогите или направьте...
Нужно из 1-го числового массива создать 3 массива примерно равные по сумме значений.
Это необходимо для подсчета баланса мощностей в однофазной сети. Есть общая мощность которую нужно раскидать по фазам (А,В,С) так чтобы нагрузка на фазах была равномерной.
Что-то я сам не могу придумать алгоритм... (туплю наверное Confused )
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Bjorndalen



Зарегистрирован: 18.07.2007
Сообщения: 29

СообщениеДобавлено: Чт Ноя 01 2007 08:27    Заголовок сообщения: Ответить с цитатой

3 новых массива должны быть равного размера?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alex_soldier



Зарегистрирован: 08.08.2007
Сообщения: 57
Откуда: Россия

СообщениеДобавлено: Чт Ноя 01 2007 17:45    Заголовок сообщения: Ответить с цитатой

Поделить на 3 массива, посчитать суммы, а потом парными заменами попытаться выровнять их.
P.S. Если не изменяет память, это называется Метод Потенциалов!
_________________
Мир Идей


Последний раз редактировалось: Alex_soldier (Вт Ноя 13 2007 10:16), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
b1ood



Зарегистрирован: 02.11.2007
Сообщения: 4

СообщениеДобавлено: Пт Ноя 02 2007 02:46    Заголовок сообщения: Ответить с цитатой

Как вариант

массив 1: max_1 max_6 max_7 max_12 .....
массив 2: max_2 max_5 max_8 max_11 .....
массив 3: max_3 max_4 max_9 max_10 .....

max_1 - самое максимальное, max_2 - максимальное из оставшихся
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Пт Ноя 02 2007 10:21    Заголовок сообщения: Ответить с цитатой

Вообще-то задача переборная. Т.е. в общем случае оптимальное решение можно найти только при помощи полного перебора. Так что, если нагрузок не много, то можно решать полным перебором. Если много, то не получится

Но, к счастью можно придумать много эвристических алгоритмов. Например, отсортировать массив по возрастанию и начиная с самых больших элементов распихивать по 3м массивам. Берется самый большой элемент из нераспределенных и помещается в тот массив, где меньше сего нагрузка.

Если же нагрузок много, качество решения должно быть высоким, а вычислительных ресурсов мало, то придется прибегнуть к генетическим алгоритмам. Хотя, это, как правило, лишнее...
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
vitek74



Зарегистрирован: 31.10.2007
Сообщения: 5

СообщениеДобавлено: Пн Ноя 05 2007 14:39    Заголовок сообщения: Ответить с цитатой

Kefir писал(а):
Например, отсортировать массив по возрастанию и начиная с самых больших элементов распихивать по 3м массивам. Берется самый большой элемент из нераспределенных и помещается в тот массив, где меньше сего нагрузка.


Вот так и начал делать. Спасибо за помощь.
Хотя для меня понятия "эвристических" и "генетических" алгоритмов как черная дыра. Я не имею образования программиста...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Пн Ноя 05 2007 15:38    Заголовок сообщения: Ответить с цитатой

Эвристические алгоритмы не являются алгоритмами, приводящими к точному решению задачи. Они основаны на интуиции и опыте.

Генетические алгоритмы - это своего рода модель естественного отбора. На первом этапе получают ряд произвольных решений задачи. Из них отбираются наиболее удачные. Из них при помощи комбинирования признаков этих решений и внесения новых (мутаций) получают новые решения. Процесс повторяется много раз.
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Yello



Зарегистрирован: 09.03.2006
Сообщения: 107

СообщениеДобавлено: Вт Ноя 06 2007 15:05    Заголовок сообщения: Ответить с цитатой

Kefir, вопрос к Вам:
А сама задача случайно не является ли ЗАДАЧЕЙ ОПТИМИЗАЦИИ (раз уж Вы много знаете... Wink )
Т.е нам ведь нужно минимизировать |s1-s2| + |s2-s3| + |s3-s1|?
(может, даже третье слагаемое можно выкинуть).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Вт Ноя 06 2007 15:16    Заголовок сообщения: Ответить с цитатой

Является.

Можно такой функционал:

max(s)-min(s)

предложить.
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Alex_soldier



Зарегистрирован: 08.08.2007
Сообщения: 57
Откуда: Россия

СообщениеДобавлено: Вт Ноя 13 2007 10:26    Заголовок сообщения: Ответить с цитатой

Да, самое главное: а каков размер задачи?
При некотором пороговом количестве элементов искать решение точными методами становится просто бессмысленно!
Уточню: каков порядок N = (количество элементов)
_________________
Мир Идей


Последний раз редактировалось: Alex_soldier (Вт Ноя 13 2007 11:54), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Вт Ноя 13 2007 11:44    Заголовок сообщения: Ответить с цитатой

Очевидно m^n, гед m - число массивов, n - число нагрузок, ^ - степень числа.
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...