Алгоритм распределения сумм
От: flonder  
Дата: 07.07.15 10:50
Оценка:
Есть N сумм и M "контейнеров" (не могу точное слово подобрать), по которым нужно распределить эти суммы.
Причем n1 + n2 + ... nN = m1 + m2 + ... mM.
Суммы и контейнеры могут быть отрицательные.
Пример: 5 распределяем по двум контейнерам 2 и 3, тут все просто, в первый пишем 2, во второй 3. Нельзя писать в первый 3, а во второй 2, "емкость" должна быть заполнена точно.
Пример еще: 10 красных и 1 синий (N=2) распределяем по двум контейнерам 5 и 6. В 5 пишем 5 красных, в 6 пишем 5 красных и 1 синий.
Пример еще: 10 красных и -1 синий (N=2) распределяем по двум контейнерам 15 и -6. В 15 пишем 10 красных и 5 синих, в -6 пишем -6 синих.
Смысл я думаю понятен.
Думаю есть простое и изящное решение.
Re: Алгоритм распределения сумм
От: watchmaker  
Дата: 07.07.15 11:06
Оценка: +1
Здравствуйте, flonder, Вы писали:

F>Смысл я думаю понятен.


Re: Алгоритм распределения сумм
От: Sinix  
Дата: 07.07.15 12:12
Оценка:
Здравствуйте, flonder, Вы писали:


F>Думаю есть простое и изящное решение.

Для общего случая нет. Wiki. SO
Re[2]: Алгоритм распределения сумм
От: flonder  
Дата: 07.07.15 12:39
Оценка: :)
Здравствуйте, watchmaker, Вы писали:

W>Здравствуйте, flonder, Вы писали:


F>>Смысл я думаю понятен.


W>


Ну представьте разноцветные шары, которые нужно распределить по стаканам разной высоты, наполнив их полностью. Тут трудность в том, что разных шаров может быть отрицательное количество и положительное, и стаканы могут быть отрицательной высоты.
Re[2]: Алгоритм распределения сумм
От: flonder  
Дата: 07.07.15 12:42
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, flonder, Вы писали:



F>>Думаю есть простое и изящное решение.

S>Для общего случая нет. Wiki. SO

Это не совсем то. Тут не нужно искать минимумы и максимумы. Сумма предметов уже точно совпадает с емкостью рюкзаков. Тут проблема в другом, что они могут быть отрицательные.
Re[3]: Алгоритм распределения сумм
От: watchmaker  
Дата: 07.07.15 13:01
Оценка: +2
Здравствуйте, flonder, Вы писали:

F>Ну представьте разноцветные шары, которые нужно распределить по стаканам разной высоты, наполнив их полностью. Тут трудность в том, что разных шаров может быть отрицательное количество и положительное, и стаканы могут быть отрицательной высоты.


И всё, никаких больше ограничений?
Тогда тем более не ясно с чем проблема. Бери любой стакан с отличной от нуля ёмкостью и заполняй его шарами пока его ёмкость не станет нулевой. Повтори для всех остальных стаканов.
Re[4]: Алгоритм распределения сумм
От: flonder  
Дата: 07.07.15 14:17
Оценка:
Здравствуйте, watchmaker, Вы писали:

W>Здравствуйте, flonder, Вы писали:


F>>Ну представьте разноцветные шары, которые нужно распределить по стаканам разной высоты, наполнив их полностью. Тут трудность в том, что разных шаров может быть отрицательное количество и положительное, и стаканы могут быть отрицательной высоты.


W>И всё, никаких больше ограничений?

W>Тогда тем более не ясно с чем проблема. Бери любой стакан с отличной от нуля ёмкостью и заполняй его шарами пока его ёмкость не станет нулевой. Повтори для всех остальных стаканов.

Всего шаров может быть меньше, чем в одной емкости. 2 = +5 -3
Re[5]: Алгоритм распределения сумм
От: watchmaker  
Дата: 07.07.15 14:35
Оценка: +1
Здравствуйте, flonder, Вы писали:

W>>Тогда тем более не ясно с чем проблема. Бери любой стакан с отличной от нуля ёмкостью и заполняй его шарами пока его ёмкость не станет нулевой. Повтори для всех остальных стаканов.


F>Всего шаров может быть меньше, чем в одной емкости. 2 = +5 -3


Ну и что? Продолжай заполнять.
Остались стаканы с ненулевой ёмкостью? Бери красные шары и продолжай их заполнять. На каждый добавленный таким образом красный шар просто добавляй антикрасный в общую кучу.



Или даже вот тебе ещё более простой алгоритм: берёшь все свои исходные шары и ссыпаешь их в первый стакан, потом заполняешь синими шарами все стаканы чтобы их ёмкость стала нулевой — вот и готово другое разбиение.


Ну и даже если считать что цветов лишь пара, то различных разбиений будет счётное число — выбирай любое.
Re[3]: Вот и выросло новое поколение
От: omgOnoz  
Дата: 23.07.15 19:12
Оценка: :)
Здравствуйте, flonder, Вы писали:

F>Ну представьте разноцветные шары, которые нужно распределить по стаканам разной высоты, наполнив их полностью. Тут трудность в том, что разных шаров может быть отрицательное количество и положительное, и стаканы могут быть отрицательной высоты.


Вот она откуда лезет всякая "Новая Физика".
Отредактировано 23.07.2015 19:40 omgOnoz . Предыдущая версия . Еще …
Отредактировано 23.07.2015 19:40 omgOnoz . Предыдущая версия .
Re[3]: Алгоритм распределения сумм
От: omgOnoz  
Дата: 23.07.15 19:36
Оценка: -1 :)
Здравствуйте, flonder, Вы писали:

F>Это не совсем то. Тут не нужно искать минимумы и максимумы. Сумма предметов уже точно совпадает с емкостью рюкзаков. Тут проблема в другом, что они могут быть отрицательные.


Отрицательное количество — это серьезная проблема
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.