W01 - Problemy algorytmiczne

42
Marek Kubale Podstawy analizy algorytmów prof. dr hab. inż. Marek Kubale EA 251

Transcript of W01 - Problemy algorytmiczne

Page 1: W01 - Problemy algorytmiczne

Marek Kubale

Podstawy analizy algorytmów

prof. dr hab. inż. Marek Kubale

EA 251

Page 2: W01 - Problemy algorytmiczne

Podstawy analizy algorytmów

Page 3: W01 - Problemy algorytmiczne

Elementy analizy algorytmów

lp idx grp kol1 kol2 dod cz1 cz2 suma kol41 119318 I-- 3 78 96 31 2052 119423 I-- 2 85 95 19 1993 109886 I-- 7 78 96 10 1844 119430 I-- 2 78 86 4 1685 119373 I-- 5 65 70 20 1556 119448 I-- 7 88 61 2 0 0 1517 119510 I-- 7 52 65 4 80 0 1498 119283 I-- 2 52 71 16 1399 119482 I-- 5 54 26 2 0 81 137

10 119317 I-- 3 73 61 1 13511 119415 I-- 6 49 37 13 0 72 13412 119473 I-- 7 84 45 2 13112 119473 I-- 7 84 45 2 13113 113284 I-- 5 34 12 1 80 48 12914 119393 I-- 5 60 68 12815 119263 I-- 1 64 47 10 70 26 12716 119320 I-- 3 18 52 2 73 0 12717 119334 I-- 3 35 43 2 81 0 12618 119343 I-- 4 62 61 3 10 0 12619 119419 I-- 6 55 61 9 12520 119374 I-- 5 38 46 1 77 35 12421 119269 I-- 4 52 64 4 12022 119435 I-- 3 64 54 2 12023 119476 I-- 6 49 54 12 11524 119486 I-- 7 23 44 1 70 0 115

Page 4: W01 - Problemy algorytmiczne

Podstawy analizy algorytmów

Page 5: W01 - Problemy algorytmiczne

Jaka następna liczba ???Jaka następna liczba ???

1011121314151617

Podstawy analizy algorytmów

16172022243110012110000

1111111111111111?????

Page 6: W01 - Problemy algorytmiczne

Okres Okres przedkomputerowyprzedkomputerowy- rok 300 pne. – algorytm Euklidesa NWP

- rok 100 – chińskie twierdzenie o resztach

- rok 1900 – David Hilbert (23)

- rok 1936 – Alan Turing

Podstawy analizy algorytmów

Okres komputerowyOkres komputerowyOkres komputerowyOkres komputerowy

- rok 1971 – Steven Cook

- rok 1979 – Leonid Chaczijan PL

- rok 2000 – Clay Institute (7)

- rok 2004 – Manindra Agrawal i in.

Powyższy rys historyczny uwypukla najważniejsze osiągnięcia teoretyczne a nie praktyczne.

Page 7: W01 - Problemy algorytmiczne

Przez wieki nie było zgodności wśród autorów różnychksiążek o algorytmach oraz badaczy algorytmówco do formalnejdefinicji algorytmualgorytmu. Mimo to od czasów Euklidesa, niemartwiono się tym specjalnie, tylko tworzono opisyrozwiązywania różnych problemów− i dzisiaj nazywamy jealgorytmami.

Podstawy analizy algorytmów

algorytmami.

Jak wspominałem, na przełomie XIXi XX wiekumatematykówzainteresowało udzielenie odpowiedzi na dość

ogólne pytanie:

Co można obliczyć, jakie funkcje są obliczalne, dla jakichproblemów istnieją algorytmy, i ogólniej − czy wszystkietwierdzenia można udowodnić??

Page 8: W01 - Problemy algorytmiczne

Formalizacją pojęć algorytmu i obliczalności zajęło się wpierwszej połowie ubiegłego stulecia wielu matematyków.Wprowadzono wiele różnych definicji obliczeń, przy czymwiększość z nich jest równoważna między sobą w tym sensie,że definiuje tę samą klasę funkcji obliczalnych.

Do najpopularniejszychnależy formalizm wprowadzony

Podstawy analizy algorytmów

Do najpopularniejszychnależy formalizm wprowadzonyprzezA. Turinga , zwany dzisiajmaszynąmaszyną TuringaTuringa.

Obecnie maszynę Turinga przyjmuje się za precyzyjnądefinicję pojęcia algorytmu. Zatemnie ma algorytmu dlatakiego problemu, którego nie można rozwiązać za pomocąmaszyny Turinga.

Page 9: W01 - Problemy algorytmiczne

Wizje maszyny Turinga

Podstawy analizy algorytmów

Page 10: W01 - Problemy algorytmiczne

Problemy z dziedziny optymalizacji dyskretnej możnapodzielić z punktu widzeniadługościdługości wyjściawyjścia, jak i z punktuwidzeniazłożonościzłożoności obliczeniowejobliczeniowej.

Zgodnie z pierwszą kategoryzacją wyróżniamy:

1. ProblemyProblemy decyzyjnedecyzyjne - są to problemy, które wyrażamypytaniami ogólnymi, zaczynającymi się od słowa „czy” .

Podstawy analizy algorytmów

pytaniami ogólnymi, zaczynającymi się od słowa „czy” .Odpowiedzią na nie jest słowo „tak” lub „nie”. Innymi słowy,algorytmma zdecydować, czy dane wejściowe spełniają określonąwłasność. Przykłademjestproblemproblemstopustopu.2. ProblemyProblemy optymalizacyjneoptymalizacyjne- w tym przypadku algorytmmaznaleźć obiekt matematyczny spełniający zadaną własność, np.najlepsze posunięcie w danymstadiumgry w szachy.

Page 11: W01 - Problemy algorytmiczne

Eternity puzzleEternity puzzle

Podstawy analizy algorytmów

A.P.Selby & O.M.Riordan 15th May 2000

Page 12: W01 - Problemy algorytmiczne

Z drugiej strony, wszystkie problemy z dziedziny optymalizacjidyskretnej można podzielić na pięć klas.

1. ProblemyProblemy niealgorytmiczneniealgorytmiczne - problemy takie nie mogą byćrozwiązane za pomocą algorytmówo skończonymczasie działania.Przykłademjestproblemproblemstopustopulub problemproblemkafelkowaniakafelkowania.

Podstawy analizy algorytmów

Page 13: W01 - Problemy algorytmiczne

Kafelkowanie – c.d.

Podstawy analizy algorytmów

Page 14: W01 - Problemy algorytmiczne

Podstawy analizy algorytmów

REP – TILES NISKIEGO RZĘDU połączone tworzą większe kopie samych siebie.

Page 15: W01 - Problemy algorytmiczne

Podstawy analizy algorytmów

Page 16: W01 - Problemy algorytmiczne

2. ProblemyProblemy przypuszczalnieprzypuszczalnie niealgorytmiczneniealgorytmiczne- dla problemówtych nie udało się dotychczas podać algorytmu skończonego, alebrak też dowodu, że taki algorytm nie istnieje. Przykłady:problem równańrównań diofantycznychdiofantycznych(x2+y2=z2), problem "pomnóżpomnóżprzezprzez 33 ii dodajdodaj 11", zwany też problememproblememliczbliczb gradowychgradowych, lubproblememproblememCollatzaCollatza.

Podstawy analizy algorytmów

problememproblememCollatzaCollatza.

Jeszcze innymprzykładem takiego problemu jest słynnahipotezaCC.. GoldbachaGoldbacha z roku 1742. Głosi ona,że każda liczbaparzysta większa od 2 jest sumą dwóch liczb pierwszych.

Page 17: W01 - Problemy algorytmiczne

Przykłady równań diofantycznychPrzykłady równań diofantycznych

Czy ma rozwiązanie?

Tak: (3, 1, 1)Tak: (3, 1, 1)

Od roku 1999 wiemy,

Podstawy analizy algorytmów

x3 + y3 + z3 = 29

x3 + y3 + z3 = 30Czy ma rozwiązanie?

Od roku 1999 wiemy,że tak, mianowicie:

((--283 059 965, 283 059 965, --2 218 888 517, 2 220 422 932)2 218 888 517, 2 220 422 932)

Czy ma rozwiązanie?

Nie wiadomoNie wiadomo

x3 + y3 + z3 = 30

x3 + y3 + z3 = 33

Page 18: W01 - Problemy algorytmiczne

Problem Problem CollatzaCollatza

Poczynając od pewnego naturalnegok, gdy k jest parzyste,podstawiamyk := k/2, w przeciwnymrazie k := 3k + 1.Działania te kontynuujemy dopókik ≠ 1.

Czy taki proces obliczeniowy zatrzymuje się dla każdejnaturalnej wartości k?? Mimo usilnych starań wielu

Podstawy analizy algorytmów

naturalnej wartości k?? Mimo usilnych starań wielumatematyków zajmujących się teorią liczb nie znamyodpowiedzi na to pytanie.

Procedura Collatza zatrzymuje się dla k < 258 tj. 2.8823 × 1017

(luty 2004), jednak dla ogólnego przypadku problemnadalpozostaje nierozstrzygnięty.

Page 19: W01 - Problemy algorytmiczne

procedureCollatz;begin

read(k);repeat

if even(k) then k := k/2 elsek := 3k + 1;until k = 1

end;

Podstawy analizy algorytmów

end;

Page 20: W01 - Problemy algorytmiczne

· Zaczynając od k = 6 mamy:· Zaczynając od k = 6 mamy:6, 3, 10, 5, 16, 8, 4, 2, 1· Zaczynając od k = 11 mamy:· Zaczynając od k = 11 mamy:11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.· Zaczynając od k = 27 mamy:· Zaczynając od k = 27 mamy:

27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484,242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466,

Podstawy analizy algorytmów

242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466,233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890,445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283,850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238,1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102,2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433,1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35,106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1;

Page 21: W01 - Problemy algorytmiczne

Liczba Liczba ππππππππLiczbaπ jest niewymierna i przestępna. Aktualnie znamyπz dokładnością do 10 bilionówcyfr dziesiętnych. Przypuść-my, że interesuje nas pojawienie się 100 kolejnych zer wrozwinięciu dziesiętnym tej liczby. W 10 bilionach cyfrtakiego ciągu nie ma. Ale to nie znaczy,że nie ma go wogóle. Obecnienie znamyżadnejprocedurysłużącej temu

Podstawy analizy algorytmów

ogóle. Obecnienie znamyżadnejprocedurysłużącej temucelowi z wyjątkiem generowania coraz dłuższegorozwinięcia oraz zliczania zer. A nawet, gdyby okazało się,że taki ciąg istnieje, to moglibyśmy zamienić nasz problemna 1000 kolejnych dziewiątek, na przykład. Na marginesie,na pozycji 762 jest „podwójny szatan”, czyli 6 dziewiątek.Miejsce to jest nazywane punktemFeynmana.

Page 22: W01 - Problemy algorytmiczne

Podstawy analizy algorytmów

Rozwinięcie liczby Rozwinięcie liczby ππππππππ

Page 23: W01 - Problemy algorytmiczne

3. ProblemyProblemy wykładniczewykładnicze - problemy te nie mająalgorytmów działających w czasie ograniczonymprzezwielomian zmiennej rozmiaru problemu. Przykłademtakiego problemu jest zadanie wygenerowania wszystkichustawień ciągu n elementów. Innym przykłademtego typujestsłynnyproblemproblemwieżwież ww HanoiHanoi, któregozłożoność sięga

Podstawy analizy algorytmów

jestsłynnyproblemproblemwieżwież ww HanoiHanoi, któregozłożoność sięga2n – 1.

Page 24: W01 - Problemy algorytmiczne

Podstawy analizy algorytmów

Zadanie polega na przeniesieniun krążków z pierwszejpałeczki na trzecią przy ograniczeniu,że w jednymkrokuprzenosimy tylko jeden krążek i nie wolno kłaść krążka owiększej średnicy na krążek o mniejszejśrednicy. Drugapałeczka spełnia rolę pomocniczą.

Page 25: W01 - Problemy algorytmiczne

Podstawy analizy algorytmów

Rozwiązanie łamigłówki dla czterech krążków

Page 26: W01 - Problemy algorytmiczne

4. ProblemyProblemy przypuszczalnieprzypuszczalnie wykładniczewykładnicze- dla problemówtych nie udało się dotychczas podać algorytmuwielomianowego, ale brak też dowodu,że taki algorytmnieistnieje. Przykłademtakiego problemu jestfaktoryzacjafaktoryzacja,czyli znalezienie rozkładu danej liczby na czynniki pierwsze.

Podstawy analizy algorytmów

Największą znaną (co nie oznacza,że kolejną) liczbąpierwszą jest 48. liczba typu Mersenne’a, mianowicie:225788516157885161−− 11

Page 27: W01 - Problemy algorytmiczne

Trial divisionCATALDI15886219 – 1

Trial divisionCATALDI15886217 – 1

MetodaOdkrywcaRokCyfryLiczba

Podstawy analizy algorytmów

Proth’s theoremFERRIER195144(2148 + 1)/17

Lucas sequencesLUCAS1876392127 – 1

Trial division++LANDRY186713(259 – 1)/179951

Trial division++EULER177210231 – 1

Tabela 1.1 Rekordy uzyskiwane przed erą komputerową

Page 28: W01 - Problemy algorytmiczne

Podstawy analizy algorytmów

Gillies196329689 − 121

Hurwitz196124423 − 120

Hurwitz196124253 − 119

Riesel195723217 − 118

Robinson (Oct 9)195222281 − 117

Robinson (Oct 7)195222203 − 116

Robinson (June 25)195221279 − 115

Robinson (Jan 30)19522607 − 114

Robinson (Jan 30)19522521 − 113

UdowadniającyRokLiczbaLp.

Tabela 1.2.1 Rekordy uzyskiwane dzięki komputeromSlowinski19832132049 − 130

Colquitt & Welsh19822110503 − 129

Slowinski1982286243 − 128

Nelson & Slowinski1979244497 − 127

Noll1979223209 − 126

Noll & Nickel1978221701 − 125

Tuckerman1971219937 − 124

Gillies1963211213 − 123

Gillies196329941 − 122

Gillies19632 − 121

Page 29: W01 - Problemy algorytmiczne

Podstawy analizy algorytmów

Lp. Liczba Rok Odkrywca

31 2216091 – 1 1985 Slowinski

32 2756839 – 1 1992 Slowinski & Gage et al. (notes)

33 2859433 – 1 1994 Slowinski & Gage

34 21257787 – 1 1996 Slowinski & Gage

35 21398269 – 1 1996 Armengaud, Woltman, et al. [GIMPS]

36 22976221 – 1 1997 Spence, Woltman, et al. [GIMPS]

37 23021377 – 1 1998 Clarkson, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

38 26972593 – 1 1999 Hajratwala, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

39 213466917 – 1 2001 Cameron, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

40 220996011 – 1 2003 Shafer, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

Tabela 1.2.2 Rekordy uzyskiwane dzięki komputerom

40 2 – 1 2003 Shafer, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

41 224036583 – 1 2004 Findley, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

42 225964951 – 1 2005 Nowak, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

43 230402457 – 1 2005 Cooper, Boone, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

44 232582657 – 1 2006 Cooper, Boone, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

45 237156667 – 1 2008 E_Smith, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

46 242643801 – 1 2009 E_Smith, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

47 243112609 – 1 2008 E_Smith, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

48 257885161 – 1 2013 Cooper, Boone, Woltman, Kurowski, et al. [GIMPS, PrimeNet]

Page 30: W01 - Problemy algorytmiczne

Innym przykłademproblemu przypuszczalnie wykładniczegojest znanyproblemproblemkomiwojażerakomiwojażera. W problemie tymdane jestnmiast i odległość między każdą ich parą. Zadanie polega naznalezieniu najkrótszej trasy zamkniętej przechodzącejjednokrotnie przez każde z miast.

Podstawy analizy algorytmów

Page 31: W01 - Problemy algorytmiczne

Podstawy analizy algorytmów

W roku 1998 uczeni z Rice University (USA) opracowali pro-gram, który znalazł optymalną trasę dla wszystkich 13 509miast amerykańskich o liczbie mieszkańców powyżej półtysiąca. Obliczenia na sieci komputerówdużej mocy trwałyokoło 3 miesiące. Obecnie największą optymalnie rozwiązanąinstancją jest przypadek 25 000 miast i wsi w Szwecji.

Page 32: W01 - Problemy algorytmiczne

Podstawy analizy algorytmów

Rozwiązanie problemu komiwojażera dla 16 polskich miast wojewódzkich - 2155 km.

Page 33: W01 - Problemy algorytmiczne

Zagraj o milion dolarówZagraj o milion dolarów

Clay Mathematics Institute,fundacja edukacyjna w Cambridgew stanie Massachusetts, oferujenagrody w wysokości milionadolarów za rozwiązanie siedmiu

Podstawy analizy algorytmów

dolarów za rozwiązanie siedmiucieszących się złą sławą nierozwiązanych dotąd problemów.

Jednym z nich jest głośnezagadnienie P=NP? Mimo,że jestto zadanie piekielnie trudne,sprytny amator może je rozwiązaćza pomocą znanej łamigłówki.

Page 34: W01 - Problemy algorytmiczne

5. ProblemyProblemy wielomianowewielomianowe - problemy te mają algorytmyrozwiązujące je w czasie ograniczonymwielomianemzmiennejrozmiaru problemu. Najlepszymprzykłademtakiego problemu jestzagadnienie sortowaniasortowania. Ciąg n liczb można uporządkowaćrosnąco, na przykład metodą przestawiania sąsiednich par.Wówczasmaksymalnaliczba porównań nie przekraczan2/2. Ale

Podstawy analizy algorytmów

Wówczasmaksymalnaliczba porównań nie przekraczan2/2. Aleistnieją jeszcze lepsze, bardziej wydajne algorytmy sortowania.Wbrew pozoromnie należy do nich metoda Quicksort, która wnajgorszym przypadku wymaga również czasu kwadratowego,choć w przypadkuśrednim jej liczba operacji jest proporcjonalnadonlogn.

Page 35: W01 - Problemy algorytmiczne

O(1)O(nlogn)O(nlogn)Przez kopiec

O(n)O(nlogn)O(nlogn)Przez scalanie

O(1)O(n²)O(n²)Bąbelkowe

PamięćCzas pesymistycznyCzas średniSortowanie

Podstawy analizy algorytmów

O(logn)O(n²)O(nlogn)Quicksort

::::

O(n)O(nlogn)O(n)*Dystrybucyjne

Tabela 1.3

* Przy pewnych dodatkowych założeniach

Page 36: W01 - Problemy algorytmiczne

NoticesNoticesof the American Mathematical Society

Podstawy analizy algorytmów

Page 37: W01 - Problemy algorytmiczne

SortowanieSortowanie

Podstawy analizy algorytmów

Page 38: W01 - Problemy algorytmiczne

Sortowanie przez kopiec

Podstawy analizy algorytmów

Page 39: W01 - Problemy algorytmiczne

Sortowanie „szybkie”

Podstawy analizy algorytmów

Page 40: W01 - Problemy algorytmiczne

Liczbaπ z dokładnością 50 miejsc po przecinku:

Odkodowana wiadomość znaleziona w liczbie Odkodowana wiadomość znaleziona w liczbie ππ

33,,1415914159 2653526535 8979389793 2384623846 2643326433 8327983279 5028850288 4197141971 6939969399 3751037510

Podstawy analizy algorytmów

jest obecnie znana do 10 bilionów, jednakistnieje przypuszczenie,że znacznie więcej liczbpozostaje do obliczenia. Jedna z hipotez mówi,że liczby te zawierają zakodowaną wiadomość.

Page 41: W01 - Problemy algorytmiczne

Jeśli średnica koła = 1, jego obwód wynosi π

Podstawy analizy algorytmów

Page 42: W01 - Problemy algorytmiczne

KONIECKONIEC