
ta_lect8.ppt
- Количество слайдов: 15
СКЛАДНІСТЬ ОБЧИСЛЕНЬ При виконанні реальних обчислень на перший план виходять питання, пов’язані з практичною реалізовністю таких обчислень на тій чи іншій моделі алгоритму. Основне: чи вистачить для цього ресурсів, у першу чергу, часу та місця? Розглянемо надсхідчасту функцію, задану схемою прим. рек-ї: ss(0) = 1; ss(x+1) = 2 ss(x). Спробуйте обчислити ss(10), принаймі оцініть величину! Pеальна обчислюваність може істотно відрізнятися від абстрактної, яка передбачає тільки принципову можливість виконати обчислення, незважаючи на необхідні для цього ресурси. Інтуїтивно зрозуміло, що функції притаманне те, що можна назвати складністю її обчислення, яка мало залежить від вміння написати програму та від конкретної моделі обчислень. 1
. Прикладна теорія алгоритмів, або теорія складності обчислень – розділ теорії алгоритмів, який займається питаннями практичної обчислюваності, оцінками її складності. конкретне обчислення здійснюється певним пристроєм у певному місці фіз. простору, займаючи відповідний обсяг і триваючи певний час. Для формалізації інтуїтивної уяви про обсяг і час обчислень природно зафіксувати певну модель алгоритму та вказати способи виміру часу обчислення, і необхідного для цього обсягу простору (пам’яті). Маємо пов’язані з даною моделлю функції від вхідних даних, які природно назвати часом і пам’яттю обчислень. Це – функції складності обчислень, або міри обчислювальної складності (міри складності обчислень). Також вживаний термін "сигналізуюча функція" (часу чи пам’яті). 2
Для дослідження складності обчислень – багатострічкові МТ. Наявні окрема вхідна стрічка та робочі стрічки, часто – вихідна. Час роботи МТ – кількість кроків, виконаних МТ для отр. результату. Обсяг пам’яті найчастіше визначають як максимум довжин використаних ділянок робочих стрічок, інколи – як суму таких довжин. Виникають питання, пов’язані з потужністю алфавіту стрічок. Видається, що вичерпної однозначної відповіді на питання, що саме вважати справжнім розміром пам’яті, не існує взагалі. Кожну функцію, обчислювану на n-стрічковій МТ із пам’яттю S(x), можна обчислити на 1 -стрічковій МТ із пам’яттю c S(x), де c – константа. Кожну функцію, обчислювану на n-стрічковій МТ за час T(x), можна обчислити на 1 -стрічковій МТ за час c T 2(x), де c – константа. Жодне обчислення з невеликим вхідним даним і невеликою пам’яттю не може бути дуже тривалим без повторів, а жодне нетривале за часом обчислення не може вимагати великої пам’яті. Тому МТ константа k: S(x) k T(x) та T(x) k. S(x)+x. 3
Аналогічні функції (міри обчислювальної складності) – для МНР-програм. Найкращі з практичного погляду – функції, обчислювані за лінійний час: час обчислень лінійно залежить від розміру вхідного даного, Переважна більшість практично цікавих функцій не можуть бути обчислені за лінійний час. Проте досить широкі класи функцій допускають обчислення за час, обмежений поліномами. Час обчислення суперпозиції таких функцій теж обмежений поліномом поняття класу P поліноміально обчислюваних функцій До класу P належать усі функції, які можна обчислити на n-стрічковій МТ за поліноміально обмежений (від довжини вхідного даного) час. При переході від n-стрічкових до 1 -стрічкових МТ часова міра складності зростає від T(x) до c T 2(x) при визначенні класу P можна обмежитись 1 -стрічковими МТ. 4
Аналогічно – клас NP, який складається з функцій, обчислюваних за поліноміальний час на недетермінованих МТ. NP – клас вербальних множин (мов), що породжуються формальними граматиками типу 0 за поліноміальний час. Це означає: слово такої множини можна вивести за кількість кроків, яка поліноміально залежить від його довжини. Еквівалентне визначення NP – це клас всіх вербальних множин, які розпізнаються недермінованими МТ за поліноміальний час. Для вербальних множин P – це як клас усіх множин, які розпізнаються детермінованими МТ за поліноміальний час. Приклади множин класу P: – довільна КВ-мова, – множина пар ізоморфних графів зі степенями вершин, що не перевищують фіксоване значення d. 5
Задачі, пов’язані з функціями (множинами, предикатами) класу P, можна трактувати як практично розв’язні. Багато задач, які реально виникають у різних галузях математики та інформатики, належать до класу NP питання збіжності класів P та NP. P = NP – одна з найважливіших відкритих проблем прикладної теорії алгоритмів. Множина (предикат) S із класу NP NP-повна, якщо до неї зводиться кожна множина (предикат) із NP. Приклад NP-повного предиката – проблема виконуваності пропозиційних формул: за даною ПФ установити, чи буде вона виконуваною (тобто не буде суперечністю). 6
Функціональні класи P-Sp та NP-Sp – з функцій, обчислюваних з поліноміальною пам’яттю відповідно на детермінованих і недетермінованих МТ. Поліноміальна оцінка складності за пам’яттю веде до експоненціальної оцінки за часом з практичного погляду обчислення з поліноміальною пам’яттю не завжди можуть бути реально здійсненими. Відомо P-Sp = NP-Sp. З іншого боку, NP P-Sp, тому встановлення P = P-Sp дало б P = NP. Таким чином, проблема P = P-Sp ще складніша за проблему P = NP. 7
Найоптимальніші з практичного погляду обчислення, які проводяться за реальний час. Це означає: кількість кроків обчислення для заданого вхідного даного d збігається (з точністю до константного множника) з розміром d. Займались М. Рабін, А. Розенберг, Дж. Хартманіс, Р. Стірнз та ін. Приклад: задача розпізнавання симетрії слова. Проте далеко не всі задачі можна розв’язати за реaльний час. 8
Складність обчислення конкретної f можна оцінити зверху та знизу. Для знаходження верхньої оцінки задають алгоритм обчислення такої функції на відп. формальній моделі (МНР-програма, n -стрічкова МТ) і доводять, що оцінювана міра складності (за часом чи за пам’яттю) не перевищує значень деякої функції для всіх значень аргументу. Така функція – верхня оцінка складності обчислення функції f. Знаходження нижньої оцінки (на даній алг. моделі) складності обчислення функції f означає: жоден алгоритм обчислення f на такій моделі не може мати міру складності (за часом чи за пам’яттю) меншим за значення певної функції . Для знаходження нижніх оцінок здебільшого – діагональний метод. Для переважної більшості логічних теорій нижня оцінка складності розв’язності формули (як функція її довжини) є експонентою. 9
Поліпшення верхніх оцінок складності не завжди веде до практичного поліпшення, адже оцінки складності даються тз точністю до деякого константного множника, а він може зростати дуже відчутно, незважаючи на поліпшення самої оцінки. Приклад. Множення матриць класичним алгоритмом має верхню оцінку порядку n 3, або, точніше, k 1 n 3. Алгоритм Штрассена дає оцінку порядку n 2. 81, або, точніше, k 2 n 2. 81. Відомий алгоритм із оцінкою порядку n 2. 5, або, точніше, k 3 n 2. 5. Алгоритм Штрассена стає кращим за класичний для матриць порядку 14, алгоритм з оцінкою k 3 n 2. 5 стає кращим для матриць, порядок яких набагато перевищує 1010, так що користі з нього небагато. 10
Різні алгоритмічні моделі можуть давати різні оцінки складності обчислення конкретної функції проблема дослідження таких властивостей оцінок складності, які не залежать від конкретних алгоритмічних моделей. Цими питаннями займається інваріантна, або машинно-незалежна теорія складності обчислень Основний напрям розвитку такої теорії аксіоматичний, він базується на формулюванні аксіом, які задовольняє довільна розумна оцінка складності обчислень. Поняття складності обчислення формалізується як міра обчислювальної складності. Міра обчислювальної складності – довільний клас функцій { nm}: 2) предикат “y = nm(x)“ є алгоритмічно розв‘язним. Приклади мір обчислювальної складності для n-стрічкових МТ: – часова міра T(x) – пам’ять S(x). 11
Аналогічні міри складності можна ввести для МНР-програм. Часова міра Tnm визначається так: Tnm(x) = t(Pm(x) за t кроків). Пов’язана з пам’яттю міра складності Snm : Snm(x) – максимальне значення вмісту регістрів МНР за весь час роботи МНР-програми Pm над вхідним даним x, якщо Pm(x) , інакше Snm(x) Для 1 -арних функцій – позначення Tm та Sm. Існують як завгодно складні обчислювані функції. Теорема 1. РФ f = m: Tm(x) > (x) x, окрім, можливо, їх скінченної кількості. Твердження теореми не можна посилити до такого: РФ f = m така, що Tm(x) > (x) x. Справді, для РФ f можна написати МНР-програму, яка дуже швидко обчислює f(a) для довільного наперед вибраного конкретного значення a, просто вносячи f(a) у програму. 12
Така програма може обчислити b = f(a) за a+b+2 кроки (тут P – довільна МНР-програма для f ): 1) S(1) … a) S(1) a+1) J(0, 1, q) a+2) Z(1) P q– 1) J(0, 0, q+b+1) q) Z(0) q+1) S(0) … q+b) S(1) Аналогічно можна вказати МНР-програму, яка дуже швидко обчислює значення функції f(x) для довільної наперед вибраної скінченної множини значень x. 13
Фундаментальний результат інваріантної теорії обчислюваності – теорема Блюма про прискорення. Теорема (про прискорення). РФ РФ f така, що МНРпрограми Pk для f МНР-програма Pm для f така: (Tm(x)) < Tk(x)) x, окрім, можливо, їх скінченної кількості. Таким чином, МНР-програми Pk функції f можна знайти МНРпрограму Pm для тієї самої функції, яка працює більше ніж у разів краще за програму Pk майже для всіх вхідних значень! Отже, найкращої МНР-програми для обчислення f не існує. Це робить проблемним визначення складності функції f, а не складності конкретного алгоритму для обчислення f, адже найкращої, найшвидшої МНР-програми для обчислення f може просто не існувати. З практ. погляду обчислення значень РФ f(x) виконується для скінч. множини зазвичай невеликих значень аргументу. Якщо відомий розподіл частот, з якими зустрічаються різні значення x, то існує й може бути ефективно знайдена найшвидша програма для обчислення f(x). 14
Важливий приклад обчислюваних функцій, які можна охарактеризувати термінах складності обчислень – елементарні за Кальмаром функції. Отримуються з базових за допомогою операцій – cуперпозиції – підсумовування – мультиплікації Eлементарні функції утворюють власний підклас ПРФ. Приклад неелементарної ПРФ – розглянута вище надсхідчаста ss(x). Якщо функція обчислюється за елементарний час, то вона елементарна. Кожна елементарна функція може бути обчислена за елементарний час. 15
ta_lect8.ppt