Тема № 10. ТЕОРІЯ СКЛАДНОСТІ ОБЧИСЛЕНЬ ТА КЛАСИ СКЛАДНОСТІ ЗАДАЧ Чому б ти не вчив, вчи стисло ( Горацій )
10. 1 ВСТУП • Мало того, що є алгоритмічно нерозв'язні задачі і їх нескінченно більше, ніж задач алгоритмічно розв'язних. • З практичної точки зору нам не легше, якщо рішення розв'язної задачі ми зможемо одержимо через мільйон років. Раніш не закінчити розрахунки. . . • Для нас (простих смертних) такі задачі не відрізняються від задач алгоритмічно нерозв'язних.
10. 1 ВСТУП • Ситуація з такими задачами ще більш мрячна, чим з алгоритмічною можливістю розв'язання. Поки єдиний, фактично, "залізний" аргумент нашої безпорадності, що задача відноситься до важко - розвязних, що ніхто поки не знайшов для неї легкого рішення!
10. 1 ВСТУП • Ненормальність такої ситуації збільшиться, якщо врахувати, що теоретики розглядають тільки кінцеві дискретні задачі (задачі або на пошук оптимуму, або розпізнавання), кожна з яких (теоретично) може бути вирішена хоча б (через брак кращого) простим перебором. Але від • цього не легше, якщо згадати легенду про винахідника шахів, що попросив у нагороду за першу клітинку шахівниці одне зернятко, за другу два. . . за 64 -ю клітинку - 2 у 64 -ої ступені зерняток. Що перевищує зернові ресурси Земної кулі.
10. 1 ВСТУП • Одна з книг по складності обчислень починалася з цитати з українського філософа Георгія Сковороди: " Спасибі • тобі Господи, що ти створив усе потрібне неважким, а все важке - непотрібним. " Але здається, що тут більш точної • буде інша думка зі Сковороди, а саме, епітафія на його могили: "Світ ловив мене, але не піймав". . . І ще одна думка • більш конкретна думка уже від сучасних математиків: • "Складність стає проблемою століття".
10. 1 ВСТУП Через величезну кількість несуттєвих особливостей різних способів (методів, парадигм) обчислення ознаки, які варто було б враховувати при визначенні складності обчислень занадто численні і суперечливі. Але в кінцевому рахунку більшість сходиться до того, що всі можна звести до часу (числу елементарних кроків) обчислення і обсягові пам'яті. Більш того, багато хто так і бачать при цьому в якості найкращих моделей машини Тьюринга. Проблему швидко звели до двох слів і їх сполученню. Ці слова Polinomial - поліноміальний і Nondeterministic - недетерминированный.
10. 1 ВСТУП Візьмемо великий мішок каменів і вирішимо задачу пошуку найбільшого каменю. Будемо виймати по черзі камені, порівнюючи з найбільшим на даний момент. Вичерпавши мішок ми залишимо в руках найбільший камінь. Якщо число каменів ми збільшимо в 2 рази, то складність рішення задачі теж збільшиться (приблизно) у два рази. Якщо візьмемо мішок з "n" те і труднощі рішення буде пропорційна "n". Говорять, що таку задачу можна вирішити за поліноміальний час. Якщо ви вирішуєте задачу перебування найбільшого ребра в повному навантаженому графі, те це теж задача поліноміальної складності, виходячи з формули для повного графа, складність, що збільшує, з ростом числа вершин за законом росту числа ребер, пропорційному "n квадрат".
10. 1 ВСТУП • Однак, є задачки (для тих же графів), для яких не знайдено простих (поліноміальних) рішень. Другим з класичних прикладів таких задач служить задача про комівояжера: Який мінімальний цикл • у графі, що при обході його в кожну вершину заходимо один раз. Для цієї задачі є тільки "важкі рішення", складність яких росте по експоненті (як число • зерняток на шахівниці).
10. 1 ВСТУП Як би там ні було, а задачі, для яких прості (поліноміальні) рішення поки не знайдені, існують. І чим далі, тим більше математики упорствують у цієї (недоведеної) упевненості. Більш того, вони колекціонують типові труднорешаемые задачі, яких уже набралося не менш тисячі. Більш того, затверджують, що одні труднорешаемые задачі зводяться до іншим труднорешаемым задачам. Тому навіть використовується для таких задач термін NP-повні" задачі. І робиться радикальна заява: якщо хоч для однієї NP-повної задачі буде знайдено простої (поліноміальне) рішення, тоді просте рішення буде знайдено і для всіх інших NP-повних задач. Тоді буде доведено P=NP і проблема складності обчислень у цьому її виді буде закрита!
10. 2 Теоретична межа трудомісткості задачі • Розглядаючи деяку алгоритмічно розв'язну задачу, і аналізуючи один з алгоритмів її рішення, ми можемо одержати оцінку трудомісткості цього алгоритму в найгіршому разі – fa(Da)=O(g(Da)). Такої ж оцінки ми можемо одержати й для інших відомих алгоритмів рішення даної задачі. Розглядаючи задачу із цього погляду, виникає резонне питання – а чи існує функціональна нижня межа для g(Da) і якщо «так» , те чи існує алгоритм, що вирішує задачу з такою трудомісткістю в найгіршому разі.
10. 2 Теоретична межа трудомісткості задачі • Інша, більше точне формулювання, має такий вигляд: яка оцінка складності самого «швидкого» алгоритму рішення даної задачі в найгіршому разі? Очевидно, що це оцінка самої задачі, а не якого або алгоритму її рішення. Таким чином, ми приходимо до визначення поняття функціональної теоретичної нижньої межі трудомісткості задачі в найгіршому разі: • Fthlim= min { Θ( Fa(D)) } ( 9. 1 )
10. 2 Теоретична межа трудомісткості задачі • Якщо ми можемо на основі теоретичних міркувань довести існування й одержати оцінюючу функцію, то ми можемо затверджувати, що будь-який алгоритм, що вирішує дану задачу працює не швидше, ніж з оцінкою Fthlim у найгіршому разі: • Fa (D) = Ω(Fthlim) ( 9. 2 )
10. 3 Класи складності • На початку 1960 -х років, у зв'язку з початком широкого використання обчислювальної техніки для рішення практичних задач, виникло запитання про границі практичної застосовності даного алгоритму рішення задачі в змісті обмежень на її розмірність. Які задачі можуть бути вирішені на ЕОМ за реальний час? • Відповідь на це питання був даний у роботах Кобмена (Alan Cobham, 1964), і Эдмнодса (Jack Edmonds, 1965), де були уведені сложностные класи задач.
10. 3 Класи складності • 1) Клас P (задачі з поліноміальною складністю) • Задача називається поліноміальної, тобто ставиться до класу P, якщо існує константа k і алгоритм, що вирішує задачу з Fa(n)=O(nk), де n - довжина входу алгоритму в бітах n = |D|. • Задачі класу P - це інтуїтивно, задачі, розв'язувані за реальний час. • Відзначимо наступні переваги алгоритмів із цього класу: – для більшості задач із класу P константа k менше 6; – клас P інваріантний по моделі обчислень (для широкого класу моделей); – клас P має властивість природної замкнутості (сума або добуток поліномів є поліном). • Таким чином, задачі класу P є уточнення визначення «практично розв'язної» задачі
10. 3 Класи складності • 2) Клас NP (поліноміальної перевірки) • Уявимо собі, що деякий алгоритм одержує рішення деякої задачі - чи відповідає отриману відповідь поставленій задачі, і наскільки швидко ми можемо перевірити його правильність? Формально: D DA, |D| = n поставимо у відповідність сертифікат S SA , такий що |S|= O(n 2 ) і алгоритм As =As(D, S), такий, що він видає « 1» , якщо рішення правильно, і « 0» , якщо рішення невірно. Тоді задача належить класу NP, якщо F(As)=O(nm). • Змістовно задача відноситься до класу NP, якщо її рішення деяким алгоритмом може бути швидко ( поліномінально ) перевірено.
10. 3 Класи складності • Проблема P = NP Після введення в теорію алгоритмів понять класів складності Эдмондсом (Edmonds, 1965) була поставлена основна проблема теорії складності - P = NP ? Словесне формулювання проблеми має вигляд: чи можна всі задачі, рішення яких перевіряється з поліноміальною складністю, вирішити за поліноміальний час ? Очевидно, що будь-яка задача, що належить класу P, належить і класу NP, тому що вона може бути поліномінально перевірена - задача перевірки рішення може складатися просто в повторному рішенні задачі. На сьогодні відсутні теоретичні докази як збігу цих класів (P=NP), так і їхньої розбіжності. Припущення полягає в тому, що клас P є власною підмножиною класу NP, тобто NP P не порожньо.
10. 3 Класи складності
10. 3 Класи складності • • 3. Клас NPC (NP - повні задачі) Поняття NP - повноти був уведено незалежно Куком (Stephen Cook, 1971) і Левиным (журнал «Проблеми передачі інформації» , 1973, т. 9, вип. 3) і ґрунтується на понятті зведення однієї задачі до іншої. Зведення може бути представлена в такий спосіб: якщо ми маємо задачу 1 і вирішальну цю задачу алгоритм, що видає правильну відповідь для всіх конкретних проблем, що становлять задачу, а для задачі 2 алгоритм рішення невідомий, те якщо ми можемо переформулювати (звести) задачу 2 у термінах задачі 1, то ми вирішуємо задачу 2. Таким чином, якщо задача 1 задана множиною конкретних проблем DA 1, а задача 2 – множиною, і існує функція fs(алгоритм), що зводить конкретну постановку задачі 2 (d 2) до конкретної постановки задачі 1(d 1): ƒs (d(2) DA 2) = d(1) DA 1, то задача 2 сводима до задачі 1. Якщо при цьому F (ƒs) = O(nk), тобто алгоритм відомості належить класу P, те говорять, що задача 1 поліномінально зводиться до задачі 2. Прийнято говорити, що задача задається деякою мовою, тоді якщо задача 1 задана мовою L 1, а задача 2 - мовою L 2, те поліноміальне зведення позначається в такий спосіб: L 2 =< p 1. Визначення класу NPC ( NP-complete) або класу NP-Повних задач вимагає виконання наступних двох умов: по-перше, задача повинна належати класу NP (L є NP), і, по-друге, до неї поліномінально повинні зводитися всі задачі із класу NP (Lx=< p, для кожного Lx є NP), що схематично представлено
10. 3 Класи складності • NP NPC
10. 3 Класи складності • Для класу NPC доведена наступна теорема: Якщо існує задача, що належить класу NPC, для якої існує поліноміальний алгоритм рішення (F = O(nk)), те клас P збігається із класом NP, тобто P=NP. • Схема доказу складається у відомості будь-якої задачі з NP до даної задачі із класу NPC з поліноміальною трудомісткістю й рішенні цієї задачі за поліноміальний час (за умовою теореми). • У цей час доведено існування сотень NP-Повних задач, але для жодної з них поки не вдалося знайти поліноміального алгоритму рішення. У цей час дослідники припускають наступне співвідношення класів P ≠NP і задачі із класу NPC не можуть бути вирішені (сьогодні) з поліноміальною трудомісткістю.
10. 3 Класи складності