8 Elementare Datenstrukturen
|
|
|
- Imke Gärtner
- vor 8 Jahren
- Abrufe
Transkript
1 Algorithmen und Datenstrukturen Elementare Datenstrukturen In diesem und dem folgenden Kapitel werden grundlegende Techniken der Darstellung und Manipulation dynamischer Mengen auf Computern vorgestellt. Dynamische Mengen sind Mengen, die sich zeitlich ändern können durch Einfügen und Entfernen von Elementen oder durch andere Operationen. In einer typischen Implementierung wird ein Element repräsentiert durch ein Objekt mit mehreren Komponenten. Auf Objekte kann zugegriffen werden, sobald ein Zeiger auf sie vorhanden ist. Bei einigen dynamischen Mengen besteht eines der Objektkomponenten aus einem Schlüssel. Sind die Schlüssel paarweise verschieden, so kann die Menge als Menge von Schlüsseln aufgefaßt werden. 8 Elementare Datenstrukturen TU Bergakademie Freiberg, WS 2005/06
2 Algorithmen und Datenstrukturen 187 Man teilt Operationen auf dyamischen Mengen ein in Anfragen (queries) und Modifikationen. Typische Operationen sind: SEARCH(S, k): Anfrage, welche bei gegebener Menge S und Schlüsselwert k einen Zeiger x auf ein Element aus S liefert mit key[x] = k sofern vorhanden, andernfalls den Sonderwert NIL. MINIMUM(S): Anfrage an vollständig geordnete Menge, welche einen Zeiger auf das Element aus S mit kleinstem Schlüssel liefert. MAXIMUM(S): analog zu MINIMUM, größter Schlüssel SUCCESSOR(S, x): Anfrage, welche zum Element x der vollständig geordneten Menge S einen Zeiger auf das nächstgrößere Element in S liefert oder, falls x das größte Element in S ist, NIL zurückliefert. PREDECESSOR(S, x): analog zu SUCCESSOR, nächstkleineres Element 8 Elementare Datenstrukturen TU Bergakademie Freiberg, WS 2005/06
3 Algorithmen und Datenstrukturen 188 INSERT(S, x): Modifikation, welche der Menge S das Element, auf welches x zeigt, hinzufügt. (Hierbei wird angenommen, dass für die Implementierung der dynamischen Menge erforderliche Felder bereits initialisiert sind.) DELETE(S, x): Modifikation, welche das Element, auf welches x zeigt, aus der Menge S entfernt. (Verwendet Zeiger auf Element, keinen Schlüsselwert) 8 Elementare Datenstrukturen TU Bergakademie Freiberg, WS 2005/06
4 Algorithmen und Datenstrukturen Stacks und Queues Stacks (Stapel, Keller) und Queues (Schlangen) sind dynamische Mengen, bei denen das nächste entfernbare Element vorgegeben ist. Beim Stack kann nur das zuletzt eingefügte Element entfernt werden. Man bezeichnet dies als LIFO-Regel (last-in, first-out). Bei der Queue wird stets das Element als nächstes entfernt, welches bereits am längsten der Menge angehört (FIFO-Regel, first-in, first-out). In diesem Abschnitt stellen wir Implementierungen von Stacks und Queues vor, welche auf Feldern beruhen. 8.1 Stacks und Queues TU Bergakademie Freiberg, WS 2005/06
5 Algorithmen und Datenstrukturen Stacks Stack aus höchstens n Elementen dargestellt durch Feld S[1.. n] Terminologie: INSERT-Operation heißt PUSH, DELETE heißt POP. Attribut top[s]: Index des zuletzt eingefügten Elementes Stack besteht aus Teilfeld S[1.. top[s]]. S[1] unterstes, S[top[S]] oberstes Element Gilt top[s] = 0, so ist der Stack leer. Operation STACK-EMPTY testet auf leeren Stack. POP-Operation auf leeren Stack führt zu Unterlauf-Fehler, falls top[s] > n tritt (bei PUSH) Überlauf auf. Alle Operationen vom Aufwand O(1). 8.1 Stacks und Queues TU Bergakademie Freiberg, WS 2005/06
6 Algorithmen und Datenstrukturen 191 STACK-EMPTY(S) 1 if top[s] = 0 2 then return TRUE 3 else return FALSE PUSH(S, x) 1 top[s] top[s] S[top[S]] x POP(S) 1 if STACK-EMPTY(S) 2 then error Unterlauf 3 else top[s] top[s] 1 4 return S[top[S] + 1] 8.1 Stacks und Queues TU Bergakademie Freiberg, WS 2005/06
7 Algorithmen und Datenstrukturen S Stack S top[s]= S nach PUSH(S, 17), PUSH(S, 3) top[s]= S nach POP(S) top[s]=5 8.1 Stacks und Queues TU Bergakademie Freiberg, WS 2005/06
8 Algorithmen und Datenstrukturen Queues INSERT-Operation heißt ENQUEUE, DELETE-Operation heißt DEQUEUE. ENQUEUE fügt neues Element am Ende (tail) der Schlange an, DEQUEUE entfernt Element am Kopf (head) der Schlange. Implementierung einer Schlange mit n 1 Elementen durch Feld Q[1.. n] Attribut head[q]: Index des Schlangenkopfes Attribut tail[q]: Index des Schlangenendes Elemente liegen an den Positionen head[q], head[q] + 1,..., tail[q] 1. Position 1 folgt unmittelbar auf Position n (kreisförmige Anordnung, wrap-around ) 8.1 Stacks und Queues TU Bergakademie Freiberg, WS 2005/06
9 Algorithmen und Datenstrukturen 194 Anfangszustand: head[q] = tail[q] = 1 Schlange leer, falls head[q] = tail[q]. DEQUEUE angewandt auf leere Schlange führt zu Unterlauf-Fehler. Schlange voll, falls head[q] = tail[q] + 1. ENQUEUE angewandt auf volle Schlange führt zu Überlauf-Fehler. (Prüfung auf Fehler in folgendem Pseudocode weggelassen.) Alle Operationen besitzen Aufwand O(1). 8.1 Stacks und Queues TU Bergakademie Freiberg, WS 2005/06
10 Algorithmen und Datenstrukturen 195 ENQUEUE(Q, x) 1 Q[tail[Q]] x 2 if tail[q] = length[q] 3 then tail[q] 1 4 else tail[q] tail[q] + 1 DEQUEUE(Q) 1 x Q[head[Q]] 2 if head[q] = length[q] 3 then head[q] 1 4 else head[q] head[q] return x 8.1 Stacks und Queues TU Bergakademie Freiberg, WS 2005/06
11 Algorithmen und Datenstrukturen 196 Q Schlange Q head[q]=7 tail[q]=12 Q nach ENQUEUE(Q, 17), ENQUEUE(Q, 3), ENQUEUE(Q, 5) tail[q]=3 head[q]=7 Q nach DEQUEUE(Q) tail[q]=3 head[q]=8 8.1 Stacks und Queues TU Bergakademie Freiberg, WS 2005/06
12 Algorithmen und Datenstrukturen Verkettete Listen Datenstruktur aus linear angeordneten Objekten; Ordnung nicht durch Feldindizes, sondern durch Verzeigerung gegeben. Unterstützt (wenn auch nicht effizient) alle Operationen aus Einleitung. Jedes Objekt enthält Schlüssel, evtl. weitere Nutzdaten, und eine (einfach verkettete Liste) oder zwei (doppelt verkettete Liste) Zeiger-Komponenten. Bei doppelt verketteter Liste L: Zeiger prev auf Vorgänger-Objekt, Zeiger next auf Nachfolger-Objekt. Ist next[x] = NIL, so hat x keinen Nachfolger, ist also letztes Element (am Ende der Liste). Ist prev[x] = NIL, so hat x keinen Vorgänger, ist also erstes Element (am Kopf der Liste). 8.2 Verkettete Listen TU Bergakademie Freiberg, WS 2005/06
13 Algorithmen und Datenstrukturen 198 Attribut head[l] zeigt auf erstes Element der Liste. Ist head[l] = NIL, so ist die Liste leer. Einfach verkettete Liste ohne prev-zeiger Sortierte Liste: Schlüsselfelder sortiert in linearer Anordnung der Objekte (aufsteigend von Kopf bis Ende) Kreisförmige Liste: prev-zeiger des Kopfes zeigt auf Ende, next-zeiger des Endes Zeigt auf Kopf. im weiteren: doppelt verkettete, unsortierte Listen. head[l] Doppelt verkettete Liste mit dem Inhalt {1, 4, 9, 16}; Zeiger durch Pfeile dargestellt, prev-zeiger rosa, next-zeiger blau; /-Symbol bezeichnet NIL 8.2 Verkettete Listen TU Bergakademie Freiberg, WS 2005/06
14 Algorithmen und Datenstrukturen Suchen in einer verketteten Liste Algorithmus LIST-SEARCH(L, k): bestimmt erstes Element in Liste L mit Schlüssel k und liefert Zeiger hierauf zurück (NIL, falls keines vorhanden). LIST-SEARCH(L, k) 1 x head[l] 2 while x NIL and key[x] k 3 do x next[x] 4 return x Beispiele: Anwendung von LIST-SEARCH(L, 4) auf obige Liste liefert Zeiger auf drittes Element. Anwendung von LIST-SEARCH(L, 7) hingegen liefert NIL. 8.2 Verkettete Listen TU Bergakademie Freiberg, WS 2005/06
15 Algorithmen und Datenstrukturen Einfügen in eine verkettete Liste Algorithmus LIST-INSERT(L, x) setzt gegebenes Objekt x (Schlüssel-Komponente als definiert vorausgesetzt) an den Anfang der Liste. LIST-INSERT(L, x) 1 next[x] head[l] 2 if head[l] NIL 3 then prev[head[l]] x 4 head[l] x 5 prev[x] NIL Laufzeit: O(1). 8.2 Verkettete Listen TU Bergakademie Freiberg, WS 2005/06
16 Algorithmen und Datenstrukturen 201 Beispiel: Wirkungsweise von LIST-INSERT head[l] Verkettete Listen TU Bergakademie Freiberg, WS 2005/06
17 Algorithmen und Datenstrukturen 201 Beispiel: Wirkungsweise von LIST-INSERT head[l] Verkettete Listen TU Bergakademie Freiberg, WS 2005/06
18 Algorithmen und Datenstrukturen 201 Beispiel: Wirkungsweise von LIST-INSERT head[l] Verkettete Listen TU Bergakademie Freiberg, WS 2005/06
19 Algorithmen und Datenstrukturen 201 Beispiel: Wirkungsweise von LIST-INSERT head[l] Verkettete Listen TU Bergakademie Freiberg, WS 2005/06
20 Algorithmen und Datenstrukturen 201 Beispiel: Wirkungsweise von LIST-INSERT head[l] Verkettete Listen TU Bergakademie Freiberg, WS 2005/06
21 Algorithmen und Datenstrukturen 201 Beispiel: Wirkungsweise von LIST-INSERT head[l] Verkettete Listen TU Bergakademie Freiberg, WS 2005/06
22 Algorithmen und Datenstrukturen Löschen aus einer verketteten Liste Algorithmus LIST-DELETE entfernt ein Element x aus Liste L bei gegebenem Zeiger auf x. Soll ein Element mit einem spezifischen Schlüssel gelöscht werden, so muß mit LIST-SEARCH zuvor ein Zeiger auf dieses Element beschafft werden. LIST-DELETE(L, x) 1 if prev[x] NIL 2 then next[prev[x]] next[x] 3 else head[l] next[x] 4 if next[x] NIL 5 then prev[next[x]] prev[x] Laufzeit: O(1). Löschen eines speziellen Schlüssels: Θ(n). 8.2 Verkettete Listen TU Bergakademie Freiberg, WS 2005/06
23 Algorithmen und Datenstrukturen Implementierung von Zeigern und Objekten In diesem Abschnitt betrachten wir Implementierungen verketteter Datenstrukturen ohne Verwendung eines expliziten Zeiger-Datentyps. (Manche Programmiersprachen besitzen keinen) Mehrfelddarstellung von Objekten Sammlung von Objekten mit jeweils mehreren Komponenten dargestellt durch ein Feld pro Komponente. Beipiel nächste Folie 8.3 Implementierung von Zeigern und Objekten TU Bergakademie Freiberg, WS 2005/06
24 Algorithmen und Datenstrukturen 204 L next key prev / / 8.3 Implementierung von Zeigern und Objekten TU Bergakademie Freiberg, WS 2005/06
25 Algorithmen und Datenstrukturen Einfeld-Darstellung von Objekten Hier soll ein Objekt einen zusammenhängenden Speicherbereich belegen. Zeiger ist einfach Adresse der ersten zugehörigen Speicherzelle. Weitere Komponenten können durch Addieren von Offsets auf diesen Zeiger erreicht werden. Analoge Implementierung durch Felder. Im Beispiel nächste Folie: Feld A speichert die bisher betrachtete verkettete Liste. Jedes Objekt liegt in Teilfeld A[j.. k]. Einzelne Komponenten des Objekts erreichbar durch Offsets zwischen 0 und k j. Index j stellt Zeiger auf dieses Objekt dar. Vorteil: etwas flexibler, kann auch für heterogene Objekte angepasst werden. 8.3 Implementierung von Zeigern und Objekten TU Bergakademie Freiberg, WS 2005/06
26 Algorithmen und Datenstrukturen 206 L A / / key next prev 8.3 Implementierung von Zeigern und Objekten TU Bergakademie Freiberg, WS 2005/06
27 Algorithmen und Datenstrukturen Allokieren und Freisetzen von Objekten Bei Manipulationen an verketteten Listen wechseln Objekte ständig zwischen benutztem und unbenutztem Zustand. Über den zugehörigen Speicherplatz muß Buch geführt werden, damit Speicher für nicht länger genutzte Objekte wieder verfügbar wird. (Garbage Collection) Wir betrachten nun eine solche Verwaltung für eine durch Mehrfelddarstellung implementierte verkettete Liste aus homogenen Objekten. Grundoperationen: Allokieren (Anfordern) und Deallokieren (Freisetzen) von Objekten. 8.3 Implementierung von Zeigern und Objekten TU Bergakademie Freiberg, WS 2005/06
28 Algorithmen und Datenstrukturen 208 Felder in Mehrfelddarstellung mögen Länge m haben, in gegebenem Zustand mögen sie n m Objekte enthalten. D.h. n benutzte, m n freie (unbenutzte) Objekte. Diese können für später einzufügende Elemente verwendet werden. Halte freie Objekte in verketteter Liste: der Freiliste. Diese Verwendet nur das next-feld, welches die Nachfolger-Zeiger speichert. Der Kopf der Freiliste wird in der globalen Variablen free gespeichert. Bei lichtleerer Liste L kann die Speicherung von L mit der der Freiliste verschachtelt sein. Jedes Objekt entweder in L oder der Freiliste enthalten. 8.3 Implementierung von Zeigern und Objekten TU Bergakademie Freiberg, WS 2005/06
29 Algorithmen und Datenstrukturen 209 Freiliste ist ein Stack, d.h. das als nächstes allokierte Objekt wird das zuletzt freigesetzte sein. Wir verwenden eine Listenimplementierung der PUSH- und POP-Operationen ALLOCATE-OBJECT() 1 if free = NIL 2 then error Speicher erschöpft 3 else x free 4 free next[x] 5 return x 8.3 Implementierung von Zeigern und Objekten TU Bergakademie Freiberg, WS 2005/06
30 Algorithmen und Datenstrukturen 210 FREE-OBJECT(x) 1 next[x] free 2 free x Freiliste enthält anfangs alle n noch nicht allokierten Objekte. Ist die Freiliste erschöpft, erfolgt eine Fehlermeldung. Oft bedient eine einzige Freiliste mehrere andere Listen. Beide Operationen besitzen Laufzeit O(1). Können für jede Liste homogener Objekte angepasst werden, eines der Felder muss nur die Rolle des next-feldes übernehmen. 8.3 Implementierung von Zeigern und Objekten TU Bergakademie Freiberg, WS 2005/06
31 Algorithmen und Datenstrukturen 211 free L 7 next / 3 / 8 2 key prev / 6 free L 4 next key / 3 4 / prev 5 2 / 7 / 8.3 Implementierung von Zeigern und Objekten TU Bergakademie Freiberg, WS 2005/06
32 Algorithmen und Datenstrukturen 212 free L 4 next / 3 / key prev 5 2 / Implementierung von Zeigern und Objekten TU Bergakademie Freiberg, WS 2005/06
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
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
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
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.
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
ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)
ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten
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),
Datenstruktur, die viele Operationen dynamischer Mengen unterstützt
Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)
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
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
Informatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:
Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete
Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:
Algorithmen und Datenstrukturen 1-3. Seminar -
Algorithmen und Datenstrukturen 1-3. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Outline Spezielle Listen: Stacks, Queues Sortierverfahren 3. Übungsserie Wiederholung:
Informatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative
Einstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung
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 (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
1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert
Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume
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
Datenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 27.10.2011 [email protected] 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:
Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)
Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
Vorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr
Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem &
Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem & Frank Heitmann [email protected] 25. November 2015 Frank Heitmann [email protected] 1/122
Programmieren in Haskell. Abstrakte Datentypen
Programmieren in Haskell Abstrakte Datentypen Einführung Man unterscheidet zwei Arten von Datentypen: konkrete Datentypen: beziehen sich auf eine konkrete Repräsentation in der Sprache. Beispiele: Listen,
15. Elementare Graphalgorithmen
Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen
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
Wie beim letzten Mal - bitte besucht: http://pingo.upb.de/549170 Ihr seid gleich wieder gefragt... Übung Algorithmen I 4.5.16 Lukas Barth [email protected] (Mit Folien von Julian Arz, Timo Bingmann,
Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff
Programmieren in C Rekursive Strukturen Prof. Dr. Nikolaus Wulff Rekursive Strukturen Häufig müssen effizient Mengen von Daten oder Objekten im Speicher verwaltet werden. Meist werden für diese Mengen
11.1 Grundlagen - Denitionen
11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die
Schnittstellen, Stack und Queue
Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Elementare Datenstrukturen für dynamische Mengen Stapel & Warteschlangen Verkettete Listen Bäume Anwendungsbeispiel:
4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)
4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 8./15. November 2005 Einordnung
14. Rot-Schwarz-Bäume
Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).
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,
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
Kapitel 9 Suchalgorithmen
Kapitel 9 Suchalgorithmen Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in
Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen
Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter
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
Datenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 Bäume [email protected] 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden
Stapel (Stack, Keller)
Stapel (Stack, Keller) Eine wichtige Datenstruktur ist der Stapel. Das Prinzip, dass das zuletzt eingefügte Element als erstes wieder entfernt werden muss, bezeichnet man als LIFO-Prinzip (last-in, first-out).
Vorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Verkettung der Überläufer) Prof. Dr. Susanne Albers Möglichkeiten der Kollisionsbehandlung Kollisionsbehandlung: Die Behandlung
Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.
Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende
3. Verkettete Listen, Stacks, Queues
3. Verkettete Listen, Stacks, Queues Verkettete lineare Listen - Einfache Verkettung - Doppelt verkettete Listen - Vergleich der Implementierungen - Iterator-Konzept Fortgeschrittenere Kettenstrukturen
Programmieren 2 Übung Semesterwoche 2
Programmieren 2 Übung Semesterwoche 2 1. Stack (LIFO: Last-In--First-Out) Implementieren und testen Sie eine Klasse Stack, so dass beliebig viele Objekte eines vorgegebenen Datentyps (z. B. String) auf
Verkettete Speicherung linearer Listen. 3. Verkettete Listen, Stacks, Queues. Implementierung 1(Forts.) Verkettete Liste: Implementierung 1
3. Verkettete Listen, Stacks, Queues Verkettete lineare Listen - Einfache Verkettung - Doppelt verkettete Listen - Vergleich der Implementierungen - Iterator-Konzept Fortgeschrittenere Kettenstrukturen
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
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:
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
Übungen zu Programmierung I - Blatt 8
Dr. G. Zachmann A. Greß Universität Bonn Institut für Informatik II 1. Dezember 2004 Wintersemester 2004/2005 Übungen zu Programmierung I - Blatt 8 Abgabe am Mittwoch, dem 15.12.2004, 15:00 Uhr per E-Mail
3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr
3. Binäre Suchbäume 3.1 Natürliche binäre Suchbäume Definition 18 Ein natürlicher binärer Suchbaum über einem durch total geordneten Universum U ist ein als interner Suchbaum organisierter Binärbaum (also:
Praxis der Programmierung
Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen
Copyright, Page 1 of 8 AVL-Baum
www.mathematik-netz.de Copyright, Page 1 of 8 AVL-Baum 1. Motivation und Einleitung Das Suchen, Einfügen und entfernen eines Schlüssels in einem zufällige erzeugten binären Suchbaum mit N Schlüsseln ist
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen
Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder
Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element
Assoziative Container in C++ Christian Poulter
Assoziative Container in C++ Christian Poulter Seminar: Die Sprache C++ Mat-Nr.: 53 03 129 EMail: [email protected] Christian Poulter Assoziative Container in C++ Seite 1/10 Inhalt 1. Einleitung: Container...
Grundlagen Algorithmen und Datenstrukturen Kapitel 13
Grundlagen Algorithmen und Datenstrukturen Kapitel 13 Christian Scheideler + Helmut Seidl SS 2009 18.07.09 Kapitel 6 1 Speicherverwaltung Drei Ansätze: Allokiere neue Objekte auf einem Keller. Gib nie
Institut für Informatik
Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 7 Prof. R. Westermann, A. Lehmann, R.
Informatik 11 Kapitel 2 - Rekursive Datenstrukturen
Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange
Beispiele elementarer Datentypen Ganze Zahlen (integer) Unterbereiche Gleitkommazahlen Festkommazahlen
Beispiele elementarer Datentypen Ganze Zahlen (integer) - Werte sind ganze Zahlen in vorgegebenen Bereich (z. B. -2 31 bis 2 31-1) - Übliche Operationen: Arithmetik (z. B. +,-,*, Division mit Rest, Rest
Hashing. Algorithmen und Datenstrukturen II 1
Hashing Algorithmen und Datenstrukturen II 1 Einführendes Beispiel Ein Pizza-Lieferservice in Bielefeld speichert die Daten seiner Kunden: Name, Vorname, Adresse und Telefonnummer Wenn ein Kunde seine
Binärbäume: Beispiel
Binärbäume Als Beispiel für eine interessantere dynamische Datenstruktur sehen wir uns jetzt Binärbäume an Ein Binärbaum wird rekursiv definiert: Er ist leer oder besteht aus einem Knoten (die Wurzel des
Algorithmen und Datenstrukturen Suchbaum
Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen
Einfach verkettete Liste
5. Listen Verkettete Listen Einfach verkettete Liste Für jedes einzelne Element der Liste wird ein Hilfsobjekt erzeugt. Jedes Hilfsobjekt enthält zwei Instanzvariablen: den zu speichernden Wert bzw. einen
JAVA KURS COLLECTION
JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)
Verkettete Listen. KIT Institut für Theoretische Informatik 1
Verkettete Listen KIT Institut für Theoretische Informatik 1 Listenglieder (Items) Class Handle = Pointer to Item Class Item of Element // one link in a doubly linked list e : Element e next : Handle //
Kap. 4.2: Binäre Suchbäume
Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:
Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.
Einführung Elementare Datenstrukturen (Folie 38, Seite 23 im Skript) Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen
Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1
Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 1. Das Objekt Bruch mit einem Standardkonstruktor (initialisieren mit 0), einem allgemeinen Konstruktor (Zähler und Nenner können beliebig vorgegeben
Freispeicherverwaltung Martin Wahl,
Freispeicherverwaltung Martin Wahl, 17.11.03 Allgemeines zur Speicherverwaltung Der physikalische Speicher wird in zwei Teile unterteilt: -Teil für den Kernel -Dynamischer Speicher Die Verwaltung des dynamischen
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg
Algorithmen & Datenstrukturen Lösungen zu Blatt 9 HS 16
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Departement Informatik 24. November 2016 Markus
Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch
Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch verschiedene Datenstrukturen: lineare Datenstrukturen: Array,
Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6
Robert Elsässer u.v.a. Paderborn, 29. Mai 2008 Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Aufgabe 1 (6 Punkte): Zunächst sollte klar sein, daß ein vollständiger Binärer
II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
Klausur zur Veranstaltung Programmierung (fortgeschrittene Konzepte)
Klausur zur Veranstaltung Programmierung (fortgeschrittene Konzepte) Bearbeitungszeit: 100 Minuten (14:15-15:55) Gesamtpunktzahl: 80 Punkte + 30 Zusatzpunkte Die Punktzahlen sind in etwa so bemessen, dass
Informatik I 2. Kapitel. Elementare Datenstrukturen. Datenstrukturen. Datenstrukturen. Rainer Schrader. 28. Mai 2008
Informatik I. Kapitel Rainer Schrader Elementare Zentrum für Angewandte Informatik Köln 8. Mai 008 / / bisher haben wir nur Arrays verwendet, Gliederung Einführung abstrakte Datentypen Listen Stacks und
Struktur am Beispiel einer Liste
Struktur am Beispiel einer 1 Einfügen(neues element ) Aktiv Wartend knoten knoten 2 Einfügen(neues element ) Aktiv Wartend knoten knoten 3 Einfügen(neues element ) Aktiv Wartend knoten knoten 4 Aha, ich
6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
Amortisierte Laufzeitanalyse
Paris-Lodron Universität Salzburg 24 Januar, 2014 Inhaltsverzeichnis 1 Einführung Definition Beispiel:Stapeloperationen Beispiel: Binärzähler (1/2) Beispiel: Binärzähler (2/2) 2 Analyse der Stack mittels
Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit
Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Aufgabe : Die allgemeine Object-Liste Gegeben sei folgendes UML-Klassendiagramm: MyObjectList
1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)
Der folgende Mitschrieb wurde von Prof. Alexa am 16.07.2008 als Probeklausur in der MPGI2 Vorlesung gezeigt und wurde auf http://www.basicinside.de/2008/node/94 veröffentlicht. Die Abschrift ist unter
HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen
9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam
Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines Gesamtalgorithmus rekursiv verwendet.
3.6 Rekursion Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines Gesamtalgorithmus rekursiv verwendet. Klassisches Beispiel: Berechnung von n! (Fakultät
Listenverarbeitung in Python
Listenverarbeitung in Python Datentypen für Sequenzen von Objekten: Tupel, Listen und Strings Tupel und Listen sind analog zu Haskells Tupel und Listen: (1, 2, 3) 3-Tupel aus den Zahlen 1,2,3, [1, 2, 3]
Zeiger und dynamischer Speicher
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling [email protected] Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Zuletzt aktualisiert: 09.12.2013, 07:49 Uhr
Speicher und Adressraum
Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode
