Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Grundlagen der Algorithmen und Datenstrukturen Kapitel 3.1-3.2 Prof. Dr. Christian Scheideler TexPoint fonts used in EMF. Read the TexPoint manual before.

Ähnliche Präsentationen


Präsentation zum Thema: "Grundlagen der Algorithmen und Datenstrukturen Kapitel 3.1-3.2 Prof. Dr. Christian Scheideler TexPoint fonts used in EMF. Read the TexPoint manual before."—  Präsentation transkript:

1 Grundlagen der Algorithmen und Datenstrukturen Kapitel Prof. Dr. Christian Scheideler TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A

2 Was passiert mit den Studienbeiträgen? Ihr könnt aktiv bei der Verwendung der Studienbeiträge mitgestalten. Möglichkeiten sich aktiv einzubringen sind beispielsweise die Einreichung von Vorschlägen für Maßnahmen (siehe Website), oder das Engagement in der Fachschaft, welche Eure Interessen vertritt. Eure Mithilfe ist gefragt! Für weitere Fragen, Anregungen oder Kritik wendet Euch bitte an Jochen Reich (Qualitätsmanagement Fakultät für Informatik), Herrn Prof. Dr. Matthes (Studiendekan) oder Eure Fachschaft.

3 Grundlegende Laufzeitanalyse Eingabe (z.B. unsortierte Liste) Algorithmus (z.B. Bubblesort) Ausgabe (z.B. sortierte Liste) Eingabe (z.B. Such-Operationen) Datenstrukturoperationen (z.B. Move-to-Front) Ausgabe (z.B. Such-Liste) Kapitel 3

4 Thema: Repräsentation von Sequenzen als Felder und verkettete Listen Was ist eine Sequenz? : Repräsentation als Feld und amortisierte Analyse 3.3: Repräsentation als verkettete Liste 3.4: Stapel (Stacks) und Schlangen (Queues)

5 Sequenzen Sequenz: s = Arten, auf Element zuzugreifen: Feldrepräsentation: absoluter Zugriff über s[i] Listenrepräsentation: relativer Zugriff über Nachfolger und/oder Vorgänger s[0]: e 0 s[1]s[2]s[3]s[4]s[5]…. e0e0 e1e1 Nachf. Vorg. e2e2 Nachf. Vorg. e3e3 Nachf. Vorg. Nachf. Vorg. …. s

6 Sequenz als Feld Operationen: s[ ¢ ]: Index-Operation.pushBack(e) =.popBack = Size( ) = n e 0 e 1 e 2 … e n e…. e 0 e 1 e 2 … e n-1 ….

7 Sequenz als Feld Problem: Im vornherein nicht bekannt, wieviele Elemente das Feld enthalten wird Nur Primitiv für Allokation von statischen Feldern gegeben (s := allocate Array[0..w] of Element) Lösung: Datenstruktur für dynamisches Feld

8 3.1 Dynamisches Feld Erste Idee: Jedesmal, wenn Feld s nicht mehr ausreicht (n>w+1), generiere neues Feld der Größe w+1+c für ein festes c. s[0]s[1]s[2]s[3]s[w]…. s[0]s[1]s[2]s[3]s[w]….s[w+1]s[w+c]…. Neues allocate und Umkopieren

9 Dynamisches Feld Zeitaufwand für Erweiterung ist O(w+c): Zeitaufwand für n pushBack Operationen: Aufwand von O(w+c) je c Operationen Gesamtaufwand: O(  i=1 n/c c ¢ i) = O(n 2 ) s[0]s[1]s[2]s[3]s[w]…. s[0]s[1]s[2]s[3]s[w]….s[w+1]s[w+c]…. Neues allocate und Umkopieren

10 Dynamisches Feld Bessere Idee: Jedesmal, wenn Feld s nicht mehr ausreicht (n>w), generiere neues Feld der doppelten Größe 2w. Jedesmal, wenn Feld s zu groß ist (n

11 Dynamisches Feld Implementierung als Klasse UArray mit Operator[i: IN]: Element Function size(): IN Procedure pushBack(e: Element) Procedure popBack() Procedure reallocate(w´: IN)

12 Dynamisches Feld Variablen in Klasse UArray:  = 2: IR + Wachstumsfaktor  = 4: IR + max. Speicheroverhead w=1: IN momentane Feldgröße n=0: IN momentane # Elemente b: Array[0..w-1] of Element b[0]b[1]b[2]b[3]b[w-1]….

13 Dynamisches Feld Operator [i:IN]: Element assert 0<=i

14 Dynamisches Feld Procedure pushBack(e: Element) if n=w then reallocate(  n) b[n]:=e n:=n b 0123b 012eb3 n=w=4:

15 Dynamisches Feld Procedure popBack() assert n>0 n:=n-1 if  n 0 then reallocate(  n) 0124b 012b3 3 n=5, w=16:

16 Dynamisches Feld Procedure reallocate(w´: IN) w:=w´ b´:=allocate Array[0..w-1] of Element for i:=0 to n-1 do b´[i]:=b[i] dispose b b:=b´ Umkopieren }

17 Dynamisches Feld Lemma 3.1: Betrachte ein anfangs leeres dynamisches Feld s. Jede Folge  = von pushBack und popBack Operationen kann auf s in Zeit O(n) bearbeitet werden. Erste Idee: Laufzeit O(n 2 ) Nur durchschnittlich konstante Laufzeit pro Operation (Fachbegriff für „durchschnittlich“: amortisiert)

18 Dynamisches Feld - Analyse Feldverdopplung: Feldhalbierung: Von –Nächste Verdopplung: >= n pushBack Ops –Nächste Halbierung: >= n/2 popBack Ops 0123b0123b 0124b3 0123b

19 Dynamisches Feld - Analyse Von –Nächste Verdopplung: >= n pushBack Ops –Nächste Halbierung: >= n/2 popBack Ops Idee: verrechne reallocate-Kosten mit pushBack/popBack Kosten (ohne realloc) –Kosten für pushBack/popBack: O(1) –Kosten für reallocate(  n): O(n) 0123b

20 Dynamisches Feld - Analyse Idee: verrechne reallocate-Kosten mit pushBack/popBack Kosten –Kosten für pushBack/popBack: O(1) –Kosten für reallocate(  n): O(n) Formale Verrechnung: Zeugenzuordnung pushB pushB + realloc Reallokation bei n Elementen: bezeugt durch letzte n/2 pushBack Operationen

21 Dynamisches Feld - Analyse Formale Verrechnung: Zeugenzuordnung Dann jede push/popBack Op nur 1x Zeuge pushB pushB + realloc popB popB + realloc Reallokation bei n Elementen: bezeugt durch letzte n/2 pushBack Operationen Reallokation bei n Elementen: bezeugt durch letzte n popBack Operationen

22 Dynamisches Feld - Analyse Idee: verrechne reallocate-Kosten mit pushBack/popBack Kosten –Kosten für pushBack/popBack: O(1) –Kosten für reallocate(  n): O(n) Konkret: –  (n) Zeugen pro reallocate(  n) – verteile O(n) Aufwand gleichmäßig auf Zeugen Gesamtaufwand: O(m) bei m Operationen

23 Dynamisches Feld - Analyse Alternative zur Zeugenmethode: Kontenmethode Kontenmethode: Spiel mit Zeittokens Günstige Operationen zahlen Tokens ein Teure Operationen entnehmen Tokens Tokenkonto darf nie negativ werden!

24 Dynamisches Feld - Analyse Kontenmethode: Spiel mit Zeittokens Günstige Operationen zahlen Tokens ein ! pro pushBack 2 Tokens ! pro popBack 1 Token Teure Operationen entnehmen Tokens ! pro reallocate(  n) –n Tokens Tokenkonto darf nie negativ werden! ! erfüllt über Zeugenargument

25 Dynamisches Feld - Analyse Tokenlaufzeit: Ausführung von push/popBack kostet 1 Token ! Tokenkosten für pushBack: 1+2 = 3 ! Tokenkosten für popBack: 1+1 = 2 Ausführung von reallocate(  n) kostet n Tokens ! Tokenkosten für reallocate(  n): n-n=0 Gesamtlaufzeit = O(Summe der Tokenlaufzeiten) pushB reallocate

26 3.2 Amortisierte Analyse S: Zustandsraum einer Datenstruktur F: beliebige Folge von Operationen Op 1, Op 2, Op 3,…,Op n s 0 : Anfangszustand der Datenstruktur Zeitaufwand T(F) =  i=1 n T Op i (s i-1 ) s0s0 Op 1 s1s1 Op 2 s2s2 Op 3 snsn Op n ….

27 Amortisierte Analyse Zeitaufwand T(F) =  i=1 n T Op i (s i-1 ) Eine Familie von Funktionen A X (s), eine pro Operation X, heißt Familie amortisier- ter Zeitschranken falls für jede Sequenz F von Operationen gilt T(F) <= A(F) := c +  i=1 n A Op i (s i-1 ) für eine Konstante c unabhängig von F

28 Amortisierte Analyse Triviale Wahl von A X (s): A X (s) := T X (s) Dynamisches Feld (Zeittoken gen. groß): A pushBack (s):=3, A popBack (s):=2, A rellocate (s):=0 alternative Wahl von A X (s): über Potential  S ! IR >=0 ! vereinfacht Beweisführung

29 Beispiel: Dynamisches Feld 0123b 0123b 0123b b b b3567  s)=0  s)=2  s)=4  s)=6  s)=8  s)=0 reallocate + pushBack 0124b35678  s)=2 reallocate + pushBack

30 Beispiel: Dynamisches Feld 0123b  s)=0 012b  s)=2 01b  s)=4 01b popBack + reallocate  s)=0 Generelle Formel für  (s): (w s : Feldgröße von s, n s : Anzahl Einträge)  s) = 2|w s /2 – n s |

31 Potential ist nicht gleich Konto! 0123b  s)=0 012b  s)=2 0123b  s)=0 pushBack popBack 0123b Konto(s)=0 012b 0123b pushBack popBack Konto(s)=1 Konto(s)=3

32 Warum Potential? Theorem 3.3: Sei S der Zustandsraum einer Datenstruktur, sei s 0 der Anfangszustand und sei  :S ! IR >=0 eine nichtnegative Funktion. Für eine Operation X und einen Zustand s mit s ! s´ definiere A X (s´) :=  (s´) -  (s) + T X (s). Dann sind die Funktionen A X (s) eine Familie amortisierter Zeitschranken. X

33 Beispiel: Dynamisches Feld Generelle Formel für  (s): (w s : Feldgröße von s, n s : Anzahl Einträge)  s) = 2|w s /2 – n s | Theorem 3.3:  nicht negativ,  (s 0 )=1 A pushB (s) =  + T pushB (s) <= 2+1 = 3 A popB (s) =  + T popB (s) <= 2+1 = 3 A realloc (s) =  + T realloc (s) <= (0-n s )+n s = 0 wobei  =  (s´)-  (s) für s ! s´

34 Beispiel: Dynamisches Feld Beweis für A realloc (s) <= 0: Fall 1: Fall 2: 01b0123b23  s)=n s  s´)=0 01b01b  s)=2n s  s´)=0

35 Amortisierte Analyse Die Potentialmethode universal! Theorem 3.4: Sei B X (s) eine Familie amortisierte Zeitschranken. Dann gibt es eine Potentialfunktion , so dass A X (s) <= B X (s) für alle Zustände s und alle Operationen X gilt, wobei A X (s) definiert ist wie in Theorem 3.3. Problem: finde geeignetes Potential! Wenn erstmal gefunden, dann Rest einfach.

36 Nächste Woche Weiter mit Kapitel 3.3: Verkettete Listen


Herunterladen ppt "Grundlagen der Algorithmen und Datenstrukturen Kapitel 3.1-3.2 Prof. Dr. Christian Scheideler TexPoint fonts used in EMF. Read the TexPoint manual before."

Ähnliche Präsentationen


Google-Anzeigen