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?