Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Größe: px
Ab Seite anzeigen:

Download "Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund"

Transkript

1 EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de Dr. Lars Hildebrand EiniLogWing/ WiMa- Stand WS 12/13 1

2 Thema EiniLogWIng/ WiMa Kapitel 5 Algorithmen und In diesem Kapitel: Prolog Arrays Sortieren Rekursive Kapitel 5 Algorithmen und Konstruktion von Datentypen: Arrays Algorithmen: Unterlagen Gumm/Sommer, Kapitel 2.7 & 2.8 Sortieren Echtle/Goedicke, Einführung in die Programmierung mit Java, dpunkt Verlag, Kapitel 4 Doberkat/Dißmann, Einführung in die objektorientierte Programmierung mit Java, Oldenbourg, Kapitel 3.4 & 4.1 Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 2

3 Übersicht Begriffe EiniLogWIng/ WiMa Kapitel 5 Algorithmen und In diesem Kapitel: Prolog Arrays Sortieren Rekursive Spezifikationen, Algorithmen, formale Sprachen, Grammatik Programmiersprachenkonzepte Grundlagen der Programmierung Algorithmen und Felder Sortieren Rekursive (Baum, binärer Baum, Heap) Heapsort Objektorientierung Einführung Vererbung Anwendung Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 3

4 Binärer Baum Definition: Binärer Baum 1. Der "leere" Baum ist ein binärer Baum mit der Knotenmenge. EiniLogWIng/ WiMa Kapitel 5 Algorithmen und 2. Seien B i binäre Bäume mit den Knotenmengen K i, i = 1,2. Dann ist auch B = (w, B 1, B 2 ) ein binärer Baum mit der Knotenmenge K = {w} K 1 K 2. ( bezeichnet disjunkte Vereinigung.) In diesem Kapitel: Prolog Arrays Sortieren Rekursive 3. Jeder binäre Baum B lässt sich durch endlich häufige Anwendung von 1.) oder 2.) erhalten. Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 4

5 Binärer Baum Sprech-/Darstellungsweisen(im Falle 2.)): Sei B = (w, B 1, B 2 ) binärer Baum EiniLogWIng/ WiMa Kapitel 5 Algorithmen und w heißt Wurzel, B 1 linker und B 2 rechter Unterbaum. w Wurzel B 1 B 2 In diesem Kapitel: Prolog Arrays Sortieren Rekursive linker Unterbaum rechter Unterbaum Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 5

6 Binärer Baum Darstellung eines Beispiels nach Definition: B 1 = (k 1,, (k 2, (k 3,, ), )). EiniLogWIng/ WiMa Kapitel 5 Algorithmen und k 1 k 2 In diesem Kapitel: Prolog Arrays Sortieren Rekursive k 3 Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 6

7 Terminologie binärer Bäume Wurzel EiniLogWIng/ WiMa Kapitel 5 Algorithmen und innerer Knoten Blatt In diesem Kapitel: Prolog Arrays Sortieren Rekursive Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 7

8 Knotenmarkierter binärer Baum EiniLogWIng/ WiMa Kapitel 5 Algorithmen und Definition: Sei M eine Menge. (B, km) ist ein knotenmarkierter binärer Baum (mit Markierungen aus M) : 1. B ist binärer Baum (mit Knotenmenge K = K(B)) 2. km: K --> M Abbildung. (Markierung/Beschriftung der Knoten k K mit Elementen m M) Jedem Knoten wird ein Element aus der Menge M zugeordnet. In diesem Kapitel: Prolog Arrays Sortieren Rekursive Alternative: Markierung von Kanten. Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 8

9 Knotenmarkierter binärer Baum Beispiel EiniLogWIng/ WiMa Kapitel 5 Algorithmen und M := Z, Z:= Menge der ganzen Zahlen Damit existiert auf M eine Ordnung! "Übliche" Darstellung der Knotenbeschriftung km durch "Anschreiben" der Beschriftung an/in die Knoten. 24 k 2 In diesem Kapitel: Prolog Arrays Sortieren 16 k 1 18 k 3 Rekursive Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 9

10 Definition: Heap EiniLogWIng/ WiMa Kapitel 5 Algorithmen und Ein Heap(Haufen) ist ein knotenmarkierter binärer Baum, für den gilt: Die Markierungsmenge ist geordnet. Der binäre Baum ist links-vollständig. Die Knotenmarkierung der Wurzel ist kleiner oder gleich der Markierung des linken resp. rechten Sohnes (, sofern vorhanden). Die Unterbäume der Wurzel sind Heaps. An der Wurzel steht das kleinste (eines der kleinsten) Element(e). In diesem Kapitel: Prolog Arrays Sortieren Rekursive Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 10

11 Beispiel: Heap EiniLogWIng/ WiMa Binärbaum Alle Ebene, bis auf letzte vollständig gefüllt Links-vollständig gefüllt Knotenmarkierung der Wurzel kleiner als die der Kinder Kapitel 5 Algorithmen und In diesem Kapitel: Prolog Arrays Sortieren Rekursive Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 11

12 Abstrakte Datentypen Grobidee zum abstrakten Datentyp Heap EiniLogWIng/ WiMa Kapitel 5 Algorithmen und In diesem Kapitel: Prolog Arrays Sortieren Rekursive Datenstruktur siehe Folien vorher Operationen Init Einfügen eines Elementes in einen Heap Entfernen eines der kleinsten Elemente/des kleinsten Elementes aus dem Heap und Hinterlassen eines Rest- Heaps Zudem: Heap ist leer?/ Heap ist voll? Drucken... Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 12

13 Implementierung über Feld Darstellung: Binärer Baum <--> Feld S[1] EiniLogWIng/ WiMa Kapitel 5 Algorithmen und S[2] S[3] S[4] S[5] S[6] S[7] S[8] S[9] S[10] S[11] S[12] S[13] S[] S[15] In diesem Kapitel: Prolog Arrays Sortieren Rekursive Array S[1] S[2] S[3] S[4] S[12] S[13] S[] S[15] Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 13

14 Implementierung über Feld EiniLogWIng/ WiMa Kapitel 5 Algorithmen und Beziehung Baum-Feld-Darstellung: Der Inhalt des i-tenknotens in der Baumdarstellung wird im i-ten Feldelement abgelegt. Das bedeutet: Baum ebenenweisevon links nach rechts eintragen. Das Feldelement a[0] wird nicht verwendet! Beobachtung: Die Söhne des Knotens i in einem Heap haben die Knotennummern In diesem Kapitel: Prolog Arrays Sortieren Rekursive 2i : linker Sohn 2i + 1 : rechter Sohn Beweis : Induktiv Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12

15 Implementierung über Feld Ebene 0 S[1] EiniLogWIng/ WiMa Ebene 1 S[2] S[3] Kapitel 5 Algorithmen und Ebene 2 S[4] S[5] S[6] S[7] Ebene 3 S[8] S[9] S[10] S[11] S[12] S[13] S[] S[15] In diesem Kapitel: Prolog Arrays Sortieren Rekursive Array S[1] S[2] S[3] S[4] S[12] S[13] S[] S[15] In Tiefe i befinden sich die Schlüssel S[2 i 2 i+1-1] Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 15

16 Implementierung über Feld EiniLogWIng/ WiMa Kapitel 5 Algorithmen und linker Sohn von S[i] S[2i] rechter Sohn von S[i] S[2i+1] Vater von S[i] S[ i/2 ] Ebene 0 Ebene 1 S[3] Ebene 2 S[6] S[7] Ebene 3 S[8] S[9] S[10] S[11] S[12] S[13] S[] S[15] In diesem Kapitel: Prolog Arrays Sortieren Rekursive Array S[3] S[12] S[13] S[] S[15] Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 16

17 Heap-Eigenschaft EiniLogWIng/ WiMa Kapitel 5 Algorithmen und Die Heapeigenschaft wird über die Inhalte definiert Ein Feld amit nganzen Zahlen realisiert einen Heap, falls a[i/2] a[i]für alle i= 2,..., ngilt. Der Wert des Vaters ist höchstens so groß, wie der der Söhne Dabei ist "/" als ganzzahlige Division zu verstehen. z.b. 5/2 = 2 Verzicht auf Floor( )-Funktion in der Notation In einem (Minimum-)Heap, realisiert durch das Feld a,steht das kleinste Element immer in a[1]. In diesem Kapitel: Prolog Arrays Sortieren Rekursive Analog wird der Maximum-Heap definiert Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 17

18 Beobachtungen EiniLogWIng/ WiMa Kapitel 5 Algorithmen und Ein Feld S[1... n] ist ein Heap ab l, wenn der Teilbaummit Wurzel l ein Heap ist. Jedes Feld ist ein Heap ab n/2 + 1, denn alle Einträge mit Indices ab n/2 + 1 haben keine Kinder, d.h. der Teilbaumbesteht nur aus einer Wurzel Ist S[1... n] ein Heap ab l, so ist S ebenfalls ein Heap ab 2l und 2l + 1. S[1] S[2] S[3] S[4] S[5] S[6] S[7] In diesem Kapitel: Prolog Arrays Sortieren Rekursive S[8] S[9] S[10] S[11] S[12] S[13] S[] S[15] S[1] S[2] S[3] S[4] S[12] S[13] S[] S[15] Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 18

19 Operation Einfügen: Algorithmus Eingabe: Heap amit nelementen, neues Element x EiniLogWIng/ WiMa Kapitel 5 Algorithmen und In diesem Kapitel: Prolog Arrays Sortieren Rekursive Ergebnis: Heap amit n+1elementen, xseiner Größe gemäß eingefügt Vorgehensweise: Schaffe neuen Knoten n+1, setze a[n+1] = x Füge also neuen Knoten mit Beschriftung xin den Heap (evtl.noch an falscher Stelle) ein Sortiere an richtige Stelle ein Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 19

20 Operation Einfügen: Algorithmus "An richtige Stelle einsortieren" - Idee: EiniLogWIng/ WiMa Kapitel 5 Algorithmen und einsortieren(k): k bezeichnet Knotennummer ist k=1, so ist nichts zu tun, ist k>1, so geschieht folgendes: falls a[k/2] > a[k], vertausche a[k/2] mit a[k], rufe einsortieren(k/2) auf Verletzung der Heap- Eigenschaft einsortieren ist somit eine rekursive Funktion In diesem Kapitel: Prolog Arrays Sortieren Rekursive Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12

21 Beispiel Ausgangssituation Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 21

22 Beispiel Einfügen der Zahl 11 in den Heap Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 22

23 Beispiel Linksvollständigkeit bietet nur eine Position Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 23

24 Beispiel Binärer Baum? Ja. Test auf Heap-Eigenschaften Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 24

25 Beispiel Binärer Baum? Ja. Test auf Heap-Eigenschaften Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 25

26 Beispiel Vater größer als Sohn Positionen vertauschen Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 26

27 Beispiel Knoten mit Inhalt 18 an der richtigen Position Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 27

28 Beispiel Knoten mit Inhalt 11 an der richtigen Position? Rekursiver Aufruf! Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 28

29 Beispiel Binärer Baum? Ja. Test auf Heap-Eigenschaften Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 29

30 Beispiel Vater größer als Sohn Positionen vertauschen Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 30

31 Beispiel Knoten mit Inhalt 12 an der richtigen Position Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 31

32 Beispiel Knoten mit Inhalt 11 an der richtigen Position? Rekursiver Aufruf! Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 32

33 Beispiel Binärer Baum? Ja. Test auf Heap-Eigenschaften Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 33

34 Beispiel Binärer Baum? Ja. Heap? Ja Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 34

35 Beispiel Fertig! Neuer Heap mit eingefügtem Inhalt Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 35

36 Beispiel mit Array Ausgangssituation Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 36

37 Beispiel mit Array Einfügen der Zahl 11 in den Heap Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 37

38 Beispiel mit Array Linksvollständigkeit bietet nur eine Position Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 38

39 Beispiel mit Array Binärer Baum? Ja. Test auf Heap-Eigenschaften Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 39

40 Beispiel mit Array Binärer Baum? Ja. Test auf Heap-Eigenschaften Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 40

41 Beispiel mit Array Vater größer als Sohn Positionen vertauschen Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 41

42 Beispiel mit Array Knoten mit Inhalt 18 an der richtigen Position Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 42

43 Beispiel mit Array Knoten mit Inhalt 11 an der richtigen Position? Rekursiver Aufruf! Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 43

44 Beispiel mit Array Binärer Baum? Ja. Test auf Heap-Eigenschaften Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 44

45 Beispiel mit Array Vater größer als Sohn Positionen vertauschen Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 45

46 Beispiel mit Array Knoten mit Inhalt 12 an der richtigen Position Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 46

47 Beispiel mit Array Knoten mit Inhalt 11 an der richtigen Position? Rekursiver Aufruf! Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 47

48 Beispiel mit Array Binärer Baum? Ja. Test auf Heap-Eigenschaften Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 48

49 Beispiel mit Array Binärer Baum? Ja. Heap? Ja Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 49

50 Beispiel mit Array Fertig! Neuer Heap mit eingefügtem Inhalt Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 50

51 Code: Einsortieren In das Feld heapfeld wird richtig einsortiert gemäß: EiniLogWIng/ WiMa void einsortieren(int knotennr) { if (knotennr > 1){ int vaternr = knotennr/2; Kapitel 5 Algorithmen und } } if (heapfeld[knotennr] < heapfeld[vaternr]) { tausche(knotennr, vaternr); einsortieren(vaternr); } In diesem Kapitel: Prolog Arrays Sortieren Rekursive Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 51

52 Entfernen des kleinsten Elements Grundlegender Schritt für das Sortieren EiniLogWIng/ WiMa Kapitel 5 Algorithmen und Idee einer Hau-Ruck-Lösung: Entfernen des kleinsten Elements Baue einen neuen Heap ohne das erste Element auf z.b. durch sukzessives Einfügen der Elemente in einen neuen Heap Nachteil Berücksichtigt nicht, dass vor dem Entfernen des kleinsten Elements ein Heap vorliegt In diesem Kapitel: Prolog Arrays Sortieren Rekursive Idee einer effizienteren Lösung Verwende genau diese Information Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 52

53 Erzeugung eines Heap EiniLogWIng/ WiMa Wie behält man in diesem Fall einen Heap? Beobachtung Jedes Blatt erfüllt die Heapbedingung Allgemeinere Situation: Kapitel 5 Algorithmen und Wurzel erfüllt die Heap-Bedingung In diesem Kapitel: Prolog Arrays Sortieren Rekursive Unterbäume sollen die Heap-Bedingung erfüllen Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 53

54 Entfernen des kleinsten Elements Grundlegender Schritt für das Sortieren EiniLogWIng/ WiMa Kapitel 5 Algorithmen und Idee einer Hau-Ruck-Lösung: Entfernen des kleinsten Elements Baue einen neuen Heap ohne das erste Element auf z.b. durch sukzessives Einfügen der Elemente in einen neuen Heap Nachteil Berücksichtigt nicht, dass vor dem Entfernen des kleinsten Elements ein Heap vorliegt In diesem Kapitel: Prolog Arrays Sortieren Rekursive Idee einer effizienteren Lösung Verwende genau diese Information Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 54

55 Beispiel Entfernen der Wurzel (kleinstes Element) Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 55

56 Beispiel Füllen der Wurzel mit dem letzten Element Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 56

57 Beispiel Knoten mit Index 13 wird nicht mehr benötigt Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 57

58 Beispiel Binärer Baum? Ja. Heap? Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 58

59 Beispiel Knoten mit Index 2 ist der kleinere Sohn. Vater ist größer Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 59

60 Beispiel Tausche Vater (Index 1) mit kleinerem Sohn (Index 2) Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 60

61 Beispiel Knoten mit Index 1, Inhalt 6 am richtigen Platz Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 61

62 Beispiel Rekursiver Aufruf mit geändertem Sohn Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 62

63 Beispiel Binärer Baum? Ja. Heap? Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 63

64 Beispiel Knoten mit Index 4 ist der kleinere Sohn. Vater ist größer Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 64

65 Beispiel Tausche Vater (Index 2) mit kleinerem Sohn (Index 4) Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 65

66 Beispiel Knoten mit Index 2, Inhalt 7am richtigen Platz Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 66

67 Beispiel Rekursiver Aufruf mit geändertem Sohn Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 67

68 Beispiel Binärer Baum? Ja. Heap? Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 68

69 Beispiel Knoten mit Index 8 ist der kleinere Sohn. Vater ist größer Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 69

70 Beispiel Tausche Vater (Index 4) mit kleinerem Sohn (Index 8) Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 70

71 Beispiel Knoten mit Index 4, Inhalt 9am richtigen Platz Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 71

72 Beispiel Rekursiver Aufruf mit geändertem Sohn Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 72

73 Beispiel Der hat keine Nachfolger. Fertig Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 73

74 Code: Heapify 01 void heapify(int k) { 02 int lsnr = 2*k, // Nummer des linken Sohns 03 rsnr = 2*k + 1, // Nummer des rechten Sohns 04 selsohn; // Nummer des selektierten Sohns if (lsnr <= anzahlknoten && rsnr > anzahlknoten) { // es gibt 07 if (heapfeld[lsnr] < heapfeld[k] { // keinen 08 tausche(k, lsnr); // rechten 09 } // Sohn 10 } 11 else if (rsnr <= anzahlknoten) { 12 sel Sohn =(heapfeld[lsnr]<heapfeld [rsnr]? lsnr : rsnr ); 13 // Wähle den Sohn mit der kleineren Markierung aus. // Bei Gleichheit wähle den rechten Sohn if (heapfeld[selsohn] < heapfeld[k]) { // Heap 17 tausche (k, selsohn); // Bedingung 18 heapify(selsohn); // verletzt. 19 } } 21 } Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 74

75 Anwendung 1: Heapsort Aufgabe: Benutze Heap zum (effizienten) Sortieren. EiniLogWIng/ WiMa Kapitel 5 Algorithmen und Heapsort arbeitet in zwei Phasen: Aufbau eines Heaps aus einem Feld Schrittweiser Abbau des Heaps Auslesen des Wurzelelementes und Entfernen desselben Legen des "letzten" Elementes in die Wurzel Rekonstruktion der Heap-Bedingung für diese restlichen Elemente. In diesem Kapitel: Prolog Arrays Sortieren Rekursive Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 75

76 Anwendung 1: Heapsort Warum? Laufzeitenvergleich (mittlere Laufzeit) EiniLogWIng/ WiMa Kapitel 5 Algorithmen und In diesem Kapitel: Prolog Arrays Sortieren Rekursive zu sortierende naives Sortierverfahren Heapsort Elemente Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 76

77 Vergleich der beiden Verfahren EiniLogWIng/ WiMa Kapitel 5 Algorithmen und In diesem Kapitel: Prolog Arrays Sortieren Rekursive Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12/13 77

78 EiniLogWIng/ WiMa Kapitel 5 Algorithmen und Zusammenfassung Arrays Datenstruktur zur Abbildung gleichartiger Daten Deklaration Dimensionierung und Zuordnung von Speicher zur Laufzeit Zuweisung: ganzes Array, Werte einzelner Elemente Algorithmen auf Arrays: Beispiel Sortieren naives Verfahren: Minimum bestimmen, entfernen, Restmenge sortieren Heapsort: ähnlich, nur mit Binärbaum über Indexstruktur In diesem Kapitel: Prolog Arrays Sortieren Rekursive Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 78

79 Übersicht Vielen Dank für Ihre Aufmerksamkeit! Nächste Termine Nächste Vorlesung WiMa.12.12, 08:15 Nächste Vorlesung LogWIng , 08:30 Bleiben Sie noch 5 Minuten Dr. Lars Hildebrand Eini LogWing / WiMa -Stand WS 12 79

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18 EINI LogWing/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 17/18 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund EINI LW/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16 EINI LW/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 18/19

Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 18/19 EINI LogWing//MP Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 18/19 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

EINI I. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 10/11

EINI I. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 10/11 EINI I Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 10/11 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Copyright, Page 1 of 7 Heapsort

Copyright, Page 1 of 7 Heapsort www.mathematik-netz.de Copyright, Page 1 of 7 Heapsort Alle grundlegenden, allgemeinen Sortierverfahren benötigen O(n 2 ) Zeit für das Sortieren von n Schlüsseln. Die kritischen Operationen, d.h. die Auswahl

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

Mehr

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18 EINI LogWing/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 17/18 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 156, Seite 56 im Skript) Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die letzte Ebene vollständig besetzt ist,

Mehr

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen 5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18 EINI LogWing/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 17/18 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015 Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Algorithmen und Datenstrukturen Heapsort

Algorithmen und Datenstrukturen Heapsort Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Heaps Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 469 Prioritätswarteschlange Problem Häufig ist das Prinzip einer einfachen Warteschlangen-Datenstruktur

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen B4. Priority Queues und Heaps Marcel Lüthi and Gabriele Röger Universität Basel 28. März 2018 Einführung Kollektion von Elementen Grundlegende Operationen sind Einfügen

Mehr

Programmiertechnik II

Programmiertechnik II 2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität

Mehr

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. 8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.

Mehr

5.5 Prioritätswarteschlangen

5.5 Prioritätswarteschlangen 5.5 Prioritätswarteschlangen LIFO- und FIFO-Warteschlangen entfernen Werte aus der Warteschlange in Abhängigkeit davon, wann sie in diese eingefügt wurden Prioritätswartschlangen interpretieren die Werte

Mehr

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen: HeapSort Allgemeines Sortieralgorithmen gehören zu den am häufigsten angewendeten Algorithmen in der Datenverarbeitung. Man hatte daher bereits früh ein großes Interesse an der Entwicklung möglichst effizienter

Mehr

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als

Mehr

18. Natürliche Suchbäume

18. Natürliche Suchbäume Wörterbuchimplementationen 1. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Hashing: Implementierung von Wörterbüchern mit erwartet sehr schnellen Zugriffszeiten. Nachteile

Mehr

SORTIEREN MIT BÄUMEN - HEAPSORT

SORTIEREN MIT BÄUMEN - HEAPSORT 10. Kapitel Teil 3 SORTIEREN MIT BÄUMEN - HEAPSORT Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm Übersicht 1 0. Einführung 1. Algorithmen 2. Eigenschaften von Programmiersprachen 3. Algorithmenparadigmen

Mehr

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume) WS 2016/17 Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_16

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach

Mehr

Kap. 3: Sortieren (3)

Kap. 3: Sortieren (3) Kap. 3: Sortieren (3) Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund 6. VO DAP2 SS 2009 30. April 2009 Überblick Quick-Sort Analyse von Quick-Sort Quick-Sort

Mehr

Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. 7. Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.

Mehr

Prüfung Algorithmen und Datenstrukturen I

Prüfung Algorithmen und Datenstrukturen I Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IF 3 B Wintersemester 2014/15 Prüfung Algorithmen und Datenstrukturen I Datum : 20.01.2015, 10:30 Uhr

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16 Natürliche Bäume (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 18:16 Natürliche Bäume 1/16 Bäume Begriffe (1/2) Bäume sind verallgemeinerte Listenstrukturen ein

Mehr

Auswählen nach Rang (Selektion)

Auswählen nach Rang (Selektion) Auswählen nach Rang (Selektion) Geg.: Folge X von n Schlüsseln, eine Zahl k mit k n Ges.: ein k-kleinster Schlüssel von X, also den Schlüssel x k für X sortiert als x x 2 L x n trivial lösbar in Zeit O(kn)

Mehr

(Digital) Sorting. October 25, Algorithms & Datastructures 2 Exercises WS 2016

(Digital) Sorting. October 25, Algorithms & Datastructures 2 Exercises WS 2016 (Digital) Sorting October 2, 2016 Algorithms & Datastructures 2 Exercises WS 2016 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz kurz@pervasive.jku.at

Mehr

9. Natürliche Suchbäume

9. Natürliche Suchbäume Bäume Bäume sind. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Verallgemeinerte Listen: Knoten können mehrere Nachfolger haben Spezielle Graphen: Graphen bestehen aus Knoten

Mehr

Tutoraufgabe 1 (Sortieralgorithmus):

Tutoraufgabe 1 (Sortieralgorithmus): Prof. aa Dr. Ir. Joost-Pieter Katoen Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung 4 (Abgabe 2..2) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Sortieralgorithmus):

Mehr

3.2. Divide-and-Conquer-Methoden

3.2. Divide-and-Conquer-Methoden LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Tiefensuche: Die globale Struktur Der gerichtete oder ungerichtete Graph G werde durch seine Adjazenzliste A repräsentiert. Im Array besucht wird vermerkt,

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

Kapitel 3: Sortierverfahren Gliederung

Kapitel 3: Sortierverfahren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Kapitel 12: Induktive

Kapitel 12: Induktive Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen. Wiederholung Baum: Gerichteter Graph, der die folgenden drei Bedingungen erfüllt: Es gibt einen Knoten, der nicht Endknoten einer Kante ist. (Dieser Knoten heißt Wurzel des Baums.) Jeder andere Knoten

Mehr

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Präsenzübung Datenstrukturen und Algorithmen SS 2014 Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 15b (13.06.2018) Graphenalgorithmen IV Algorithmen und Komplexität Prims MST-Algorithmus A = while A ist kein Spannbaum do e = u, v ist

Mehr

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum

Mehr

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale

Mehr

Algorithmen I. Tutorium 1-5. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-5. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-5. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-16 Heaps 1 Heaps Binäre Heaps Erhalten der Heap-Eigenschaft Erzeugen eines

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 7 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter Kapitel 7 Fortgeschrittene Datenstrukturen Motivation: Lineare Liste: Suchen eines Elements ist schnell O(log n) Einfügen eines Elements ist langsam

Mehr

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Heapsort, Quicksort, Mergesort. 8. Sortieren II 209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] Heapsort 211 Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

Mehr

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6 Grundlagen der Algorithmen und Datenstrukturen Kapitel 6 Christian Scheideler + Helmut Seidl SS 2009 25.05.09 Kapitel 6 1 Priority Queue M: Menge von Elementen Jedes Element e identifiziert über key(e).

Mehr

Kap. 3 Sortieren. 7. VO DAP2 SS Mai Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr HeapSort ff 3.1.

Kap. 3 Sortieren. 7. VO DAP2 SS Mai Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr HeapSort ff 3.1. Kap. 3 Sortieren 3.1.5 HeapSort ff 3.1.6 Priority Queues Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 7.

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo g@accaputo.ch 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,

Mehr

WS 2013/14. Diskrete Strukturen

WS 2013/14. Diskrete Strukturen WS 2013/14 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws1314

Mehr

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y Die AVL-Eigenschaft soll bei Einfügungen und Streichungen erhalten bleiben. Dafür gibt es zwei mögliche Operationen: -1-2 Rotation Abbildung 3.1: Rotation nach rechts (analog links) -2 +1 z ±1 T 4 Doppelrotation

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/3, Folie 1 2010 Prof. Steffen Lange - HDa/FbI

Mehr

Anwendungsbeispiel MinHeap

Anwendungsbeispiel MinHeap Anwendungsbeispiel MinHeap Uns seien n ganze Zahlen gegeben und wir möchten darin die k größten Zahlen bestimmen; zudem gelten, dass n deutlich größer als k ist Wir können das Problem mit Laufzeit in O(n

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II und Red-Black-Trees Dr. Georg Sauthoff 1 AG Praktische Informatik July 1, SoSe 2011 1 gsauthof@techfak.uni-bielefeld.de Suchbäume (Indexdatenstrukturen) Zugriff in O(logn)

Mehr

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit

Mehr

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Heapsort, Quicksort, Mergesort. 8. Sortieren II 209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 6. Vorlesung Martin Middendorf / Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Merge-Sort Anwendbar für

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele.

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele. lausthal Informatik II Bäume. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Beispiele Stammbaum. Zachmann Informatik 2 - SS 06 Bäume 2 Stammbaum Parse tree, Rekursionsbaum Unix file hierarchy

Mehr

Informatik II Vorlesung am D-BAUG der ETH Zürich

Informatik II Vorlesung am D-BAUG der ETH Zürich Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Kapitel 3: Elementare Datenstrukturen Mariano Zelke Datenstrukturen 2/18 Einfach verkettete Listen Mariano Zelke Datenstrukturen 3/18 Eine Zeiger-Implementierung

Mehr

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel Algorithmen und Datenstrukturen Bäume M. Herpers, Y. Jung, P. Klingebiel 1 Lernziele Baumstrukturen und Ihre Verwendung kennen Grundbegriffe zu Bäumen anwenden können Baumstruktur in C anlegen können Suchbäume

Mehr

ContainerDatenstrukturen. Große Übung 4

ContainerDatenstrukturen. Große Übung 4 ContainerDatenstrukturen Große Übung 4 Aufgabenstellung Verwalte Kollektion S von n Objekten Grundaufgaben: Iterieren/Auflistung Suche nach Objekt x mit Wert/Schlüssel k Füge ein Objekt x hinzu Entferne

Mehr

Informatik II - Tutorium 12

Informatik II - Tutorium 12 Informatik II - Tutorium 12 Vincent Becker vincent.becker@inf.ethz.ch 23.05.2018 Vincent Becker 24.05.2018 1 Reversi-Turnier 30.5.2018 Deadline für Einreichung SONNTAG NACHT!!! Umfrage Bitte an Umfrage

Mehr

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A) Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Prioritätswarteschlangen Mariano Zelke Datenstrukturen 2/28 Der abstrakte Datentyp Prioritätswarteschlange : Füge Elemente (mit Prioritäten) ein und entferne

Mehr

Technische Universität München

Technische Universität München Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion Abschnitt 1 Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion Aufgabe 1: Binäre Suchbäume: Iteratives Suchen/Einfügen/Löschen Das Material dieser Übung enthält in der Klasse Tree0 die

Mehr

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW/ in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de http://ls14-www.cs.tu-dortmund.de

Mehr

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

Informatik B Sommersemester Musterlösung zur Klausur vom

Informatik B Sommersemester Musterlösung zur Klausur vom Informatik B Sommersemester 007 Musterlösung zur Klausur vom 0.07.007 Aufgabe : Graphen und Graphalgorithmen + + + () Punkte Für eine beliebige positive, ganze Zahl n definieren wir einen Graphen G n =

Mehr

Informatik II - Übung 12

Informatik II - Übung 12 Informatik II - Übung 12 Katja Wolff katja.wolff@inf.ethz.ch Übungsblatt 11 1) Sortieren mit Suchbäumen 2) Zeitkomplexität 3) Ein neuer Rechner! 4) Ein Springer auf dem Schachbrett Informatik II Übung

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 018/19 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I - 4 Heute: Wir bauen eine Datenstruktur Datenstruktur: Konzept,

Mehr