kawałki układanki

Transkrypt

kawałki układanki
Zªo»ono±¢ obliczeniowa. Trudne
zadania.
wer. 1.7
Wojciech Myszka
14 grudnia 2008
Cz¦±¢ I
Zªo»ono±¢ obliczeniowa
Raz jeszcze min/max z liczb. . .
Danych jest n elementów X[1], X[2], . . . , X[n]; szukamy
takich m i j, »e m = X[j] = max1≤i≤n X[i] i j jest
najwi¦kszym indeksem speªniaj¡cym ten warunek.
Algorytm wygl¡da¢ b¦dzie tak:
1. Inicjowanie Niech j ← n, k ← n − 1, m ← X[n]
2. Czy wszystkie? Je±li k = 0 to koniec
3. Porównanie Je±li X[k] ≤ m to przejd¹ do 5
4. Zmiana m j ← k, m ← X[k]
5. Zmniejsz k k ← k − 1; przejd¹ do 2
Start
1
inicjowanie
1
Czy
wszystkie?
tak
koniec
n−1
Porównanie
nie
A
zmiana m
n−1−A
A
Zmniejszenie
k
Raz jeszcze min/max z liczb. . .
Danych jest n elementów X[1], X[2], . . . , X[n]; szukamy
takich m i j, »e m = X[j] = max1≤i≤n X[i] i j jest
najwi¦kszym indeksem speªniaj¡cym ten warunek.
Algorytm wygl¡da¢ b¦dzie tak:
1. Inicjowanie Niech j ← n, k ← n − 1, m ← X[n]
2. Czy wszystkie? Je±li k = 0 to koniec
3. Porównanie Je±li X[k] ≤ m to przejd¹ do 5
4. Zmiana m j ← k, m ← X[k]
5. Zmniejsz k k ← k − 1; przejd¹ do 2
Start
1
inicjowanie
1
Czy
wszystkie?
tak
koniec
n−1
Porównanie
nie
A
zmiana m
n−1−A
A
Zmniejszenie
k
Raz jeszcze min/max z liczb. . .
Danych jest n elementów X[1], X[2], . . . , X[n]; szukamy
takich m i j, »e m = X[j] = max1≤i≤n X[i] i j jest
najwi¦kszym indeksem speªniaj¡cym ten warunek.
Algorytm wygl¡da¢ b¦dzie tak:
1. Inicjowanie Niech j ← n, k ← n − 1, m ← X[n]
2. Czy wszystkie? Je±li k = 0 to koniec
3. Porównanie Je±li X[k] ≤ m to przejd¹ do 5
4. Zmiana m j ← k, m ← X[k]
5. Zmniejsz k k ← k − 1; przejd¹ do 2
Start
1
inicjowanie
1
Czy
wszystkie?
tak
koniec
n−1
Porównanie
nie
A
zmiana m
n−1−A
A
Zmniejszenie
k
Raz jeszcze min/max z liczb. . .
Danych jest n elementów X[1], X[2], . . . , X[n]; szukamy
takich m i j, »e m = X[j] = max1≤i≤n X[i] i j jest
najwi¦kszym indeksem speªniaj¡cym ten warunek.
Algorytm wygl¡da¢ b¦dzie tak:
1. Inicjowanie Niech j ← n, k ← n − 1, m ← X[n]
2. Czy wszystkie? Je±li k = 0 to koniec
3. Porównanie Je±li X[k] ≤ m to przejd¹ do 5
4. Zmiana m j ← k, m ← X[k]
5. Zmniejsz k k ← k − 1; przejd¹ do 2
Start
1
inicjowanie
1
Czy
wszystkie?
tak
koniec
n−1
Porównanie
nie
A
zmiana m
n−1−A
A
Zmniejszenie
k
Raz jeszcze min/max z liczb. . .
Danych jest n elementów X[1], X[2], . . . , X[n]; szukamy
takich m i j, »e m = X[j] = max1≤i≤n X[i] i j jest
najwi¦kszym indeksem speªniaj¡cym ten warunek.
Algorytm wygl¡da¢ b¦dzie tak:
1. Inicjowanie Niech j ← n, k ← n − 1, m ← X[n]
2. Czy wszystkie? Je±li k = 0 to koniec
3. Porównanie Je±li X[k] ≤ m to przejd¹ do 5
4. Zmiana m j ← k, m ← X[k]
5. Zmniejsz k k ← k − 1; przejd¹ do 2
Start
1
inicjowanie
1
Czy
wszystkie?
tak
koniec
n−1
Porównanie
nie
A
zmiana m
n−1−A
A
Zmniejszenie
k
Analiza algorytmu
I
Zaj¦to±¢ pami¦ci. W tym przypadku nic ciekawego
zapotrzebowanie na pami¦¢ jest proporcjonalne do
liczby danych.
Analiza algorytmu
I
I
Zaj¦to±¢ pami¦ci. W tym przypadku nic ciekawego
zapotrzebowanie na pami¦¢ jest proporcjonalne do
liczby danych.
Dokªadno±¢. Praktycznie nie s¡ wykonywane »adne
operacje matematyczne zatem nie dotyczy.
Analiza algorytmu
I
I
I
Zaj¦to±¢ pami¦ci. W tym przypadku nic ciekawego
zapotrzebowanie na pami¦¢ jest proporcjonalne do
liczby danych.
Dokªadno±¢. Praktycznie nie s¡ wykonywane »adne
operacje matematyczne zatem nie dotyczy.
Czas oblicze«. To mo»e by¢ ciekawe.
Czas oblicze«
Start
1
inicjowanie
1
Czy
wszystkie?
tak
n−1
Porównanie
nie
koniec
I
Krok 1 wykonany b¦dzie 1 raz.
A
zmiana m
n−1−A
A
Zmniejszenie
k
Czas oblicze«
Start
1
inicjowanie
1
Czy
wszystkie?
tak
n−1
Porównanie
nie
koniec
I
I
Krok 1 wykonany b¦dzie 1 raz.
Krok drugi n razy.
A
zmiana m
n−1−A
A
Zmniejszenie
k
Czas oblicze«
Start
1
inicjowanie
1
Czy
wszystkie?
tak
n−1
Porównanie
nie
koniec
I
I
I
Krok 1 wykonany b¦dzie 1 raz.
Krok drugi n razy.
Krok 3 n − 1 razy.
A
zmiana m
n−1−A
A
Zmniejszenie
k
Czas oblicze«
Start
1
inicjowanie
1
Czy
wszystkie?
tak
n−1
Porównanie
nie
A
zmiana m
A
Zmniejszenie
k
n−1−A
koniec
I
I
I
I
Krok 1 wykonany b¦dzie 1 raz.
Krok drugi n razy.
Krok 3 n − 1 razy.
Krok 4 A razy (jego wykonanie zale»y od tego jakie s¡
dane).
Czas oblicze«
Start
1
inicjowanie
1
Czy
wszystkie?
tak
n−1
Porównanie
nie
A
zmiana m
A
Zmniejszenie
k
n−1−A
koniec
I
I
I
I
I
Krok 1 wykonany b¦dzie 1 raz.
Krok drugi n razy.
Krok 3 n − 1 razy.
Krok 4 A razy (jego wykonanie zale»y od tego jakie s¡
dane).
Krok 5 n − 1 razy.
Czas oblicze«
Start
1
inicjowanie
1
Czy
wszystkie?
tak
n−1
Porównanie
nie
A
zmiana m
A
Zmniejszenie
k
n−1−A
koniec
I
I
I
I
I
Krok 1 wykonany b¦dzie 1 raz.
Krok drugi n razy.
Krok 3 n − 1 razy.
Krok 4 A razy (jego wykonanie zale»y od tego jakie s¡
dane).
Krok 5 n − 1 razy.
Zatem zajmiemy si¦ liczb¡ wykona« kroku 4.
Krok 4
‘rednia liczba wykona«
I
Gdy dane wej±ciowe uporz¡dkowane s¡ w kolejno±ci
malej¡cej A = n − 1
Krok 4
‘rednia liczba wykona«
I
I
Gdy dane wej±ciowe uporz¡dkowane s¡ w kolejno±ci
malej¡cej A = n − 1
Gdy dane wej±ciowe uporz¡dkowane s¡ w kolejno±ci
rosn¡cej A = 0
Krok 4
‘rednia liczba wykona«
I
I
I
Gdy dane wej±ciowe uporz¡dkowane s¡ w kolejno±ci
malej¡cej A = n − 1
Gdy dane wej±ciowe uporz¡dkowane s¡ w kolejno±ci
rosn¡cej A = 0
A jaka b¦dzie ±rednia?
Przykªad
Niech n = 3; zaªó»my równie», »e wszystkie liczby s¡ ró»ne.
Wypiszmy wszystkie mo»liwe ukªady liczb X[1], X[2], X[3]:
Ukªad
Warto±¢ A
Przykªad
Niech n = 3; zaªó»my równie», »e wszystkie liczby s¡ ró»ne.
Wypiszmy wszystkie mo»liwe ukªady liczb X[1], X[2], X[3]:
Ukªad
X[1] < X[2] < X[3]
Warto±¢ A
0
Przykªad
Niech n = 3; zaªó»my równie», »e wszystkie liczby s¡ ró»ne.
Wypiszmy wszystkie mo»liwe ukªady liczb X[1], X[2], X[3]:
Ukªad
X[1] < X[2] < X[3]
X[1] < X[3] < X[2]
Warto±¢ A
0
1
Przykªad
Niech n = 3; zaªó»my równie», »e wszystkie liczby s¡ ró»ne.
Wypiszmy wszystkie mo»liwe ukªady liczb X[1], X[2], X[3]:
Ukªad
X[1] < X[2] < X[3]
X[1] < X[3] < X[2]
X[2] < X[1] < X[3]
Warto±¢ A
0
1
0
Przykªad
Niech n = 3; zaªó»my równie», »e wszystkie liczby s¡ ró»ne.
Wypiszmy wszystkie mo»liwe ukªady liczb X[1], X[2], X[3]:
Ukªad
X[1] < X[2] < X[3]
X[1] < X[3] < X[2]
X[2] < X[1] < X[3]
X[2] < X[3] < X[1]
Warto±¢ A
0
1
0
1
Przykªad
Niech n = 3; zaªó»my równie», »e wszystkie liczby s¡ ró»ne.
Wypiszmy wszystkie mo»liwe ukªady liczb X[1], X[2], X[3]:
Ukªad
X[1] < X[2] < X[3]
X[1] < X[3] < X[2]
X[2] < X[1] < X[3]
X[2] < X[3] < X[1]
X[3] < X[1] < X[2]
Warto±¢ A
0
1
0
1
1
Przykªad
Niech n = 3; zaªó»my równie», »e wszystkie liczby s¡ ró»ne.
Wypiszmy wszystkie mo»liwe ukªady liczb X[1], X[2], X[3]:
Ukªad
X[1] < X[2] < X[3]
X[1] < X[3] < X[2]
X[2] < X[1] < X[3]
X[2] < X[3] < X[1]
X[3] < X[1] < X[2]
X[3] < X[2] < X[1]
Warto±¢ A
0
1
0
1
1
2
Przykªad
Niech n = 3; zaªó»my równie», »e wszystkie liczby s¡ ró»ne.
Wypiszmy wszystkie mo»liwe ukªady liczb X[1], X[2], X[3]:
Ukªad
X[1] < X[2] < X[3]
X[1] < X[3] < X[2]
X[2] < X[1] < X[3]
X[2] < X[3] < X[1]
X[3] < X[1] < X[2]
X[3] < X[2] < X[1]
Warto±¢ A
0
1
0
1
1
2
Je»eli teraz zaªo»ymy, »e ka»dy z ukªadów liczb X[1], X[2], X[3]
jest jednakowo prawdopodobne, to ±rednia warto±¢ A wyniesie
(dla n = 3) (0 + 1 + 0 + 1 + 1 + 2)/6 = 5/6.
Analiza. . .
Bez starty ogólno±ci, mo»emy przyj¡¢, »e liczby
X[1], X[2], . . . , X[n] to liczby 1, 2, . . . , n w pewnej kolejno±ci.
Dodatkowo zaªo»ymy, »e ka»da z n! permutacji jest
jednakowo prawdopodobna.
Tu wycinamy bardzo wiele rachunków. . .
Z analizy rachunków wynika, »e w przypadku gdy n = 12
±rednia dla zmiennej losowej A wynosi okoªo 2,1, a
wariancja okoªo 1,54.
Analiza algorytmu min/max. . .
I
Algorytm jest bardzo prosty.
I
Jedyne operacje wykonywane to porównanie (krok 2)
i zamiana (krok 4).
I
W zale»no±ci od liczby danych (n) liczba porówna« jest
staªa
n − 1, a liczba zamian jest jakim± uªamkiem n.
W takim przypadku piszemy »e liczba zamian jest
proporcjonalna do n, co zapisujemy czasami jako ∼ n.
W teorii algorytmów cz¦±ciej mówi si¦ »e zªo»ono±¢ czasowa
algorytmu jest O(n) (co mo»na czyta¢ du»e-O od n ).
Nie jest wa»ny wspóªczynnik proporcjonalno±ci, wa»ne jest
jedynie to, »e w raz ze wzrostem n ro±nie tak samo szybko czas
oblicze«.
O(n)
Mamy dwa (hipotetyczne) problemy:
1. Pierwszy wykonuje si¦ w czasie proporcjonalnym do n
1
2. Drugi w czasie proporcjonalnym do n
2
Drugie zadanie wykonuje si¦ dwa razy szybciej!
Oba zadania wykonuj¡ si¦ w czasie O(n)! Jest to zatem
dosy¢ grube spojrzenie na czas oblicze«.
Liniowe wyszukiwanie
Mamy ksi¡»k¦ telefoniczn¡
czyli list¦
<nazwisko, numer_telefonu>.
Zadanie polega na znalezieniu numeru telefonicznego
osoby o zadanym nazwisku.
Najprostszy algorytm jest taki
1. i ← 1
2. Czy poszukiwane_nazwisko = nazwisko(i)
3. Je»eli tak Koniec
4. W przeciwnym razie i ← i + 1
5. Je»eli i > n Koniec: nie znaleziono!
6. W przeciwnym razie przejd¹ do kroku 2
Im dªu»sza lista nazwisk tym dªu»ej pracuje algorytm.
Liniowe wyszukiwanie c. d.
I
I
I
W najlepszym razie p¦tla wykonana b¦dzie tylko
jeden raz.
W najgorszym razie n razy.
‘rednio? To zale»y jaki jest rozkªad
prawdopodobie«stwa zapyta«. . .
Liniowe wyszukiwanie
algorytm
lepszy
I
Je»eli uwzgl¦dni¢ fakt, »e dane w ksi¡»ce telefonicznej s¡
posortowane algorytm mo»na istotnie ulepszy¢.
I
Pierwsze porównanie nale»y wykona¢ nie z pierwszym (czy
ostatnim) nazwiskiem, tylko ze ±rodkowym (znajduj¡cym
si¦ dokªadnie na ±rodku listy). Je»eli szukane nazwisko jest
wi¦ksze nie nale»y zajmowa¢ si¦ pierwsz¡ poªow¡
listy. . .
I
Takie podej±cie w jednym kroku redukuje rozmiar zadania
o poªow¦! Ka»dy kolejny krok jest podobny zatem
wielko±¢ zadania zmniejsza si¦ za ka»dym razem.
I
W przypadku ksi¡»ki telefonicznej o N nazwiskach potrzeba
(w najgorszym razie) log2 (N) kroków.
Liniowe wyszukiwanie
blokowy
schemat
Jak bardzo O(log(N)) jest lepsze od O(N)?
N
10
100
1000
milion
miliard
miliard miliardów
log2 (N)
4
7
10
20
30
60
P¦tle zagnie»d»one
1. wykonaj co nast¦puje N − 1 razy
...
1.1 wykonaj co nast¦puje N − 1 razy
...
P¦tla wewn¦trzna wykonywana jest N − 1 razy dla
ka»dego z N − 1 wykona« p¦tli zewn¦trznej.
Koszt czasowy dwu p¦tli jest zatem (N − 1)(N − 1) czyli
N2 − 2N + 1. Dla du»ych N skªadniki 1 − 2N s¡ nieistotne.
Zatem koszt czasowy takiej p¦tli jest O(N2 ).
Koszt czasowy rekurencji
Rekurencyjny algorytm wyszukiwania minimum i maksimum w L
(znajd¹-min-i-max-w L):
1. je±li L skªada si¦ z jednego elementu to nadaj MIN i MAX wªa±nie
jego warto±¢; je±li L skªada si¦ z dwu elementów, to nadaj MIN
warto±¢ mniejszego z nich, a MAX wi¦kszego;
2. w przeciwnym razie wykonaj co nast¦puje:
2.1 podziel L na poªowy L1 i L2 ;
2.2 wywoªaj znajd¹-min-i-max-w L1 , umieszczaj¡c
otrzymane warto±ci w MIN1 i MAX1 ;
2.3 wywoªaj znajd¹-min-i-max-w L2 , umieszczaj¡c
otrzymane warto±ci w MIN2 i MAX2 ;
2.4 nadaj MIN mniejsz¡ warto±¢ z MIN1 i MIN2 ;
2.5 nadaj MAX wi¦ksz¡ warto±¢ z MAX1 i MAX2 ;
3. wró¢ z warto±ciami MIN i MAX
Minimum i maksimum
klasyczna (naiwna)
1.
2.
3.
4.
5.
6.
wersja
MIN ← L(1); MAX ← L(1)
i←1
je»eli L(i) > MAX to MAX ← L(i)
je»eli L(i) < MIN to MIN ← L(i)
je»eli i < N to i ← i + 1, przejd¹ do 3
KONIEC
W tym algorytmie gªówna operacja to porównania;
algorytm potrzebuje 2N porówna«.
Analiza algorytmu rekurencyjnego I
1. je±li N = 1 lub N = 2, wykonuje si¦ dokªadnie jedno
porównanie punkt 1 procedury.
2. je±li N > 2, to porównania, które si¦ wykonuje,
stanowi¡ dokªadnie dwa zbiory porówna« dla list o
dªugo±ci N/2 i dwa dodatkowe porównania (wiersze
2.4 i 2.5)
Analiza algorytmu rekurencyjnego II
Zatem (C(N) oznacza liczb¦ porówna« dla listy N
elementowej)
C(1) = C(2) = 1
C(N) = 2C(N/2) + 2
(1)
(2)
(czemu jest to +2?)
Mo»na rozwi¡za¢ to równanie.
C(N) = 3N/2 − 2 =
3
N − 2< 2N
2
(3)
Wie»e Hanoi
Zªo»ono±¢ czasowa podawanego algorytmu wynosi 2N − 1
(gdzie N to liczba kr¡»ków).
Zatem algorytm jest O(2N )
Wie»e Hanoi
Alternatywny algorytm
(Zakªadamy, »e nasze trzy koªki s¡ ustawione w kóªko i »e
na pocz¡tku wszystkie N kr¡»ków spoczywa na
jednym z nich.)
1. powtarzaj wykonywanie tego, co nast¦puje, dopóty,
dopóki, w chwili poprzedzaj¡cej podj¦cie kroku 1.1
wszystkie kr¡»ki nie b¦d¡ poprawnie uªo»one na
jakim± innym koªku:
1.1 przenie± najmniejszy kr¡»ek z koªka, na którym
wªa±nie spoczywa, na koªek nast¦pny w kierunku
zgodnym z ruchem wskazówek zegara;
1.2 wykonaj jedyne mo»liwe przeniesienie nie dotycz¡ce
najmniejszego kr¡»ka.
A jaka jest zªo»ono±¢ tego algorytmu?
Maªpia ukªadanka
Prosta gra, w której do dyspozycji gracza jest kilka (9?)
kwadratowych kart, na bokach których wydrukowane s¡
górna i dolne poªowy kolorowych maªp. Zadanie polega na
uªo»eniu kart w postaci kwadratu (3 × 3), aby na
zetkni¦ciach si¦ kraw¦dzi poªowy maªp pasowaªy do
siebie, a kolory byªy identyczne. . .
Maªpia ukªadanka cd
I
I
I
I
Najbardziej elementarny komputerowy algorytm
rozwi¡zywania tej ukªadanki sprowadzi si¦
najprawdopodobniej, do przegl¡du wszystkich mo»liwych
ukªadów kart.
Wybieramy jedn¡ z kart, ukªadamy j¡ na pierwszym
miejscu (odpowiednio wszystkie miejsca
ponumerowali±my); na drugim miejscu mamy N − 1 kart
do wyboru, na kolejnym N − 2, itd. . .
Nast¦pnie sprawdzamy czy speªnione s¡ warunki.
Zatem liczba mo»liwych do rozpatrzenia kombinacji
wynosi:
N × (N − 1) × (N − 2) × · · · × 2 × 1 = N!
Zatem zªo»ono±¢ tego algorytmu jest rz¦du O(N!)
(4)
Rozs¡dny i nierozs¡dny czas dziaªania
Funkcja / N
5N
N log2 (N)
N2
10
50
33
100
50
250
282
2500
100
500
665
10000
300
1500
2469
90000
N3
1000
125000
1 milion (7
cyfr)
2N
1024
N!
3,6 miliona
(7 cyfr)
liczba 16cyfrowa
liczba 65cyfrowa
liczba 31cyfrowa
liczba 161cyfrowa
27 milionów
(8
cyfr)
liczba 91cyfrowa
liczba 623cyfrowa
NN
10 miliardów
(11
cyfr)
liczba 85cyfrowa
liczba 201cyfrowa
liczba 744cyfrowa
1000
5000
9966
1 milion (7
cyfr)
1 miliard
(10 cyfr)
liczba 302cyfrowa
niewyobra»alnie
du»a
niewyobra»alnie
du»a
Wykresy ró»nych funkcji
Tabelka. . .
Zadania ªatwe i trudne I
I
I
I
Jak wida¢ z wykresów i tabelek zawsze mo»na
znale¹¢ zadanie którego nie da si¦ rozwi¡za¢ w
rozs¡dnym czasie .
Przyj¦to dzieli¢ zadania na ªatwe je»eli funkcja
opisuj¡ca czas ich wykonania jest ograniczona jak¡±
funkcj¡ wielomianow¡.
Zadania trudne to zadania o czasie wykonania
ponadwielomianowym lub wykªadniczym.
Zadania ªatwe i trudne II
Podsumowanie
Problemy trudno rozwi¡zywalne wymagaj¡ niepraktycznie
du»o czasu nawet dla wzgl¦dnie maªych danych
wej±ciowych.
Problemy ªatwo rozwi¡zywalne maj¡ algorytmy, które s¡
praktyczne dla zada« o rozs¡dnych wymiarach.
W¡tpliwo±ci
1. Komputery staj¡ si¦ coraz szybsze (ostatnio, w ci¡gu
roku szybko±¢ komputerów wzrastaªo
dziesi¦ciokrotnie). By¢ mo»e za czas jaki± pojawi si¦
komputer wystarczaj¡co szybki by rozwi¡zywa¢
trudne zadania ?
W¡tpliwo±ci
1. Komputery staj¡ si¦ coraz szybsze (ostatnio, w ci¡gu
roku szybko±¢ komputerów wzrastaªo
dziesi¦ciokrotnie). By¢ mo»e za czas jaki± pojawi si¦
komputer wystarczaj¡co szybki by rozwi¡zywa¢
trudne zadania ?
2. Czy fakt, »e nie znale¹li±my lepszego algorytmu nie
wskazuje na nasz¡ niekompetencj¦? Mo»e warto
zwi¦kszy¢ wysiªek aby polepszy¢ sytuacj¦?
W¡tpliwo±ci
1. Komputery staj¡ si¦ coraz szybsze (ostatnio, w ci¡gu
roku szybko±¢ komputerów wzrastaªo
dziesi¦ciokrotnie). By¢ mo»e za czas jaki± pojawi si¦
komputer wystarczaj¡co szybki by rozwi¡zywa¢
trudne zadania ?
2. Czy fakt, »e nie znale¹li±my lepszego algorytmu nie
wskazuje na nasz¡ niekompetencj¦? Mo»e warto
zwi¦kszy¢ wysiªek aby polepszy¢ sytuacj¦?
3. By¢ mo»e uda si¦ znale¹¢ jaki± dowód, »e problem nie
ma rozs¡dnego algorytmu?
W¡tpliwo±ci
1. Komputery staj¡ si¦ coraz szybsze (ostatnio, w ci¡gu
roku szybko±¢ komputerów wzrastaªo
dziesi¦ciokrotnie). By¢ mo»e za czas jaki± pojawi si¦
komputer wystarczaj¡co szybki by rozwi¡zywa¢
trudne zadania ?
2. Czy fakt, »e nie znale¹li±my lepszego algorytmu nie
wskazuje na nasz¡ niekompetencj¦? Mo»e warto
zwi¦kszy¢ wysiªek aby polepszy¢ sytuacj¦?
3. By¢ mo»e uda si¦ znale¹¢ jaki± dowód, »e problem nie
ma rozs¡dnego algorytmu?
4. Czy trudny problem (maªpiej ukªadanki) nie jest
przypadkiem jedynym takim zadaniem? Jest ono
ciekawe, ale jakie ma praktyczne zastosowanie?
Szybszy komputer
O(?)
N
N2
2N
Maksymalna liczba kart rozwi¡zywanych w ci¡gu godziny
na dzisiejszym
na komputerze
na komputerze
komputerze
100 razy szybszym 1000 razy szybszym
A
100 × A
1000 × A
B
10 × B
31,6 × B
C
C + 6,64
C + 9,97
Wymy±lony algorytm
(o maªpiej ukªadance)
I
I
I
Niestety nie. Znaleziono bardzo wiele (okoªo 1000)
problemów, które sprowadzaj¡ si¦ do przegl¡du
zupeªnego wszystkich mo»liwych wariantów
(ustawie« danych).
Mo»na zaproponowa¢ algorytmy nierozs¡dne nie
udaªo si¦ pokaza¢ »e mo»e istnie¢ dokªadny algorytm
lepszy. . .
™ródªem trudnych zada« s¡ takie dziedziny jak
kombinatoryka, badania operacyjne, ekonomia, teoria
grafów i logika.
Jak sobie radzimy z trudnymi
zadaniami?
I
Zrównoleglenie (zadanie dzielone jest na mniejsze
kawaªki i wysyªane na wiele komputerów).
Jak sobie radzimy z trudnymi
zadaniami?
I
I
Zrównoleglenie (zadanie dzielone jest na mniejsze
kawaªki i wysyªane na wiele komputerów).
Randomizacja. Zamiast przegl¡da¢ wszystkie mo»liwe
rozwi¡zania w sposób losowy wybiera si¦ niektóre
z nich. Pozostaj¡ te, które w najlepszy sposób
speªniaj¡ nasze oczekiwania.
Jak sobie radzimy z trudnymi
zadaniami?
I
I
I
Zrównoleglenie (zadanie dzielone jest na mniejsze
kawaªki i wysyªane na wiele komputerów).
Randomizacja. Zamiast przegl¡da¢ wszystkie mo»liwe
rozwi¡zania w sposób losowy wybiera si¦ niektóre
z nich. Pozostaj¡ te, które w najlepszy sposób
speªniaj¡ nasze oczekiwania.
Komputery kwantowe. ???
Jak sobie radzimy z trudnymi
zadaniami?
I
I
I
I
Zrównoleglenie (zadanie dzielone jest na mniejsze
kawaªki i wysyªane na wiele komputerów).
Randomizacja. Zamiast przegl¡da¢ wszystkie mo»liwe
rozwi¡zania w sposób losowy wybiera si¦ niektóre
z nich. Pozostaj¡ te, które w najlepszy sposób
speªniaj¡ nasze oczekiwania.
Komputery kwantowe. ???
Obliczenia molekularne. ???
Do czego mo»e nada¢ si¦ komputer
kwantowy?
Je»eli mamy zadanie speªniaj¡ce nast¦puj¡ce warunki:
1. Jedyna znana metoda rozwi¡zania go to zgadni¦cie i
sprawdzenie.
2. Do sprawdzenia mamy n mo»liwych odpowiedzi.
3. Ka»de sprawdzenie zajmuje tyle samo czasu.
4. Nie ma »adnych wskazówek na temat kolejno±ci
sprawdzania (ka»da, nawet losowa, kolejno±¢ jest
dobra).
Czas rozwi¡zania takich zada« przez komputer kwantowy
b¦dzie proporcjonalny do pierwiastka kwadratowego z n.
Komputer kwantowy?