ALGORYTMY I STRUKTURY DANYCH

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

STRUKTURY DANYCH.
ALGORYTMY I STRUKTURY DANYCH
Sortowanie przez kopcowanie
Algorytmy i Struktury Danych
Temat 2: Podstawy programowania Algorytmy – 1 z 2 _________________________________________________________________________________________________________________.
ALGORYTMY I STRUKTURY DANYCH
Stężenia Określają wzajemne ilości substancji wymieszanych ze sobą. Gdy substancje tworzą jednolite fazy to nazywa się je roztworami (np. roztwór cukru.
© Kazimierz Duzinkiewicz, dr hab. inż. Katedra Inżynierii Systemów Sterowania 1 Metody optymalizacji - Energetyka 2015/2016 Metody programowania liniowego.
Excel 2007 dla średniozaawansowanych zajęcia z dnia
Wyrażenia Algebraiczne Bibliografia Znak 1Znak 2 Znak 3 Znak 4 Znak 5 Znak 6 Znak 7 Znak 8 Znak 9 Znak 10 Znak 11.
 Czasem pracy jest czas, w którym pracownik pozostaje w dyspozycji pracodawcy w zakładzie pracy lub w innym miejscu wyznaczonym do wykonywania pracy.
Poczta elektroniczna – e- mail Gmail zakładanie konta. Wysyłanie wiadomości.
Wypadkowa sił.. Bardzo często się zdarza, że na ciało działa kilka sił. Okazuje się, że można działanie tych sił zastąpić jedną, o odpowiedniej wartości.
Funkcja liniowa Przygotował: Kajetan Leszczyński Niepubliczne Gimnazjum Przy Młodzieżowym Ośrodku Wychowawczym Księży Orionistów W Warszawie Ul. Barska.
ULAMKI ZWYKLE KLASA IV. 2 3 kreska ułamkowa licznik ułamka mianownik ułamka ULamek zwykLy.
W KRAINIE TRAPEZÓW. W "Szkole Myślenia" stawiamy na umiejętność rozumowania, zadawania pytań badawczych, rozwiązywania problemów oraz wykorzystania wiedzy.
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
Optymalna wielkość produkcji przedsiębiorstwa działającego w doskonałej konkurencji (analiza krótkookresowa) Przypomnijmy założenia modelu doskonałej.
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy sekwencyjne.
Renata Maciaszczyk Kamila Kutarba. Teoria gier a ekonomia: problem duopolu  Dupol- stan w którym dwaj producenci kontrolują łącznie cały rynek jakiegoś.
Jak tworzymy katalog alfabetyczny? Oprac.Regina Lewańska.
PORADNIK WPROWADZANIA AKCJI. OGÓLNIE: Akcja musi zostać utworzona i opublikowana co najmniej tydzień przed jej rozpoczęciem. W opisie muszą znajdować.
O PARADOKSIE BRAESSA Zbigniew Świtalski Paweł Skałecki Wydział Matematyki, Informatyki i Ekonometrii Uniwersytet Zielonogórski Zakopane 2016.
Minimalizacja automatu
PODZIELNOŚĆ WIELOMIANÓW
Komunikacja ze szkołą i nauczycielami - dziennik elektroniczny
Schematy blokowe.
Informacja o maturze w 2018 roku
DEFINICJA I ZASTOSOWANIE W JĘZYKU HASKELL
terminologia, skale pomiarowe, przykłady
Rachunki zdań Tautologiczność funkcji
Liczby pierwsze.
FIGURY.
Przybliżenia dziesiętne liczb rzeczywistych
Podstawy automatyki I Wykład /2016
Projektowanie wspomagane komputerem
Funkcja – definicja i przykłady
Wstęp do Informatyki - Wykład 3
Opracowała: Monika Grudzińska - Czerniecka
Geometria obliczeniowa Wykład 8
Wykorzystanie Twierdzenia Talesa w zadaniach tekstowych
Geometria obliczeniowa Wykład 8
Zagadnienie transportowe
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Współczynnik spokrewnienia addytywnego
Dobrobyt.
ALGORYTMY I STRUKTURY DANYCH
Pisemne dzielenie liczb naturalnych
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Implementacja rekurencji w języku Haskell
Doskonalenie rachunku pamięciowego u uczniów
Lekcja 5 Temat: Zasady pierwszeństwa przejazdu na skrzyżowaniach
Bufory.
ALGORYTMY I STRUKTURY DANYCH
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Elementy Kombinatoryki
Zapisy na dyżur wakacyjny do oddziałów przedszkolnych
Grazyna Mirkowska Matematyka Dyskretna PJWSTK 2001
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

ALGORYTMY I STRUKTURY DANYCH WYKŁAD 09 Kopiec Grażyna Mirkowska PJWSTK, 2003/2004

G. Mirkowska, ASD_9 Kopiec Plan wykładu Kopiec (sterta) Definicja Operacja wkładania elementu do kopca Usuwanie elementu minimalnego Koszty operacji Zastosowanie - algorytm Heap_sort Implementacja kopca w tablicy Konstrukcja kopca w tablicy Przykład Koszt konstrukcji kopca maj 2003 G. Mirkowska, ASD_9 Kopiec

Kopiec czyli sterta, czyli heap Kopcem nazywamy etykietowane, doskonałe drzewo binarne częściowo uporządkowane. Definicja Etykietowane drzewo binarne D = <V, E, et> jest kopcem wtedy i tylko wtedy, gdy (1) D jest drzewem częściowo uporządkowanym: et(v) < et(v.lewy) i et(v)< et(v.prawy) dla wszystkich wierzchołków v V, (2) D jest drzewem doskonałym: wszystkie poziomy drzewa, z wyjątkiem co najwyżej ostatniego poziomu, są maksymalnie zapełnione, a na ostatnim poziomie wszystkie liście są zgrupowane maksymalnie na lewo. maj 2003 G. Mirkowska, ASD_9 Kopiec

G. Mirkowska, ASD_9 Kopiec Przykład kopca 1 7 4 2 3 5 8 9 10 1 5 2 4 3 7 8 9 10 6 Kopiec 1 5 2 4 3 7 8 9 10 Własności: 1. Etykiety na dowolnej drodze od korzenia do liścia tworzą ciąg uporządkowany rosnąco. 2. Element najmniejszy wśród etykiet wierzchołków znajduje się w korzeniu drzewa. To nie jest kopiec , bo nie jest to drzewo doskonałe(chociaż jest to drzewo cz. uporządkowane) To nie jest kopiec , bo nie jest to drzewo częściowo uporządkowane (chociaż jest to drzewo doskonałe) maj 2003 G. Mirkowska, ASD_9 Kopiec

G. Mirkowska, ASD_9 Kopiec Wstawianie elementu Insert : Heap  Et  Heap Zadanie: Do zbioru etykiet danego kopca D dołączyć nową etykietę e, czyli wykonać operację insert(D,e) (1) Dowiązać nowy wierzchołek x do pierwszego z lewej wierzchołka na przedostatnim poziomie drzewa, którego rząd jest <2. (2) Nadać nowemu wierzchołkowi etykietę e. (3) Jeżeli tak otrzymane drzewo nie jest częściowo uporządkowane, to przechodząc wzdłuż drogi od liścia x do korzenia, poprawić etykiety zamieniając etykietę ojca z etykietą syna, jeśli etykieta ojca jest większa niż etykieta syna. maj 2003 G. Mirkowska, ASD_9 Kopiec

Przykład - dołączanie nowego elementu 1 5 2 4 3 7 8 9 10 6 1 5 2 4 3 7 8 9 10 6 1 2 3 Po dołączeniu nowego wierzchołka Zero „wędruje” wzdłuż drogi do korzenia maj 2003 G. Mirkowska, ASD_9 Kopiec

G. Mirkowska, ASD_9 Kopiec Usuwanie minimum delmin : Heap  Heap Niech e będzie etykietą liścia x znajdującego się najbardziej na prawo na ostatnim poziomie kopca. (1) Usunąć wierzchołek x z drzewa d. (2) Zastąpić etykietę w korzeniu drzewa przez e. (3) Jeśli tak otrzymane drzewo nie jest kopcem, to zaczynając od korzenia i idąc w kierunku liścia, zamieniać etykietę ojca z etykietą tego z jego synów, którego etykieta ma mniejszą wartość, tak długo aż zostanie otrzymane drzewo częściowo uporządkowane. Algorytm maj 2003 G. Mirkowska, ASD_9 Kopiec

Przykład - usuwanie minimum Usuwamy najmniejszy element zbioru. 12 1 5 1 4 3 10 8 9 7 6 20 12 3 12 12 6 pokaz 12 maj 2003 G. Mirkowska, ASD_9 Kopiec

G. Mirkowska, ASD_9 Kopiec Koszty operacji h-1 h n - wierzchołków Mamy Wniosek Koszt operacji insert i delmin wynosi O( lg(n+1) ). Stąd 2 h -1 < n  2 h+1 -1 Czyli 2 h < n +1  2 h+1 lg(n+1)-1  h < lg (n+1) Ostatecznie h=  lg(n+1)  maj 2003 G. Mirkowska, ASD_9 Kopiec

G. Mirkowska, ASD_9 Kopiec Zastosowanie Algorytm Heap_sort (1) Z danego n elementowego zbioru utworzyć kopiec. (2) Dopóki kopiec nie jest pusty, wypisywać i usuwać element minimalny kopca. O ile wkładamy kolejno elementy stosując operację insert : O(n lg n) Algorytm Koszt sortowania = koszt utworzenia kopca + n * O(lg n) = O(n lg n) maj 2003 G. Mirkowska, ASD_9 Kopiec

Implementacja kopca w tablicy Reprezentujemy kopiec jako parę Tab + idx tablica etykiet aktualna liczba elementów w tablicy Organizacja elementów w tablicy: Tab[1] = etykieta korzenia Tab[2i] = etykieta lewego syna wierzchołka i-tego o ile 2i  idx Tab[2i+1] = etykieta prawego syna wierzchołka i-tego o ile 2i+1 idx maj 2003 G. Mirkowska, ASD_9 Kopiec

G. Mirkowska, ASD_9 Kopiec Przykład 1 5 2 4 3 7 8 9 10 6 Kopiec Reprezentacja tablicowa kopca 1 2 5 4 3 7 8 9 10 6 Tab: n : 10 1 2 3 4 5 6 7 8 9 10 maj 2003 G. Mirkowska, ASD_9 Kopiec

Operacja insert w implementacji tablicowej 5 12 7 10 8 14 19 16 9 11 20 3 5 7 12 10 8 14 19 16 9 11 20 1 2 3 4 5 6 7 8 9 10 11 Tab: 5 3 Insert(D,3) 5 7 12 10 8 14 19 16 9 11 20 1 2 3 4 5 6 7 8 9 10 11 Tab: 3 12 3 3 14 Kopiec D 3 7 5 10 8 12 19 16 9 11 20 1 2 3 4 5 6 7 8 9 10 11 Tab: 14 maj 2003 G. Mirkowska, ASD_9 Kopiec

Delmin w implementacji tablicowej 3 5 7 10 8 12 19 16 9 11 20 14 5 14 3 7 5 10 8 12 19 16 9 11 20 1 2 3 4 5 6 7 8 9 10 11 Tab: 14 14 12 Delmin(D) 14 14 7 5 10 8 12 19 16 9 11 20 1 2 3 4 5 6 7 8 9 10 11 Tab: 5 7 12 10 8 14 19 16 9 11 20 1 2 3 4 5 6 7 8 9 10 11 Tab: Ostatecznie : maj 2003 G. Mirkowska, ASD_9 Kopiec

Konstrukcja kopca w tablicy Założenie: Znamy z góry liczbę elementów tworzonego kopca. A B i 2i 2i+1 1.Tworzymy tablicę zawierającą wszystkie elementy. 2.Jeżeli są już utworzone kopce A i B o korzeniach w 2itej i 2i+1szej pozycji, to albo tab[i] <tab[2i] oraz tab[i]<tab[2i+1] i wtedy mamy już kopiec o korzeniu w i, albo tak nie jest i wtedy poprawiamy ścieżkę „w dół” tak jak w algorytmie delmin. Metoda maj 2003 G. Mirkowska, ASD_9 Kopiec

Algorytm tworzenia kopca Procedure downheap (k:integer); /* utwórz kopiec o korzeniu w pozycji k zakładając, że 2k i 2k+1 są korzeniami kopców w tablicy*/ begin v := tab[k]; while (k n div 2 ) do j := 2*k; if (j<n) then if (tab[j] > tab[j+1] )then j := j+1 fi fi; if v<tab[j] then exit fi; tab[k] := tab[j]; k := j; od; tab[k] := v; end; For i:= n div 2 downto 1 do downheap(i) od; maj 2003 G. Mirkowska, ASD_9 Kopiec

Przykład - konstrukcja kopca 5 1 7 6 2 8 4 3 9 5 7 1 6 2 8 4 3 9 Tab: 1 2 3 4 5 6 7 8 9 To są liście 5 7 1 6 2 8 4 3 9 Tab: 1 2 3 4 5 6 7 8 9 5 7 1 3 2 8 4 6 9 Tab: 1 2 3 4 5 6 7 8 9 5 2 1 3 7 8 4 6 9 Tab: 1 2 3 4 5 6 7 8 9 5 7 1 3 2 8 4 6 9 Tab: 1 2 3 4 5 6 7 8 9 1 2 5 3 7 8 4 6 9 Tab: 1 2 3 4 5 6 7 8 9 maj 2003 G. Mirkowska, ASD_9 Kopiec

Koszt konstrukcji kopca Załóżmy, że n jest liczbą elementów w kopcu, a h jego wysokością. W(n) = lw * lp liczba wierzchołków które trzeba być może poprawić liczba porównań, które trzeba wtedy wykonać Co najwyżej dwa porównania dla każdego elementu na ścieżce do liścia. Tu może przytoczyć dokładny rachunek Gdyby to było pełne drzewo binarne Razem W(n) = O(n) Nie trzeba poprawiać liści Liczba wierzchołków na poziomie h-i maj 2003 G. Mirkowska, ASD_9 Kopiec