В информатике , многоходовое число разделы являются проблемой разбиения мультимножества чисел на фиксированное число подмножеств, такие , что суммы подмножеств являются как можно более близкими. Впервые он был представлен Рональдом Грэхемом в 1969 году в контексте проблемы планирования многопроцессорных систем . [1] : sec.5 Задача параметризуется положительным целым числом k и называется разбиением по k- путям . [2] На вход этой проблемы является мультимножеством S чисел (обычно целые числа), сумма которых равна к * Т .
Связано решение проблемы является решить , следует ли S может быть разделена на K подмножеств , таких , что сумма каждого подмножества именно Т . Также существует проблема оптимизации : найти такое разбиение S на k подмножеств, чтобы k сумм были «как можно ближе». Точную цель оптимизации можно определить несколькими способами:
- Сведите к минимуму разницу между самой большой и самой маленькой суммой. Эта цель часто встречается в статьях о многомерном разбиении чисел, а также в статьях, связанных с физическими приложениями. [3]
- Минимизируйте самую большую сумму. Эта цель соответствует частному случаю многопроцессорного планирования, в котором все процессоры идентичны. Есть k идентичных процессоров, и каждое число в S представляет время, необходимое для выполнения однопроцессорной задачи. Цель состоит в том, чтобы разделить задания между процессорами так, чтобы время изготовления (время завершения последнего задания) было минимальным.
- Максимизируйте самую маленькую сумму. Эта цель соответствует применению справедливого распределения статей , особенно максимальной доли . Это также появляется в задачах манипулирования голосованием [4] и в последовательности действий по обслуживанию модульных газотурбинных авиационных двигателей. [5]
Эти три целевые функции эквивалентны, когда k = 2, но все они разные, когда k ≥3. [6]
Все эти проблемы являются NP-трудной , [7] , но существуют различные алгоритмы , которые решают ее эффективно во многих случаях.
Некоторые тесно связанные проблемы:
- Проблема разбиения - частный случай множественного разбиения чисел, в котором количество подмножеств равно 2.
- Задача 3-разбиения - другая и более сложная задача, в которой количество подмножеств не считается фиксированным параметром, а определяется входными данными (количество наборов - это количество целых чисел, деленное на 3).
- Проблема упаковки контейнеров - двойная задача, в которой общая сумма в каждом подмножестве ограничена, но k является гибким; цель состоит в том, чтобы найти разбиение с наименьшим возможным k . Задачи оптимизации тесно связаны между собой : оптимальное количество д -sized бункеров не превосходит к , тогда и только тогда размер оптимальной величине из подмножества в K -разбиения не превосходит г . [8]
- Проблема многопроцессорного планирования - более общая проблема, в которой разные процессоры могут иметь разные скорости.
Алгоритмы аппроксимации [ править ]
Существуют различные алгоритмы, позволяющие получить гарантированное приближение оптимального решения за полиномиальное время. Существуют разные алгоритмы аппроксимации для разных целей.
Минимизация самой большой суммы [ править ]
Коэффициент аппроксимации в этом контексте представляет собой наибольшую сумму в решении, возвращаемую алгоритмом, деленную на наибольшую сумму в оптимальном решении (отношение больше 1).
- Жадное разбиение чисел (также называемоеметодом наибольшего времени обработки ) перебирает числа и помещает каждое число в набор, текущая сумма которого является наименьшей. Если числа не отсортированы, время выполнения равно O ( n ), а коэффициент аппроксимации - не больше. Сортировка чисел увеличивает время выполнения до O ( n log n ) и улучшает коэффициент приближения до 7/6, когда k = 2, ив целом. Если числа распределены равномерно в [0,1], то коэффициент аппроксимации не более чем почти наверняка и являетсяожидаемым.
- Метод наибольшей разности (также называемый алгоритмом Кармаркара-Карпа ) сортирует числа в порядке убывания и многократно заменяет числа на их разности. Сложность выполнения - O ( n log n ). В худшем случае его коэффициент аппроксимации аналогичен - не более 7/6 для k = 2 и не более чемв целом. Однако в среднем случае он работает намного лучше, чем жадный алгоритм: для k = 2, когда числа распределены равномерно в [0,1], его коэффициент аппроксимации непревышаетожидаемого. Он также лучше работает в имитационных экспериментах.
- Алгоритм Multifit использует бинарный поиск в сочетании с алгоритмом для упаковки в контейнерах . В худшем случае его продолжительность составляет не более 8/7 для k = 2 и не более 13/11 в целом.
Было разработано несколько схем полиномиальной аппроксимации (PTAS):
- Грэм [9] : раздел 6 представил следующий алгоритм. Для любого целого числа r> 0 выберите r наибольших чисел в S и разделите их оптимальным образом. Затем произвольно распределите оставшиеся числа. Этот алгоритм имеет коэффициент аппроксимации и работает во времени .
- Санхи [10] представил PTAS для случая, когда k не является частью ввода.
- Хохбаум и Шмойс [11] представили следующие алгоритмы, которые работают, даже когда k является частью входных данных.
- Для любого r > 0 алгоритм с коэффициентом аппроксимации не более (6/5 + 2 - r ) по времени .
- Для любого r > 0 алгоритм с коэффициентом аппроксимации не более (7/6 + 2 - r ) по времени .
- Для любого ε > 0 алгоритм с коэффициентом аппроксимации не более (1 + ε) по времени .
- Существуют вариации этой идеи, которые представляют собой полностью полиномиальные схемы аппроксимации для задачи о сумме подмножеств, а значит, и для задачи о разбиении. [12]
Максимизация наименьшей суммы [ править ]
Коэффициент аппроксимации в этом контексте - это наименьшая сумма в решении, возвращаемом алгоритмом, деленная на наименьшую сумму в оптимальном решении (отношение меньше 1).
- Для жадного разделения чисел, если числа не отсортированы, тогда коэффициент аппроксимации в наихудшем случае равен 1 / k . [5] Сортировка чисел увеличивает коэффициент аппроксимации до 5/6, когда k = 2, и в целом, и это точно. [13]
- Woeginger [5] представил PTAS, который достигает коэффициента аппроксимации во времени , где огромная константа, являющаяся экспоненциальной в требуемом коэффициенте аппроксимации ε. Алгоритм использует алгоритм Ленстры для целочисленного линейного программирования .
Другие целевые функции [ править ]
Пусть s i (для i между 1 и k ) будет суммой подмножества i в данном разделе. Вместо минимизации целевой функции max ( s i ) можно минимизировать целевую функцию max ( f ( s i )), где f - любая фиксированная функция. Точно так же можно минимизировать сумму целевой функции ( f ( s i )), или максимизировать min (f ( s i )), или максимизировать сумму ( f ( s i )). Алон, Азар, Вегингер и Ядид [14]представил общий PTAS, который работает для любого f, удовлетворяющего определенному условию непрерывности, и является выпуклым (для задач минимизации) или вогнутым (для задач максимизации). Их алгоритм обобщает PTAS-ы Санхи, Хохбаума, Шмойса и Вегингера. Время работы их PTAS линейно по n , но экспоненциально по точности аппроксимации. Они показывают, что для некоторых функций f, которые не удовлетворяют этим условиям, PTAS не существует, если P = NP .
Точные алгоритмы [ править ]
Есть точные алгоритмы , которые всегда находят оптимальный раздел. Поскольку проблема является NP-сложной, такие алгоритмы могут занять экспоненциальное время в целом, но могут быть практически применимы в некоторых случаях.
- Псевдополином число раз разбиение занимает O ( N ( K - 1) т к - 1 ) память, где т наибольшее число во входных данных. Это практично, только когда k = 2 или когда k = 3 и входы - небольшие целые числа. [15]
- Полный Жадный алгоритм (CGA) рассматривает все разделы, построив K - ичной дерева . Каждый уровень в дереве соответствует входному числу, где корень соответствует наибольшему числу, уровень ниже - следующему наибольшему числу и т. Д. Каждая из k ветвей соответствует разному набору, в который можно поместить текущее число. . Для обхода дерева в порядке « сначала глубина» требуется только O ( n ) пространства, но может потребоваться время O ( k n ). Среду выполнения можно улучшить, используя жадную эвристику: на каждом уровне сначала разработайте ветвь, в которой текущее число помещается в набор с наименьшей суммой. Этот алгоритм сначала находит решение, найденноежадное разбиение чисел , но затем переходит к поиску лучших решений.
- Полный алгоритм Кармаркар-Karp (ЦКК) рассматривает все разделы с помощью построения дерева степени . Каждый уровень соответствует паре k -элементов, и каждая из ветвей соответствует разному способу объединения этих k -элементов. Этот алгоритм сначала находит решение, найденное методом наибольшей разности , но затем переходит к поиску лучших решений. Для k = 2 и k = 3 CKK работает значительно быстрее, чем CGA на случайных экземплярах. Преимущество CKK перед CGA в последнем случае (когда существует равный раздел) намного больше и может достигать нескольких порядков. На практике с k= 2, задачи произвольного размера могут быть решены CKK, если числа имеют не более 12 значащих цифр s; при k = 3 не более 6 значащих цифр. [16] CKK также может работать как алгоритм в любое время : он сначала находит решение KK, а затем находит все более лучшие решения, когда позволяет время (возможно, для достижения оптимальности в худших случаях требуется экспоненциальное время). [17] Для k ≥ 4 CKK становится намного медленнее, а CGA работает лучше.
- Рекурсивное разделение чисел (RNP) использует CKK для k = 2, но для k > 2 оно рекурсивно разбивает S на подмножества и разбивает k пополам. Он работает намного лучше, чем CKK. [15]
- Корф, Шрайбер и Моффитт представили гибридные алгоритмы, объединяющие CKK, CGA и другие методы из задачи суммы подмножества и задачи упаковки бункеров для достижения еще лучшей производительности. [18] [19] [20] [21]
Редукция к упаковке в контейнеры [ править ]
Проблема упаковки бункера решается многими быстро. Решатель BP может использоваться для поиска оптимального разделения чисел. [22] Идея состоит в том, чтобы использовать двоичный поиск, чтобы найти оптимальное время изготовления. Для инициализации бинарного поиска нам нужны нижняя и верхняя границы:
- Ниже приведены некоторые нижние границы диапазона изготовления: (сумма S ) / k - среднее значение для подмножества, s 1 - наибольшее число в S и s k + s k + 1 - размер корзины в оптимальном разделе только самые большие числа k +1.
- Некоторые верхние границы могут быть получены с помощью эвристических алгоритмов, таких как жадный алгоритм или KK.
Учитывая нижнюю и верхнюю границы, запустите решатель BP со средним размером ячейки: = (нижний + верхний) / 2.
- Если результат содержит более k ячеек, тогда оптимальное время изготовления должно быть больше: установите от меньшего до среднего и повторите.
- Если результат содержит не более k ячеек, то оптимальное время изготовления может быть меньше, увеличивая до среднего и повторяя.
Варианты [ править ]
В задаче сбалансированного разделения чисел мощность каждого подмножества должна быть либо минимальной ( n / k), либо максимальной (n / k), т. Е. Мощность всех подмножеств должна быть одинаковой вплоть до 1. [23]
Недавний вариант - это многомерное многомерное числовое разделение. [24]
Приложения [ править ]
Одно из применений проблемы раздела - манипулирование выборами . Предположим, есть три кандидата (A, B и C). Единственный кандидат должен быть избран с использованием правила голосования вето, т. Е. Каждый избиратель накладывает вето на одного кандидата, и побеждает кандидат с наименьшим количеством вето. Если коалиция желает обеспечить избрание C, ей следует разделить право вето между A и B, чтобы максимально увеличить количество вето, которое получает каждый из них. Если голоса взвешены, тогда проблема может быть сведена к проблеме разделения, и, таким образом, ее можно эффективно решить с помощью CKK. Для k = 2 то же самое верно и для любого другого правила голосования, основанного на подсчете очков. Однако для k > 2 и других правил голосования требуются некоторые другие методы. [25]
Ссылки [ править ]
- ^ Грэм, Рон Л. (1969-03-01). «Границы многопроцессорных временных аномалий» . Журнал SIAM по прикладной математике . 17 (2): 416–429. DOI : 10.1137 / 0117039 . ISSN 0036-1399 .
- ^ Мертенс, Стефан (2006), «Самая легкая трудная задача: разбиение числа» , в Allon Percus; Габриэль Истрате; Кристофер Мур (ред.), Вычислительная сложность и статистическая физика , Oxford University Press, США, стр. 125, arXiv : cond-mat / 0310317 , Bibcode : 2003cond.mat.10317M , ISBN 978-0-19-517737-4
- ^ Мертенс, Стефан (2006), «Самая легкая трудная задача: разбиение числа» , в Allon Percus; Габриэль Истрате; Кристофер Мур (ред.), Вычислительная сложность и статистическая физика , Oxford University Press, США, стр. 125, arXiv : cond-mat / 0310317 , Bibcode : 2003cond.mat.10317M , ISBN 978-0-19-517737-4
- ^ Уолш, Тоби (2009-07-11). «Где действительно сложные проблемы манипулирования? Фазовый переход в манипулировании правилом вето» . Материалы 21-й международной конференции по искусственному интеллекту . IJCAI'09. Пасадена, Калифорния, США: Morgan Kaufmann Publishers Inc .: 324–329.
- ^ a b c Woeginger, Герхард Дж. (1 мая 1997 г.). «Схема полиномиального приближения для максимизации минимального времени завершения машины» . Письма об исследовании операций . 20 (4): 149–154. DOI : 10.1016 / S0167-6377 (96) 00055-7 . ISSN 0167-6377 .
- ^ Корф, Ричард Эрл (25 августа 2010 г.). «Целевые функции для многостороннего разделения номеров» . Третий ежегодный симпозиум по комбинаторному поиску .
- ^ Garey, Майкл R .; Джонсон, Дэвид С. (1979). Компьютеры и непреодолимость: руководство по теории NP-полноты . WH Freeman and Company. п. 238 . ISBN 978-0716710448.
- ^ Hochbaum, Dorit S .; Шмойс, Дэвид Б. (1987-01-01). «Использование алгоритмов двойного приближения для теоретических и практических результатов задач планирования» . Журнал ACM . 34 (1): 144–162. DOI : 10.1145 / 7531.7535 . ISSN 0004-5411 .
- ^ Грэм, Рон Л. (1969-03-01). «Границы многопроцессорных временных аномалий» . Журнал SIAM по прикладной математике . 17 (2): 416–429. DOI : 10.1137 / 0117039 . ISSN 0036-1399 .
- ^ Сахни, Сартадж К. (1976-01-01). «Алгоритмы планирования независимых задач» . Журнал ACM . 23 (1): 116–127. DOI : 10.1145 / 321921.321934 . ISSN 0004-5411 .
- ^ Hochbaum, Dorit S .; Шмойс, Дэвид Б. (1987-01-01). «Использование алгоритмов двойного приближения для теоретических и практических результатов задач планирования» . Журнал ACM . 34 (1): 144–162. DOI : 10.1145 / 7531.7535 . ISSN 0004-5411 .
- ^ Ханс Келлерер; Ульрих Пферши; Дэвид Писингер (2004), Задачи о рюкзаке , Springer, стр. 97, ISBN 9783540402862
- ^ Csirik, Янош; Келлерер, Ганс; Woeginger, Герхард (1992-06-01). «Точная граница LPT для максимизации минимального времени завершения» . Письма об исследовании операций . 11 (5): 281–287. DOI : 10.1016 / 0167-6377 (92) 90004-M . ISSN 0167-6377 .
- ^ Алон, Нога; Азар, Йоси; Woeginger, Gerhard J .; Ядид, Тал (1998). «Аппроксимационные схемы для составления расписаний на параллельных машинах» . Журнал планирования . 1 (1): 55–66. DOI : 10.1002 / (SICI) 1099-1425 (199806) 1: 13.0.CO; 2-J . ISSN 1099-1425 .
- ^ а б Корф, Ричард Э. (2009). Многостороннее разделение номеров (PDF) . IJCAI .
- ^ Корф, Ричард Э. (1995-08-20). «От приближенных к оптимальным решениям: пример разбиения чисел» . Материалы 14-й совместной международной конференции по искусственному интеллекту - Том 1 . IJCAI'95. Монреаль, Квебек, Канада: Morgan Kaufmann Publishers Inc .: 266–272. ISBN 978-1-55860-363-9.
- ^ Корф, Ричард Э. (1998-12-01). «Полный в любое время алгоритм для разделения номеров» . Искусственный интеллект . 106 (2): 181–203. DOI : 10.1016 / S0004-3702 (98) 00086-1 . ISSN 0004-3702 .
- ^ Корф, Ричард Э. (2011-07-16). «Гибридный рекурсивный алгоритм множественного разделения чисел» . Труды двадцать второй международной совместной конференции по искусственному интеллекту - Том первый . IJCAI'11. Барселона, Каталония, Испания: AAAI Press: 591–596. ISBN 978-1-57735-513-7.
- ^ Шрайбер, Итан Л .; Корф, Ричард Э. (27.07.2014). «Кэшируемое итеративное ослабление для оптимального многостороннего разделения номеров» . Материалы Двадцать восьмой конференции AAAI по искусственному интеллекту . AAAI'14. Квебек, Квебек, Канада: AAAI Press: 2738–2744.
- ^ Ричард Э. Корф, Итан Л. Шрайбер и Майкл Д. Моффитт (2014). «Оптимальное последовательное многостороннее разбиение чисел» (PDF) . CS1 maint: multiple names: authors list (link)
- ^ Шрайбер, Итан Л .; Корф, Ричард Э .; Моффитт, Майкл Д. (25.07.2018). «Оптимальное многостороннее разбиение номеров» . Журнал ACM . 65 (4): 24: 1–24: 61. DOI : 10.1145 / 3184400 . ISSN 0004-5411 .
- ^ Шрайбер, Итан Л .; Корф, Ричард Э. (2013-08-03). «Улучшенное заполнение бункеров для оптимальной упаковки бункеров и разделения номеров» . Материалы Двадцать третьей международной совместной конференции по искусственному интеллекту . IJCAI '13. Пекин, Китай: AAAI Press: 651–658. ISBN 978-1-57735-633-2.
- ^ Якир, Бенджамин (1996-02-01). "Дифференциальный алгоритм LDM для разбиения: доказательство гипотезы Кармаркара и Карпа" . Математика исследования операций . 21 (1): 85–99. DOI : 10.1287 / moor.21.1.85 . ISSN 0364-765X .
- ^ Поп, Petrică C .; Матей, Оливиу (01.11.2013). «Подход меметического алгоритма для решения многомерной проблемы разделения множественных чисел» . Прикладное математическое моделирование . 37 (22): 9191–9202. DOI : 10.1016 / j.apm.2013.03.075 . ISSN 0307-904X .
- ^ Уолш, Тоби (2009-07-11). «Где действительно сложные проблемы манипулирования? Фазовый переход в манипулировании правилом вето» . Материалы 21-й международной конференции по искусственному интеллекту . IJCAI'09. Пасадена, Калифорния, США: Morgan Kaufmann Publishers Inc .: 324–329.