Теорія Складності Обчислень:Іспит
Матеріал з USIC Wiki
- Питання до іспиту
Часова та просторова складностi алгоритмiв обчислення функцiй та предикатiв. Вживання символiки O(f(n))
Целью анализа трудоёмкости алгоритмов является нахождение оптимального алгоритма для решения данной задачи. В качестве критерия оптимальности алгоритма выбирается трудоемкость алгоритма, понимаемая как количество элементарных операций, которые необходимо выполнить для решения задачи с помощью данного алгоритма. Функцией трудоемкости называется отношение, связывающие входные данные алгоритма с количеством элементарных операций.
Трудоёмкость алгоритмов по-разному зависит от входных данных. Для некоторых алгоритмов трудоемкость зависит только от объема данных, для других алгоритмов — от значений данных, в некоторых случаях порядок поступления данных может влиять на трудоемкость. Трудоёмкость многих алгоритмов может в той или иной мере зависеть от всех перечисленных выше факторов.
Одним из упрощенных видов анализа, используемых на практике, является асимптотический анализ алгоритмов. Целью асимптотического анализа является сравнение затрат времени и других ресурсов различными алгоритмами, предназначенными для решения одной и той же задачи, при больших объемах входных данных. Используемая в асимптотическом анализе оценка функции трудоёмкости, называемая сложностью алгоритма, позволяет определить, как быстро растет трудоёмкость алгоритма с увеличением объема данных. В асимптотическом анализе алгоритмов используются обозначения, принятые в математическом асимптотическом анализе. Ниже перечислены основные оценки сложности.
Основной оценкой функции сложности алгоритма f(n) является оценка
. Здесь n — величина объёма данных или длина входа. Мы говорим, что оценка сложности алгоритма
если при g > 0 при n > 0 существуют положительные с1, с2, n0, такие, что:
при n > n0, иначе говоря, можно найти такие с1 и c2, что при достаточно больших n f(n) будет заключена между
и
.
В таком случае говорят еще, что функция g(n) является асимптотически точной оценкой функции f(n), так как по определению функция f(n) не отличается от функции g(n) с точностью до постоянного множителя (см. асимптотическое равенство). Например, для метода сортировки heapsort оценка трудоёмкости составляет
то есть g(n) = nlogn
Из
следует, что
.
Важно понимать, что
представляет собой не функцию, а множество функций, описывающих рост
с точностью до постоянного множителя.
дает одновременно верхнюю и нижнюю оценки роста функции. Часто бывает необходимо рассматривать эти оценки по отдельности. Оценка
представляет собой верхнюю асимптотическую оценку трудоемкости алгоритма.
Мы говорим, что
если
Иначе говоря, запись
означает, что f(n) принадлежит классу функций, которые растут не быстрее, чем функция g(n) с точностью до постоянного множителя.
Оценка
задает нижнюю асимптотическую оценку роста функции f(n) и определяет класс функций, которые растут не медленнее, чем g(n) с точностью до постоянного множителя.
если
Например, запись
обозначает класс функций, которые растут не медленнее, чем
, в этот класс попадают все полиномы со степенью большей единицы, равно как и все степенные функции с основанием большим единицы.
Равенство
выполняется тогда и только тогда, когда
и
.
Асимптотический анализ алгоритмов имеет не только практическое, но и теоретическое значение. Так, например, доказано, что все алгоритмы сортировки, основанные на попарном сравнении элементов, отсортируют n элементов за время, не меньшее
.
Важную роль в развитии асимптотического анализа алгоритмов сыграли A. Ахо, Дж. Ульманом, Дж. Хопкрофт.
http://ru.wikipedia.org/wiki/Теория_алгоритмов
Розглядаючи вхідні дані достатньо великих розмірів для оцінки такої величини, як порядку росту
часу роботи алгоритму ми тим самим вивчаємо асимптотичну ефективність алгоритмів. Це означає,
що нас цікавить тільки те, як час роботи алгоритму зростає, коли розмір вхідних даних прямує
до нескінченності. За звичай алгоритм, більш ефективний в асимптотичному смислі, буде більш ефективним
для всіх вхідних даних за винятком хіба що дуже малих.
- позначення
Для деякої функції g(x) запис
означає множину функцій
Функція f(n) належить
, якщо існують додатні константи
c1 та c2, такі що вона буде обмежена функціями c1g(n) та c2g(n) для достатньо великих n. Оскільки
це множина, то можна написати
. Для цього зазвичай використовують еквівалентне позначення
. Знак дорівнює для позначення належності множині може збивати з пантелику, але як буде видно далі це має свої переваги. Кажуть, що функція g(n) є асимптотично точною оцінкою функції f(n). Відповідно до означення множини
, потрібно щоб кожен її елемент f(n) був асимптотично невідємним. Це означає, що при достатньо великих n функція f(n) є невідємною. Відповідно функція g(n) має бути асимптотично невідємною, оскільки в протилежному випадку множина
буде порожньою.
Доведемо, що має місце
за допомогою формального означення.
Для цього потрібно визначити чому дорівнюють додатні константи c1, c2 та n0, щоб виконувалась нерівність
, при всіх
. Поділивши дану нерівність на n2, отримаємо:
. Права нерівність виконується при всіх
, якщо обрати
. Аналогічно, ліва нерівність виконується при всіх
, якщо обрати
.
Таким чином, обравши
, переконуємось в тому, що
.
Також за допомогою формального означення покажемо, що
.
Від супротивного...Припустимо, що знайдуться такі c2 та n0, що
для всіх
. Тоді, виходить, що
, а ця нерівність не може виконуватись для великих n, оскільки c2 є константою. Суперечність...
- позначення
В
- позначенні функція асимптотично обмежена зверху і знизу. Якщо
досить визначити тільки асимптотично верхну межу використовують
-позначення.
Для деякої функції g(n) позначення
означає множину функцій таких, що
.
Щоб вказати, що функція f(n) належить множині пишуть
.
Також варто звернути увагу на те, що із
випливає, що
, оскільки
.
- позначення
Аналогічно тому як для
дається асимптотична верхня межа функції, в
-позначеннях дається її асимптотична нижня оцінка.
Для даної функції g(n) позначення
означає множину функцій таких, що
.
Теорема.
Для довільних двої функцій f(n) та g(n) співвідношення
, виконується тоді і тільки тоді, коли
та
.
Поняття бiтової операцiї, часова складнiсть алгоритмiв додавання, множення, дiлення з остачею, пiднесення до степеня в кiльцi лишкiв
- Додавання
- length(n)=k
- length(m)=l
- length(m+n)=max(k,l)+1
- length(m)=l
- Додавання k чисел завдовжки:
- Множення:
- length(n) = k
- length(m) = l
-
f(n)=O(g(n))
Приклади
- n4 + 25n2 + 40
- O(4lnn)
Клас P
Функція або предикат належить класу P (f, L є P), якщо кількість кроків, які робить мшина Тьюринга T(|x|) є поліномом від |x|.
PSPACE визначається через кількість комірок, які задає машина Тьюринга для вхідних даних.
f(|x|) -кількість задіяних комірок.
Якщо f(|x|) - залежить поліноміально від |x|, то f або L є PSPACE.
Часова складнiсть розширеного алгоритму Евклiда
Булева схема, схемна складнiсть, клас P/poly
f=(f1, f2, ..., fn)
fi - булеві функції
f - повна система зв'язок
y1, y2, ..., ys - допоміжні змінні
S - булева схема визначається сукупністю операторів присвоєння.
операція з базису
yi: = fτ(Hi1,...,Hir) операція з базису
Hij - початкові змінні або допоміжні змінні з меншим номером
Результати обчислення: беремо останні m присвоювань
Розмірність схеми: називається кількість операторів присвоєння.
Булева схема обчислює f(x), якщо для будь-якого x результатом присвоювань буде значення цієї функції в точці x.
--- P / poly Розглянемо функцію яка діє на двійкових стрічках
- {0,1*- множина всіх слів в алфавіті
fn - предикат
C(fn) - розмір відповідної булевої схеми (складність)
Предикат
, якщо C(fn) росте як поліном від (n)
P ≠ P/poly
φ(n) - не обчислюється за поліноміальний час, не рекурсивна
визначаємо fφ(x) = φ( | x | ) на всіх x, які мають однакову довжину, значення будуть однакові
Кільість присвоювань - для кожного n - const
, але не належить P
Доведено
Теорема
- 1)
- 2) існує машина Тьюринга, яка по числу n за час poly(n) будує схему обчислення fn
Довести включення P ⊂ P/poly i показати, що воно є строгим
Теорема
Клас
Доведення
Припустимо, що
, тоді існує машина Тьюринга за T(|x|)
qj - стан управляючого пристрою, якщо він знаходиться під коміркою Інакше 0.
По цій таблиці можна побудувати булеву функцію:
- залежить від трьох верхніх значень (через систему присвоювань обраховуємо)
- кількість присвоювань, тобто C(fn) росте як поліном від (n). Тобто,
.
Доведено
Недетермiнована машина Тюринга, клас предикатiв NP. Предикатне означення класу NP, еквiвалентнiсть цих означень
Задача
належить до класу NP.
Якщо істинність можна перевірити за поліноміальний час
NP визначається тільки для предикатів.
- Означення
:
існує шлях обчислення, який дає відповідь "так" за час ≤ p(|x|)
L(x) = 0 => такого шляху не існує
- Означення 2 (еквівалентне)
Предикат
якщо його можна подати в такому вигляді:
:
-
- q - поліном
- K, co-K
-
-
=>
- P = co − P
"X є простим числом є co-NP"
L(x) - x є простим числом, є NP
-мультиплікативна група, кільце лишків за mod n
Теорема Гауса - при яких група є циклічною
Zp - поле, (<=> коли p просте число)
- Теорема Гауса :
циклічна тоді і тільки тоді:
- n=2
- n=4
- n=2*pm, p ≠ 2
- n=pm
Пред'явити ξ, яке ξ2... ≠ 1 і всі різні
ξn-1=1
Перевірити за Т. Гауса, що не підходтиь умови, потім пред'явити ξ який породжує циклічну групу. А це можливо тільки коли p-просте.
Полiномiальна звiднiсть ї ї властивостi. Поняття NP− повного предиката
:
Лема
- а)
- б)
- в)
- y = f(n) для L2, для L1 y=n
називається повним, якщо для всіх предикатів з класу NP зводиться до цього предикату за поліноміальний час
Предикат SAT. Теорема Кука
Теорема Кука
- 1 - виконлива формула
- 0, тотожно-хибна
На вхід: формула числення висловлювань
(код формули) ((1,1) (1,0), (0,1))
SAT є NP-повним предикатом
Доведення:
- 1)
Інтерпритацію висловлювань пред'явити, де формула єв виконливою
Головна (*,*) - головна, (коди підформул)(коди підформулу)(бінарне дерево)
- 2)
NP-повна
, зведемо його до SAT,R - визначено через MT
-
-
- xiyj - вхідні дані
- x- зафіксовано
- Z=Z(x,y)
- кожна комірка має бути узгоджена з 3ма верхніми
- qi-стан керуючого пристрою
- x1 = *, qj (двійковий код)
Підставимо в x конкретні значення
Треба побудувати по цій машині формулу числення висловлювань.
Z=Z(x,y)-додаткові дані φx(y,z) - ми використовуємо при керувані змінних
умова узгодженості
Якщо формула виконлива, то прийдемо до 1 в кінці, інакше на якомусь кроці отримуємо неузгодженість
Виконлива означає, що
, що ми виходимо.
Якщо
NP-повними, то він зводиться до SAT
Означення
Предикат 3-SAT
3- КНФ
КНФ називається 3-КНФ, якщо кожен диз'юнкт складається з 3ох доданків.
3-SAT = є шифр формули, яка записана у вигляді 3-КНФ
:
Нехай існує булева схема:
Потім беремо
всіх. Формула виконлива значить булева схема дасть 1
Приклади рiзних NP− повних проблем, що отримуються через полiномiальну звiднiсть
Цілочисельне лінійне програмування (JLP)
-
(перетворює x з булевою змінної на цілочисельну)
-
Ймовiрноснi алгоритми, клас предикатiв BPP, машинне та предикатне означення
BPP (Beunded Polynomial Probability)
Означення 1
PMT - probability MT
Предикат
якщо існує поліном p(n): машина зупиниться через час p(|x|) кроків
Якщо L(x)=1, то машина M зупиниться і дасть відповідь "так"
(M з ймовірністю > 2/3 дає відповідь з ймовірністю > 2/3 так ) відповідь ні
Означення 2
, якщо існує поліном
доля слів y завдовжки |y|=q(|x|),
таких що
|y|=q(|x|),
Ймовiрносний алгоритм перевiрки простоти числка. Довести, що вiн належить класу BPP
Теорема
Якщо n- просте, то P-M- алгоритм з ймовірністю 1 дає правильну відповідь, якщо ж n- складене, то правильна відповідь буде отримана з ймовірністю ≥ 1/2. Можна застосувати кілька разів і отримати помилку <
Доведення
- 1) n1,n2
- x=a1 mod n1
- x=a2 mod n2
- НСД (n1, n2)
- При будь-якому a1, a2 розв'язок існує і єдиний x за mod n1 n2
- 2)
(ізоморфізм ділення)
Ізоморфізм - це бієкція узгоджена з операціями
Довести включення BPP ⊂ P/poly
Доведення
-ймовірність помилки
Якщо L(x)=1 то доля y, для яких R(x,y)=0 менша за
- множина Y які для заданого x шукають правильну відповідь
- множина булевих векторів розміру q(|x|)
- дають неправильну відповідь
- зробити багатократним повторенням, дає помилку < 1
Не можна покрити
всю множину - значить існує Y-універсальна яка кожного x заданої множини дає правильну відповідь.
Класи складностей Σk,Πk
Довести включення BPP ⊂ Σ2 ∩ Π2
Теорема Аутемана
BPP ⊂ Σ2 ∩ Π2
-
-
-
ділимо на маленькі величини множники
- Якщо L(x)=1, то доля y>1-
- L(x)=0 => y <
k˜p( | x | )
Критерiй належностi предиката до класу PSPACE
- (від x залежить арність Wk - кількість представників)
- Унітарна операція - це лінійний оператор, який зберігає скалярний добуток
< η | ξ > = < uη | u | ξ > = < η | U + U | ξ
U + U = I
TQBF предикат та його PSPACE повнота
True quantified boolean formula
- TQBF(x)=1 <=> істина I(x)=1, x є формула виду:
, де Qi - квантору
- F - формула числення висловлювань є PSPACE-повною
- Теорема:
TQBF - PSPACE - повний
Доведення:
певна булева схема, яка обчислює W
- розмір схеми





