90 likes | 370 Views
Złożoność obliczeniowa algorytmów. Literatura podstawowa. Thomas H. Cormen, Ch arles E. Leiserson, Ronald L. Rivest. Wprowadzenie do algorytmów. WNT, Warszawa, 1998. Edward M. Reingold, Jurg Nievergelt, Narsing Deo. Algorytmy kombinatoryczne. PWN, Warszawa, 1985.
E N D
Złożonośćobliczeniowa algorytmów Literatura podstawowa Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest. Wprowadzenie do algorytmów. WNT, Warszawa, 1998. Edward M. Reingold, Jurg Nievergelt, Narsing Deo. Algorytmy kombinatoryczne. PWN, Warszawa, 1985. Lech Banachowski, Antomi Kreczmar. Elementy analizy algorytmów. WNT, Warszawa, 1982. Lech Banachowski, Antomi Kreczmar, Wojciech Rytter. Analiza algorytmów i struktur danych. WNT, Warszawa, 1989.
Algorytmy • Algorytm - ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych produkuje żądane dane wyjściowe (wynik działania algorytmu). • Rozmiar danych wejściowych - liczba elementów w ciągu wejściowym czy całkowita liczba bitów potrzebnych do reprezentowania tych danych. • Czas działania algorytmu - liczba wykonanych prostych operacji.
Problemy • rozwiązywalne w czasie wielomianowym - O(nk) • rozwiązywalne, ale nie w czasie wielomianowym (np., w czasie wykładniczym - O(kn)) • nierozwiązywalne • NP-zupełne (status nieznany; rozwiązywalne, ale nie wiadomo, czy w czasie wielomianowym)
Problemy • Nierozwiązywalne: na przykład, problem stopu - Dla danego algorytmu A odpowiedzieć, czy kończy pracę dla dowolnych danych wejściowych. • Łatwo rozwiązywalne: rozwiązywalne w czasie wielomianowym. • Trudno rozwiązywalne: nie jest znany (czy nie istnieje) algorytm rozwiązujący problem w czasie wielomianowym
Czas działania algorytmów t t3(n) t2(n) (czas działania) t1(n) (rozmiar danych wejściowych) n0 n
Przykład algorytmu Algorytm sortowania Insertion-Sort(A) 1. for j:=2 to length[A] 2. dokey:=A[j] /* Wstaw A[i] w posortowany ciąg A[1..j-1].*/ 3. i:= j-1 4. while i>0 i A[i] > key 5. doA[i+1]:= A[i] 6. i:= i-1 7. A[i+1]:= key Przykład działania algorytmu 5 2 4 6 1 3 2 5 4 6 1 3 2 4 5 6 1 3 2 4 5 6 1 3 1 2 4 5 6 3 1 2 3 4 5 6
Przykład analizy algorytmu Insertion-Sort(A) koszt liczba wykonań 1. for j:=2 to length[A] c1 n 2. dokey:=A[i] c2n-1 3. i:= j-1 c3n-1 4. while i>0 i A[i] > key c4 5. doA[i+1]:= A[i] c5 6. i:= i-1 c6 7. A[i+1]:= key c7 n-1
Czas działania algorytmów Notacja : (g(n)) = {f(n): istnieją stałe c1, c2 i n0 takie, że 0 c1g(n) f(n) c2g(n) dla wszystkich n n0}. Asymptotyczne ogranicza funkcję od góry oraz od dołu. Notacja O: O(g(n)) = {f(n): istnieją stałe c i n0 takie, że 0 f(n) cg(n) dla wszystkich n n0}. Asymptotyczne ogranicza funkcję od góry. cg(n) c2g(n) f(n) f(n) c1g(n) f(n)=O(g(n)) f(n)=(g(n)) n n n0 n0