Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

ALGORYTMY I STRUKTURY DANYCH

Podobne prezentacje


Prezentacja na temat: "ALGORYTMY I STRUKTURY DANYCH"— Zapis prezentacji:

1 ALGORYTMY I STRUKTURY DANYCH
WYKŁAD 11 Algorytmy zachłanne Grażyna Mirkowska PJWSTK, 2004

2 G. Mirkowska, ASD_11 Algorytmy na grafach
Plan wykładu Idea algorytmów zachłannych Problem kodowania Problem najkrótszych ścieżek Algorytm Dijksty G. Mirkowska, ASD_11 Algorytmy na grafach

3 G. Mirkowska, ASD_11 Algorytmy na grafach
Na czym to polega? „Greedy” algorithms ZASADA W każdym kroku, w którym trzeba dokonać wyboru, wybierać zawsze rozwiązanie lokalnie optymalne, tzn. takie, które w danym momencie działania algorytmu jest najlepsze. G. Mirkowska, ASD_11 Algorytmy na grafach

4 G. Mirkowska, ASD_11 Algorytmy na grafach
Problem kodowania Dany jest ciąg znaków. Chcemy tak zapisać ten ciąg w taki sposób, by zajmował jak najmniej miejsca i by dało się go potem łatwo odtworzyć. znaków zajmuje bitów. Znak = liczba 0-255, czyli 8 bitów znaków zajmuje bitów. Jeśli w naszych danych występuje tylko 6 różnych znaków, to 3 bity wystarczą do ich zakodowania, np.: 000,001,010,011,100,101 G. Mirkowska, ASD_11 Algorytmy na grafach

5 Kody stałej i zmiennej długości
Kody o stałej długości -- wszystkie słowa kodowe mają tę samą długość Kody o zmiennej długości -- długość słowa kodowego zależy od częstości występowania danego znaku w ciągu danych. Znaki występujące często powinny mieć kod możliwie krótki. Przykład Używając kodu a= 0, b= 101, c= 100, d=111, e=1101, f=1100 nasz tekst można zakodować na bitach. Niech będzie tekst znakowy, w którym występują tylko litery a,b,c,d,e,f i a-45tys razy, b-13tys., c-12tys., d-16tys., e - 9tys., f-5tys. razy. G. Mirkowska, ASD_11 Algorytmy na grafach

6 Kody prefiksowe ZASADA Twierdzenie
tzn. nie istnieją takie dwa słowa a i b, a=(a1,...an), b=(b1,b2...,bm) n<m , że dla pewnego i  n a1= b1, a2= b2... , ai = bi ZASADA Żadne słowo kodowe nie jest prefiksem żadnego innego słowa kodowego. Twierdzenie Jeśli istnieje optymalne kodowanie, to zawsze można znaleźć kod prefiksowy, który go realizuje. Chodzi o to by można było jednoznacznie odczytać zakodowany tekst. G. Mirkowska, ASD_11 Algorytmy na grafach

7 G. Mirkowska, ASD_11 Algorytmy na grafach
Drzewo kodowe (1) 100 86 14 58 28 B:13 C:12 D:16 E:9 F:5 Każda ścieżka odpowiada jednemu słowu kodowemu. W lewo = 0 w prawo = 1 A:45 F ma kod 101 Kod stałej długości Znak + częstość występowania G. Mirkowska, ASD_11 Algorytmy na grafach

8 G. Mirkowska, ASD_11 Algorytmy na grafach
Drzewo kodowe(2) Optymalny kod zawsze jest reprezentowany przez lokalnie pełne drzewo binarne. 100 A:45 30 25 14 C:12 B:13 D:16 F:5 E:9 55 A 0 B C D 111 E F Ciąg: Odczytujemy jako:ACEBAF Kod zmiennej długości G. Mirkowska, ASD_11 Algorytmy na grafach

9 Konstrukcja kodu Huffmana
liść 1.Utworzyć kolejkę priorytetową PQ zawierającą wszystkie znaki alfabetu wraz z ich częstością występowania Znak f 2. For i :=1 to n-1 do a := min(PQ); PQ := delmin(PQ); b := min(PQ); PQ := delmin(PQ); z := New node (a,b); z.f := a.f + b.f; PQ := insert(PQ, z); od; return min (PQ); f lewy prawy Wierzchołek wewnętrzny Koszt O(n lgn) Algorytm zachłanny G. Mirkowska, ASD_11 Algorytmy na grafach

10 G. Mirkowska, ASD_11 Algorytmy na grafach
Przykład 100 1 A:45 55 Konstrukcja kodu Huffmana 25 30 A:45 C:12 B:13 D:16 F: 5 E: 9 14 25 30 A:45 C:12 B:13 D:16 F: 5 E: 9 14 14 A:45 C:12 B:13 D:16 F: 5 E: 9 14 25 A:45 C:12 B:13 D:16 F: 5 E: 9 G. Mirkowska, ASD_11 Algorytmy na grafach

11 Problem Problem ścieżek
Dany jest graf G = <V, E> i jego funkcja kosztu c : E  R +. Problem Znaleźć najkrótsze drogi od ustalonego wierzchołka (źródła) do wszystkich innych wierzchołków. 1 4 6 7 5 3 2 10 8 15 Suma kosztów krawędzi leżących na tej drodze jest najmniejsza G. Mirkowska, ASD_11 Algorytmy na grafach

12 G. Mirkowska, ASD_11 Algorytmy na grafach
Metoda Dijkstry W kolejnych etapach algorytmu zbiór wierzchołków osiągalnych ze źródła jest powiększany o wierzchołki sąsiadujące z ostatnio dołączonymi. Zawsze staramy się by dołączać te wierzchołki, których osiągnięcie wymaga najmniejszego kosztu (które znajdują się „najbliżej” źródła). G. Mirkowska, ASD_11 Algorytmy na grafach

13 G. Mirkowska, ASD_11 Algorytmy na grafach
Struktura danych Tablica d (1: n) d[i] = długość najkrótszej ścieżki miedzy źródłem s, a wierzchołkiem i. Na początku d[i] = c(s,i), jeśli (s,i) E, d[i] = + w p.p. Tablica P(1:n) P[i] = ojciec wierzchołka i na najkrótszej ścieżce od s do i. Zbiór wierzchołków S1, dla których znamy najkrótsze ścieżki ze źródła s. Na początku S1 = {s}. Zbiór S2 wierzchołków osiągalnych z S1, S2 = {y : istnieje x  S1, że (x,y)  E}. Na początku S3 = V-{s}. Zbiór wierzchołków S3, których jeszcze nie sklasyfikowano. G. Mirkowska, ASD_11 Algorytmy na grafach

14 G. Mirkowska, ASD_11 Algorytmy na grafach
Przykład A B C D E F G H I 2 5 4 1 6 9 3 A S2 S1 A B G F S1 A F G B C A B C D E F G H I J d P 2 6 9 5 A B A A G. Mirkowska, ASD_11 Algorytmy na grafach

15 G. Mirkowska, ASD_11 Algorytmy na grafach
c.d. przykładu A B C D E F G H I 2 5 4 1 6 9 3 S2 B C S1 A G H I S1 A F G B C I H S2 F D A B C D E F G H I J d P 2 6 8 9 5 10 7 A B C A A G G G. Mirkowska, ASD_11 Algorytmy na grafach

16 G. Mirkowska, ASD_11 Algorytmy na grafach
Cd. przykładu S2 A B C D E F G H I 2 5 4 1 6 9 3 C B D S1 A G I H F A B C D E F G H I J d P 2 6 8 9 5 10 7 Itd A B C A A G G G. Mirkowska, ASD_11 Algorytmy na grafach

17 G. Mirkowska, ASD_11 Algorytmy na grafach
{ x := s; while niepusty (S3) do Dla wszystkich wierzchołków y incydentnych z x do case y  S if d(x) +c(x,y) <d(y) then P(y) := x; d(y) := d(x) +c(x,y) fi ; case y  S S3 := S3 –{y}; S2 := S2 +{y}; P(y) := x; d(y) := d(x) +c(x,y); od; Wybierz taki element w zb. S2, że d(z) jest minimalne x := z; od } Koszt Algorytmu Dijkstry O(|V|2) G. Mirkowska, ASD_11 Algorytmy na grafach


Pobierz ppt "ALGORYTMY I STRUKTURY DANYCH"

Podobne prezentacje


Reklamy Google