You are on page 1of 19

Podstawy analizy algorytmw

Algorytmy mog by wyraone na rnym poziomie abstrakcji. Programowanie jest procesem przeksztacania opisu algorytmu i struktur danych na program dla okrelonego komputera. W trakcie programowania winnimy ucili wyniki analizy a priori. Na przykad, jeli analizowalimy frekwencje wykonania dwch operacji podstawowych, to naley wprowadzi wagi odpowiadajce ich czasom wykonania.

Podstawy analizy algorytmw

Rzd zoonoci obliczeniowej


Rzd zoonoci obliczeniowej jest najwaniejszym czynnikiem wpywajcym na ocen przydatnoci algorytmu. Niech f(n) bdzie funkcj rzeczywist zmiennej n N+. O funkcji f(n) powiemy, e jest staa, gdy f(n) = O(l). Funkcje stae wystpuj na przykad przy opisie pojedynczych instrukcji. Funkcj f(n) nazywa bdziemy polilogarytmiczn, gdy f(n) = (1) i istnieje staa c > 0 taka, e f(n) = (logcn). Z funkcjami polilogarytmicznymi mamy do czynienia, analizujc algorytmy rwnolege. Funkcje stae i polilogarytmiczne okrela si niekiedy mianem subliniowe

Podstawy analizy algorytmw

Pod pojciem funkcji liniowej rozumiemy funkcj f(n) = (n). Funkcje liniowe wystpuj w przypadku niektrych algorytmw optymalnych. O funkcji f(n) powiemy, e jest quasi-liniowa, gdy f(n) = (n) i f(n) = O(nlogn). Funkcje quasi-liniowe rosn prawie tak szybko jak liniowe, z wyjtkiem duych wartoci n. Analogicznie do funkcji liniowej przez funkcj kwadratow rozumiemy funkcj f(n) = (n2). Funkcja wielomianowa, to funkcja f(n) = (nc), gdzie c jest pewn sta dodatni. Funkcjami rosncymi szybciej ni jakakolwiek funkcja wielomianowa s funkcje superwielomianowe okrelone nastpujco. Funkcj f(n) nazywamy superwielomianow, jeeli dla kadej staej c > 0 mamy f(n) = (nc) oraz dla wszystkich staych > 0 f(n) = o((l + )n).

Podstawy analizy algorytmw

Kolejn grup funkcji s funkcje wykadnicze. Mwimy, e f(n) jest wykadnicza, gdy istniej stae c,d > 1 takie, e f(n) = (cn) i f(n) = O(dn). Wreszcie dochodzimy do funkcji f(n), ktre rosn najszybciej. O funkcji takiej powiemy, e jest superwykadnicza, gdy dla kadej staej c > 0 zachodzi f(n) = (cn). Oglnie, trzy ostatnie typy funkcji okrela si mianem niewielomianowych. Z funkcjami niewielomianowymi spotykamy si przy rozwizywaniu trudnych problemw kombinatorycznych.

Podstawy analizy algorytmw

Typ funkcji Staa Polilogarytmiczna Wielomianowa Liniowa Quasi-liniowa Kwadratowa Niewielomianowa Superwielomianowa Wykadnicza Superwykadnicza Tabela 7.1 Przykady omawianych funkcji

Klasa funkcji Subliniowa

Przykady (ensin2n), (1/n) (loglogn), (log2n) (n), (n(1+1/n)n) (nlogn), (nloglogn) (n2), (( n 2 )) (nlgn), (en) (2n), (n23n) (2nn), (nn)

Podstawy analizy algorytmw

Istnieje ogromna rnica pomidzy algorytmami wielomianowymi i niewielomianowymi, ktra ujawnia si ju przy rednich rozmiarach danych. Rnicy tej nie jest w stanie zatrze fakt, e algorytmy o niszym rzdzie zoonoci obliczeniowej maj zwykle znacznie wysz sta proporcjonalnoci. Oznacza to, e algorytmy niewielomianowe s praktycznie uyteczne jedynie dla bardzo maych wartoci n.

Podstawy analizy algorytmw

Graf jest planarny wtedy i tylko wtedy, gdy moe by narysowany na paszczynie bez przecinania si krawdzi. W roku 1930 Kazimierz Kuratowski udowodni synne twierdzenie podajce warunki konieczne i wystarczajce, aby graf by planarny. Wynika z niego pewien algorytm o zoonoci O(n6) dla testowania planarnoci grafw.

Podstawy analizy algorytmw

Grafy Kuratowskiego

K5

K3,3

Podstawy analizy algorytmw

W tabeli 7.2 podany jest przykad postpu, jaki dokona si w dziedzinie projektowania algorytmw badajcych planarno grafu. Pewnego wyjanienia wymaga sens staej proporcjonalnoci c rwnej 10 milisekund. We wszystkich przypadkach staa c oznacza czas testowania grafu jednowierzchokowego, z wyjtkiem algorytmu A4, dla ktrego oznacza ona poow czasu potrzebnego na zbadanie grafu 2-wierzchokowego.

Podstawy analizy algorytmw

Algorytm
Symbol A1 A2 A3 A4 A5 Autor [rok] Kuratowski
[1930]

Czas oblicze dla: c = 10ms, n = 100

Rozmiar analizowanego grafu w przypadku udostpnienia komputera na okres

Zoono cn6 cn3 cn2 cnlog2n cn 325 lat 2.8 godzin 100 sekund 7 sekund 1 sekunda

Minuty 4 18 77 643 6 000

Godziny 8 71 600 24 673 36 104

Goldstein
[1963]

Lempel et al.
[1967]

HopcroftTarjan
[1971]

HopcroftTarjan
[1974]

Tabela 7.2

Podstawy analizy algorytmw

Mona przeprowadzi dodatkowe obliczenia przy podanej wartoci c, np. dla n = 10, 20, ...., 90, aby przekona si, jak szybko ronie czas oblicze dla wyszych zoonoci obliczeniowych. Podobnie, znaczne zwikszenie wartoci c dla algorytmw A4 i A5 nie spowalnia ich w istotny sposb, z wyjtkiem maych wartoci n. Oznacza to, e dla duych rozmiarw danych algorytmy wolniejsze ni O(nlog n) s czsto niepraktyczne. Przyjmijmy, e zestaw algorytmw zosta uzupeniony algorytmem Ao o zoonoci (2n). Przypumy, e nastpna generacja maszyn cyfrowych bdzie dziesi razy szybsza od obecnej. Interesuje nas wpyw wzrostu prdkoci komputerw na maksymalny rozmiar zagadnienia, ktre mona rozwiza w jednostce czasu.

Podstawy analizy algorytmw

Tabela 7.3 pokazuje, e dopiero algorytmy liniowe potrafi w peni wyzyska dobrodziejstwa pynce ze wzrostu szybkoci komputerw. Na przykad dla algorytmu liniowego 100% wzrost szybkoci owocuje w postaci 100% wzrostu maksymalnego rozmiaru zagadnienia, natomiast odpowiednie wspczynniki dla algorytmw (n2) i (n3) wynosz zaledwie 32% i 22%. Fakt, e z roku na rok potrafimy rozwizywa komputerowo coraz wiksze problemy, jest spowodowany gwnie postpem w dziedzinie inynierii oprogramowania, a nie w dziedzinie technologii sprztu liczcego. To oglne spostrzeenie uzyskao szczeglne potwierdzenie w latach 194575. Tym samym dochodzimy do paradoksalnego wniosku: w miar wzrostu szybkoci maszyn cyfrowych i spadku ich ceny zapotrzebowanie na efektywne algorytmy ronie, a nie maleje.

Podstawy analizy algorytmw

Algorytm

Maksymalny rozmiar zagadnienia

Symbol Zoono Przed wzrostem Po 10-krotnym wzrocie prdkoci mc prdkoci mc A0 n0 n0+3.3 (2n) A1 n1 1.46n1 (n6) A2 n2 2.15n2 (n3) A3 n3 3.16n3 (n2) A4 n4 10n4 dla n41 (nlog n) A5 n5 10n5 (n) Tabela 7.3

Podstawy analizy algorytmw

Naturalny algorytm dla problemu najliczniejszego zbioru niezalenego w grafie n-wierzchokowym dziaa w czasie O(2n). Natomiast najnowszy algorytm opublikowany w roku 2006 przez Fomina i in. ma zoono O(20.288n), bdc jednoczenie niezwykle prostym w implementacji. Gdyby zignorowa stae proporcjonalnoci ukryte w notacji asymptotycznej, to uycie nowego algorytmu pozwolioby na przetwarzanie w tym samym czasie grafw niemal 4-krotnie wikszych, podczas gdy 2-krotne zwikszenie mocy obliczeniowej komputera umoliwia powikszenie rozmiaru grafu wejciowego przy starym algorytmie jedynie o 1 wierzchoek!

Podstawy analizy algorytmw

IBM PC/AT Cray1 3 000 000n ns 3n3 ns 10 30 ms 3 s 100 3 ms 300 ms 1 000 3s 3s 10 000 49 min 30 s 1 000 000 95 lat 5 min Tabela 7.4 Zwizek pomidzy rzdem zoonoci, sta proporcjonalnoci, rozmiarem danych i rzeczywistym czasem oblicze na minikomputerze i superkomputerze. n

Podstawy analizy algorytmw

Program o zoonoci O(n3) by wykonywany na superkomputerze CRAY1. Eksperymentalnie stwierdzono, e jego zoono wynosi 3n3 nanosekund dla danych rozmiaru n. Konkurencyjny wobec niego algorytm liniowy zosta zaimplementowany na komputerze osobistym IBM PC/AT 28616MHz. Jego staa proporcjonalnoci bya 1 milion razy wiksza. Mimo e algorytm szecienny wystartowa z wikszym impetem, drugi algorytm, majcy zoono o 2 rzdy nisz, dogoni go i okaza si szybszy dla n > 1000.

Podstawy analizy algorytmw

Aby porwna przyspieszenie sprztu i oprogramowania, rozwamy rozwizanie gadkiego problemu, rwnania Poissona dla N = 64. Dolna krzywa na tym wykresie ilustruje ulepszenia sprztu na podstawie czasu wykonywania algorytmu w 1945 roku przy uyciu rnego sprztu. Na krzywej rodkowej jest zaznaczony czas wykonywania rnych algorytmw za pomoc sprztu z 1947 roku. Grna krzywa odpowiada cznemu przyspieszeniu.

Podstawy analizy algorytmw

1012

Sekunda 109

Minuta

Wspczynnik przyspieszenia

106

Godzina Tydzie

Czas wykonywania

103 Rok Wiek 100

Ralph Gomory (IBM) powiedzia: Najlepszym sposobem przyspieszenia pracy komputerw jest obarczenie ich mniejsz liczb dziaa do wykonania

KONIEC

You might also like