Algorithmen & Datenstrukturen
|
|
- Björn Weber
- vor 5 Jahren
- Abrufe
Transkript
1 Algorithmen & Datenstrukturen 1. Grundlagen 1.1 Elementare Datenstrukturen 1
2 Datenstrukturen Gleichartige Daten (ob vom elementaren Datentyp oder strukturiert) werden meist bei abschätzbarer Datenmenge in einem Array gehalten, ansonsten wird die Größe der Datenstruktur dynamisch verwaltet. Statische Datenobjekte Dynamische Datenobjekte - Speicherbedarf muss zum Zeit- - Größe des Speicherbedarfs passt punkt der Programmerstellung sich zur Laufzeit an den tatsächbekannt sein lichen Bedarf an - automatische Speicherverwal- - programmlaufabhängige Speichertung verwaltung - fortlaufender Speicherbereich - verketteter Speicherbereich 2
3 Listen (1) Lineare Liste, einfach verkettet p_head L i s t e n NIL Lineare Liste, doppelt verkettet p_head p_tail NIL L i s t e n NIL 3
4 Listen (2) Ringliste, einfach verkettet p_head L i p_tail n s e t Einige Anwendungen: * geordnete Ablage von Daten, * Speicherverwaltung: Verkettung der freien Speicherbereiche, * schwach besetzte Matrizen. 4
5 Listen (3) Listen sind bekannt aus EPR! Hier Wiederholung Eine Lineare Liste (LL) ist eine verkettete Folge von Elementen eines gegebenen Typs T. Einfach verkettete LL: Jedes Listenelement enthält neben den Nutzdaten einen Verweis (Zeiger) auf seinen unmittelbaren Nachfolger. Doppelt verkettete LL: Jedes Listenelement enthält zwei Verweise, einen auf seinen unmittelbaren Nachfolger und einen auf seinen unmittelbaren Vorgänger. Ein Zeiger auf NULL zeigt das Ende der Liste an. Zirkulare Liste oder Ringliste: Jedes Listenelement hat einen Nachfolger, der Zeiger des letzten Elements zeigt wieder auf das erste Element. 5
6 Listen (4) Aufbau einer einfach verketteten linearen Liste p_head p_next NIL Length p head: Listenanfang als Verweis auf das erste Listenelement p next: Verweis auf den Nachfolger Length: Anzahl der Elemente einer Liste NIL: Ende der Liste, in C Verweis auf NULL. 6
7 Listen (5) Elementare Operationen Create: Liste erzeugen: Head setzen und das erste Listenelement eintragen. Destroy: alle Elemente entfernen. Search: Element suchen Insert: Element einfügen Delete: Element löschen Update: Element ersetzen Size: Anzahl der Elemente 7
8 Listen (6) Beispiel für eine Liste in C typedef struct data {... } data_t typedef struct element { data_t data; struct element * p_next; } element_t; typedef struct list { int length; element_t * p_head;... element_t * p_search; } list_t 8
9 Listen (7) Beispiel: ein Element in eine Liste mit sortierten Elementen einfügen p_new p_head p_search NIL 9
10 Listen (8) void insert_element(liste_t * liste, eintrag_t * p_new) { // falls Liste leer... // Einfügestelle suchen... // falls vor dem ersten Element eingefügt wird... } // ansonsten bei p_search einfügen p_new->p_next = liste->p_search->p_next; liste->p_search->p_next = p_new; 10
11 Listen (9) Beispiel: ein Element aus einer Liste löschen p_head p_search p_del NIL 11
12 Listen (10) int delete_element(liste_t * liste, eintrag_t * p_del) { // falls Liste leer - Fehler... // Position von p_del suchen // falls nicht vorhanden - Fehler... // ansonsten p_del löschen // falls p_del=p_head... // ansonsten, sei p_search der Vorgänger von p_del p_search->p_next = p_del->p_next; free(p_del); liste->length--; return 0; } Die weiteren Funktion sind analog zu den obigen aufgebaut. 12
13 Listen (11) Implementation einer Liste mit fester maximaler Größe (bounded implementation) Liegt die maximale Größe der Liste fest, kann eine statische Allokierung vorteilhaft sein. Anstatt Zeiger auf das nächste Datenelement werden die belegten und freien Elemente in einer Indexliste geführt. list[12] L i s n e t head freehead 13
14 Listen (12) In C typedef struct element { data_t data; int next; } element_t; typedef struct list { element_t list_el[12]; /* Array aus 12 Elementen */ int head = -1 /* Verweis auf Listenanfang */ int freehead = 0 /* Verweis auf erstes freies Element */... } list_t -1 steht für NIL, head zeigt auf das erste Listenelement freehead zeigt auf das erste freie Listenelement. 14
15 Listen (13) Vergleich Bounded-Singly-Linked-List mit Arrays: * Mehraufwand durch Verweise * einfache Sortierung möglich Bounded- mit Unbounded-Singly-Linked-List: * Begrenzte Anzahl der Elemente * vermeidet Speicherfragmentierung 15
16 Listen (14) Beispiel: Einfügen eines Elements am Anfang der Liste L i s n e t head freehead L 5 i s n e t if (freehead!= NIL) { new_el = freehead; freehead = list[freehead].next; list[new_el].data = daten; list[new_el].next = head; head = new_el; } head freehead 16
17 Listen (15) Doppelt-verkettete Liste Die doppelt-verkettete Liste ist eine Erweiterung der einfach-verketteten Liste, in der Verweise in beide Laufrichtungen gespeichert sind. p_head p_tail Datenstruktur in C L NIL i s NIL t e n typedef struct element { data_t data; struct element * prev; struct element * next; } element_t; Alle Funktionen sind analog zur einfach verketteten Liste aufgebaut. 17
18 Listen (16) Doppelt verkettete Liste mit fester Größe Tail L i s n e t Head FreeHead Auch hier werden alle Funktionen analog zur einfach verketteten Liste mit fester maximaler Größe aufgebaut werden. 18
19 Stack (1) Ein Stack (Stapel, Kellerspeicher) ist ein abstrakter Datentyp, bei dem Elemente in der sogenannten LIFO = Last-In-First- Out-Reihenfolge abgelegt werden und wieder eingelesen werden können. D.h. die Daten werden in der umgekehrten Reihenfolge gelesen wie geschrieben. Anwendung: geschachtelte Strukturen unbekannter Tiefe wie z.b. bei der Auswertung arithmetischer Ausdrücke für die Speicherung von Zwischenergebnissen. Auf diese Art werden die Daten bei Funktionsaufrufen auf den Stack-Speicher gelegt. 19
20 Stack (2) Typische Stackoperationen: push: legt das Element x auf den Stack s peek/top: liefert das zuletzt auf den Stack s gelegte Element pop: isempty: size: (liefert und) entfernt das zuletzt auf den Stack s gelegte Element gibt an, ob der Stack leer ist gibt die Größe des Stacks Ein Stack kann als Array oder lineare Liste implementiert werden. 20
21 Stack (3) Beispiel: Berechnung von 5.1*(((91+28)*(4.3+6))+777) in umgekehrter polnischer Notation: * * #include <stdio.h> int main(void) push(pop()+pop()); { push(pop()*pop()); stackinit(); push(777); push(5.1); push(pop()+pop()); push(91); push(pop()*pop()); push(28); printf("%d\n",pop()); push(pop()+pop()); if (stackempty()) push(4.3); printf(" Stack is empty now\n"); push(6); return 0; } 21
22 Queue (1) Eine Queue (Warteschlange, Puffer) ist ein Datentyp, bei dem auf die Elemente nach dem FIFO = First-In-First-Out-Prinzip zugegriffen wird. Dies ermöglicht das Auslesen der Daten in der Reihenfolge ihrer Speicherung. Length Head Tail Head Tail 22
23 Queue (2) Speicherung Eine Queue kann als lineare Liste, Ringliste oder Array implementiert werden. Struktur Es müssen 2 Indizes mitgeführt werden: head, die Position zum Eintragen von Elementen, tail, die Position zum Entnehmen der Elemente head next element tail 23
24 Queue (3) Elementare Operationen Create: Queue erzeugen Destroy: Queue löschen Insert(AtHead): Element einfügen Remove(FromTail): Element löschen IsEmpty: Test auf Einträge IsFull: Test auf Füllung LengthOf: Länge der Queue Anwendung: Pufferung zwischen unterschiedlich leistungsfähigen Datenquellen wie z.b. Druckerwarteschlangen pipes in Unix Ereignisverarbeitung 24
25 Queue (4) Ringbuffer Ist die maximale Länge bekannt, kann eine Queue auch als zirkulares Array (Ringpuffer) implementiert werden Tail next Head
26 Queue (5) Problem: Head und Tail wandern entgegen des Uhrzeigersinns. Die Queue ist voll oder leer bei (Head+1)%12=Tail Ausweg: Setze Head auf -1, wenn die Queue voll ist und Tail auf -1, wenn die Queue leer ist. 26
27 Bäume (1) Bäume in der Informatik sind verzweigte Datenstrukturen. Wurzel Blätter Sie bestehen aus Knoten, die hierarchisch angeordnet sind und über Kanten verbunden sind. 27
28 Bäume (2) Sie enthalten keine geschlossenen Maschen, d.h. sie sind zyklenfrei. Es gibt genau einen Knoten, der keinen Vorgänger (Eltern-Knoten, Parent-node) hat, die Wurzel (root) oder der oberste Knoten. Die untersten oder äußeren Knoten, an denen keine weiteren Knoten hängen, heißen Blätter (leaves). Die direkten Nachfolger eines Knotens heißen Kinder (Children). Jeder Knoten, der kein Blatt ist, hat einen Teilbaum. Die Entfernung von der Wurzel ist die Stufe eines Knotens. Die maximale Anzahl der Teilbaumzeiger im Knoten ist der Grad (degree) eines Baums. Jeder Knoten ist von der Wurzel aus auf genau einem Weg zu erreichen. 28
29 Bäume (3) Die Knoten eines Baumes sind meistens nach einer bestimmten Ordnungsregel angeordnet. Wurzel Blätter Vorfahren von 03 und Parent von 60 und Childern von 67 Nachfahren von 67 Geschwister 29
30 Bäume (4) Jeder Knoten eines Baums besteht aus einem Datenteil und zwei oder mehr Zeigern auf andere Knoten. Bedeutung für die Informatik Hervorrangendes Hilfsmittel, sortierte Daten so abzuspeichern, dass jedes Datenelement möglichst schnell auffindbar ist. Hierarchische Strukturen wie z.b. Verzeichnisstrukturen bei Betriebssystemen. Repräsentation mathematischer Formeln, z.b. arithmetische Ausdrücke... 30
31 Bäume (5) Binäre Bäume Jeder Knoten hat höchstens zwei Teilbaumzeiger, d.h. er ist vom Grad 2. Er ist entweder leer oder besteht aus der Wurzel und zwei binären Bäumen (rekursive Definition). Jeder Knoten enthält Daten und 2 Verweise auf die Unterbäume. Besitzt ein Knoten links oder/und rechts kein Child-Element, wird der entsprechende Zeiger auf NULL gesetzt. Eine einfach verkettete lineare Liste ist ein nicht-ausgeglichener binärer Baum. 31
32 Bäume (6) 32
33 Bäume (7) Geordnete Bäume Jedes Datenelement enthält einen Ordnungsbegriff, den Schlüssel, nach dessen Wert sortiert wird. Jeder linke Teilbaum eines Knoten enthält nur Knoten mit kleineren Schlüsselwörtern, jeder rechte Teilbaum nur Knoten mit größeren Schlüsselwörtern (siehe Suchbäume). Bäume ausgleichen Ein ausgeglichener Baum ist ein Baum, der so flach wie möglich ist, d.h. alle Blätter liegen auf einer Ebene bzw. die vorletzte Ebene ist voll belegt. Ausgeglichene Bäume werden oft verwendet, wenn Elemente gesucht werden sollen (schwächere Definitionen siehe AVL-Bäumen). 33
34 Durchlaufen von Bäumen (1) Methoden zum Durchlaufen (Traversing) von Bäumen Im Gegensatz zu den bisherigen Datenstrukturen ist das Durchlaufen von Bäumen nicht eindeutig. 34
35 Durchlaufen von Bäumen (2) Meistens werden 4 Typen der Bewegung verwendet: Preorder Traversing 1. Besuchen des Wurzelknotens 2. Preorder Traversing des linken Teilbaums 3. Preorder Traversing des rechten Teilbaums
36 Durchlaufen von Bäumen (3) Postorder Traversing (siehe Ausdrucksbäume) 1. Postorder Traversing des linken Teilbaums 2. Postorder Traversing des rechten Teilbaums 3. Besuchen des Wurzelknotens
37 Durchlaufen von Bäumen (4) Inorder Traversing 1. Inorder Traversing des linken Teilbaums 2. Besuchen des Wurzelknotens 3. Inorder Traversing des rechten Teilbaums Die Daten in einem binären Suchbaum sind in Inorder-Reihenfolge korrekt sortiert. 37
38 Durchlaufen von Bäumen (5) Level-Order Traversing 1. Besuchen des Wurzelknotens 2. Durchlaufen jeder weitere Ebene von links nach rechts
39 Suchbäume (1) Jeder Knoten eines Baumes enthält ein Datenelement. Dieses unterteilt sich normalerweise in ein Schlüsselelement (Key), nachdem die Knoten sortiert sind, und eine Datenstruktur. Beispiel für eine Struktur eines Knotens in einem binären Suchbaum in C typedef struct node_b { struct node_b * p_left; struct node_b * p_right; int key; data_t data; } node_t; Oft werden weitere Daten hinzugefügt, wie z.b. ein Zeiger auf den Elternknoten oder die Tiefe der Teilbäume (siehe später AVL- Bäume). 39
40 Suchbäume (2)
41 Suchbäume (3) Inorder Traversing (rekursiv: linker Teilbaum, ausgeben, rechter Teilbaum)
42 Ausdrucksbaum (1) Aufbau eines Ausdrucksbaums zur Verarbeitung von Ausdrücken: Die als Child-Elemente jedes Knotens vorhandenen Teilbäume bilden die Operanden des im Parent-Knoten gespeicherten Operators. Die Operanden können Terminale oder selbst Ausdrücke sein. Ausdrücke werden zu Teilbäumen expandiert Terminale stehen in den Blatt-Knoten. 42
43 Ausdrucksbaum (2) Beispiel: ((74-10)/32) x (23+17) A x B x A B A=C/32 / B= C C=
44 Ausdrucksbaum (3) x / Postfix-Ausdruck: / x 44
45 Ausdrucksbaum (4) Postfix-Ausdruck: / x Dieses ist genau die Notation, die wir zur Abarbeitung von Ausdrücken beim Thema Stack behandelt haben auf Stack 74 auf Stack 10 vom Stack 10 vom Stack 74 - anwenden auf Stack 64 auf Stack 32 vom Stack 32 vom Stack 64 / anwenden auf Stack 2 auf Stack 23 auf Stack 17 vom Stack 17 vom Stack 23 + anwenden auf Stack 40 vom Stack 40 vom Stack 2 x anwenden auf Stack 80 Achtung, bei den Operationen - und / muss auf die Reihenfolge der Operanden geachtet werden. 45
46 Operationen für Bäume Traversierung eines Baums. Suchen eines Elements. Verändern eines Knotens. Einfügen eines neuen Knotens. Löschen eines Elements. Ausgleichen eines Baums durch Rotation. Einzelne Algorithmen für diese Operationen wie ein Suchalgorithmus können iterativ (Wiederhol-Schleife) oder rekursiv (sich selbst aufrufende Funktion) durchgeführt werden. Weiteres zu Bäumen im Kapitel Suchen. 46
Vorlesung Datenstrukturen
Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum
MehrAlgorithmen 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
MehrDatenstrukturen. 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
MehrLogische Datenstrukturen
Lineare Listen Stapel, Warteschlangen Binärbäume Seite 1 Lineare Liste Begriffe first Funktion: sequentielle Verkettung von Datensätzen Ordnungsprinzip: Schlüssel Begriffe: first - Anker, Wurzel; Adresse
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
Mehr13. Bäume: effektives Suchen und Sortieren
13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Version: 25. Jan. 2016 Schwerpunkte Aufgabe und Vorteile von Bäumen Sortieren mit Bäumen Ausgabealgorithmen:
Mehr11. Elementare Datenstrukturen
11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische
Mehr13. Bäume: effektives Suchen und Sortieren
Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder
Mehr12. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty
MehrAlgorithmen und Datenstrukturen 2. Dynamische Datenstrukturen
Algorithmen und Datenstrukturen 2 Dynamische Datenstrukturen Algorithmen für dynamische Datenstrukturen Zugriff auf Variable und Felder durch einen Ausdruck: Namen durch feste Adressen referenziert Anzahl
MehrKapitel 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
MehrDatenstrukturen. einfach verkettete Liste
einfach verkettete Liste speichert Daten in einer linearen Liste, in der jedes Element auf das nächste Element zeigt Jeder Knoten der Liste enthält beliebige Daten und einen Zeiger auf den nächsten Knoten
MehrAlgorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B3.1 Einführung. B3.2 Verkettete Liste. B3.3 Bäume
Algorithmen und Datenstrukturen 22. März 2018 B3. Verkettete Listen und Bäume Algorithmen und Datenstrukturen B3. Verkettete Listen und Bäume B3.1 Einführung Marcel Lüthi and Gabriele Röger B3.2 Verkettete
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen B3. Verkettete Listen und Bäume Marcel Lüthi and Gabriele Röger Universität Basel 22. März 2018 Einführung Abstrakter Datentyp / Datenstruktur Abstrakter Datentyp Eine Menge
MehrEinführung in die Informatik 2
Einführung in die Informatik 2 Listen & Bäume Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 SvenKosub@uni-konstanzde Sprechstunde: Freitag, 14:00-15:00 Uhr, onv Sommersemester
MehrEinführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper
Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen Sebastian Küpper Unzulänglichkeit von Feldern Wenn ein Unternehmen alle Rechnungen eines Jahres verwalten möchte,
MehrTeil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1
Teil : Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume (Wiederholung aus Prog 2) Bäume: Begriffe, Eigenschaften und Traversierung Binäre Suchbäume Gefädelte Suchbäume Ausgeglichene
MehrC- Kurs 09 Dynamische Datenstrukturen
C- Kurs 09 Dynamische Datenstrukturen Dipl.- Inf. Jörn Hoffmann jhoffmann@informaak.uni- leipzig.de Universität Leipzig InsAtut für InformaAk Technische InformaAk Flexible Datenstrukturen Institut für
Mehr16. Dynamische Datenstrukturen
Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange
MehrWiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute
Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert
MehrLineare Liste. struct list_element { float f; /* weitere Elemente */ struct list_element *next; /* Zeiger auf Nachfolger-Element */ }; Peter Sobe
Lineare Liste Zeigertechnik zum dynamischen Herstellen und Lösen von Verbindungen zwischen Datenelementen Einsatz des Verbundtyps struct {...} in Kombination mit Zeigern. Da das Element selbst eine Struktur
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 217 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Graphen, Suchbäume, AVL Bäume Heute: Graphen und Bäume Binäre Suchbäume AVL-Bäume Nächste
MehrTechnische 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
MehrNatü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
Mehr13. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen
MehrSpezielle Datenstrukturen
Spezielle Datenstrukturen Stapel (Stack) Beschreibung der Datenstruktur Stapel Ein Stapel (engl. Stack), auch Stapelspeicher oder Keller bzw. Kellerspeicher genannt, ist eine Datenstruktur, in der Daten
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen
MehrTheoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke
Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale
MehrAlgorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 7. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@informatik.uni-leipzig.de aufbauend auf den Kursen der letzten Jahre von E. Rahm, G. Heyer,
MehrBinäre Bäume Darstellung und Traversierung
Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.
Mehrelementare Datenstrukturen
elementare Datenstrukturen Wie die Daten das Laufen lernten Andreas Ferber af@myipv6.de elementare Datenstrukturen p./40 KISS elementare Datenstrukturen p./40 KISS (Keep It Simple, Stupid) Immer die einfachste
MehrElementare Datenstrukturen
Organisatorisches VL-09: Elementare Datenstrukturen (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11:15 12:00 Übungen:
Mehr9. 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
Mehr5.3 Doppelt verkettete Listen
5.3 Doppelt verkettete Listen Einfach verkettete Listen unterstützen das Einfügen und Löschen am Anfang in konstanter Zeit; für das Einfügen und Löschen am Ende benötigen sie jedoch lineare Laufzeit Doppelt
MehrBeispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5
Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
MehrBäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda
Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume
MehrKonkatenation zweier Listen mit concat
Ein Datenmodell für Listen Konkatenation zweier Listen mit concat Was ist an der Konkatenation etwas unschön? Man muss die vordere Liste einmal durchgehen, um den letzten Nachfolger (urspr. null zu erhalten,
MehrAlgorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 8. Vorlesung Martin Middendorf und Peter F. Stadler Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Gefädelte
MehrFallstudie: Online-Statistik
Fallstudie: Online-Statistik Ziel: Klasse / Objekt, welches Daten konsumiert und zu jeder Zeit Statistiken, z.b. Mittelwert, Varianz, Median (etc.) ausgeben kann Statistics s = new Statistics(maxSize);...
MehrAbstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.
Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein
Mehr18. 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
MehrMotivation Binäre Suchbäume
Kap..: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund Zusätzliche Lernraumbetreuung Morteza Monemizadeh: Jeden Montag von :00 Uhr-:00 Uhr in
Mehr18. 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
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische
MehrInformatik II, SS 2016
Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 10 (27.5.2016) Binäre Suchbäume II Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:
MehrBäume und der Sequence ADT
Bäume und der Sequence ADT Motivation: Der Sequence ADT Bei der Vorstellung verschiedener Implementierungen für Stacks, Queues und Deques wurde vor allem auf die Unterschiede zwischen Arrays fester Größe,
MehrAdvanced Programming in C
Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer
MehrCounting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit
Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält
MehrWiederholung. 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
Mehr13. Binäre Suchbäume
1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),
MehrDatenstrukturen, Listen und Bäume
Inhalt: Datenstrukturen, Listen und Bäume Datenstrukturen Definition und Arten Dynamische lineare Datenstrukturen: lineare, verkettete Liste Nichtlineare dynamische Datenstrukturen: Binärbaum Die Umsetzung
MehrDoppelt verkettete Listen (1)
Doppelt verkettete Listen (1) Verkettete Listen bestehen aus einer Menge linear angeordneter Objekte. Anordnung realisiert durch Verweise. Unterstützen Operationen Insert, Delete, Search, usw. (nicht unbedingt
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Lineare Listen (2) Doppelt verkettete Listen Ringlisten, Stapel, Schlangen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 175 Doppelt verkettete Listen
MehrGrundlagen der Informatik
Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung
MehrAbstrakte Datentypen und Datenstrukturen
Abstrakte Datentypen und Datenstrukturen Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 3. VO DAP2 SS 2008 15. April 2008 1 Überblick ADT Sequence ADT Stack
Mehrpublic interface Stack<E> { public void push(e e); public E pop();
ADS Zusammenfassung René Bernhardsgrütter 02.04.2012 1 Generics Gewähren Typsicherheit und können für verschiedene Datentypen ohne Casts verwendet werden. Beim Erstellen der Klasse werden Platzhalter für
MehrAlgorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische
Mehr7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure
7. Dynamische Datenstrukturen Bäume Informatik II für Verkehrsingenieure Übersicht dynamische Datenstrukturen Wozu? Oft weiß man nicht von Beginn an, wieviele Elemente in einer Datenstruktur untergebracht
MehrDatenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik
5. Datenstrukturen Motivation Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik Eine Datenstruktur speichert gegebene Daten und stellt auf diesen bestimmte Operationen
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Lineare Listen (1) Einfach verkettete Listen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 148 Wiederholung Felder Vorteil Der Zugriff auf ein beliebiges
MehrTrees. November 14, Algorithms & Datastructures 2 Exercises WT 2017
Trees November 14, 2017 Algorithms & Datastructures 2 Exercises WT 2017 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz anzengruber@pervasive.jku.at Binärbaum
MehrVerkettete Datenstrukturen: Bäume
Verkettete Datenstrukturen: Bäume 1 Graphen Gerichteter Graph: Menge von Knoten (= Elementen) + Menge von Kanten. Kante: Verbindung zwischen zwei Knoten k 1 k 2 = Paar von Knoten (k 1, k 2 ). Menge aller
Mehr8 Elementare Datenstrukturen
Algorithmen und Datenstrukturen 186 8 Elementare Datenstrukturen In diesem und dem folgenden Kapitel werden grundlegende Techniken der Darstellung und Manipulation dynamischer Mengen auf Computern vorgestellt.
Mehr1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.
1 Informatik I: Einführung in die Programmierung 11. Bäume e e Albert-Ludwigs-Universität Freiburg Bernhard Nebel 13. November 2015 13. November 2015 B. Nebel Info I 3 / 33 Bäume in der Informatik Bäume
MehrStack. Queue. pop() liefert zuletzt auf den Stack gelegtes Element und löscht es push( X ) legt ein Element X auf den Stack
Stack und Queue Grundlegender Datentyp Menge von Operationen (add, remove, test if empty) auf generischen Daten Ähnlich wie Listen, aber mit zusätzlichen Einschränkungen / Vereinfachungen: Einfügen immer
MehrTrees. November 13, Algorithms & Datastructures 2 Exercises WT 2017
Trees November 13, 2018 Algorithms & Datastructures 2 Exercises WT 2017 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz anzengruber@pervasive.jku.at Binärbaum
Mehr7. Verkettete Strukturen: Listen
7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Version: 4. Jan. 2016 Vergleich: Schwerpunkte Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++):
MehrSchwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
MehrEinfügen immer nur am Kopf der Liste Löschen auch nur an einem Ende (2 Möglichkeiten!)
Stack und Queue Grundlegender Datentyp Menge von Operationen (add, remove, test if empty) auf generischen Daten Ähnlich wie Listen, aber mit zusätzlichen Einschränkungen / Vereinfachungen: Einfügen immer
Mehr1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.
1 Informatik I: Einführung in die Programmierung 11. Bäume e e Albert-Ludwigs-Universität Freiburg Bernhard Nebel 17. November 2017 17. November 2017 B. Nebel Info I 3 / 33 Bäume in der Informatik Bäume
Mehr(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.
(a, b)-bäume / 1. Szenario: Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. Konsequenz: Kommunikation zwischen Hauptspeicher und Festplatte - geschieht nicht Byte für Byte,
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2014 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Programm heute 1 Einführung 2 Grundlagen von Algorithmen
MehrOrganisatorisches. Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Definition Feld. Definition Feld
Organisatorisches Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 208 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München TUMonline-Einträge: Vorlesung https://campus.tum.de/tumonline/wblv.
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 216 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda Vorstellung des 6. Übungsblatts. Hashing Binäre Suchbäume AVL-Bäume 2 Aufgabe: Hashing mit
MehrInformatik 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,
MehrBäume. Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe
Bäume Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe S. Staab, Informatik für IM II; Folien nach D. Saupe, sowie W. Küchlin, A.
MehrADS: Algorithmen und Datenstrukturen
ADS: Algorithmen und Datenstrukturen Teil VII Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 08.
MehrWiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO
Wiederholung Datenstrukturen und Algorithmen VO 708.031 Suchen in linearen Feldern Ohne Vorsortierung: Sequentielle Suche Speicherung nach Zugriffswahrscheinlichkeit Selbstanordnende Felder Mit Vorsortierung:
MehrAnwendungsbeispiel 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
MehrStand der Vorlesung. Vergleich verkettete Liste und sequentielle Liste
Stand der Vorlesung Kapitel 5 Elementare Datenstrukturen Felder: Folge gleichartiger Elemente Repräsentiert als statische Liste, sequentiell verwaltete Elemente Feste Länge, statische Struktur Direkter
MehrTechnische Universität München
Stand der Vorlesung Kapitel 5 Elementare Datenstrukturen Felder: Folge gleichartiger Elemente Repräsentiert als statische Liste, sequentiell verwaltete Elemente Feste Länge, statische Struktur Direkter
MehrInformatik 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:
MehrSuchbäume. Suchbäume. Einfügen in Binären Suchbäumen. Suchen in Binären Suchbäumen. Prinzip Suchbaum. Algorithmen und Datenstrukturen
Suchbäume Suchbäume Prinzip Suchbaum Der Wert eines Knotens wird als Schlüssel verstanden Knoten kann auch weitere Daten enthalten, die aber hier nicht weiter betrachtet werden Werte der Schlüssel müssen
MehrALP II Dynamische Datenmengen Datenabstraktion
ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen
MehrGrundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
MehrInformatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1
Informatik Vorlesung 08 Pointer (Dynamisch) 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Pointer (Zeiger) Dynam. Speicher Bisher: Speicherbedarf muss
Mehr5.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
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Lernziele Die Definition wichtiger Begriffe im Zusammenhand mit Bäumen zu kennen. Markierte Bäumen, insbesondere Suchbäume,
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Feld als sequentielle Liste. Definition Feld
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 205 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Einführung 2 Grundlagen von Algorithmen
MehrInformatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest
MehrContainerDatenstrukturen. 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
MehrPrüfung Algorithmen und Datenstrukturen I
Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IF 3 B Wintersemester 2016/17 Prüfung Algorithmen und Datenstrukturen I Datum : 23.01.2017, 08:30 Uhr
Mehr