powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разделить количество бананов в упаковке по корзинам - buckets (SQL?)
5 сообщений из 30, страница 2 из 2
Разделить количество бананов в упаковке по корзинам - buckets (SQL?)
    #39829283
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valergrad,

Что хочет ТС достаточно понято - распределить по потокам так, чтоб обработка завершилась как можно быстрее.
В идеальном виде это минимизация дисперсии с задействованием всех потоков.

Как я писал выше - отличие от рюкзака в том, что нет жесткого лимита, есть критерий быть поближе к нему (не важно сверху или снизу).
...
Рейтинг: 0 / 0
Разделить количество бананов в упаковке по корзинам - buckets (SQL?)
    #39829291
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valergrad,

Ну и тут вообще нет понятия стоимость, и удельной стоимости.
Странно почему уже третьему человеку мерещится рюкзак... видимо если надо что-то куда-то распределить - сразу рюкзак!

PS. Учитывая контект задачи нет особой необходимости в поиске идеального решения, вполно должно удовлетворить "достаточно хорошее".
В дополнение к уже озвученным можно еще предложить:
сортируем упаковки по убыванию и добавляем в текущую корзину пока объем не превышает число бананов/число корзин.
Для данных (1,2,3,10,100) или (8,7,3,2,2) отработает идеально. :)
...
Рейтинг: 0 / 0
Разделить количество бананов в упаковке по корзинам - buckets (SQL?)
    #39829293
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кобанчегсортируем упаковки по убыванию и добавляем в текущую корзину еще не распределенную упаковку с максимальным весом пока объем не превышает число бананов/число корзин
...
Рейтинг: 0 / 0
Разделить количество бананов в упаковке по корзинам - buckets (SQL?)
    #39829297
Valergrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КобанчегValergrad,

Что хочет ТС достаточно понято - распределить по потокам так, чтоб обработка завершилась как можно быстрее.
В идеальном виде это минимизация дисперсии с задействованием всех потоков.

Как я писал выше - отличие от рюкзака в том, что нет жесткого лимита, есть критерий быть поближе к нему (не важно сверху или снизу).

Если побыстрее - то количество потоков должно быть известно. Кроме того минимизируется не дисперсия, а самый длинный поток ( или иными словами - максимум среди корзин).
Задача NP-полная, но разные способы перебора покажут разное время ( на разных кейсах).

Но если задача пришла из практики - то математически точное решение здесь не нужно. Например простой жадный алгоритм: отсортить в порядке убывания и раскладывать очередную упаковку туда где отклонение от среднего будет минимально, даст неплохой результат в большинстве случаев.
...
Рейтинг: 0 / 0
Разделить количество бананов в упаковке по корзинам - buckets (SQL?)
    #39829310
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На днях решал аналогичную задачку: нужно было отпроцессить множество "корзин" с различным количеством "бананов" (не на Oracle). Скорость обработки корзины можно считать линейной по отношению к количеству бананов. Чтобы ускорить обработку, было решено в основном потоке отсортировать корзины по убыванию, а потом запустить N (N = количество ядер в системе, основная нагрузка при обработке ложится на CPU) параллельных потоков, где каждый поток pull-ит очередную корзину для обработки, пока они наконец не закончатся.

Похоже на то, что описал выше Valergrad.
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разделить количество бананов в упаковке по корзинам - buckets (SQL?)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]