Теорія складності обчислень — підрозділ теоретичної інформатики, що займається дослідженням складності алгоритмів для розв'язання задач на основі формально визначених моделей обчислювальних пристроїв. Складність алгоритмів вимірюється за необхідними ресурсами, в основному це тривалість обчислень або необхідний обсяг пам'яті. В окремих випадках досліджуються інші міри складності, такі як розмір мікросхем, або кількість процесорів, необхідна для роботи паралельних алгоритмів.
Теорія складності обчислень | |
Тема вивчення/дослідження | квантова перевага і обчислювальна складність |
---|---|
Теорія складності обчислень у Вікісховищі |
Слід не плутати теорію складності обчислень з теорією обчислюваності, яка займається пошуком відповіді на запитання про те, які задачі можуть бути взагалі розв'язані за допомогою алгоритмів. Основна задача досліджень в теорії складності обчислень полягає у класифікації всіх розв'язних задач. Зокрема, робляться спроби відокремити множину задач з ефективними алгоритмами розв'язання від множини важко розв'язних задач.
Огляд
Обчислювальну складність алгоритму звичайно виражають через символ «О велике», що вказує порядок величини обчислювальної складності. Це просто член розкладання функції складності, що найшвидше зростає за умови зростання n; всі члени нижчого порядку ігноруються. Наприклад, якщо часова складність порядку n2, то вона виражається як O(n2).
Часова складність, виміряна подібним чином, не залежить від реалізації.
Не потрібно знати ні точного часу виконання окремих інструкцій, ні числа бітів, які являють різні змінні, ні навіть швидкості процесора. Один комп'ютер може бути на 50 % швидший від іншого, а в третього ширина шини даних може бути вдвічі більше, проте складність алгоритму, що оцінена порядком величини, не зміниться. І це не є хитрим трюком. Під час оцінки доволі складних алгоритмів усім іншим можна знехтувати (з точністю до постійного множника).
Оцінка обчислювальної складності наочно демонструє, як об'єм вхідних даних впливає на вимоги до часу та об'єму пам'яті.
Наприклад, якщо T=O(n), подвоєння вхідних даних подвоїть і час виконання алгоритму. Якщо T=O(2n), додання лише одного біту до вхідних даних подвоїть час виконання алгоритму.
Головною ціллю теорії складності є забезпечення механізмів класифікації обчислювальних задач згідно з ресурсами, необхідних для їх розв'язання. Класифікація не має залежати від конкретної обчислювальної моделі, а скоріше оцінювати внутрішню складність задачі.
Ресурси, що оцінюються, як уже було зазначено раніше, можуть бути такими: час, простір пам'яті, випадкові біти, кількість процесорів, тощо, але зазвичай головним фактором є час, а іноді й простір.
Теорія розглядає мінімальний час і об'єм пам'яті для розв'язання найскладнішого варіанта задачі на теоретичному комп'ютері, відомому як машина Тюрінга. Машина Тюрінга є кінцевим автоматом з безкінечною магнітною стрічкою пам'яті для читання/запису. Це означає, що машина Тюрінга — реалістична обчислювальна модель.
Задачі, які можна розв'язати за допомогою алгоритмів з поліноміальним часом, називають такими, що можуть бути розв'язані, оскільки за умов нормальних вхідних даних вони можуть бути розв'язані за прийнятний час (точне визначення «прийнятності» залежить від конкретних умов).
Задачі, які можуть бути вирішені тільки за допомогою суперполіноміальних алгоритмів з поліноміальним часом, є обчислювально складними навіть за відносно малими значеннями n.
Алан Тюрінг довів, що деякі задачі неможливо розв'язати. Навіть без урахування часової складності алгоритму, створити алгоритм для їх розв'язання неможливо.
Асимптотична складність
Позначення | Інтуїтивне пояснення | Визначення |
---|---|---|
обмежена згори функцією (з точністю до постійного множника) асимптотично | або | |
обмежена знизу функцією (з точністю до постійного множника) асимптотично | ||
обмежена знизу і згори функцією асимптотично | ||
домінує над асимптотично | ||
домінує над асимптотично | ||
еквівалентна асимптотично |
Поширені складності алгоритмів
Позначення | Пояснення | Приклади |
---|---|---|
Сталий час роботи, незалежно від розміру задачі. | Очікуваний час пошуку в хеші. | |
Дуже повільне зростання необхідного часу. | Очікуваний час роботи інтерполюючого пошуку елементів. | |
Логарифмічне зростання — подвоєння розміру задачі збільшує час роботи на сталу величину. | Обчислення; двійковий пошук в масиві з елементів. | |
Лінійне зростання — подвоєння розміру задачі подвоїть і необхідний час. | Додавання/віднімання чисел з цифр; лінійний пошук в масиві з елементів. | |
Лінеаритмічне зростання — подвоєння розміру задачі збільшить необхідний час трохи більше ніж вдвічі. | Сортування злиттям або купою елементів; нижня границя сортування порівнянням елементів. | |
Квадратичне зростання — подвоєння розміру задачі вчетверо збільшує необхідний час. | Елементарні алгоритми сортування. | |
Кубічне зростання — подвоєння розміру задачі збільшує необхідний час у вісім разів. | Звичайне множення матриць. | |
Експоненціальне зростання — збільшення розміру задачі на призводить до кратного збільшення необхідного часу; подвоєння розміру задачі підносить необхідний час у квадрат | Деякі задачі комівояжера, алгоритми пошуку повним перебором. |
Класи складності
Клас складності — це множина задач розпізнавання, для вирішення яких існують алгоритми, схожі за обчислювальною складністю. Задачі можна розбити на класи згідно зі складністю їх розв'язання. Всі класи складності знаходяться в ієрархічному відношенні: одні містять у собі інші. Однак про більшість включень невідомо, чи є вони суворими. Клас P, що є найнижчим, містить усі задачі, які можна розв'язати за поліноміальний час. До класу NP входять усі задачі, які можна розв'язати за поліноміальний час тільки на недетермінованій машині Тюрінга (це варіант звичайної машини Тюрінга, що може робити припущення). Така машина робить припущення щодо розв'язку задачі — чи «вдало вгадуючи», чи перебираючи усі припущення паралельно — та перевіряє своє припущення за поліноміальний час.
Клас P
Клас P (від англ. polynomial) — множина задач, для яких існують «швидкі» алгоритми рішення (час роботи яких поліноміально залежить від розміру вхідних даних). Клас P включений у ширші класи складності алгоритмів. Для будь-якої мови програмування можна визначити клас P подібним чином (замінивши у визначенні машину Тюрінга на реалізацію мови програмування). Якщо компілятор мови, на якому реалізовано алгоритм, уповільнює виконання алгоритму поліноміальної (тобто час виконання алгоритму на машині Тюрінга менше деякого многочлена від часу виконання його на мові програмування), то визначення класів P для цієї мови і для машини Тюрінга збігаються. Код на асемблері допускає перетворення в машину Тюрінга з невеликим поліноміальним уповільненням, а оскільки всі існуючі мови допускають компіляцію в асемблер (знову ж таки, з поліноміальним уповільненням), то визначення класу P для машин Тюрінга і для будь-якої існуючої мови програмування збігаються.
Клас NP
Клас NP (від англ. non-deterministic polynomial) — множина задач розпізнавання, розв'язання яких є можливим за наявності деяких додаткових відомостей (так званого сертифіката рішення), тобто є можливість «швидко» (за час, що не перевершує полінома від розміру даних) перевірити розв'язок на машині Тьюрінга. Еквівалентно клас NP можна визначити як сукупність завдань, які можна «швидко» вирішити на недетермінованій машині Тьюрінга.
Клас складності NP визначається для множини мов, тобто множин слів над кінцевим алфавітом Σ. Мова L належить класу NP, якщо існують двомісний предикат з класу P (тобто обчислюваний за поліноміальний час) і константа такі, що для будь-якого слова умова рівносильна умові .
Відношення класів складності NP та P
У теорії алгоритмів питання про рівність класів складності P і NP є однією з центральних відкритих проблем вже більше трьох десятиліть. Якщо на нього буде дана ствердна відповідь, це буде означати, що теоретично можливо вирішувати багато складних завдань істотно швидше, ніж зараз.
З визначення класів P і NP відразу випливає наслідок: . Проте до цих пір нічого не відомо про суворість цього включення, тобто чи існує завдання, що лежить в NP, але не лежить в P. Якщо такого завдання не існує, то всі завдання, що належать класу NP, можна буде вирішувати за поліноміальний час, що обіцяє величезну вигоду з обчислювальної точки зору. Зараз найскладніші завдання з класу NP (так звані NP-повні задачі) можна вирішити за експоненційний час, що майже завжди неприйнятно.
В даний час більшість математиків вважають, що ці класи не рівні. Згідно з опитуванням, проведеним у 2002 році серед 100 вчених, 61 людина вважає, що відповідь — «не рівні»; 9 — «рівні»; 22 не змогли відповісти; 8 вважають, що гіпотеза не виводиться з поточної системи аксіом і, таким чином, не може бути доведена або спростована. З вищезазначеного видно, що проблема дослідження відношення класів P та NP є актуальною в науковому середовищі і потребує глибшого аналізу.
Непіддатливість
Задачі які можна розв'язати теоретично (маючи величезний але скінченний час), але які на практиці займають занадто багато часу аби їх розв'язок міг бути корисним, називаються непіддатливими (англ. intractable).
В криптографії важко обчислити - термін, який застосовують до перетворень, алгоритм яких хоча й відомий, але не може бути реалізований за допомогою реальної кількості ресурсів. І реалізація не передбачається в найближчому майбутньому навіть з врахуванням закону Мура. Функції обчислювальні за розумний час називаються такими що їх легко обчислити.
Важко обчислювати наприклад задачі складності NP і складніші, але й поліноміальні задачі теж бувають важкими. Це залежить від константи в асимптотичній оцінці складності. Наприклад задачу складності ми завжди вважатимемо лінійною, навіть якщо константа біля буде дорівнювати , але алгоритм з такою константою буде практично незастосовним.
Функції які легко обчислити, але важко обчислити обернені до них називаються односторонніми. Складною задачею наприклад є задача факторизації, хоча множення чисел просте, і завдяки цьому ми на сьогодні можемо використовувати асиметричні алгоритми шифрування.
Приклади
При порівнянні різних алгоритмів важливо знати, як їх складність залежить від обсягу вхідних даних. Припустимо, при сортуванні одним методом обробка тисячі чисел займає 1 с., А обробка мільйона чисел — 10 с., При використанні іншого алгоритму може знадобитися 2 с. і 5 с. відповідно. У таких умовах не можна однозначно сказати, який алгоритм краще.
У загальному випадку складність алгоритму можна оцінити по порядку величини. Алгоритм має складність , якщо при збільшенні розмірності вхідних даних , час виконання алгоритму зростає з тією ж швидкістю, що і функція . Розглянемо код, який для матриці знаходить максимальний елемент у кожному рядку.
Приклад:
for i:=1 to N do begin max:=A[i,1]; for j:=1 to N do begin if A[i,j]>max then max:=A[i,j] end; writeln(max); end;
У цьому алгоритмі змінна змінюється від до . При кожній зміні , змінна теж змінюється від до . Під час кожної з ітерацій зовнішнього циклу, внутрішній цикл теж виконується раз. Загальна кількість ітерацій внутрішнього циклу дорівнює . Це визначає складність алгоритму . Оцінюючи порядок складності алгоритму, необхідно використовувати тільки ту частину, яка зростає найшвидше. Припустимо, що робочий цикл описується виразом . У такому разі його складність буде дорівнювати . Розгляд швидко зростаючої частини функції дозволяє оцінити поведінку алгоритму при збільшенні . Наприклад, при , то різниця між та дорівнює всього лише , що становить . При обчисленні можна не враховувати постійні множники у виразах. Алгоритм з робочим кроком розглядається, як . Це робить залежність ставлення від зміни розміру задачі більш очевидною.
Найбільш складними частинами програми зазвичай є виконання циклів і виклик процедур. У попередньому прикладі весь алгоритм виконаний за допомогою двох циклів. Якщо одна процедура викликає іншу, то необхідно більш ретельно оцінити складність останньої. Якщо в ній виконується певне число інструкцій (наприклад, виведення на друк), то на оцінку складності це практично не впливає. Якщо ж викликана процедура виконується кроків, то функція може значно ускладнити алгоритм. Якщо ж процедура викликається всередині циклу, то вплив може бути набагато більшим. До прикладу розглянемо дві процедури: Slow зі складністю і Fast зі складністю .
Приклад:
procedure Slow; var i,j,k: integer; begin for i:=1 to N do for j:=1 to N do for k:=1 to N do {будь-яка дія} end; procedure Fast; var i,j: integer; begin for i:=1 to N do for j:=1 to N do Slow; end; procedure Both; begin Fast; end;
Якщо у внутрішніх циклах процедури Fast відбувається виклик процедури Slow, то складності процедур перемножуються. У даному випадку складність алгоритму становить . Якщо ж основна програма викликає процедури по черзі, то їх складності додаються: . Наступний фрагмент має саме таку складність:
Приклад:
procedure Slow; var i,j,k: integer; begin for i:=1 to N do for j:=1 to N do for k:=1 to N do {будь-яка дія} end; procedure Fast; var i,j: integer; begin for i:=1 to N do for j:=1 to N do {будь-яка дія} end; procedure Both; begin Fast; Slow; end;
Історія
Прикладом раннього аналізу складності алгоритмів є проведений аналіз алгоритму Евкліда, який зробив Габрієль Ламе 1844 року.
До початку досліджень, що були явно присвячені вивченню складності алгоритмів, багато дослідників заклали цьому теоретичний фундамент. Найвпливовішим серед них був Алан Тюрінг, що ввів поняття машин Тюрінга 1936 року, що виявилися дуже вдалими й гнучкими спрощеними моделями комп'ютера.
Див. також
Примітки
- Gasarch W.I. «The P=?NP poll.» / William I. Gasarch SIGACT News. Volume 33. [Електронний ресурс] — 2002 — С. — Режим доступу: http://www.cs.umd.edu/~gasarch/papers/poll.pdf [ 27 жовтня 2019 у Wayback Machine.] - ст. 34-47
- Hopcroft, John E.; ; Ullman, Jeffrey D. (2001). Вступ до теорії автоматів, мов і обчислень (вид. 2nd). Addison–Wesley. с. 521.(англ.)
- Ємець, Мельник та Попович, 2003.
Література
- Hopcroft, John E.; ; Ullman, Jeffrey D. (2001). Вступ до теорії автоматів, мов і обчислень (вид. 2nd). Addison–Wesley. с. 521.(англ.)
- Мир, 1972. — 416 с. . Теория рекурсивных функций и эффективная вычислимость. — М. : (рос.)
- Christos H. Papadimitriou: Computational Complexity. Addison-Wesley, Reading/Mass. 1995, .
- Lance Fortnow, Steve Homer: A Short History of Computational Complexity. Online-Manuskript [ 20 березня 2021 у Wayback Machine.] (PDF, 225 kB)
- Jan van Leeuwen (Hrsg.): Handbook of Theoretical Computer Science, Volume A: Algorithms and Complexity. The MIT Press/Elsevier, Amsterdam 1994, .
- Juris Hartmanis, Richard Edwin Stearns: On the computational complexity of algorithms. In: Trans. American Mathematical Society. 117/1965, S. 285—306, ISSN 0002-9947. (англ.)
- Ding-Zhu Du, Ker-I Ko: Theory of Computational Complexity. John Wiley & Sons, New York 2000, .
- Michael R. Garey, David S. Johnson: Computers and Intractability: A guide to the theory of NP-completeness. Freeman, New York 2003, .
- Michael Sipser: Introduction to the Theory of Computation. 2. Auflage. Thomson, Boston 2006, . (International Edition)
- Кузюрін М. М., Фомін С. А. Ефективні алгоритми та складність обчислень. 2008
- Немирівський А. С., Юдін Д. Б. Складність і ефективність методів оптимізації. М.: Наука, 1979
- Ємець, В.; Мельник, А.; Попович, Р. (2003). Сучасна криптографія. Основні поняття (укр) . Львів: БаК. с. 69. ISBN .
Посилання
- Complexity Zoo [ 27 серпня 2019 у Wayback Machine.] — «Зоопарк» класів складності.
В іншому мовному розділі є повніша стаття Computational complexity theory(англ.). Ви можете допомогти, розширивши поточну статтю за допомогою з англійської.
|
Це незавершена стаття про інформаційні технології. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Teoriya skladnosti obchislen pidrozdil teoretichnoyi informatiki sho zajmayetsya doslidzhennyam skladnosti algoritmiv dlya rozv yazannya zadach na osnovi formalno viznachenih modelej obchislyuvalnih pristroyiv Skladnist algoritmiv vimiryuyetsya za neobhidnimi resursami v osnovnomu ce trivalist obchislen abo neobhidnij obsyag pam yati V okremih vipadkah doslidzhuyutsya inshi miri skladnosti taki yak rozmir mikroshem abo kilkist procesoriv neobhidna dlya roboti paralelnih algoritmiv Teoriya skladnosti obchislen Tema vivchennya doslidzhennyakvantova perevaga i obchislyuvalna skladnist Teoriya skladnosti obchislen u Vikishovishi Slid ne plutati teoriyu skladnosti obchislen z teoriyeyu obchislyuvanosti yaka zajmayetsya poshukom vidpovidi na zapitannya pro te yaki zadachi mozhut buti vzagali rozv yazani za dopomogoyu algoritmiv Osnovna zadacha doslidzhen v teoriyi skladnosti obchislen polyagaye u klasifikaciyi vsih rozv yaznih zadach Zokrema roblyatsya sprobi vidokremiti mnozhinu zadach z efektivnimi algoritmami rozv yazannya vid mnozhini vazhko rozv yaznih zadach OglyadObchislyuvalnu skladnist algoritmu zvichajno virazhayut cherez simvol O velike sho vkazuye poryadok velichini obchislyuvalnoyi skladnosti Ce prosto chlen rozkladannya funkciyi skladnosti sho najshvidshe zrostaye za umovi zrostannya n vsi chleni nizhchogo poryadku ignoruyutsya Napriklad yaksho chasova skladnist poryadku n2 to vona virazhayetsya yak O n2 Chasova skladnist vimiryana podibnim chinom ne zalezhit vid realizaciyi Ne potribno znati ni tochnogo chasu vikonannya okremih instrukcij ni chisla bitiv yaki yavlyayut rizni zminni ni navit shvidkosti procesora Odin komp yuter mozhe buti na 50 shvidshij vid inshogo a v tretogo shirina shini danih mozhe buti vdvichi bilshe prote skladnist algoritmu sho ocinena poryadkom velichini ne zminitsya I ce ne ye hitrim tryukom Pid chas ocinki dovoli skladnih algoritmiv usim inshim mozhna znehtuvati z tochnistyu do postijnogo mnozhnika Ocinka obchislyuvalnoyi skladnosti naochno demonstruye yak ob yem vhidnih danih vplivaye na vimogi do chasu ta ob yemu pam yati Napriklad yaksho T O n podvoyennya vhidnih danih podvoyit i chas vikonannya algoritmu Yaksho T O 2n dodannya lishe odnogo bitu do vhidnih danih podvoyit chas vikonannya algoritmu Golovnoyu cillyu teoriyi skladnosti ye zabezpechennya mehanizmiv klasifikaciyi obchislyuvalnih zadach zgidno z resursami neobhidnih dlya yih rozv yazannya Klasifikaciya ne maye zalezhati vid konkretnoyi obchislyuvalnoyi modeli a skorishe ocinyuvati vnutrishnyu skladnist zadachi Resursi sho ocinyuyutsya yak uzhe bulo zaznacheno ranishe mozhut buti takimi chas prostir pam yati vipadkovi biti kilkist procesoriv tosho ale zazvichaj golovnim faktorom ye chas a inodi j prostir Teoriya rozglyadaye minimalnij chas i ob yem pam yati dlya rozv yazannya najskladnishogo varianta zadachi na teoretichnomu komp yuteri vidomomu yak mashina Tyuringa Mashina Tyuringa ye kincevim avtomatom z bezkinechnoyu magnitnoyu strichkoyu pam yati dlya chitannya zapisu Ce oznachaye sho mashina Tyuringa realistichna obchislyuvalna model Zadachi yaki mozhna rozv yazati za dopomogoyu algoritmiv z polinomialnim chasom nazivayut takimi sho mozhut buti rozv yazani oskilki za umov normalnih vhidnih danih voni mozhut buti rozv yazani za prijnyatnij chas tochne viznachennya prijnyatnosti zalezhit vid konkretnih umov Zadachi yaki mozhut buti virisheni tilki za dopomogoyu superpolinomialnih algoritmiv z polinomialnim chasom ye obchislyuvalno skladnimi navit za vidnosno malimi znachennyami n Alan Tyuring doviv sho deyaki zadachi nemozhlivo rozv yazati Navit bez urahuvannya chasovoyi skladnosti algoritmu stvoriti algoritm dlya yih rozv yazannya nemozhlivo Asimptotichna skladnistPoznachennya Intuyitivne poyasnennya Viznachennya f n O g n displaystyle f n in O g n f displaystyle f obmezhena zgori funkciyeyu g displaystyle g z tochnistyu do postijnogo mnozhnika asimptotichno C gt 0 n 0 n gt n 0 f n C g n displaystyle exists C gt 0 n 0 forall n gt n 0 f n leq C g n abo C gt 0 n 0 n gt n 0 f n C g n displaystyle exists C gt 0 n 0 forall n gt n 0 f n leq Cg n f n W g n displaystyle f n in Omega g n f displaystyle f obmezhena znizu funkciyeyu g displaystyle g z tochnistyu do postijnogo mnozhnika asimptotichno C gt 0 n 0 n gt n 0 f n C g n displaystyle exists C gt 0 n 0 forall n gt n 0 f n geq C g n f n 8 g n displaystyle f n in Theta g n f displaystyle f obmezhena znizu i zgori funkciyeyu g displaystyle g asimptotichno C C gt 0 n 0 n gt n 0 C g n f n C g n displaystyle exists C C gt 0 n 0 forall n gt n 0 C g n leq f n leq C g n f n o g n displaystyle f n in o g n g displaystyle g dominuye nad f displaystyle f asimptotichno C gt 0 n 0 n gt n 0 f n lt C g n displaystyle forall C gt 0 exists n 0 forall n gt n 0 f n lt C g n f n w g n displaystyle f n in omega g n f displaystyle f dominuye nad g displaystyle g asimptotichno C gt 0 n 0 n gt n 0 f n gt C g n displaystyle forall C gt 0 exists n 0 forall n gt n 0 f n gt C g n f n g n displaystyle f n sim g n f displaystyle f ekvivalentna g displaystyle g asimptotichno lim n f n g n 1 displaystyle lim n to infty frac f n g n 1 Poshireni skladnosti algoritmivPoznachennya Poyasnennya Prikladi O 1 displaystyle O 1 Stalij chas roboti nezalezhno vid rozmiru zadachi Ochikuvanij chas poshuku v heshi O log log n displaystyle O log log n Duzhe povilne zrostannya neobhidnogo chasu Ochikuvanij chas roboti interpolyuyuchogo poshuku n displaystyle n elementiv O log n displaystyle O log n Logarifmichne zrostannya podvoyennya rozmiru zadachi zbilshuye chas roboti na stalu velichinu Obchislennya dvijkovij poshuk v masivi z n displaystyle n elementiv O n displaystyle O n Linijne zrostannya podvoyennya rozmiru zadachi podvoyit i neobhidnij chas Dodavannya vidnimannya chisel z n displaystyle n cifr linijnij poshuk v masivi z n displaystyle n elementiv O n log n displaystyle O n cdot log n Linearitmichne zrostannya podvoyennya rozmiru zadachi zbilshit neobhidnij chas trohi bilshe nizh vdvichi Sortuvannya zlittyam abo kupoyu n displaystyle n elementiv nizhnya granicya sortuvannya porivnyannyam n displaystyle n elementiv O n 2 displaystyle O n 2 Kvadratichne zrostannya podvoyennya rozmiru zadachi vchetvero zbilshuye neobhidnij chas Elementarni algoritmi sortuvannya O n 3 displaystyle O n 3 Kubichne zrostannya podvoyennya rozmiru zadachi zbilshuye neobhidnij chas u visim raziv Zvichajne mnozhennya matric O c n displaystyle O c n Eksponencialne zrostannya zbilshennya rozmiru zadachi na 1 displaystyle 1 prizvodit do c displaystyle c kratnogo zbilshennya neobhidnogo chasu podvoyennya rozmiru zadachi pidnosit neobhidnij chas u kvadrat Deyaki zadachi komivoyazhera algoritmi poshuku povnim pereborom Klasi skladnostiKlas skladnosti ce mnozhina zadach rozpiznavannya dlya virishennya yakih isnuyut algoritmi shozhi za obchislyuvalnoyu skladnistyu Zadachi mozhna rozbiti na klasi zgidno zi skladnistyu yih rozv yazannya Vsi klasi skladnosti znahodyatsya v iyerarhichnomu vidnoshenni odni mistyat u sobi inshi Odnak pro bilshist vklyuchen nevidomo chi ye voni suvorimi Klas P sho ye najnizhchim mistit usi zadachi yaki mozhna rozv yazati za polinomialnij chas Do klasu NP vhodyat usi zadachi yaki mozhna rozv yazati za polinomialnij chas tilki na nedeterminovanij mashini Tyuringa ce variant zvichajnoyi mashini Tyuringa sho mozhe robiti pripushennya Taka mashina robit pripushennya shodo rozv yazku zadachi chi vdalo vgaduyuchi chi perebirayuchi usi pripushennya paralelno ta pereviryaye svoye pripushennya za polinomialnij chas Klas P Klas P vid angl polynomial mnozhina zadach dlya yakih isnuyut shvidki algoritmi rishennya chas roboti yakih polinomialno zalezhit vid rozmiru vhidnih danih Klas P vklyuchenij u shirshi klasi skladnosti algoritmiv Dlya bud yakoyi movi programuvannya mozhna viznachiti klas P podibnim chinom zaminivshi u viznachenni mashinu Tyuringa na realizaciyu movi programuvannya Yaksho kompilyator movi na yakomu realizovano algoritm upovilnyuye vikonannya algoritmu polinomialnoyi tobto chas vikonannya algoritmu na mashini Tyuringa menshe deyakogo mnogochlena vid chasu vikonannya jogo na movi programuvannya to viznachennya klasiv P dlya ciyeyi movi i dlya mashini Tyuringa zbigayutsya Kod na asembleri dopuskaye peretvorennya v mashinu Tyuringa z nevelikim polinomialnim upovilnennyam a oskilki vsi isnuyuchi movi dopuskayut kompilyaciyu v asembler znovu zh taki z polinomialnim upovilnennyam to viznachennya klasu P dlya mashin Tyuringa i dlya bud yakoyi isnuyuchoyi movi programuvannya zbigayutsya Klas NP Klas NP vid angl non deterministic polynomial mnozhina zadach rozpiznavannya rozv yazannya yakih ye mozhlivim za nayavnosti deyakih dodatkovih vidomostej tak zvanogo sertifikata rishennya tobto ye mozhlivist shvidko za chas sho ne perevershuye polinoma vid rozmiru danih pereviriti rozv yazok na mashini Tyuringa Ekvivalentno klas NP mozhna viznachiti yak sukupnist zavdan yaki mozhna shvidko virishiti na nedeterminovanij mashini Tyuringa Klas skladnosti NP viznachayetsya dlya mnozhini mov tobto mnozhin sliv nad kincevim alfavitom S Mova L nalezhit klasu NP yaksho isnuyut dvomisnij predikat R x y displaystyle R x y z klasu P tobto obchislyuvanij za polinomialnij chas i konstanta C gt 0 displaystyle C gt 0 taki sho dlya bud yakogo slova x displaystyle x umova x L displaystyle x in L rivnosilna umovi y y lt y displaystyle exists y y lt y c displaystyle c R x y displaystyle R x y Vidnoshennya klasiv skladnosti NP ta P U teoriyi algoritmiv pitannya pro rivnist klasiv skladnosti P i NP ye odniyeyu z centralnih vidkritih problem vzhe bilshe troh desyatilit Yaksho na nogo bude dana stverdna vidpovid ce bude oznachati sho teoretichno mozhlivo virishuvati bagato skladnih zavdan istotno shvidshe nizh zaraz Z viznachennya klasiv P i NP vidrazu viplivaye naslidok P N P displaystyle P subseteq NP Prote do cih pir nichogo ne vidomo pro suvorist cogo vklyuchennya tobto chi isnuye zavdannya sho lezhit v NP ale ne lezhit v P Yaksho takogo zavdannya ne isnuye to vsi zavdannya sho nalezhat klasu NP mozhna bude virishuvati za polinomialnij chas sho obicyaye velicheznu vigodu z obchislyuvalnoyi tochki zoru Zaraz najskladnishi zavdannya z klasu NP tak zvani NP povni zadachi mozhna virishiti za eksponencijnij chas sho majzhe zavzhdi neprijnyatno V danij chas bilshist matematikiv vvazhayut sho ci klasi ne rivni Zgidno z opituvannyam provedenim u 2002 roci sered 100 vchenih 61 lyudina vvazhaye sho vidpovid ne rivni 9 rivni 22 ne zmogli vidpovisti 8 vvazhayut sho gipoteza ne vivoditsya z potochnoyi sistemi aksiom i takim chinom ne mozhe buti dovedena abo sprostovana Z vishezaznachenogo vidno sho problema doslidzhennya vidnoshennya klasiv P ta NP ye aktualnoyu v naukovomu seredovishi i potrebuye glibshogo analizu NepiddatlivistZadachi yaki mozhna rozv yazati teoretichno mayuchi velicheznij ale skinchennij chas ale yaki na praktici zajmayut zanadto bagato chasu abi yih rozv yazok mig buti korisnim nazivayutsya nepiddatlivimi angl intractable V kriptografiyi vazhko obchisliti termin yakij zastosovuyut do peretvoren algoritm yakih hocha j vidomij ale ne mozhe buti realizovanij za dopomogoyu realnoyi kilkosti resursiv I realizaciya ne peredbachayetsya v najblizhchomu majbutnomu navit z vrahuvannyam zakonu Mura Funkciyi obchislyuvalni za rozumnij chas nazivayutsya takimi sho yih legko obchisliti Vazhko obchislyuvati napriklad zadachi skladnosti NP i skladnishi ale j polinomialni zadachi tezh buvayut vazhkimi Ce zalezhit vid konstanti v asimptotichnij ocinci skladnosti Napriklad zadachu skladnosti o n displaystyle o n mi zavzhdi vvazhatimemo linijnoyu navit yaksho konstanta bilya n displaystyle n bude dorivnyuvati 2 500 displaystyle 2 500 ale algoritm z takoyu konstantoyu bude praktichno nezastosovnim Funkciyi yaki legko obchisliti ale vazhko obchisliti oberneni do nih nazivayutsya odnostoronnimi Skladnoyu zadacheyu napriklad ye zadacha faktorizaciyi hocha mnozhennya chisel proste i zavdyaki comu mi na sogodni mozhemo vikoristovuvati asimetrichni algoritmi shifruvannya PrikladiPri porivnyanni riznih algoritmiv vazhlivo znati yak yih skladnist zalezhit vid obsyagu vhidnih danih Pripustimo pri sortuvanni odnim metodom obrobka tisyachi chisel zajmaye 1 s A obrobka miljona chisel 10 s Pri vikoristanni inshogo algoritmu mozhe znadobitisya 2 s i 5 s vidpovidno U takih umovah ne mozhna odnoznachno skazati yakij algoritm krashe U zagalnomu vipadku skladnist algoritmu mozhna ociniti po poryadku velichini Algoritm maye skladnist O f n displaystyle O f n yaksho pri zbilshenni rozmirnosti vhidnih danih N displaystyle N chas vikonannya algoritmu zrostaye z tiyeyu zh shvidkistyu sho i funkciya f N displaystyle f N Rozglyanemo kod yakij dlya matrici A N x N displaystyle A NxN znahodit maksimalnij element u kozhnomu ryadku Priklad for i 1 to N do begin max A i 1 for j 1 to N do begin if A i j gt max then max A i j end writeln max end U comu algoritmi zminna i displaystyle i zminyuyetsya vid 1 displaystyle 1 do N displaystyle N Pri kozhnij zmini i displaystyle i zminna j displaystyle j tezh zminyuyetsya vid 1 displaystyle 1 do N displaystyle N Pid chas kozhnoyi z N displaystyle N iteracij zovnishnogo ciklu vnutrishnij cikl tezh vikonuyetsya N displaystyle N raz Zagalna kilkist iteracij vnutrishnogo ciklu dorivnyuye N N displaystyle N N Ce viznachaye skladnist algoritmu O N displaystyle O N 2 displaystyle 2 displaystyle Ocinyuyuchi poryadok skladnosti algoritmu neobhidno vikoristovuvati tilki tu chastinu yaka zrostaye najshvidshe Pripustimo sho robochij cikl opisuyetsya virazom N displaystyle N 3 displaystyle 3 N displaystyle N U takomu razi jogo skladnist bude dorivnyuvati O N displaystyle O N 3 displaystyle 3 displaystyle Rozglyad shvidko zrostayuchoyi chastini funkciyi dozvolyaye ociniti povedinku algoritmu pri zbilshenni N displaystyle N Napriklad pri N 100 displaystyle N 100 to riznicya mizh N displaystyle N 3 displaystyle 3 N 1000100 displaystyle N 1000100 ta N 1000000 displaystyle N 1000000 dorivnyuye vsogo lishe 100 displaystyle 100 sho stanovit 0 01 displaystyle 0 01 Pri obchislenni O displaystyle O mozhna ne vrahovuvati postijni mnozhniki u virazah Algoritm z robochim krokom 3 N displaystyle 3 N 3 displaystyle 3 rozglyadayetsya yak O N displaystyle O N 3 displaystyle 3 displaystyle Ce robit zalezhnist stavlennya O N displaystyle O N vid zmini rozmiru zadachi bilsh ochevidnoyu Najbilsh skladnimi chastinami programi zazvichaj ye vikonannya cikliv i viklik procedur U poperednomu prikladi ves algoritm vikonanij za dopomogoyu dvoh cikliv Yaksho odna procedura viklikaye inshu to neobhidno bilsh retelno ociniti skladnist ostannoyi Yaksho v nij vikonuyetsya pevne chislo instrukcij napriklad vivedennya na druk to na ocinku skladnosti ce praktichno ne vplivaye Yaksho zh viklikana procedura vikonuyetsya O N displaystyle O N krokiv to funkciya mozhe znachno uskladniti algoritm Yaksho zh procedura viklikayetsya vseredini ciklu to vpliv mozhe buti nabagato bilshim Do prikladu rozglyanemo dvi proceduri Slow zi skladnistyu O N displaystyle O N 3 displaystyle 3 displaystyle i Fast zi skladnistyu O N displaystyle O N 2 displaystyle 2 displaystyle Priklad procedure Slow var i j k integer begin for i 1 to N do for j 1 to N do for k 1 to N do bud yaka diya end procedure Fast var i j integer begin for i 1 to N do for j 1 to N do Slow end procedure Both begin Fast end Yaksho u vnutrishnih ciklah proceduri Fast vidbuvayetsya viklik proceduri Slow to skladnosti procedur peremnozhuyutsya U danomu vipadku skladnist algoritmu stanovit O N displaystyle O N 2 displaystyle 2 O N displaystyle O N 3 displaystyle 3 O N displaystyle O N 5 displaystyle 5 displaystyle Yaksho zh osnovna programa viklikaye proceduri po cherzi to yih skladnosti dodayutsya O N displaystyle O N 2 displaystyle 2 O N displaystyle O N 3 displaystyle 3 O N displaystyle O N 3 displaystyle 3 displaystyle Nastupnij fragment maye same taku skladnist Priklad procedure Slow var i j k integer begin for i 1 to N do for j 1 to N do for k 1 to N do bud yaka diya end procedure Fast var i j integer begin for i 1 to N do for j 1 to N do bud yaka diya end procedure Both begin Fast Slow end IstoriyaPrikladom rannogo analizu skladnosti algoritmiv ye provedenij analiz algoritmu Evklida yakij zrobiv Gabriyel Lame 1844 roku Do pochatku doslidzhen sho buli yavno prisvyacheni vivchennyu skladnosti algoritmiv bagato doslidnikiv zaklali comu teoretichnij fundament Najvplivovishim sered nih buv Alan Tyuring sho vviv ponyattya mashin Tyuringa 1936 roku sho viyavilisya duzhe vdalimi j gnuchkimi sproshenimi modelyami komp yutera Div takozhSpisok algoritmiv Obchislyuvalna skladnist Bagatoznachna zvodimist PCP teoremaPrimitkiGasarch W I The P NP poll William I Gasarch SIGACT News Volume 33 Elektronnij resurs 2002 S Rezhim dostupu http www cs umd edu gasarch papers poll pdf 27 zhovtnya 2019 u Wayback Machine st 34 47 Hopcroft John E Ullman Jeffrey D 2001 Vstup do teoriyi avtomativ mov i obchislen vid 2nd Addison Wesley s 521 angl Yemec Melnik ta Popovich 2003 LiteraturaHopcroft John E Ullman Jeffrey D 2001 Vstup do teoriyi avtomativ mov i obchislen vid 2nd Addison Wesley s 521 angl inshi movi Teoriya rekursivnyh funkcij i effektivnaya vychislimost M Mir 1972 416 s ros Christos H Papadimitriou Computational Complexity Addison Wesley Reading Mass 1995 ISBN 0 201 53082 1 Lance Fortnow Steve Homer A Short History of Computational Complexity Online Manuskript 20 bereznya 2021 u Wayback Machine PDF 225 kB Jan van Leeuwen Hrsg Handbook of Theoretical Computer Science Volume A Algorithms and Complexity The MIT Press Elsevier Amsterdam 1994 ISBN 0 262 72020 5 Juris Hartmanis Richard Edwin Stearns On the computational complexity of algorithms In Trans American Mathematical Society 117 1965 S 285 306 ISSN 0002 9947 angl Ding Zhu Du Ker I Ko Theory of Computational Complexity John Wiley amp Sons New York 2000 ISBN 0 471 34506 7 Michael R Garey David S Johnson Computers and Intractability A guide to the theory of NP completeness Freeman New York 2003 ISBN 0 7167 1045 5 Michael Sipser Introduction to the Theory of Computation 2 Auflage Thomson Boston 2006 ISBN 0 534 95097 3 International Edition Kuzyurin M M Fomin S A Efektivni algoritmi ta skladnist obchislen 2008 Nemirivskij A S Yudin D B Skladnist i efektivnist metodiv optimizaciyi M Nauka 1979 Yemec V Melnik A Popovich R 2003 Suchasna kriptografiya Osnovni ponyattya ukr Lviv BaK s 69 ISBN 966 7065 44 8 PosilannyaComplexity Zoo 27 serpnya 2019 u Wayback Machine Zoopark klasiv skladnosti V inshomu movnomu rozdili ye povnisha stattya Computational complexity theory angl Vi mozhete dopomogti rozshirivshi potochnu stattyu za dopomogoyu perekladu z anglijskoyi Divitis avtoperekladenu versiyu statti z movi anglijska Perekladach povinen rozumiti sho vidpovidalnist za kincevij vmist statti u Vikipediyi nese same avtor redaguvan Onlajn pereklad nadayetsya lishe yak korisnij instrument pereglyadu vmistu zrozumiloyu movoyu Ne vikoristovujte nevichitanij i nevidkorigovanij mashinnij pereklad u stattyah ukrayinskoyi Vikipediyi Mashinnij pereklad Google ye korisnoyu vidpravnoyu tochkoyu dlya perekladu ale perekladacham neobhidno vipravlyati pomilki ta pidtverdzhuvati tochnist perekladu a ne prosto skopiyuvati mashinnij pereklad do ukrayinskoyi Vikipediyi Ne perekladajte tekst yakij vidayetsya nedostovirnim abo neyakisnim Yaksho mozhlivo perevirte tekst za posilannyami podanimi v inshomovnij statti Dokladni rekomendaciyi div Vikipediya Pereklad Ce nezavershena stattya pro informacijni tehnologiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi