Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В информатике , многоходовое число разделы являются проблемой разбиения мультимножества чисел на фиксированное число подмножеств, такие , что суммы подмножеств являются как можно более близкими. Впервые он был представлен Рональдом Грэхемом в 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]

Ссылки [ править ]

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