ALGORYTMY I STRUKTURY DANYCH

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

ANALIZA SIECIOWA PRZEDSIĘWZIĘĆ konstrukcja harmonogramu
Algorytmy sortowania i przeszukiwania
DOMINOWANIE W GRAFACH Magdalena Lemańska.
Grażyna Mirkowska PJWSTK, 10 stycznia 2001
ALGORYTMY GRAFOWE.
METODY ANALIZY PROGRAMÓW
Grażyna Mirkowska PJWSTK 15 listopad 2000
Metody Analizy Programów Wykład 02
Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych
S – student, P – przedmiot, W – wykładowca
Wykład 06 Metody Analizy Programów System Hoare
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
Minimalne drzewa rozpinające
dr A Kwiatkowska Instytut Informatyki
Algorytm Dijkstry (przykład)
Techniki konstrukcji algorytmów
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Ciągi de Bruijna generowanie, własności
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
ALGORYTMY GEOMETRYCZNE.
WYKŁAD 5. Skojarzenia – ciąg dalszy
WYKŁAD 2. Kolorowanie wierzchołków
WYKŁAD 7. Spójność i rozpięte drzewa
WYKŁAD 8. Siła spójności Wierzchołek v nazywamy wierzchołkiem cięcia grafu G, gdy podgraf G-v ma więcej składowych spójności niż G. Krawędź e nazywamy.
WĘDRÓWKI PO GRAFACH Obchody Eulera Cykle Hamiltona.
12 grudnia 2001Matematyka Dyskretna, Elementy Kombinatoryki G.Mirkowska, PJWSTK 1 Wykład 11 Elementy Kombinatoryki.
Algorytmy grafowe Reprezentacja w pamięci
Analiza kosztu zamortyzowanego
ALGORYTMY I STRUKTURY DANYCH
WYKŁAD 7. Spójność i rozpięte drzewa Graf jest spójny, gdy dla każdego podziału V na dwa rozłączne podzbiory A i B istnieje krawędź z A do B. Definicja.
Kod Graya.
Algorytm Naiwny Ciąg znaków: A B D C E Wzorzec: A B.
SKIEROWANE Marek Bil Krzysztof Fitrzyk Krzysztof Godek.
Przegląd podstawowych algorytmów
IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM
Reprezentacja grafów i operacje na grafach na przykładzie algorytmu Dijkstry i algorytmu na odnajdywanie Silnych Spójnych Składowych Temat Opracowali:
Rodzaje, przechodzenie grafu
Radosław Kaczyński Wrocław 2006
Liczby całkowite dodatnie BCN
ALGORYTMY I STRUKTURY DANYCH
Algorytm Dijkstry 1 Zbiory: T - zbiór wierzchołków
Algorytmy i Struktury Danych
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 03 cd. Wyszukiwanie Grażyna Mirkowska PJWSTK, 2003/2004.
I T P W ZPT 1 Kodowanie stanów to przypisanie kolejnym stanom automatu odpowiednich kodów binarnych. b =  log 2 |S|  Problem kodowania w automatach Minimalna.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Algorytmy i Struktury Danych Grafy
Algorytmy grafowe Minimalne drzewa rozpinające
Kompresja danych Instytut Informatyki UWr Studia dzienne Wykład nr 3: kody Golomba, kody Tunstalla.
Kompresja danych Instytut Informatyki UWr Studia dzienne Wykład nr 2: rozszerzone i dynamiczne Huffmana.
Autor: Michał Salewski
K ODY ZMIENNEJ DŁUGOŚCI Alfabet Morsa Kody Huffmana.
Wstęp do programowania Wykład 8 Łańcuchy, struktury i pliki Metoda dziel i zwyciężaj Metoda zachłanna.
Grafy.
ALGORYTMY I STRUKTURY DANYCH
Zbiory rozłączne.
ALGORYTMY I STRUKTURY DANYCH
Wstęp do Informatyki - Wykład 6
ALGORYTMY I STRUKTURY DANYCH
Algorytmy i struktury danych
Algorytmy i struktury danych
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

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

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

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. 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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ć. 100 000 znaków zajmuje 800 000 bitów. Znak = liczba 0-255, czyli 8 bitów 100 000 znaków zajmuje 300 000 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 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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 224000bitach. Niech będzie tekst 100000 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. 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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. 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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 101 C 100 D 111 E 1101 F 1100 Ciąg: 0100110110101100 Odczytujemy jako:ACEBAF Kod zmiennej długości 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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). 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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. 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach

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  S2 if d(x) +c(x,y) <d(y) then P(y) := x; d(y) := d(x) +c(x,y) fi ; case y  S3 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) 2019-01-17 G. Mirkowska, ASD_11 Algorytmy na grafach