Складність обчислювальних процесів — це поняття теорії складності обчислень, оцінка ресурсів (зазвичай часу та пам'яті) необхідних для виконання алгоритму.
- Часова складність — час
- Просторова складність — пам'ять
Обчислювальна складність | |
Досліджується в | теорія складності обчислень і аналіз алгоритмів |
---|
Визначення
Для оцінки алгоритмів існує багато критеріїв. Найбільшу увагу приділяють порядку росту необхідних для розв'язання задачі часу та розміру пам'яті при збільшенні розміру вхідних даних.
Нехай А — алгоритм розв'язання деякого класу задач, а — розмірність окремої задачі цього класу. може бути, наприклад, розмірністю оброблюваного масиву, числом вершин оброблюваного графа тощо, Позначимо функцію, що дає верхню межу максимального числа основних операцій (додавання, множення і т. д.), які повинен виконати алгоритм А, розв'язуючи задачу розмірності . Говоритимемо, що алгоритм А поліноміальний, якщо зростає не швидше, ніж деякий поліном від . В іншому разі А — експоненціальний алгоритм.
Виявляється, що між цими класами алгоритмів є істотна різниця: при великих розмірностях задач (які, зазвичай, найцікавіші на практиці), поліноміальні алгоритми можуть бути виконані на сучасних комп'ютерах, тоді як експоненціальні алгоритми для практичних розмірностей задач, як правило, не можуть виконатися повністю. Зазвичай розв'язок задач, що породжують експоненціальні алгоритми, пов'язаний з повним перебором всіх можливих варіантів, і, зважаючи на практичну неможливість реалізації такої стратегії, їх розв'язують іншими шляхами.
Наприклад, якщо навіть існує експоненціальний алгоритм для пошуку оптимального розв'язку деякої задачі, то на практиці застосовуються інші, ефективніші поліноміальні алгоритми для пошуку прийнятного розв'язку (не обов'язково оптимального, а лише наближеного до оптимального). Та навіть якщо задача має розв'язок за допомогою поліноміального алгоритму, побудувати його можна лише після заглиблення в суть поставленої задачі.
Поліноміальні алгоритми також можуть істотно розрізнятися залежно від степеня полінома, що апроксимує залежність . Розглянемо оцінювання часової складності алгоритму. Така оцінка проводиться із застосуванням відношення («велике О»): кажуть, що зростає як для великих N і записується це як . Якщо існує додатна стала Const>0, така, що , то оцінка О(g(N)) називається асимптотичною часовою складністю алгоритму.
Оцінка О(g(N)) для функції застосовується, коли точне значення невідоме, а відомий лише порядок зростання часу, затрачуваного на розв'язання задачі розмірністю N за допомогою алгоритму А. Точні значення залежать від конкретної реалізації, тоді як О(g(N)) є характеристикою самого алгоритму. Наприклад, якщо часова асимптотична складність алгоритму дорівнює (такий алгоритм називається квадратичним), то при збільшенні N час розв'язання задачі збільшується як квадрат N. Факт експоненціальної складності алгоритму в термінах введеної символіки можна записати як , де k — більше за одиницю число (зазвичай ціле).
Інший вид оцінки пов'язаний з введенням «малого о»: кажуть, що зростає не швидше від для великих N, що записується , якщо . Наприклад, очевидно, що . Інший приклад: алгоритм А є поліноміальним, якщо , де Pk(N) — деякий поліном від N степеня k. Так, алгоритм, асимптотична складність якого дорівнює о(N log N), належить до поліноміальних.
Приклади асимптотичних складностей
В наступній таблиці наведено поширені асимптотичні складності з коментарями.
Складність | Коментар | Приклади |
---|---|---|
O(1) | Сталий час роботи не залежно від розміру задачі | Очікуваний час пошуку в хеші |
O(log log n) | Дуже повільне зростання необхідного часу | Очікуваний час роботи інтерполюючого пошуку n елементів |
O(log n) | Логарифмічне зростання — подвоєння розміру задачі збільшує час роботи на сталу величину | Обчислення xn; двійковий пошук в масиві з n елементів |
O(n) | Лінійне зростання — подвоєння розміру задачі подвоїть і необхідний час | Додавання/віднімання чисел з n цифр; лінійний пошук в масиві з n елементів |
O(n log n) | Лінеаритмічне зростання — подвоєння розміру задачі збільшить необхідний час трохи більше ніж вдвічі | Сортування злиттям або n елементів; нижня границя сортування порівнянням n елементів |
O(n²) | Квадратичне зростання — подвоєння розміру задачі вчетверо збільшує необхідний час | Елементарні алгоритми сортування |
O(n³) | Кубічне зростання — подвоєння розміру задачі збільшує необхідний час у вісім разів | Звичайне множення матриць |
O(cn) | Експоненціальне зростання — збільшення розміру задачі на 1 призводить до c-кратного збільшення необхідного часу; подвоєння розміру задачі підносить необхідний час у квадрат | Деякі задачі комівояжера, алгоритми пошуку повним перебором |
Див. також
Джерела
- Hopcroft, John E.; ; Ullman, Jeffrey D. (2001). Вступ до теорії автоматів, мов і обчислень (вид. 2nd). Addison–Wesley. с. 521.(англ.)
Це незавершена стаття з математики. Ви можете проєкту, виправивши або дописавши її. |
Це незавершена стаття про інформаційні технології. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Skladnist obchislyuvalnih procesiv ce ponyattya teoriyi skladnosti obchislen ocinka resursiv zazvichaj chasu ta pam yati neobhidnih dlya vikonannya algoritmu Chasova skladnist chas Prostorova skladnist pam yatObchislyuvalna skladnistDoslidzhuyetsya vteoriya skladnosti obchislen i analiz algoritmivViznachennyaDlya ocinki algoritmiv isnuye bagato kriteriyiv Najbilshu uvagu pridilyayut poryadku rostu neobhidnih dlya rozv yazannya zadachi chasu ta rozmiru pam yati pri zbilshenni rozmiru vhidnih danih Nehaj A algoritm rozv yazannya deyakogo klasu zadach a N displaystyle N rozmirnist okremoyi zadachi cogo klasu N displaystyle N mozhe buti napriklad rozmirnistyu obroblyuvanogo masivu chislom vershin obroblyuvanogo grafa tosho Poznachimo fA N displaystyle f A left N right funkciyu sho daye verhnyu mezhu maksimalnogo chisla osnovnih operacij dodavannya mnozhennya i t d yaki povinen vikonati algoritm A rozv yazuyuchi zadachu rozmirnosti N displaystyle N Govoritimemo sho algoritm A polinomialnij yaksho fA N displaystyle f A left N right zrostaye ne shvidshe nizh deyakij polinom vid N displaystyle N V inshomu razi A eksponencialnij algoritm Viyavlyayetsya sho mizh cimi klasami algoritmiv ye istotna riznicya pri velikih rozmirnostyah zadach yaki zazvichaj najcikavishi na praktici polinomialni algoritmi mozhut buti vikonani na suchasnih komp yuterah todi yak eksponencialni algoritmi dlya praktichnih rozmirnostej zadach yak pravilo ne mozhut vikonatisya povnistyu Zazvichaj rozv yazok zadach sho porodzhuyut eksponencialni algoritmi pov yazanij z povnim pereborom vsih mozhlivih variantiv i zvazhayuchi na praktichnu nemozhlivist realizaciyi takoyi strategiyi yih rozv yazuyut inshimi shlyahami Napriklad yaksho navit isnuye eksponencialnij algoritm dlya poshuku optimalnogo rozv yazku deyakoyi zadachi to na praktici zastosovuyutsya inshi efektivnishi polinomialni algoritmi dlya poshuku prijnyatnogo rozv yazku ne obov yazkovo optimalnogo a lishe nablizhenogo do optimalnogo Ta navit yaksho zadacha maye rozv yazok za dopomogoyu polinomialnogo algoritmu pobuduvati jogo mozhna lishe pislya zagliblennya v sut postavlenoyi zadachi Polinomialni algoritmi takozh mozhut istotno rozriznyatisya zalezhno vid stepenya polinoma sho aproksimuye zalezhnist fA N displaystyle f A left N right Rozglyanemo ocinyuvannya chasovoyi skladnosti algoritmu Taka ocinka provoditsya iz zastosuvannyam vidnoshennya O displaystyle O velike O kazhut sho fA N displaystyle f A left N right zrostaye yak g N displaystyle g left N right dlya velikih N i zapisuyetsya ce yak fA N O g N displaystyle f A left N right O left g left N right right Yaksho isnuye dodatna stala Const gt 0 taka sho limN fA N g N Const displaystyle lim N to infty f A N g N Const to ocinka O g N nazivayetsya asimptotichnoyu chasovoyu skladnistyu algoritmu Ocinka O g N dlya funkciyi fA N displaystyle f A left N right zastosovuyetsya koli tochne znachennya fA N displaystyle f A left N right nevidome a vidomij lishe poryadok zrostannya chasu zatrachuvanogo na rozv yazannya zadachi rozmirnistyu N za dopomogoyu algoritmu A Tochni znachennya fA N displaystyle f A left N right zalezhat vid konkretnoyi realizaciyi todi yak O g N ye harakteristikoyu samogo algoritmu Napriklad yaksho chasova asimptotichna skladnist algoritmu dorivnyuye O N2 displaystyle O N 2 takij algoritm nazivayetsya kvadratichnim to pri zbilshenni N chas rozv yazannya zadachi zbilshuyetsya yak kvadrat N Fakt eksponencialnoyi skladnosti algoritmu v terminah vvedenoyi simvoliki mozhna zapisati yak fA N O kN displaystyle f A left N right O left k N right de k bilshe za odinicyu chislo zazvichaj cile Inshij vid ocinki pov yazanij z vvedennyam malogo o kazhut sho fA N displaystyle f A left N right zrostaye ne shvidshe vid g N displaystyle g N dlya velikih N sho zapisuyetsya fA N o g N displaystyle f A left N right o left g left N right right yaksho limN fA N g N 0 displaystyle lim N to infty f A N g N 0 Napriklad ochevidno sho x2 o x5 sin x o x displaystyle x 2 o x 5 sin x o x Inshij priklad algoritm A ye polinomialnim yaksho fA N o Pk N displaystyle f A left N right o left P k left N right right de Pk N deyakij polinom vid N stepenya k Tak algoritm asimptotichna skladnist yakogo dorivnyuye o N log N nalezhit do polinomialnih Prikladi asimptotichnih skladnostejV nastupnij tablici navedeno poshireni asimptotichni skladnosti z komentaryami Grafiki funkcij navedenih v tablici Skladnist Komentar PrikladiO 1 Stalij chas roboti ne zalezhno vid rozmiru zadachi Ochikuvanij chas poshuku v heshiO log log n Duzhe povilne zrostannya neobhidnogo chasu Ochikuvanij chas roboti interpolyuyuchogo poshuku n elementivO log n Logarifmichne zrostannya podvoyennya rozmiru zadachi zbilshuye chas roboti na stalu velichinu Obchislennya xn dvijkovij poshuk v masivi z n elementivO n Linijne zrostannya podvoyennya rozmiru zadachi podvoyit i neobhidnij chas Dodavannya vidnimannya chisel z n cifr linijnij poshuk v masivi z n elementivO n log n Linearitmichne zrostannya podvoyennya rozmiru zadachi zbilshit neobhidnij chas trohi bilshe nizh vdvichi Sortuvannya zlittyam abo n elementiv nizhnya granicya sortuvannya porivnyannyam n elementivO n Kvadratichne zrostannya podvoyennya rozmiru zadachi vchetvero zbilshuye neobhidnij chas Elementarni algoritmi sortuvannyaO n Kubichne zrostannya podvoyennya rozmiru zadachi zbilshuye neobhidnij chas u visim raziv Zvichajne mnozhennya matricO cn Eksponencialne zrostannya zbilshennya rozmiru zadachi na 1 prizvodit do c kratnogo zbilshennya neobhidnogo chasu podvoyennya rozmiru zadachi pidnosit neobhidnij chas u kvadrat Deyaki zadachi komivoyazhera algoritmi poshuku povnim pereboromDiv takozhNotaciya Landau Chasova skladnist Analiz algoritmiv Skladnist aproksimaciyiDzherelaHopcroft John E Ullman Jeffrey D 2001 Vstup do teoriyi avtomativ mov i obchislen vid 2nd Addison Wesley s 521 angl Ce nezavershena stattya z matematiki Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Ce nezavershena stattya pro informacijni tehnologiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi