Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Алгоритм группировки


Автор: gcc 6.6.2011, 17:03
есть массив со значениями

[10,
50,
30,
20,
35,
40]


есть такая сущность как максимальное значение в одно корзине - пускай это будет 60

мне нужно чтобы все значения сгруппировались жо максимально возможного в корзине

чтобы после выполнения алгоритма, было что-то вродебы такого:

[
[10,5],
[30,20],
[35]
[40]
]


т.е. всего 4 элемента, внутри сгрупировано не более 60
как это сделать?

я сходу никак не могу придумать...

Автор: Akina 6.6.2011, 17:11
Задача о рюкзаке (точнее, о наполнении одномерных контейнеров). Для ускорения заполняем одну группу (любым методом - ветвей и границ, жадным или ещё как), потом распределяем остаток - правда, при этом не гарантируется минимизация количества групп.

Автор: gcc 6.6.2011, 17:11
Akina, 

остаток не надо разделять, хочу сделать так как я написал... smile

спасибо, ищу

Добавлено через 2 минуты и 12 секунд
Цитата(Akina @ 6.6.2011,  17:11)
Задача о рюкзаке (точнее, о наполнении одномерных контейнеров). Для ускорения заполняем одну группу (любым методом - ветвей и границ, жадным или ещё как),

а подскажите, как это называется на английском?


я нашел только:

http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B2%D0%B5%D1%82%D0%B2%D0%B5%D0%B9
про Римская католическая церковь

Автор: Akina 6.6.2011, 17:15
Цитата(gcc @  6.6.2011,  18:11 Найти цитируемый пост)
остаток не надо разделять

Ты не понял...

Начало - [10,50,30,20,35,40].
Первая группа - [50,10], остаток  - [30,20,35,40].
Вторая группа - [40,20], остаток  - [30,35].
Третья группа - [35], остаток - [30].
Четвёртая группа - [30], остатка нет, процесс завершён.

Добавлено через 38 секунд
Программно - это рекурсия либо псевдорекурсия.

Автор: gcc 6.6.2011, 17:17
ок, спасибо пробую, просто может быть есть готовое решение, чтобы велосипед не изобретать.... хотел узнать название алгоритма

Автор: Akina 6.6.2011, 17:38
Метод ветвей и границ.
Жадный алгоритм.
И ещё куча всяких разных...

Автор: baldina 6.6.2011, 18:20
gcc, требуется найти оптимальное решение или любое, удовлетворяющее условию группировки?
оптимальное решение для данной задачи жадным методом не найти

Автор: _Y_ 6.6.2011, 19:35
Цитата(baldina @  6.6.2011,  18:20 Найти цитируемый пост)
оптимальное решение для данной задачи жадным методом не найти

Что-то я не въезжаю. 

По простоте душевной мне казалось, что жадными называются методы перебирающие (обычно далеко не самым быстрым путем) именно все возможные варианты и, поэтому, гарантированно находящие оптимальное решение. Именно потому они и жадные, что не пропускают ни одного "закоулка". И что недостаток их именно в медленнодействии, а не в неумении найти глобальный оптимум. 

В чем я ошибаюсь?

Автор: Akina 6.6.2011, 21:33
Цитата(_Y_ @  6.6.2011,  20:35 Найти цитируемый пост)
В чем я ошибаюсь? 

Во всём.
См. напр. http://ru.wikipedia.org/wiki/%D0%96%D0%B0%D0%B4%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC.

Автор: baldina 7.6.2011, 13:28
В этой статье не сказано, какие задачи оптимально решаются жадными методами.
Жадный метод будет оптимален на множестве элементов, образующих http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D1%80%D0%BE%D0%B8%D0%B4.

Автор: esperanto 7.6.2011, 20:48
На матройдах да, но возмно этим класс не исчерпывается. Что по поводу гридойдов не знаете?

Автор: baldina 8.6.2011, 00:54
вроде это одно из обобщений матроидов, коих придумали немало. и что?

Автор: _Y_ 8.6.2011, 22:25
Цитата(Akina @  6.6.2011,  21:33 Найти цитируемый пост)
Во всём

Понятно. Жадные они потому, что сразу хотят взять побольше. С терминологией у меня всегда проблемы к сожалению. Кстити, а как тогда называются алгоритмы проверяющие все решения?

Автор: Akina 8.6.2011, 23:23
Полный перебор. Метод ветвей и границ. И так далее...

Автор: esperanto 9.6.2011, 10:42
Цитата(baldina @ 8.6.2011,  00:54)
вроде это одно из обобщений матроидов, коих придумали немало. и что?

Вопрос все тот же

"Жадный метод будет оптимален ТОЛЬКО на множестве элементов, образующих матроид. ?"

Автор: baldina 9.6.2011, 15:34
не умничай. ТСу это неинтересно

Автор: esperanto 10.6.2011, 12:21
Тсу?

Т.е. вы не знаете ответ?

Автор: baldina 10.6.2011, 17:05
 smile 
esperanto, я не собираюсь мериться с Вами ни интеллектом, ни членами. Те боле, что важно не наличие того и другого, а какую пользу приносит их применение.

Автор: _Y_ 11.6.2011, 19:16
Akina, а общего названия разве нет?

Автор: v2v 29.6.2011, 22:08
Цитата(_Y_ @  11.6.2011,  19:16 Найти цитируемый пост)
Akina, а общего названия разве нет? 

исследование операций

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)