Algorithmen & Datenstrukturen
|
|
|
- Björn Weber
- vor 7 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
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
Logische 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
Grundlagen 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.
13. 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:
11. 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
13. 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
12. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty
Algorithmen 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
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
Datenstrukturen. 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
Algorithmen 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
Algorithmen 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
Einfü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,
Teil 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
C- Kurs 09 Dynamische Datenstrukturen
C- Kurs 09 Dynamische Datenstrukturen Dipl.- Inf. Jörn Hoffmann [email protected] leipzig.de Universität Leipzig InsAtut für InformaAk Technische InformaAk Flexible Datenstrukturen Institut für
16. 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
Wiederholung: 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
Ü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
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
13. 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
Spezielle 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
Programm 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
Theoretische 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
Algorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 7. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik [email protected] aufbauend auf den Kursen der letzten Jahre von E. Rahm, G. Heyer,
Binäre Bäume Darstellung und Traversierung
Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail [email protected] Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.
elementare Datenstrukturen
elementare Datenstrukturen Wie die Daten das Laufen lernten Andreas Ferber [email protected] elementare Datenstrukturen p./40 KISS elementare Datenstrukturen p./40 KISS (Keep It Simple, Stupid) Immer die einfachste
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
5.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
Beispiellö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
Ü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
Bä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
Konkatenation 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,
Algorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 8. Vorlesung Martin Middendorf und Peter F. Stadler Universität Leipzig Institut für Informatik [email protected] [email protected] Gefädelte
Fallstudie: 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);...
Abstrakter 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
Motivation 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
Algorithmen 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
Bä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,
Advanced 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
Counting - 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
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
13. 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),
Datenstrukturen, 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
Doppelt 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
Grundlagen der Informatik
Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung
Abstrakte 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
Algorithmen 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
7. 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
Datenstrukturen 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
Algorithmen 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
Verkettete 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
8 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.
1 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
Stack. 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
Schwerpunkte. 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
Einfü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
1 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
(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,
Ü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
Informatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo [email protected] 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,
Bä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.
ADS: 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.
Wiederholung. 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:
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
Stand 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
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:
Suchbä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
ALP 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
Grundlagen: 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
Software 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,
Informatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo [email protected] 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest
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
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 2016/17 Prüfung Algorithmen und Datenstrukturen I Datum : 23.01.2017, 08:30 Uhr
