Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Podobne dokumenty
Efektywna metoda sortowania sortowanie przez scalanie

PROBLEMY NIEROZSTRZYGALNE

Podstawy Informatyki. Sprawność algorytmów

Podstawy Programowania. Złożoność obliczeniowa

Złożoność problemów. 1 ruch na sekundę czas wykonania ok lat 1 mln ruchów na sekundę czas wykonania ok.

Informatyka 1. Złożoność obliczeniowa

Podstawy Programowania

Podstawy Programowania. Złożoność obliczeniowa

Złożoność algorytmów. Wstęp do Informatyki

Struktura danych. Sposób uporządkowania informacji w komputerze.

INFORMATYKA SORTOWANIE DANYCH.

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Podstawy Programowania

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Teoria obliczeń i złożoność obliczeniowa

Wprowadzenie do złożoności obliczeniowej

Zasady analizy algorytmów

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Typy algorytmów losowych. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Matematyczne Podstawy Informatyki

Podyplomowe Studium Informatyki

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Efektywność Procedur Obliczeniowych. wykład 5

Liczby pierwsze - wstęp

Zaawansowane algorytmy i struktury danych

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Sortowanie przez scalanie

WSTĘP DO INFORMATYKI. Złożoność obliczeniowa, efektywność i algorytmy sortowania

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

OBLICZALNOŚĆ I NIEOBLICZALNOŚĆ

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

O ISTOTNYCH OGRANICZENIACH METODY

Modele Obliczeń. Wykład 1 - Wprowadzenie. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski

Technologie Informacyjne

TEORETYCZNE PODSTAWY INFORMATYKI

Algorytmy i Struktury Danych.

TEORETYCZNE PODSTAWY INFORMATYKI

Lista 6 Problemy NP-zupełne

Algorytmika Problemów Trudnych

Obliczenia inspirowane Naturą

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Zadania obliczeniowe, algorytmy i złożoność obliczeniowa

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Wstęp do programowania

Algorytmy i struktury danych

Jeszcze o algorytmach

Algorytmy i struktury danych Matematyka III sem.

Podyplomowe Studium Programowania i Systemów Baz Danych

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Logika stosowana. Ćwiczenia Złożoność obliczeniowa problemu spełnialności. Marcin Szczuka. Instytut Informatyki, Uniwersytet Warszawski

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Podstawy Informatyki. Metody dostępu do danych

PRZEWODNIK PO PRZEDMIOCIE

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

O ALGORYTMACH I MASZYNACH TURINGA

Strategia "dziel i zwyciężaj"

Algorytmy asymetryczne

Algorytmy i Struktury Danych

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Struktury danych i złożoność obliczeniowa Wykład 6. Prof. dr hab. inż. Jan Magott

Projektowanie i Analiza Algorytmów

Struktury Danych i Złożoność Obliczeniowa

Algorytmy Równoległe i Rozproszone Część III - Układy kombinacyjne i P-zupełność

Część I. Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania. Zadanie 1.1. (0 3)

Algorytmy w teorii liczb

Algorytmy i struktury danych

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

Złożoność Obliczeniowa Algorytmów

Efektywność algorytmów

Algorytmy i Struktury Danych.

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 4 WSTĘP DO INFORMATYKI

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Teoretyczne podstawy informatyki

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

Podstawy programowania. Podstawy C# Przykłady algorytmów

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Technologie informacyjne Wykład VII-IX

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Sortowanie topologiczne skierowanych grafów acyklicznych

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Wstęp do programowania

Analiza ilościowa w przetwarzaniu równoległym

Algorytmy i Struktury Danych, 2. ćwiczenia

Programowanie dynamiczne i algorytmy zachłanne

Programowanie dynamiczne cz. 2

Krzysztof Gniłka. Twierdzenie o rekurencji uniwersalnej

Wykład na Politechnice Krakowskiej w dniu 18 stycznia 2012 r. ZADAŃ I ALGORYTMÓW W OPTYMALIZACJI DYSKRETNEJ

Transkrypt:

Więcej o sprawności algorytmów Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Załóżmy, że możemy wykonać dane zadanie przy użyciu dwóch algorytmów: jednego o złożoności czasowej Θ(n 2 ), a drugiego o złożoności Θ(n log 2 n) na przykład sortowanie n-elementowej tablicy metodą przez wstawianie i scalanie. Sortowanie przez wstawianie wykonajmy na szybkim komputerze (mała stała przed Θ) a sortowanie przez scalanie na bardzo wolnym (duża stała przed Θ). 1

Niech np. F wst (n) = 0.01 n 2, natomiast F sc (n) = 100 n log 2 n. 4. 10 7 8. 10 8 3. 10 7 6. 10 8 2. 10 7 4. 10 8 1. 10 7 2. 10 8 5000 10 000 15000 20 000 25000 30000 50 000 100000 150 000 200 000 250 000 300000 Oś x: liczba elementów do posortowania Oś y: czas sortowania Wniosek: optymalniejszy algorytm wygrywa dla odpowiednio dużego rozmiaru problemu, mimo iż został uruchomiony na 10 000 razy wolniejszym komputerze! 2

Rozsądny a nierozsądny czas działania Liczba operacji potrzebna do rozwiązania problemu o danej złożoności obliczeniowej złożoność / n 10 50 100 300 1 000 log n 3 5 6 8 10 n 10 50 100 300 1 000 n log n 33 282 665 2 469 9 966 n 2 100 2 500 10 000 90 000 1 000 000 n 3 1 000 125 000 1 000 000 27 000 000 1 000 000 000 2 n 1 024 liczba 16-cyfr. liczba 31-cyfr. liczba 91-cyfr. liczba 302-cyfr. n! 3 600 000 liczba liczba liczba niewyobrażalnie n n 65-cyfr. 10 000 000 000 liczba 85-cyfr. 161-cyfr. liczba 201-cyfr. 623-cyfr. liczba 744-cyfr. duża niewyobrażalnie duża Dla porównania: liczba protonów we Wszechświecie liczba 126-cyfrowa; liczba mikrosekund od wielkiego wybuchu liczba 24-cyfrowa 3

Maksymalny rozmiar problemu możliwego do rozwiązania w danym czasie (przy założeniu 1 000 000 operacji na sekundę) złożoność / czas 1 s 1 min 1 godz 1 rok log n 2 1 000 000 2 60 000 000 2 36 000 000 000 2 n 10 6 6 x 10 7 3.6 x 10 9 3 x 10 13 n log n 62 746 2.8 x 10 6 1.3 x 10 8 8 x 10 11 n 2 1 000 7 746 60 000 5.6 x 10 6 2 n 19 25 31 44 n! 9 11 12 16 300 000 000 000 000 Wniosek: algorytmy o rozsądnym czasie wykonania to algorytmy o co najwyżej wielomianowej złożoności obliczeniowej. 4

Problemy zamknięte, luka algorytmiczna Górne ograniczenie (czasu, pamięci): O(f(n)), np. O(n), O(n 2 ), O(n!) Dolne ograniczenie (czasu, pamięci): Ω(f(n)), np. Ω(log n) Wyszukiwanie dolne ograniczenie: Ω(log n) algorytm wyszukiwania liniowego złożoność O(n) algorytm wyszukiwania binarnego złożoność O(log n) Sortowanie dolne ograniczenie: Ω(n log n) algorytm przez wstawianie złożoność O(n 2 ) algorytmy sortowania stogowego i szybkiego złożoność O(n log n) 5

Wieże Hanoi dolne ograniczenie: Ω(2 n ) algorytm rekurencyjny złożoność O(2 n ) Dla powyższych problemów znaleziono optymalne rozwiązania są to problemy zamknięte. W pozostałych przypadkach (gdy nie znaleziono optymalnego rozwiązania danego problemu) mówimy o luce algorytmicznej (np. problem komiwojażera). 6

Problemy decyzyjne Problemy, nie dające rzeczywistych wyników a jedynie odpowiedź tak lub nie. Ich rozwiązanie polega jedynie na zdecydowaniu, czy pewna własność zachodzi dla danych wejściowych. małpia układanka : czy istnieje rozwiązanie dla danej liczby kart? 7

problem ścieżki Hamiltona: czy istnieje ścieżka w grafie, przechodząca przez wszystkie punkty dokładnie raz? problem ścieżki Eulera: czy istnieje ścieżka w grafie, przechodząca przez wszystkie krawędzie dokładnie raz? 8

problem komiwojażera: czy istnieje cykl w grafie o całkowitym koszcie nie większym niż zadany? problem układania planu zajęć. Czy jest możliwe ułożenie optymalnego układu zajęć przy zadanych kryteriach? problem ustalania prawdy logicznej, np: ~(E F) (F (D ~E)) Dla powyższych problemów (oprócz ścieżki Eulera) występuje luka algorytmiczna najlepsze dolne ograniczenia są rzędu Ω(n), a znaleziono ich jedynie wykładnicze Ω(2 n ) rozwiązania. 9

Kłopotliwe pytania 1. Komputery są coraz szybsze może po prostu czekać na odpowiednie zwiększenie ich szybkości, zamiast szukać nowych algorytmów? 2. A może po prostu niekompetencja informatyków/matematyków w wymyślaniu nowych algorytmów? 3. Czy nikt nie próbował znaleźć wykładniczego dolnego ograniczenia dla tych problemów, aby mieć dowód, że nie istnieje rozsądny algorytm? 4. A może te problemy są odosobnionymi, specyficznymi problemami i nie warto sobie nimi zawracać głowy? 10

Klasyfikacja problemów algorytmicznych (klasy złożoności) Klasa złożoności to zbiór problemów obliczeniowych o podobnej złożoności obliczeniowej. Przykładowo, mówimy o problemach o liniowej złożoności pamięciowej, jeśli ilość potrzebnej pamięci rośnie liniowo względem rozmiaru danych; czy też o problemach o kwadratowej złożoności czasowej, jeśli liczba operacji podstawowych rośnie z kwadratem rozmiaru danych wejściowych. Stosujemy też szersze pojęcia takie jak klasa P, czy NP mając odpowiednio na uwadze decyzyjne problemy wielomianowe i decyzyjne problemy podlegające wielomianowej weryfikacji, jeśli odpowiedź jest twierdząca. Problem P (ang. deterministic polynomial deterministycznie wielomianowy) to problem decyzyjny, dla którego rozwiązanie można znaleźć w czasie wielomianowym. Problem NP (ang. nondeterministic polynomial nieokreślony wielomianowo) to problem decyzyjny, dla którego rozwiązanie można zweryfikować w czasie wielomianowym. 11

Różnica pomiędzy problemami P i NP polega na tym, że w przypadku P znalezienie rozwiązania ma złożoność wielomianową, podczas gdy dla NP sprawdzenie podanego z zewnątrz rozwiązania ma taką złożoność. W szczególności, wszystkie problemy klasy P są problemami klasy NP, ponieważ można je sprawdzić w czasie wielomianowym. Nie wiadomo natomiast, czy istnieje problem NP, który nie jest w klasie P. Jest to jedno z wielkich nierozwiązanych zagadnień matematyki i informatyki. Przykład: Czy jakikolwiek podzbiór zadanego zbioru (np. { 2, 6, 3, 72, 10, 11}) sumuje się do zera? Algorytm sprawdzenia wszystkich możliwych podzbiorów ma złożoność wykładniczą ze względu na liczebność zbioru. Nie znamy rozwiązania tego zagadnienia w czasie wielomianowym (ale być może ono istnieje). Nie wiadomo zatem, czy problem ten jest klasy P. Na pewno natomiast, uzyskawszy z zewnątrz kandydata na rozwiązanie (np. { 2, 6, 3, 10, 11}), możemy w liniowym (a zatem wielomianowym) czasie sprawdzić, czy sumuje się do zera. Jest to zatem problem NP. 12

Problemy NP-zupełne (NPC) to takie problemy klasy NP, że każdy inny problem klasy NP może zostać do nich zredukowany w czasie wielomianowym rozwiązanie jednego takiego problemu w czasie wielomianowym oznaczałoby, że P = NP. 13

Kolejna klasa problemów: problemy nierozstrzygalne (nieobliczalne) Wprowadź do komputera właściwe oprogramowanie a otrzymasz, co tylko zechcesz. Twoje chęci może ograniczać jedynie sama maszyna oprogramowanie nie stawia żadnych ograniczeń Time 1984 r. Czy to prawda? Czy mając dostatecznie dużo pieniędzy, czasu i rozumu potrafimy rozwiązać każdy problem programistyczny? Problem algorytmiczny, do którego nie ma żadnego algorytmu, nazywamy nieobliczalnym. Jeżeli jest to problem decyzyjny, nazywamy go nierozstrzygalnym. 14

Wąż domino Dane jest n opisów kart. Liczba kart danego opisu jest nieskończona. Czy możliwe jest poprowadzenie węża pomiędzy wybranymi punktami nie przekraczając zadanego obszaru Q? Q = obszar ograniczony: rozstrzygalny Q = płaszczyzna: rozstrzygalny Q = półpłaszczyzna: nierozstrzygalny 15

Inny problem: Czy mając n opisów kart domina, możemy nimi pokryć dowolną skończoną powierzchnię zgodnie z zasadami układania domina? problem nierozstrzygalny: nie ma i nie będzie algorytmu, który rozwiązywałby ten problem. 16