У теорії чисел та інформатиці, задачею про розбиття (або розбиття числа) є визначення того, чи можна дану множину S натуральних чисел розбити на дві підмножини S1 і S2 так, щоб сума чисел у S1 дорівнювала сумі чисел в S2. Хоча задача про розбиття NP-повна, існує псевдо-поліноміальне рішення динамічного програмування часу, і є евристики, які вирішують цю задачу оптимально або приблизно. З цієї причини її назвали «найлегшою NP-важкою задачею» .
Існує версія оптимізації задачі про розбиття, яка полягає в розбитті мультимножини S на дві підмножини S1, S2, так що різниця між сумою елементів в S1 і сумою елементів в S2 мінімізована. Оптимізаційна версія NP-важка, але на практиці її можна ефективно вирішити.
Задача про розбиття є окремим випадком задачі про суми підмножин, тому її можна точно розв'язати за час O(2S/2).
Приклади
Якщо S = {3,1,1,2,2,1}, дійсним рішенням задачі розподілу є дві множини S1 = {1,1,1,2} and S2 = {2,3}. Обидва набори мають суму 5, та утворюють розбиття множини S. Зверніть увагу, що це рішення не є унікальним. S1 = {3,1,1} and S2 = {2,2,1} - інше рішення. Не кожну множину позитивних цілих чисел можна розбити на дві частини з однаковою сумою. Прикладом такого набору є S = {2,5}.
Алгоритм псевдо-поліноміального часу
Задача може бути вирішена за допомогою динамічного програмування, коли розмір набору і розмір суми цілих чисел в наборі не надто великі, щоб зробити вимоги до зберігання недосяжними.
Припустимо, що вхідним значенням для алгоритму є список форми: S = x1, ..., xn
Нехай N - кількість елементів в S. Нехай K - сума всіх елементів в S. Тобто: K = x1 + ... + xn. Ми побудуємо алгоритм, який визначає, чи існує підмножина S, яка додається до . Якщо є підмножина, то:
Якщо сума K парна, залишок S також підсумовується до
Якщо сума K непарна, то залишок S підсумовується з . Це найкраще рішення.
Рекурентне відношення
Ми хочемо визначити, чи існує підмножина S, котра дорівнює . Нехай:
- p(i, j) буде Істина (True), якщо мультимножина { x1, ..., xj } дорівнює i , та Хибно (False), якщо навпаки.
Тоді p(, n) - це Істина тоді та тільки тоді, коли існує мультимножина S, котра дорівнює . Метою нашого алгоритму буде обчислення p(, n). Для цього ми маємо наступне рекурентне співвідношення:
- p(i, j) істинно, якщо p(i, j − 1) істинно або p(i − xj, j − 1) істинно,
- p(i, j) хибне, навпаки.
Це пояснюється наступним чином: є деяка підмножина S, яке підсумовує з i, використовуючи числа
- x1, ..., xj
Тоді та тільки тоді, коли виконано одну з наступних умов:
- Існує підмножина { x1, ..., xj-1 } , котра дорівнює i;
- Існує підмножина { x1, ..., xj-1 } котра дорівнює i − xj, коли xj + сума підмножини = i.
Псевдо-поліноміальний алгоритм
Алгоритм полягає в тому, щоб створити таблицю розміру по n , що містить значення повторення. Пам'ятайте, що K - це розмір суми, а N - це . кількість елементів. Коли вся таблиця заповнена, поверніть P(, n). Нижче наведено зображення таблиці P. Існує синя стрілка від одного блоку до іншого, якщо значення цільового блоку може залежати від значення вихідного блоку. Ця залежність є властивістю рекурентного співвідношення.
INPUT: A list of integers S OUTPUT: True if S can be partitioned into two subsets that have equal sum 1 function find_partition(S): 2 n ← |S| 3 K ← sum(S) 4 P ← empty boolean table of size ( + 1) by (n + 1) 5 initialize top row (P(0,x)) of P to True 6 initialize leftmost column (P(x, 0)) of P, except for P(0, 0) to False 7 for i from 1 to 8 for j from 1 to n 9 if (i-S[j-1]) >= 0 10 P(i, j) ← P(i, j-1) or P(i-S[j-1], j-1) 11 else 12 P(i, j) ← P(i, j-1) 13 return P(, n)
Приклад
Нижче наведена таблиця P для прикладу, що використовується вище S = {3, 1, 1, 2, 2, 1}:
Аналіз
Цей алгоритм працює з часом O(K N), де N - кількість елементів у наборі вхідних даних та K - сума елементів у вхідній множині.
Алгоритм може бути розширений до k-задачі багаторозбиття, але потім приймає O(n(k − 1)mk − 1) пам'ять, де m - найбільше число на вході, що робить його непрактичним навіть для k = 3 , якщо входи не є дуже маленькими числами.
Цей алгоритм можна узагальнити для вирішення задачі про суми підмножин.
Апроксимаційні алгоритми
Існує кілька евристичних алгоритмів для отримання наближень до задачі оптимізації розбиття. Вони можуть бути розширені до точних алгоритмів лінійного простору.
Жадібний алгоритм
Один з підходів до задачі, що імітує те, як діти вибирають команди для гри, — це жадібний алгоритм, який виконує ітерацію за номерами в порядку убування, привласнюючи кожному з них те, що підмножина має меншу суму. Цей підхід має час роботи O(n log n). Ця евристика добре працює на практиці, коли цифри в наборі приблизно того ж розміру, що і потужність, або менше, але не гарантується, що буде створений найкращий розділ. Наприклад, якщо ввести S = {4, 5, 6, 7, 8} як вхідні дані, цей жадібний алгоритм розбив би S на підмножини {4, 5, 8} та {6, 7}; однак, S має точно збалансоване розбиття на підмножини {7, 8} та {4, 5, 6}.
Відомо, що цей жадібний підхід дає 7⁄6-наближення до оптимального рішення версії оптимізації; Тобто, якщо жадібний алгоритм виводить два набори A та B, то max(∑A, ∑B) ≤ 7/6 OPT, де OPT це розмір більшого набору в найкращому можливому розділі.Нижче наведено приклад (написаний на мові Python) для жадібного алгоритму..
def find_partition(int_list): "returns: An attempt at a partition of `int_list` into two sets of equal sum" A = set() B = set() for n in sorted(int_list, reverse=True): if sum(A) < sum(B): A.add(n) else: B.add(n) return (A, B)
Цей алгоритм може бути поширений на випадок k > 2 множин: для того, щоб узяти k найбільших елементів і для кожного розбиття їх розширює розділ, послідовно додаючи інші елементи в залежності від того, який набір менше. (Проста версія вище відповідає k = 2.) Ця версія працює в часі O(2k n2) і, як відомо, дає (k + 2)/(k + 1) наближення. Таким чином, ми маємо схему наближення поліноміального часу (PTAS) для завдання про розбиття чисел, хоча це не повністю поліноміальна схема наближення часу (час роботи є експоненціальним у гарантованій задачі наближення). Однак існують варіанти цієї ідеї, які є повністю поліноміальними схемами апроксимації для завдання підмножини, а отже, і для завдання розбиття.
Метод найбільшої різниці
Іншою евристикою є метод найбільшої різниці (largest differencing method, LDM), що також має назву евристика Кармаркара — Карпа, за прізвищами пари вчених, що опублікували роботу по цій темі в 1982 році. LDM працює в два етапи. Перша фаза алгоритму приймає два найбільших числа від входу і замінює їх їхньою різницею. Це повторюється до тих пір, поки не залишиться тільки одне число. Заміна є рішення розмістити два числа в різних наборах, не вдаючись до негайного визначення того, в якому з них встановлено. В кінці першого етапу єдиним числом, що залишилося, буде різниця двох сум підмножини. Друга фаза реконструює фактичне рішення.
Евристика різниць працює краще, ніж жадібна, але все ще погано для випадків, коли числа є експонентними за розміром набору.
Наступна програма на Java реалізує перший етап Кармаркара — Карпа. Він використовує купу, щоб знайти пару найбільших чисел, які залишилися.
int karmarkarKarpPartition(int[] baseArr) { // create max heap PriorityQueue<Integer> heap = new PriorityQueue<Integer>(baseArr.length, REVERSE_INT_CMP); for (int value : baseArr) { heap.add(value); } while(heap.size() > 1) { int val1 = heap.poll(); int val2 = heap.poll(); heap.add(val1 - val2); } return heap.poll(); }
Інші підходи
Існують також [en], засновані на евристичному різницевої аналізі, які спочатку знаходять рішення, повернене евристикою разностного аналізу, потім знаходять прогресивно кращі рішення в міру того, як дозволяє час (можливо, вимагаючи експоненціального часу для досягнення оптимальності для найгірших випадків).
Жорсткі інстанції
Набори з одним або без поділу, як правило, складніше (або найбільш дорогі) вирішувати в порівнянні з їх розмірами введення. Коли значення малі в порівнянні з розміром набору, більш досконалі розділи більш вірогідні. Відомо, що задача зазнає «фазовий перехід»; Ймовірно, для деяких наборів і малоймовірно для інших. Якщо m — число біт, необхідне для вираження будь-якого числа в наборі, а n — розмір набору, то має багато рішень і , як правило, мало або взагалі не має рішень. У міру того як n і m стають більше, ймовірність вчиненого розбиття дорівнює 1 або 0 відповідно. Це спочатку стверджувалося на основі емпіричних даних Гента і Уолша, потім використовуючи методи статистичної фізики Мертенса, а потім довів Боргс, Чайс і Піттель.
Варіанти та узагальнення
Існує задача, звана [en], яка полягає в розбитті множини S до |S|/3 трійок з однаковою сумою. Ця задача суттєво відрізняється від задачі розділу і не має псевдо-поліноміального алгоритму часу, якщо P = NP.
Задача багатосторінкового розділу узагальнює оптимізаційну версію задачі про розбиття. Тут мета полягає в тому, щоб розбити безліч або мультимножину з n цілих чисел на задане число k підмножин, мінімізуючи різницю між найменшою і найбільшою сумою підмножини.
Для подальших узагальнень задачі про розбиття див. задачі про пакування в ємності.
Імовірнісна версія
Пов'язана з цим задача, в чомусь схожа на парадокс днів народження, полягає у визначенні розміру вхідної множини так, щоб ймовірність існування розв'язку була 50%, за припущення, що кожен елемент в наборі вибирається випадково за рівномірним розподілом між 1 і деяким заданим значенням.
Вирішення цієї задачі може бути нелогічним, як парадокс дня народження. Наприклад, якщо елементи вибираються випадковим чином в межах від 1 до 1 мільйона, інтуїція багатьох людей полягає в тому, що відповідь знаходиться в тисячах, десятках або навіть в сотнях тисяч, тоді як правильна відповідь становить приблизно 23 (див. Парадокс днів народження § апроксимація).[]
Нотатки
- (May–June 2002), , American Scientist, архів оригіналу за 21 травня 2017, процитовано 23 травня 2017
- Karmarkar, Narenda; Karp, Richard M (1982), The Differencing Method of Set Partitioning, Technical Report UCB/CSD 82/113, University of California at Berkeley: Computer Science Division (EECS)
- Gent, Ian; Walsh, Toby (August 1996), Wolfgang Wahlster (ред.), , John Wiley and Sons, с. 170—174, архів оригіналу за 4 березня 2016, процитовано 23 травня 2017
- Gent, Ian; Walsh, Toby (1998), Analysis of Heuristics for Number Partitioning, Computational Intelligence, 14 (3): 430—451, doi:10.1111/0824-7935.00069
- Mertens, Stephan (November 1998), Phase Transition in the Number Partitioning Problem, Physical Review Letters, 81 (20): 4281, arXiv:cond-mat/9807077, Bibcode:1998PhRvL..81.4281M, doi:10.1103/PhysRevLett.81.4281, процитовано 3 жовтня 2009
- Mertens, Stephan (2001), A physicist's approach to number partitioning, Theoretical Computer Science, 265 (1-2): 79—108, doi:10.1016/S0304-3975(01)00153-0
- Mertens, Stephan (2006), The Easiest Hard Problem: Number Partitioning, у Allon Percus; Gabriel Istrate; (ред.), , Oxford University Press US, с. 125, arXiv:cond-mat/0310317, Bibcode:2003cond.mat.10317M, ISBN , архів оригіналу за 5 квітня 2017, процитовано 23 травня 2017
- Borgs, Christian; Chayes, Jennifer; Pittel, Boris (2001), , Random Structures and Algorithms, 19 (3-4): 247—288, doi:10.1002/rsa.10004, архів оригіналу за 29 вересня 2012, процитовано 4 жовтня 2009
- Korf, Richard E. (1998), , Artificial Intelligence, 106 (2): 181—203, doi:10.1016/S0004-3702(98)00086-1, ISSN 0004-3702, архів оригіналу за 29 вересня 2012, процитовано 4 жовтня 2009
- Mertens, Stephan (1999), A complete anytime algorithm for balanced number partitioning, arXiv:cs/9903011, Bibcode:1999cs........3011M
Примітки
- Korf, 1998
- Hayes, 2002
- Korf, Richard E. (2009). (PDF). IJCAI. Архів оригіналу (PDF) за 27 листопада 2014. Процитовано 18 травня 2017.
- Ron L. Graham (1969). Bounds on multiprocessor timing anomalies. SIAM J. Appl. Math. Т. 17, № 2. с. 416—429.
- Martello, Silvano; Toth, Paolo (1990). 4 Subset-sum problem. Knapsack problems: Algorithms and computer interpretations. Wiley-Interscience. с. 105–136. ISBN . MR 1086874.
- Michiels, Wil; Korst, Jan; Aarts, Emile (2003). Performance ratios for the Karmarkar–Karp differencing method. Electronic Notes in Discrete Mathematics. 13: 71—75.
- Karmarkar та Karp, 1982
- Korf, 1998, Mertens, 1999
- Gent та Walsh, 1996
- Mertens, 1998
- Borgs, Chayes та Pittel, 2001
- Garey, Michael; Johnson, David (1979). Computers and Intractability; A Guide to the Theory of NP-Completeness. с. 96–105. ISBN .
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U teoriyi chisel ta informatici zadacheyu pro rozbittya abo rozbittya chisla ye viznachennya togo chi mozhna danu mnozhinu S naturalnih chisel rozbiti na dvi pidmnozhini S1 i S2 tak shob suma chisel u S1 dorivnyuvala sumi chisel v S2 Hocha zadacha pro rozbittya NP povna isnuye psevdo polinomialne rishennya dinamichnogo programuvannya chasu i ye evristiki yaki virishuyut cyu zadachu optimalno abo priblizno Z ciyeyi prichini yiyi nazvali najlegshoyu NP vazhkoyu zadacheyu Isnuye versiya optimizaciyi zadachi pro rozbittya yaka polyagaye v rozbitti multimnozhini S na dvi pidmnozhini S1 S2 tak sho riznicya mizh sumoyu elementiv v S1 i sumoyu elementiv v S2 minimizovana Optimizacijna versiya NP vazhka ale na praktici yiyi mozhna efektivno virishiti Zadacha pro rozbittya ye okremim vipadkom zadachi pro sumi pidmnozhin tomu yiyi mozhna tochno rozv yazati za chas O 2S 2 PrikladiYaksho S 3 1 1 2 2 1 dijsnim rishennyam zadachi rozpodilu ye dvi mnozhini S1 1 1 1 2 and S2 2 3 Obidva nabori mayut sumu 5 ta utvoryuyut rozbittya mnozhini S Zvernit uvagu sho ce rishennya ne ye unikalnim S1 3 1 1 and S2 2 2 1 inshe rishennya Ne kozhnu mnozhinu pozitivnih cilih chisel mozhna rozbiti na dvi chastini z odnakovoyu sumoyu Prikladom takogo naboru ye S 2 5 Algoritm psevdo polinomialnogo chasuZadacha mozhe buti virishena za dopomogoyu dinamichnogo programuvannya koli rozmir naboru i rozmir sumi cilih chisel v nabori ne nadto veliki shob zrobiti vimogi do zberigannya nedosyazhnimi Pripustimo sho vhidnim znachennyam dlya algoritmu ye spisok formi S x1 xn Nehaj N kilkist elementiv v S Nehaj K suma vsih elementiv v S Tobto K x1 xn Mi pobuduyemo algoritm yakij viznachaye chi isnuye pidmnozhina S yaka dodayetsya do K 2 displaystyle lfloor K 2 rfloor Yaksho ye pidmnozhina to Yaksho suma K parna zalishok S takozh pidsumovuyetsya do K 2 displaystyle lfloor K 2 rfloor Yaksho suma K neparna to zalishok S pidsumovuyetsya z K 2 displaystyle lceil K 2 rceil Ce najkrashe rishennya Rekurentne vidnoshennya Mi hochemo viznachiti chi isnuye pidmnozhina S kotra dorivnyuye K 2 displaystyle lfloor K 2 rfloor Nehaj p i j bude Istina True yaksho multimnozhina x1 xj dorivnyuye i ta Hibno False yaksho navpaki Todi p K 2 displaystyle lfloor K 2 rfloor n ce Istina todi ta tilki todi koli isnuye multimnozhina S kotra dorivnyuye K 2 displaystyle lfloor K 2 rfloor Metoyu nashogo algoritmu bude obchislennya p K 2 displaystyle lfloor K 2 rfloor n Dlya cogo mi mayemo nastupne rekurentne spivvidnoshennya p i j istinno yaksho p i j 1 istinno abo p i xj j 1 istinno p i j hibne navpaki Ce poyasnyuyetsya nastupnim chinom ye deyaka pidmnozhina S yake pidsumovuye z i vikoristovuyuchi chisla x1 xj Todi ta tilki todi koli vikonano odnu z nastupnih umov Isnuye pidmnozhina x1 xj 1 kotra dorivnyuye i Isnuye pidmnozhina x1 xj 1 kotra dorivnyuye i xj koli xj suma pidmnozhini i Psevdo polinomialnij algoritm Algoritm polyagaye v tomu shob stvoriti tablicyu rozmiru K 2 displaystyle lfloor K 2 rfloor po n sho mistit znachennya povtorennya Pam yatajte sho K ce rozmir sumi a N ce kilkist elementiv Koli vsya tablicya zapovnena povernit P K 2 displaystyle lfloor K 2 rfloor n Nizhche navedeno zobrazhennya tablici P Isnuye sinya strilka vid odnogo bloku do inshogo yaksho znachennya cilovogo bloku mozhe zalezhati vid znachennya vihidnogo bloku Cya zalezhnist ye vlastivistyu rekurentnogo spivvidnoshennya Zalezhnist zapisiv u tablici i j INPUT A list of integers S OUTPUT True if S can be partitioned into two subsets that have equal sum 1 function find partition S 2 n S 3 K sum S 4 P empty boolean table of size K 2 displaystyle lfloor K 2 rfloor 1 by n 1 5 initialize top row P 0 x of P to True 6 initialize leftmost column P x 0 of P except for P 0 0 to False 7 for i from 1 to K 2 displaystyle lfloor K 2 rfloor 8 for j from 1 to n 9 if i S j 1 gt 0 10 P i j P i j 1 or P i S j 1 j 1 11 else 12 P i j P i j 1 13 return P K 2 displaystyle lfloor K 2 rfloor n Priklad Nizhche navedena tablicya P dlya prikladu sho vikoristovuyetsya vishe S 3 1 1 2 2 1 Rezultat vikonannya prikladu algoritmu na tablici P Analiz Cej algoritm pracyuye z chasom O K N de N kilkist elementiv u nabori vhidnih danih ta K suma elementiv u vhidnij mnozhini Algoritm mozhe buti rozshirenij do k zadachi bagatorozbittya ale potim prijmaye O n k 1 mk 1 pam yat de m najbilshe chislo na vhodi sho robit jogo nepraktichnim navit dlya k 3 yaksho vhodi ne ye duzhe malenkimi chislami Cej algoritm mozhna uzagalniti dlya virishennya zadachi pro sumi pidmnozhin Aproksimacijni algoritmiDokladnishe Aproksimacijnij algoritm Isnuye kilka evristichnih algoritmiv dlya otrimannya nablizhen do zadachi optimizaciyi rozbittya Voni mozhut buti rozshireni do tochnih algoritmiv linijnogo prostoru Zhadibnij algoritm Odin z pidhodiv do zadachi sho imituye te yak diti vibirayut komandi dlya gri ce zhadibnij algoritm yakij vikonuye iteraciyu za nomerami v poryadku ubuvannya privlasnyuyuchi kozhnomu z nih te sho pidmnozhina maye menshu sumu Cej pidhid maye chas roboti O n log n Cya evristika dobre pracyuye na praktici koli cifri v nabori priblizno togo zh rozmiru sho i potuzhnist abo menshe ale ne garantuyetsya sho bude stvorenij najkrashij rozdil Napriklad yaksho vvesti S 4 5 6 7 8 yak vhidni dani cej zhadibnij algoritm rozbiv bi S na pidmnozhini 4 5 8 ta 6 7 odnak S maye tochno zbalansovane rozbittya na pidmnozhini 7 8 ta 4 5 6 Vidomo sho cej zhadibnij pidhid daye 7 6 nablizhennya do optimalnogo rishennya versiyi optimizaciyi Tobto yaksho zhadibnij algoritm vivodit dva nabori A ta B to max A B 7 6 OPT de OPT ce rozmir bilshogo naboru v najkrashomu mozhlivomu rozdili Nizhche navedeno priklad napisanij na movi Python dlya zhadibnogo algoritmu def find partition int list returns An attempt at a partition of int list into two sets of equal sum A set B set for n in sorted int list reverse True if sum A lt sum B A add n else B add n return A B Cej algoritm mozhe buti poshirenij na vipadok k gt 2 mnozhin dlya togo shob uzyati k najbilshih elementiv i dlya kozhnogo rozbittya yih rozshiryuye rozdil poslidovno dodayuchi inshi elementi v zalezhnosti vid togo yakij nabir menshe Prosta versiya vishe vidpovidaye k 2 Cya versiya pracyuye v chasi O 2k n2 i yak vidomo daye k 2 k 1 nablizhennya Takim chinom mi mayemo shemu nablizhennya polinomialnogo chasu PTAS dlya zavdannya pro rozbittya chisel hocha ce ne povnistyu polinomialna shema nablizhennya chasu chas roboti ye eksponencialnim u garantovanij zadachi nablizhennya Odnak isnuyut varianti ciyeyi ideyi yaki ye povnistyu polinomialnimi shemami aproksimaciyi dlya zavdannya pidmnozhini a otzhe i dlya zavdannya rozbittya Metod najbilshoyi riznici Inshoyu evristikoyu ye metod najbilshoyi riznici largest differencing method LDM sho takozh maye nazvu evristika Karmarkara Karpa za prizvishami pari vchenih sho opublikuvali robotu po cij temi v 1982 roci LDM pracyuye v dva etapi Persha faza algoritmu prijmaye dva najbilshih chisla vid vhodu i zaminyuye yih yihnoyu rizniceyu Ce povtoryuyetsya do tih pir poki ne zalishitsya tilki odne chislo Zamina ye rishennya rozmistiti dva chisla v riznih naborah ne vdayuchis do negajnogo viznachennya togo v yakomu z nih vstanovleno V kinci pershogo etapu yedinim chislom sho zalishilosya bude riznicya dvoh sum pidmnozhini Druga faza rekonstruyuye faktichne rishennya Evristika riznic pracyuye krashe nizh zhadibna ale vse she pogano dlya vipadkiv koli chisla ye eksponentnimi za rozmirom naboru Nastupna programa na Java realizuye pershij etap Karmarkara Karpa Vin vikoristovuye kupu shob znajti paru najbilshih chisel yaki zalishilisya int karmarkarKarpPartition int baseArr create max heap PriorityQueue lt Integer gt heap new PriorityQueue lt Integer gt baseArr length REVERSE INT CMP for int value baseArr heap add value while heap size gt 1 int val1 heap poll int val2 heap poll heap add val1 val2 return heap poll Inshi pidhodi Isnuyut takozh en zasnovani na evristichnomu riznicevoyi analizi yaki spochatku znahodyat rishennya povernene evristikoyu raznostnogo analizu potim znahodyat progresivno krashi rishennya v miru togo yak dozvolyaye chas mozhlivo vimagayuchi eksponencialnogo chasu dlya dosyagnennya optimalnosti dlya najgirshih vipadkiv Zhorstki instanciyiNabori z odnim abo bez podilu yak pravilo skladnishe abo najbilsh dorogi virishuvati v porivnyanni z yih rozmirami vvedennya Koli znachennya mali v porivnyanni z rozmirom naboru bilsh doskonali rozdili bilsh virogidni Vidomo sho zadacha zaznaye fazovij perehid Jmovirno dlya deyakih naboriv i malojmovirno dlya inshih Yaksho m chislo bit neobhidne dlya virazhennya bud yakogo chisla v nabori a n rozmir naboru to m n lt 1 displaystyle m n lt 1 maye bagato rishen i m n gt 1 displaystyle m n gt 1 yak pravilo malo abo vzagali ne maye rishen U miru togo yak n i m stayut bilshe jmovirnist vchinenogo rozbittya dorivnyuye 1 abo 0 vidpovidno Ce spochatku stverdzhuvalosya na osnovi empirichnih danih Genta i Uolsha potim vikoristovuyuchi metodi statistichnoyi fiziki Mertensa a potim doviv Borgs Chajs i Pittel Varianti ta uzagalnennyaIsnuye zadacha zvana en yaka polyagaye v rozbitti mnozhini S do S 3 trijok z odnakovoyu sumoyu Cya zadacha suttyevo vidriznyayetsya vid zadachi rozdilu i ne maye psevdo polinomialnogo algoritmu chasu yaksho P NP Zadacha bagatostorinkovogo rozdilu uzagalnyuye optimizacijnu versiyu zadachi pro rozbittya Tut meta polyagaye v tomu shob rozbiti bezlich abo multimnozhinu z n cilih chisel na zadane chislo k pidmnozhin minimizuyuchi riznicyu mizh najmenshoyu i najbilshoyu sumoyu pidmnozhini Dlya podalshih uzagalnen zadachi pro rozbittya div zadachi pro pakuvannya v yemnosti Imovirnisna versiya Pov yazana z cim zadacha v chomus shozha na paradoks dniv narodzhennya polyagaye u viznachenni rozmiru vhidnoyi mnozhini tak shob jmovirnist isnuvannya rozv yazku bula 50 za pripushennya sho kozhen element v nabori vibirayetsya vipadkovo za rivnomirnim rozpodilom mizh 1 i deyakim zadanim znachennyam Virishennya ciyeyi zadachi mozhe buti nelogichnim yak paradoks dnya narodzhennya Napriklad yaksho elementi vibirayutsya vipadkovim chinom v mezhah vid 1 do 1 miljona intuyiciya bagatoh lyudej polyagaye v tomu sho vidpovid znahoditsya v tisyachah desyatkah abo navit v sotnyah tisyach todi yak pravilna vidpovid stanovit priblizno 23 div Paradoks dniv narodzhennya aproksimaciya dzherelo Notatki May June 2002 American Scientist arhiv originalu za 21 travnya 2017 procitovano 23 travnya 2017 Karmarkar Narenda Karp Richard M 1982 The Differencing Method of Set Partitioning Technical Report UCB CSD 82 113 University of California at Berkeley Computer Science Division EECS Gent Ian Walsh Toby August 1996 Wolfgang Wahlster red John Wiley and Sons s 170 174 arhiv originalu za 4 bereznya 2016 procitovano 23 travnya 2017 Gent Ian Walsh Toby 1998 Analysis of Heuristics for Number Partitioning Computational Intelligence 14 3 430 451 doi 10 1111 0824 7935 00069 Mertens Stephan November 1998 Phase Transition in the Number Partitioning Problem Physical Review Letters 81 20 4281 arXiv cond mat 9807077 Bibcode 1998PhRvL 81 4281M doi 10 1103 PhysRevLett 81 4281 procitovano 3 zhovtnya 2009 Mertens Stephan 2001 A physicist s approach to number partitioning Theoretical Computer Science 265 1 2 79 108 doi 10 1016 S0304 3975 01 00153 0 Mertens Stephan 2006 The Easiest Hard Problem Number Partitioning u Allon Percus Gabriel Istrate red Oxford University Press US s 125 arXiv cond mat 0310317 Bibcode 2003cond mat 10317M ISBN 9780195177374 arhiv originalu za 5 kvitnya 2017 procitovano 23 travnya 2017 Borgs Christian Chayes Jennifer Pittel Boris 2001 Random Structures and Algorithms 19 3 4 247 288 doi 10 1002 rsa 10004 arhiv originalu za 29 veresnya 2012 procitovano 4 zhovtnya 2009 Korf Richard E 1998 Artificial Intelligence 106 2 181 203 doi 10 1016 S0004 3702 98 00086 1 ISSN 0004 3702 arhiv originalu za 29 veresnya 2012 procitovano 4 zhovtnya 2009 Mertens Stephan 1999 A complete anytime algorithm for balanced number partitioning arXiv cs 9903011 Bibcode 1999cs 3011MPrimitkiKorf 1998 Hayes 2002 Korf Richard E 2009 PDF IJCAI Arhiv originalu PDF za 27 listopada 2014 Procitovano 18 travnya 2017 Ron L Graham 1969 Bounds on multiprocessor timing anomalies SIAM J Appl Math T 17 2 s 416 429 Martello Silvano Toth Paolo 1990 4 Subset sum problem Knapsack problems Algorithms and computer interpretations Wiley Interscience s 105 136 ISBN 0 471 92420 2 MR 1086874 Michiels Wil Korst Jan Aarts Emile 2003 Performance ratios for the Karmarkar Karp differencing method Electronic Notes in Discrete Mathematics 13 71 75 Karmarkar ta Karp 1982 Korf 1998 Mertens 1999 Gent ta Walsh 1996 Mertens 1998 Borgs Chayes ta Pittel 2001 Garey Michael Johnson David 1979 Computers and Intractability A Guide to the Theory of NP Completeness s 96 105 ISBN 0 7167 1045 5