Złożoność problemów

Transkrypt

Złożoność problemów
Złożoność problemów
Przykład - wieże Hanoi
Problem jest zamknięty (dolne ograniczenie złożoności =
złożoność algorytmu rekurencyjnego lub iteracyjnego) i ma
złożoność O(2N).
Mnisi tybetańscy podobno rozwiązują problem dla N = 64 i
wierzą, że nasz świat skończy się kiedy tego dokonają!
1 ruch na sekundę
⇒ czas wykonania ok. 586 549 402 018 lat
1 mln ruchów na sekundę ⇒ czas wykonania ok. 586 549 lat
M.Rawski
Wstęp do Informatyki
1
“Głupia” układanka
Problem decyzyjny - taki problem algorytmiczny, który
polega na znalezieniu odpowiedzi “tak” lub “nie” (często jest to
odpowiedź na pytanie o istnienie rozwiązania problemu)
Czy istnieje takie ułożenie kwadratu M x
M z N = M 2 elementów, które spełnia
wymagania układanki?
• Dla układanki 5 X 5
1 mln układów na sekundę ⇒
czas sprawdzenia ok. 493 208 500 055 lat
Problem decyzyjny - taki problem algorytmiczny, który
polega na znalezieniu odpowiedzi “tak” lub “nie” (często jest to
odpowiedź na pytanie o istnienie rozwiązania problemu)
M.Rawski
Wstęp do Informatyki
2
Wartości niektórych funkcji złożoności
Funkcja
log2 N
N
N ∗ log2 N
N2
N3
10
3
10
33
100
1000
2N
1024
N!
NN
3,6 mln
(7 cyfr)
10 mld
(11 cyfr)
50
5
50
282
2500
125 000
N
100
6
100
664
10 000
1 000 000
liczba 16 liczba 31
cyfrowa
cyfrowa
liczba 65 liczba 161
cyfrowa
cyfrowa
liczba 85 liczba 201
cyfrowa
cyfrowa
300
1000
8
9
300
1000
2468
9965
90 000 1 000 000
27 mln
1 mld
(8 cyfr) (10 cyfr)
liczba 91 liczba 302
cyfrowa
cyfrowa
liczba 623
∞
cyfrowa
liczba 744
∞
cyfrowa
liczba protonów w widocznym wszechświecie ma 126 cyfr, a liczba
mikrosekund od “wielkiego wybuchu” ma 24 cyfry
M.Rawski
Wstęp do Informatyki
3
Zapotrzebowanie na czas
jedna instrukcja trwa mikrosekundę
1 milion instrukcji na sekundę
N
10
20
50
100
300
Funkcja
N2
1/10 000
1/2500
1/400 sek.
1/100 sek.
9/100 sek.
sek.
sek.
2N
1/1000 1 sekunda
35,7 lat 400 bilionów
75 cyfr.
sek.
stuleci liczba stuleci
NN
2,8 3,3 biliony
70 cyfr.
185 cyfr.
728 cyfr.
godziny
lat liczba stuleci liczba stuleci liczba stuleci
M.Rawski
Wstęp do Informatyki
4
Tempo wzrostu niektórych
funkcji złożoności
Funkcja f(N) jest (asymptotycznie)
ograniczona z góry przez funkcję g(N),
jeśli ∃ N0 ∀ N ≥ N0 : f(N) ≤ g(N) - oznaczmy
ten fakt przez f(N) ≤ g(N). Wtedy zachodzi
log2 N ≤ N ≤ N ⋅ log2 N ≤ N ≤
2
2N
≤N!≤N
N
10
40
10
35
10
30
10
25
10
20
N
N
2
N
1,2
N
15
10
12
10
9
10
6
10
1000
100
10
2
M.Rawski
Wstęp do Informatyki
N
5
N
3
5N
4
512
8 16 32 64 1 28
2 56
1024
5
N
10 4 0
Podział funkcji złożoności
10
35
10
30
10
25
10
20
N
2
N
1,2
15
10
12
10
10 9
6
10
1000
100
10
2
N
N
5
N
3
5N
Można także porównywać funkcje asymptotycznie w oparciu o
poprzednio przyjęty warunek
4
8 16 32 64 1 28
5 12
2 56
1 024
f (N )
lim
= 0 - oznaczmy ten fakt przez f(N) ∠ g(N).
N →∞ g ( N )
Wtedy zachodzi
1 ∠ log2 log2 N ∠ log2 N ∠ N ∠ N ∠ N ⋅ log2 N ∠ N 2 ∠ N 3 ∠ N log N ∠ 2N ∠ N ! ∠
N N ∠ 22N
Funkcje złożoności ogólnie dzielimy na:
wielomianowe - ograniczone z góry przez N k dla pewnego k (tzn. ≤ N k lub ∠ N k )
ponadwielomianowe - wykładnicze i inne szybciej rosnące (tzn. nie istnieje dla nich
takie k)
algorytm wielomianowy = algorytm o złożoności wielomianowej O(N k)
M.Rawski
Wstęp do Informatyki
6
Sfery problemów algorytmicznych
(podział zgrubny)
PROBLEMY TRUDNO
ROZWIĄZYWALNE
PROBLEMY ŁATWO
ROZWIĄZYWALNE
Nie istnieją
wielomianowe
algorytmy
Istnieją (rozsądne)
wielomianowe
algorytmy
Kilka pytań w związku z “głupią” układanką:
Czy nie można po prostu poczekać na zbudowanie dostatecznie szybkiego
komputera?
Czy brak rozsądnego algorytmu dla tego problemu nie jest rezultatem
braku wiedzy i inwencji informatyków?
Czy nie można by wykazać, że dolne ograniczenie złożoności dla tego
problemu jest wykładnicze i dać sobie spokój?
Czy nie jest on przypadkiem tak szczególnym, że można go pominąć?
M.Rawski
Wstęp do Informatyki
7
Szybszy komputer?
Maksymalna liczba elementów układanki do sprawdzenia
w godzinę
Funkcja współczesny komputer 100 razy komputer 1000 razy
komputer
szybszy
szybszy
N2
K
10 ∗ K
31,6 ∗ K
2N
L
L+6
L + 10
M.Rawski
Wstęp do Informatyki
8
Szczególny przypadek?
“Głupia” układanka należy do klasy problemów NPC (ang.
Nondeterministic Polynomial-time Complete) zwanych po polsku NP.
- zupełnymi, która obejmuje prawie 1000 problemów
algorytmicznych o jednakowych cechach:
• dla wszystkich istnieją wątpliwe rozwiązania w postaci
algorytmów wykładniczych
• dla żadnego nie znaleziono rozsądnego rozwiązania w postaci
algorytmu wielomianowego
• dla żadnego nie udowodniono, że jego rozwiązania wymaga
czasu wykładniczego
• najlepsze znane dolne ograniczenia są liniowe, tzn. O(N)
Nie wiadomo czy są one trudno, czy łatwo rozwiązywalne!
Nowe problemy NP-zupełne powstają w kombinatoryce, badaniach operacyjnych,
ekonometrii, teorii grafów, logice itd.
M.Rawski
Wstęp do Informatyki
9
Układanki dwuwymiarowe
Powodem braku szybkiego rozwiązania
jest istnienie wielu różnych rozwiązań
częściowych, nie będących częścią
rozwiązania pełnego – nie dających się
rozszerzyć do jakiegoś rozwiązania
pełnego
Zwykłe układanki – Puzzle zazwyczaj mają złożoność
czasową O(N 2)
W ogólnym przypadku problem układanek jest także
problemem NP – zupełnym
M.Rawski
Wstęp do Informatyki
10
6
Problem komiwojażera
3
9
8
4
3
Problem polega na znalezieniu w sieci
10
7
5
połączeń pomiędzy miastami najkrótszej
7
drogi, która pozwala odwiedzić każde z
miast i powrócić do miasta wyjściowego
Graf z wagami krawędzi
(tzw. cykl).
6
Problem formułowany jest jako
3
4
poszukiwanie minimalnego pełnego
3
cyklu w grafie z wagami krawędzi
7
5
W wersji decyzyjnej problem polega na
stwierdzeniu czy istnieje cykl o koszcie nie
większym niż podana wartość K
Minimalny cykl o koszcie 28
M.Rawski
Wstęp do Informatyki
11
6
Problem komiwojażera cd
3
3
Problem komiwojażera pojawia się na
przykład przy:
projektowaniu sieci telefonicznych
projektowaniu układów scalonych
planowaniu linii montażowych
programowaniu robotów przemysłowych
4
8
9
10
7
5
7
Graf z wagami krawędzi
6
3
4
3
Naiwne rozwiązanie – N!
7
5
Przypadek nawet dla N = 25 jest
beznadziejny
Minimalny cykl o koszcie 28
M.Rawski
Wstęp do Informatyki
12
Ścieżka Hamiltona
Problem polega na sprawdzeniu
czy w grafie istnieje ścieżka, która
przez każdy wierzchołek
przechodzi dokładnie raz.
Ale... Sprawdzeniu czy w grafie
istnieje ścieżka, która przez każdą
krawędź przechodzi dokładnie raz,
nazywane jest problemem Eulera i
nie jest problemem klasy NPC
Graf posiadający ścieżkę Hamiltona
dopiero po dodaniu krawędzi
Ścieżka Hamiltona w grafie po
dodaniu krawędzi
M.Rawski
Wstęp do Informatyki
13
Problemem Eulera
Twierdzenie (Eulera) ( ⇒ problem
jest łatwo rozwiązywalny )
W grafie spójnym o parzystej liczbie
krawędzi wychodzących z każdego
wierzchołka (być może z wyjątkiem
dwóch) istnieje ścieżka Eulera.
Graf posiadający ścieżkę Eulera
dopiero po dodaniu krawędzi
Ścieżka Eulera w grafie po dodaniu
krawędzi
M.Rawski
Wstęp do Informatyki
14
Przydział i układanie planu zajęć
Na przykład:
przydział studentów do pokoi w akademiku z uwzględnieniem
ograniczeń
wypełnianie kontenerów przedmiotami o różnych rozmiarach
stwierdzenie czy istnieje plan zajęć dopasowujący nauczycieli,
klasy i godziny lekcyjne w taki sposób, aby dwie klasy nie miały
jednocześnie zajęć z tym samym nauczycielem, nauczyciel nie
prowadził w tym samym czasie lekcji w dwóch różnych klasach,
dwaj nauczyciele nie prowadzili jednocześnie lekcji w tej samej
klasie itd.
M.Rawski
Wstęp do Informatyki
15
Ustalenie czy zdanie logiczne
jest spełnialne
Problem polega na stwierdzeniu czy istnieje takie wartościowanie
asercji użytych w złożonym zdaniu logicznym, które powoduje, że
zdanie to staje się prawdziwe.
Np. zdanie
¬( E ⇒ F ) ∧ ( F ∨ ( D ⇒ E ))
staje się prawdziwe dla następującego wartościowania E ←
PRAWDA, F ← FAŁSZ, D ← FAŁSZ i jest zatem spełnialne.
Natomiast zdanie
¬(( D ∧ E ) ⇒ F ) ∧ ( F ∨ ( D ⇒ ¬E ))
nie jest spełnialne
M.Rawski
Wstęp do Informatyki
16
Kolorowanie map
Kolorowanie mapy - problem decyzyjny polegający na
ustaleniu czy dana mapa płaska może być pokolorowana
k barwami tak, aby sąsiednie państwa nie miały tego
samego koloru.
dla 2 barw problem jest łatwo rozwiązywalny - wystarczy
sprawdzić, czy mapa nie zawiera punktów, w których styka się
nieparzysta liczba państw
dla 3 barw problem jest trudno rozwiązywalny (klasy NPC)
dla 4 barw problem jest banalny - patrz twierdzenie o czterech
barwach
M.Rawski
Wstęp do Informatyki
17
Kolorowanie grafów
Kolorowanie grafu - wyznaczenie minimalnej liczby
barw, którymi można pokolorować wierzchołki danego
grafu tak, aby każde dwa wierzchołki bezpośrednio
połączone krawędzią miały różne kolory.
Łatwo można skonstruować graf wymagający dowolnie
dużej liczby kolorów:
Klika - zbiór wierzchołków
w grafie połączonych każdy
z każdym
8 barw
M.Rawski
Wstęp do Informatyki
18
Załadunek plecaka
1
2
Zapis w wersji optymalizacyjnej:
N
max
∑c ⋅ x
3
1
i
i
i =1,..., N
, przy ograniczeniach ,
N
31zł
4
2
3
4
19zł
6
plecak
27zł
7zł
ci
ai
53zł
Plecak
załadowany
optymalnie
∑ ai ⋅ x i ≤ b
i =1,..., N
4
3
2
Zapis w wersji decyzyjnej: czy dla
danego K istnieje takie upakowanie,
N
N
że
ci ⋅ xi ≥ K
∑ ai ⋅ x i ≤ b
∑
i =1,..., N
M.Rawski
i =1,..., N
Wstęp do Informatyki
19
b
Ogólna charakterystyka problemów
z klasy NP (ang. Nondeterministic Polynomial-time)
wymagają sprawdzania rozwiązań częściowych i rozszerzania ich w
celu znalezienia rozwiązania ostatecznego; jeśli rozwiązanie
częściowe nie da się dalej rozszerzyć, to trzeba powrócić na jakiś
wcześniejszy etap i po dokonaniu zmian rozpocząć od nowa,
postępowanie polegające na systematycznym sprawdzeniu
wszystkich możliwości wymaga czasu wykładniczego
jeśli znamy rozwiązanie, to sprawdzenie jego poprawności może być
przeprowadzone w czasie wielomianowym!
dla każdego z problemów istnieje niedeterministyczny („magiczny”)
algorytm o złożoności wielomianowej; NP skrót od ang.
Nondeterministic Polynomial-time
są trudno rozwiązywalne, ale stają się łatwo rozwiązywalne, jeśli
korzysta się z niedeterministycznej „wyroczni”
M.Rawski
Wstęp do Informatyki
20
Ogólna charakterystyka problemów
NP-zupełnych
każdy problem klasy NP można przekształcić do jednego
z nich w czasie wielomianowym (taka jest ich definicja)
NPC skrót od ang. Nondeterministic Polynomial-time
Complete
każdy problem z tej klasy można przekształcić w czasie
wielomianowym do każdego innego!
znalezienie algorytmu wielomianowego dla jednego z
problemów oznacza możliwość rozwiązania w czasie
wielomianowym wszystkich innych!
M.Rawski
Wstęp do Informatyki
21
Ogólna charakterystyka problemów
NP-zupełnych cd
udowodnienie wykładniczego dolnego oszacowania dla
jednego z problemów oznacza wykazanie, że żaden z
nich nie może być rozwiązany w czasie wielomianowym!
albo wszystkie te problemy są łatwo rozwiązywalne, albo
wszystkie trudno
wykazanie, że nowy problem jest NP-zupełny przebiega
w dwóch krokach:
1. trzeba udowodnić, że nowy problem jest klasy NP
2. trzeba skonstruować przekształcenie, które w czasie
wielomianowym transformuje do niego dowolny znany problem NPzupełny
M.Rawski
Wstęp do Informatyki
22
Przykłady przekształcania
jednego problemu NPC w drugi
znalezienie ścieżki Hamiltona → problem komiwojażera
1
2
1
1
1
1
2
1
2
2
Ścieżka Hamiltona
dla 5 wierzchołków
Cykl komiwojażera
o długości 6
Istnieje ścieżka Hamiltona w grafie o N wierzchołkach
Istnieje cykl komiwojażera w uzupełnionym grafie nie dłuższy niż N + 1
M.Rawski
Wstęp do Informatyki
23
Przykłady przekształcania
jednego problemu NPC w drugi
kolorowanie mapy 3 kolorami → spełnialność zdania logicznego
Mapa składa się z P1, P2, ... , PN państw i mamy trzy kolory C, Z i N.
Asercja PK = Z oznacza, że państwo PK jest pokolorowane na zielono.
Zdanie F ma postać F1 ∧ F2 , gdzie F1 składa się ze zdań
( PK = C ∧ ¬PK = Z ∧ ¬PK = N ) ∨ ( ¬PK = C ∧ PK = Z ∧ ¬PK = N ) ∨
( ¬PK = C ∧ ¬PK = Z ∧ PK = N ) powtórzonych dla K = 1,...,N i
połączonych koniunkcją, a F2 składa się ze zdań
¬(( PK = C ∧ PL = C ) ∨ ( PK = Z ∧ PL = Z ) ∨ ( PK = N ∧ PL = N ))
powtórzonych dla wszystkich par K i L państw sąsiadujących
ze sobą i także połączonych koniunkcją.
M.Rawski
Wstęp do Informatyki
24
Klasy problemów
Klasa NP - problemy posiadające
niedeterministyczne algorytmy o czasie
wielomianowym
Klasa P - problemy posiadające zwykłe
algorytmy o czasie wielomianowym (łatwo
rozwiązywalne)
Klasa NP-zupełne -„wzorcowe” problemy z
klasy NP sprowadzalne jeden do drugiego
NP-zupełne
NP
P
Czy P = NP ?
M.Rawski
Wstęp do Informatyki
25
ALGORYTMY PRZYBLIŻONE –
praktyczne rozwiązanie dla problemów NPC
Np. problem komiwojażera jest trudno rozwiązywalny
(NP-zupełny), ale można w czasie wielomianowym
wyznaczać “niezłe” cykle obchodzące wszystkie
wierzchołki grafu:
LOPT - długość minimalnego cyklu Hamiltona
LAPR - długość przybliżonego rozwiązania
LAPR
miara dobroci rozwiązania przybliżonego: s A =
LOPT
• istnieje algorytm o złożoności O(N 3) wyznaczający w najgorszym
przypadku cykl Hamiltona o dobroci sA ≤ 1,5
M.Rawski
Wstęp do Informatyki
26
Załadunek plecaka zastosowanie metody zachłannej
ci
Posortuj pakowane przedmioty według nie rosnących wartości
ai
Pakuj je do plecaka w otrzymanym porządku, dopóki się mieszczą
W przykładzie liczbowym:
c1 31
3
c2 19
1
c3 27
c4 7
=
=7 ,
=
=9 ,
=
= 9,
= =7
a1
4
4
a2
2
2
a3
3
a4 1
c
c
c
c
zatem 2 ≥ 3 ≥ 1 ≥ 4 i ta lista wyznacza kolejność pakowania:
a2 a3 a1 a4
a2
a2
a2
a2
W
=2≤6
→ x2 = 1
+ a3 = 5 ≤ 6
→ x3 = 1
+ a3 + a1 = 9 > 6 → x1 = 0
+ a3 + a4 = 6 ≤ 6
→ x4 = 1 ,
c2 + c3 + c4 = 53 ⇒ sA = 1
najgorszym przypadku algorytm daje upakowanie o dobroci sA ≤ 2
złożoność algorytmu = złożoność sortowania = O(N ∗ log N)
M.Rawski
Wstęp do Informatyki
27
UWAGI o złożoności problemów:
• po raz pierwszy wykazano NP-zupełność dla problemu spełnialności
zdania logicznego (Cook w 1971 r.)
• są problemy, dla których udowodniono, że należą do klasy NP, ale
nie są ani NP-zupełne, ani nie należą do klasy P , np. sprawdzenie
czy dana liczba jest liczbą pierwszą
• są problemy, których złożoność wykładniczą można udowodnić
przez podanie dolnych ograniczeń czasowych (i to nie tylko takie,
jak wieże Hanoi, dla których z góry wiadomo ile iteracji wykona
algorytm), np. stwierdzenie czy dla danej konfiguracji w
uogólnionych szachach N x N istnieje strategia wygrywająca dla
jednego z przeciwników
M.Rawski
Wstęp do Informatyki
28
UWAGI cd
są problemy spełnialności, dla których także można udowodnić
złożoność wykładniczą np. w dynamicznej logice zdań
2N
są problemy, dla których pokazano podwójnie wykładnicze O ( 2 )
dolne ograniczenia czasowe, np. spełnialność w arytmetyce
Presburgera
są problemy algorytmiczne, dla których udowodniono, że mają
wykładnicze dolne ograniczenia pamięciowe
są ciekawe przypadki problemów, dla których efektywne w praktyce
algorytmy mają złożoność wykładniczą, ale znaleziono dla nich
algorytm wielomianowy sprawujący się w większości przypadków
wyraźnie gorzej - zadanie programowania liniowego, algorytm
sympleksowy (wykładniczy) i algorytm Karmarkara (1979)
M.Rawski
Wstęp do Informatyki
29
Klasy złożoności algorytmów
podwójnie
wykładnicza
arytmetyka
Presburgera
szachy, warcaby
uogólnione
wykładnicza
małpie układanki,
spełnialność,
ładowanie plecaka
NP-zupełne
NP
P
(wielomianowa)
logarytmiczna
M.Rawski
Wstęp do Informatyki
sprawdzanie czy
liczba jest pierwsza
sortowanie
wyszukiwanie w
uporządkowanej
liście
30