W07 - Programowanie A Złożoność Obliczeniowa
W07 - Programowanie A Złożoność Obliczeniowa
W07 - Programowanie A Złożoność Obliczeniowa
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.
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).
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.
Typ funkcji Staa Polilogarytmiczna Wielomianowa Liniowa Quasi-liniowa Kwadratowa Niewielomianowa Superwielomianowa Wykadnicza Superwykadnicza Tabela 7.1 Przykady omawianych funkcji
Przykady (ensin2n), (1/n) (loglogn), (log2n) (n), (n(1+1/n)n) (nlogn), (nloglogn) (n2), (( n 2 )) (nlgn), (en) (2n), (n23n) (2nn), (nn)
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.
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.
Grafy Kuratowskiego
K5
K3,3
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.
Algorytm
Symbol A1 A2 A3 A4 A5 Autor [rok] Kuratowski
[1930]
Zoono cn6 cn3 cn2 cnlog2n cn 325 lat 2.8 godzin 100 sekund 7 sekund 1 sekunda
Goldstein
[1963]
Lempel et al.
[1967]
HopcroftTarjan
[1971]
HopcroftTarjan
[1974]
Tabela 7.2
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.
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.
Algorytm
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
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!
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
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.
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.
1012
Sekunda 109
Minuta
Wspczynnik przyspieszenia
106
Godzina Tydzie
Czas wykonywania
Ralph Gomory (IBM) powiedzia: Najlepszym sposobem przyspieszenia pracy komputerw jest obarczenie ich mniejsz liczb dziaa do wykonania
KONIEC