Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Zaawansowane techniki algorytmiczne Analiza algorytmów. Struktury danych. Algorytmy grafowe. Operacje na macierzach. Kombinatoryka. Materiały pomocnicze.

Podobne prezentacje


Prezentacja na temat: "Zaawansowane techniki algorytmiczne Analiza algorytmów. Struktury danych. Algorytmy grafowe. Operacje na macierzach. Kombinatoryka. Materiały pomocnicze."— Zapis prezentacji:

1 Zaawansowane techniki algorytmiczne Analiza algorytmów. Struktury danych. Algorytmy grafowe. Operacje na macierzach. Kombinatoryka. Materiały pomocnicze znajdują się pod adresem:

2 Literatura podstawowa Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest. Wprowadzenie do algorytmów. WNT, Warszawa, Edward M. Reingold, Jurg Nievergelt, Narsingh Deo. Algorytmy kombinatoryczne. PWN, Warszawa, Giovanni De Micheli. Synteza i optymalizacja układów cyfrowych. WNT, Warszawa, Robert Sedgewick. Algorytmy w C++. RM, Warszawa, Lech Banachowski, Antomi Kreczmar, Wojciech Rytter. Analiza algorytmów i struktur danych. WNT, Warszawa, 1989.

3 Plan zajęć Struktury danych. Ewaluacja czasu działania algorytmu. Stosy, kolejki, listy, drzewa. Sortowanie. Sortowanie przez wstawienie, sortowanie przez kopcowanie, sortowanie szybkie. Analiza algorytmów sortowania. Algorytmy grafowe. Reprezentację grafów w pamięci. Przeszukiwanie. Sortowanie topologiczne. Minimalne drzewa rozpinające. Najkrótsze ścieżki. Zaawansowane metody algorytmiczne. Programowanie dynamiczne. Algorytmy zachłanne. Algorytmy równoległe. Rodzaje algorytmów równoległych, analiza. NP-zupełność. Wielomianowy czas. NP-zupełność i redukowalność. Problemy NP-zupełne.

4 Czas działania algorytmów Algorytm sortowania Insertion-Sort(A) 1. for j:=2 to length[A] 2. do key:=A[j] /* Wstaw A[j] w posortowany ciąg A[1..j-1].*/ 3.i:= j-1 4.while i>0 i A[i] > key 5.do A[i+1] := A[i] 6. i:= i-1 7. A[i+1] := key Przykład działania algorytmu

5 Czas działania algorytmów Czas działania algorytmu Insertion-Sort: Niech n=length[A]. Oceniamy najgorszy przypadek. Pętla zewnętrzna: n-1 razy. Pętla wewnętrzna: od 1 do n-1 razy, średnia - n/2. Czas: T(n) ( n-1 ) ( a + nb/2) = n 2 b/2 + n(a-b/2) - a Liczy się tylko rząd wielkości funkcji: pesymistyczny czas działania Insretion-Sort - (n 2 )

6 Czas działania algorytmów Notacja : (g(n)) = {f(n): istnieją stałe c 1, c 2 i n 0 takie, że 0 c 1 g(n) f(n) c 2 g(n) dla wszystkich n n 0 }. Asymptotyczne ogranicza funkcję od góry oraz od dołu. Notacja O: O(g(n)) = {f(n): istnieją stałe c i n 0 takie, że 0 f(n) cg(n) dla wszystkich n n 0 }. Asymptotyczne ogranicza funkcję od góry. n0n0 n c2g(n)c2g(n) f(n)f(n) c1g(n)c1g(n) f(n)= (g(n)) n0n0 n cg(n) f(n)f(n) f(n)=O(g(n))

7 Struktury danych: stosy Stos: last in, first out (LIFO) Push(S, x) 1. top[S] := top[S]+1 2. S[top[S]] := x Pop(S) 1. if Stack-Empty(S) 2. then error niedomiar 3.else top[S] := top[S]+1 4.return S[top[S]+1] S 5629 top[S] = 4 S[4] =

8 Struktury danych: kolejki Kolejka: first in, first out (FIFO) Enqueue(Q, x) 1. Q[tail[Q]] := x 2. if tail[Q] = length[Q] 3.then tail[Q] := 1 4. else tail[Q] := tail[Q] + 1 Dequeue(Q) 1. x := Q[head[Q]] 2. if head[Q] = length[Q] 2. then head[Q] := 1 3.else head[Q] := head[Q] return x Q 5718 head[Q] = tail[Q] = 6

9 Struktury danych: listy /564/1 head[L] prev key next List-Search(L, k) 1. x := head[L] 2. while x NIL i key[x] k 3. do x := next[x] 4. return x List-Insert(L, x) 1. next[x] := head[L] 2. if head[L] NIL 3. then prev[head[L]]:=x 4. head[L] := x 5. prev[x] := NIL List-Delete(L, x) 1. if prev[x] NIL 2. then next[prev[x]] := next[x] 3. else head[L] := next[x] 4. if next[x] NIL 5. then prev[next [x]] := prev[x]

10 Przydzielanie i zwalnianie pamięci head[L] free head[L] free

11 Przydzielanie i zwalnianie pamięci Allocate-Object() 1. if free = NIL 2. then error brak pamięci 3. else x := free 4. free := next[x] 5. return x Free-Object() 1. next[x] := free 2. free := x

12 Struktury danych: drzewa Drzewa binarne root[T]

13 Struktury danych: drzewa Drzewa ukorzenione o dowolnym stopniu rozgałęzień root[T]


Pobierz ppt "Zaawansowane techniki algorytmiczne Analiza algorytmów. Struktury danych. Algorytmy grafowe. Operacje na macierzach. Kombinatoryka. Materiały pomocnicze."

Podobne prezentacje


Reklamy Google