SlideShare une entreprise Scribd logo
1  sur  60
Basisinformationstechnologie I
Wintersemester 2013/14
29. Januar 2014 – Algorithmen und Datenstrukturen

Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung
Jan G. Wieners // jan.wieners@uni-koeln.de
Themenüberblick „Algorithmen und Datenstrukturen“

Datenstrukturen





Stack / Kellerspeicher
Queue
Liste
Baum
 Traversierungsarten





Preorder
Inorder
Postorder
Levelorder

Such- und Sortieralgorithmen
Algorithmen und
Datenstrukturen
Algorithmen, Datenstrukturen
Algorithmus: Eindeutige Beschreibung eines
endlichen Verfahrens zur Lösung einer bestimmten
Klasse von Problemen
Komplexität eines Algorithmus: Bedarf an
Ressourcen (i.e. Rechenzeit und Speicherplatz)
Güte eines Algorithmus:
 Qualität der Ergebnisse
 Laufzeit / Rechenbedarf des Algorithmus
Algorithmen, Datenstrukturen
Datentyp:
 Bauplan für eine Variable (benannte Speicherstelle im
Arbeitsspeicher des Rechners)
 Legt fest, welche Operationen mit einer Variable möglich
sind
 Bestimmt die interne Darstellung (Repräsentation) der
Variablen im Rechner
 Z.B. bool, int, float, double, unsigned int, etc.
Algorithmen, Datenstrukturen
Datenstruktur = Daten + Funktionen

Datenstrukturen:
 Stacks (Stapel)
 Queues
 Listen
 Einfach verkettete Listen
 Doppelt verkettete Listen

 Bäume
 Binärbäume
Stack / Kellerspeicher
Datenstruktur „Stack“
 Auch: „Kellerspeicher“
 Abstrakter Datentyp, bei dem Elemente eingefügt und
wieder entfernt werden können

 LIFO-Prinzip: Last In, First Out – bei der
Datenstruktur „Stack“ kann immer nur auf das Element
zugegriffen werden, das als letztes eingefügt, d.h. auf
den Stapel gelegt wurde
Datenstruktur Stack
Typische Stackoperationen / Schnittstellen
 push(x, s)
legt ein Element x auf den Stack s
 top(s), peek(s)
liefert das zuletzt auf den Stack s gelegte Element (ohne das
entsprechende Element zu entfernen)
 pop(s)
entfernt das zuletzt auf den Stack s gelegte Element und gibt
es zurück
 isEmpty(s)
gibt an, ob der Stack s leer ist
Datenstruktur Stack: Die Praxis
Leerer Stack mit dem Namen audiocdstapel


Prüfen, ob Stack leer über Funktion
isEmpty(audiocdstapel)  gibt TRUE zurück
Datenstruktur Stack: Die Praxis
Schritt I: Element auf den Stapel legen  push
 push(„boards of canada – music has the right to
children“, audiocdstapel)

Stack „audiocdstapel“ vor push(…)

Stack „audiocdstapel“ nach push(…)
Datenstruktur Stack: Die Praxis
Schritt II: Zahlreiche push-Vorgänge später:
 push(„Boards of Canada – Music has the right to children“,
audiocdstapel)
 push(„Clark – Iradelphic“, audiocdstapel)
 …
 Push(„Alt-J – An Awesome Wave“, audiocdstapel)
Datenstruktur Stack: Die Praxis
Schritt III: Prüfen, welche CD zuletzt auf den Stapel
gelegt wurde  top
 top(audiocdstapel)  gibt „Alt-J – An Awesome
Wave“ zurück.
Datenstruktur Stack: Die Praxis
Schritt IV: Letztes Stapelelement ausgeben und
von Stapel nehmen  pop
 pop(audiocdstapel)  gibt „ Alt-J – An Awesome
Wave“ zurück. Stapel nach pop(audiocdstapel):
Datenstruktur Stack: Die Praxis
Anwendungsbeispiel Pseudocode: Gehe den Stapel
durch und suche nach einer CD

while(!isEmpty(audiocdstapel)) {
currentaudiocd=pop(audiocdstapel);
if(currentaudiocd == mycd)
{
print „CD gefunden“;
return currentaudiocd;
}

}
Queue
Queue / Warteschlange
Queue
Queue, auch „Warteschlange“
 geordnete Liste, in der alle Einfügungen an einem Ende und
alle Löschungen am entgegengesetzten Ende stattfinden
Operationen:
 enQueue  Objekt hinzufügen
 deQueue  Objekt zurückgeben, anschließend entfernen
Queue

FIFO  First In, First Out




Beispiele: Druckerwarteschlange, Warteschlange im
Supermarkt
 „Wer zuerst da ist, mahlt zuerst“
Listen
Einfach verkettete Liste
Liste  Folge von Elementen; jedes Element = Teil
einer Kette
Jeder Eintrag in der Liste verfügt nicht nur über
seinen Inhalt, sondern darüber hinaus über einen
Zeiger auf das nächste Listenelement:
Einfach verkettete Liste
Um die Liste zu durchlaufen:
 Beginn beim ersten Element („Anker“ für den Beginn der
Liste)
 „next“ zeigt auf das nächste Listenelement
 Letztes Glied der Kette: next-Zeiger = NULL
 Um wieder auf das erste Element zugreifen zu können:
anfang-Zeiger auf das erste Element der Liste
 Hilfszeiger auf innere Elemente: cursor
Einfach verkettete Liste
Element Einfügen:
 Ursprüngliche Liste:
start

bat

cat

sat

vat

NULL

 Liste nach Einfügen von Element „mat“
start

bat

cat

sat

mat

vat

NULL
Einfach verkettete Liste
Element Löschen:
 Ursprüngliche Liste:
start

bat

cat

sat

vat

NULL

 Liste nach Entfernen des Elements „cat“
start

bat

cat

sat

vat

NULL
Einfach verkettete Liste
Vorteil:
 Elemente lassen sich sehr schnell am Anfang der einfach
verketteten Liste einfügen

Nachteil:
 Über jedes einzelne Element muss iteriert werden

start

bat

cat

sat

vat

NULL
Doppelt verkettete Liste
Charakteristika: Jedes Element verfügt über
 Einen Inhalt
 Einen Zeiger auf das nachfolgende Element
 Einen Zeiger auf das vorhergehende Element
start

bat

cat

sat

vat

NULL

Vorteile
 Möglichkeit, vom Ende der Liste zum Beginn zu iterieren
 Schnelles Löschen und Einfügen von Elementen

Nachteil
 Speicherplatzbedarf durch zweiten Zeiger erhöht
Themenüberblick „Algorithmen und Datenstrukturen“

Datenstrukturen √





Stack / Kellerspeicher √
Queue √
Liste √
Baum
 Traversierungsarten
Juul, Jesper: „255,168 ways of playing Tic Tac Toe”
(„http://www.jesperjuul.net/ludologist/255168-ways-of-playing-tic-tac-toe)

Extensivform von Spielen (Tic Tac Toe)
Der Minimax-Algorithmus
3

MAX

max(3,2,2)=3

min(14,5,2)=2

min(2,4,6)=2

3

MIN

2

2

min(3,12,8)=3

3

12

8

2

4

6

14

5

2
Kleine Baumschule
Baum = Menge von Knoten und Kanten, die
besondere Eigenschaften aufweisen:
 Wurzel: Jeder Baum besitzt genau einen Knoten, der als
Wurzel bezeichnet wird
 Kante: Jeder Knoten ist außer der Wurzel durch genau
eine Kante mit seinem Vaterknoten (auch: „Elternknoten“
oder „Vorgänger“) verbunden
 Wird dann auch als Kind (Sohn, Nachfolger) dieses
Knotens genannt
 Blatt: Ein Knoten ohne Kinder
 Innere Knoten: Alle anderen Knoten
Bäume
Baum: Begrifflichkeiten
Wurzel
Kante
Innerer Knoten / Kindknoten

Blatt
Binärbäume
Binärbaum: Definiert als ein Baum, dessen Knoten
über höchstens zwei Kindknoten verfügen dürfen:
Traversierung
Traversieren  Jeden Knoten des Baumes
besuchen
Reihenfolge, in der die Knoten besucht werden:





Preorder, auch: „Hauptreihenfolge“ / Tiefensuche
Inorder, auch: „symmetrische Reihenfolge“
Postorder, auch: „Nebenreihenfolge“
Levelorder, auch: „Breitensuche“
Preorder Traversierung
Rekursive Regel:
 besuche die Wurzel
 Besuche den linken
Unterbaum
 Besuche den rechten
Unterbaum

 WLR

Quelle: http://de.wikipedia.org/w/index.php?title=Datei:Depth-First-Search.gif&filetimestamp=20090326120256 (MRE)
Preorder Traversierung – Schritt 0
P
M

S

A

L

E

A

R

T

E

E
Preorder Traversierung – Schritt 1
P
M

S

A

L

E

A

R

T

Ausgabe: P

E

E
Preorder Traversierung – Schritt 2
P
M

S

A

L

E

A

R

T

Ausgabe: P M

E

E
Preorder Traversierung – Schritt 3
P
M

S

A

L

E

A

R

T

Ausgabe: P M S

E

E
Preorder Traversierung – Schritt 4
P
M

S

A

L

E

A

R

T

Ausgabe: P M S A

E

E
Preorder Traversierung – Schritt 5
P
M

S

A

L

E

A

R

T

Ausgabe: P M S A A

E

E
Preorder Traversierung – Schritt 6
P
M

S

A

L

E

A

R

T

Ausgabe: P M S A A L

E

E
Preorder Traversierung – Schritt 7
P
M

S

A

L

E

A

R

T

Ausgabe: P M S A A L E

E

E
Preorder Traversierung – Schritt 8
P
M

S

A

L

E

A

R

T

Ausgabe: P M S A A L E R

E

E
Preorder Traversierung – Schritt 9
P
M

S

A

L

E

A

R

T

Ausgabe: P M S A A L E R T

E

E
Preorder Traversierung – Schritt 10
P
M

S

A

L

E

A

R

T

Ausgabe: P M S A A L E R T E

E

E
Preorder Traversierung – Schritt 11
P
M

S

A

L

E

A

R

T

Ausgabe: P M S A A L E R T E E

E

E
Themenüberblick „Algorithmen und Datenstrukturen“

Datenstrukturen √





Stack / Kellerspeicher √
Queue √
Liste √
Baum √
 Traversierungsarten √





Preorder √
Inorder √
Postorder √
Levelorder √

Such- und Sortieralgorithmen
Such- und
Sortieralgorithmen
Juul, Jesper: „255,168 ways of playing Tic Tac Toe”
(„http://www.jesperjuul.net/ludologist/255168-ways-of-playing-tic-tac-toe)

Extensivform von Spielen (Tic Tac Toe)
Problemstellung Suche
Problemstellung: Wie finden wir eine gesuchte
Audio CD?
Umgebungsvariablen:
 CD-Sammlung ist unsortiert
ODER
 Sortierte CD-Sammlung
Lineare Suche
Sequenzielle / Lineare Suche in unsortierter Sammlung:

Anzahl Suchvorgänge bei n Elementen:
 minimal: 1(best case),
 maximal: n (worst case)
 Durchschnittlich müssen die Hälfte der Einträge
durchgesehen werden, um das gewünschte Element zu finden
(average case)


Anzahl der Suchschritte steigt proportional mit der
Anzahl der Einträge

Quelle und Bildnachweis: http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo1.php
Sortieralgorithmen
Sortierstrategien / -Verfahren:
 Insertionsort: Sortieren durch Einfügen
 Analog dem Vorgehen eines Kartenspielers: Neue
Karten werden einzeln einsortiert, bevor die nächste
Karte aufgenommen wird
 Bubblesort: Vergleichsbasierter Sortieralgorithmus
 Heapsort
 Quicksort (vgl. C.A.R. Hoare)
Bubblesort
Bubblesort
Bubblesort: Sortiert z.B. ein Array von Datensätzen durch wiederholtes
Vertauschen von Nachbarfeldern, die in falscher Reihenfolge stehen
Wird so lange wiederholt, bis das Array vollständig sortiert ist.
Dabei wird das Array in mehreren Durchgängen von links nach rechts
durchwandert.
Bei jedem Durchgang werden alle Nachbarfelder verglichen und ggf.
vertauscht. Nach dem 1. Durchgang hat man folgende Situation:
 Das größte Element ist ganz rechts.
 Alle anderen Elemente sind zwar zum Teil an besseren Positionen (also näher an
der endgültigen Position), im Allgemeinen aber noch unsortiert.

Wandern des größten Elementes nach rechts  Aufsteigen von
Luftblasen: Größte Luftblase steigt nach oben
Bubblesort
Zu sortieren ist die Zahlenfolge 55 07 78 12 42
(vgl. http://de.wikipedia.org/wiki/Bubblesort)

1. Durchlauf:
55 07 78 12 42
07 55 78 12 42
07 55 78 12 42
07 55 12 78 42
???
Bubblesort
Zu sortieren ist die Zahlenfolge 55 07 78 12 42
(vgl. http://de.wikipedia.org/wiki/Bubblesort)

2. Durchlauf:
07 55 12 42 78
07 55 12 42 78
07 12 55 42 78
07 12 42 55 78
07 12 42 55 78
3. Durchlauf:
07 12 42 55 78
07 12 42 55 78
07 12 42 55 78
07 12 42 55 78  Fertig sortiert.
/

Contenu connexe

Similaire à Bit WiSe 2013 | Basisinformationstechnologie I - 12: Algorithmen und Datenstrukturen

Similaire à Bit WiSe 2013 | Basisinformationstechnologie I - 12: Algorithmen und Datenstrukturen (6)

BIT I WiSe 2014 | Basisinformationstechnologie I - 10: Programmiersprachen III
BIT I WiSe 2014 | Basisinformationstechnologie I - 10: Programmiersprachen IIIBIT I WiSe 2014 | Basisinformationstechnologie I - 10: Programmiersprachen III
BIT I WiSe 2014 | Basisinformationstechnologie I - 10: Programmiersprachen III
 
BIT I WiSe 2014 | Basisinformationstechnologie I - 04: Rechnertechnologie I
BIT I WiSe 2014 | Basisinformationstechnologie I - 04: Rechnertechnologie IBIT I WiSe 2014 | Basisinformationstechnologie I - 04: Rechnertechnologie I
BIT I WiSe 2014 | Basisinformationstechnologie I - 04: Rechnertechnologie I
 
Pyparsing
PyparsingPyparsing
Pyparsing
 
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
 
Messen mit LabVIEW - Block 4
Messen mit LabVIEW - Block 4Messen mit LabVIEW - Block 4
Messen mit LabVIEW - Block 4
 
Bit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturenBit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturen
 

Plus de Institute for Digital Humanities, University of Cologne

Plus de Institute for Digital Humanities, University of Cologne (20)

Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
 
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
 
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
 
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
 
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
 
Bit sosem 2016-wieners-sitzung-13_ki-in-games
Bit sosem 2016-wieners-sitzung-13_ki-in-gamesBit sosem 2016-wieners-sitzung-13_ki-in-games
Bit sosem 2016-wieners-sitzung-13_ki-in-games
 
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-visionBit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
 
Bit sosem 2016-wieners-sitzung-11_bild-iii-filter
Bit sosem 2016-wieners-sitzung-11_bild-iii-filterBit sosem 2016-wieners-sitzung-11_bild-iii-filter
Bit sosem 2016-wieners-sitzung-11_bild-iii-filter
 
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationenBit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
 
Bit sosem 2016-wieners-sitzung-09_bild-i-kompression
Bit sosem 2016-wieners-sitzung-09_bild-i-kompressionBit sosem 2016-wieners-sitzung-09_bild-i-kompression
Bit sosem 2016-wieners-sitzung-09_bild-i-kompression
 
Bit sosem 2016-wieners-sitzung-08_semantic-web
Bit sosem 2016-wieners-sitzung-08_semantic-webBit sosem 2016-wieners-sitzung-08_semantic-web
Bit sosem 2016-wieners-sitzung-08_semantic-web
 
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-iiBit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
 
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikationBit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikation
 
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conwayBit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
 
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatikBit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
 
Bit sosem 2016-wieners-sitzung-03_algorithmen
Bit sosem 2016-wieners-sitzung-03_algorithmenBit sosem 2016-wieners-sitzung-03_algorithmen
Bit sosem 2016-wieners-sitzung-03_algorithmen
 
Bit sosem 2016-wieners-sitzung-01_auffrischung
Bit sosem 2016-wieners-sitzung-01_auffrischungBit sosem 2016-wieners-sitzung-01_auffrischung
Bit sosem 2016-wieners-sitzung-01_auffrischung
 
Bit sosem 2016-wieners-sitzung-00_themenueberblick
Bit sosem 2016-wieners-sitzung-00_themenueberblickBit sosem 2016-wieners-sitzung-00_themenueberblick
Bit sosem 2016-wieners-sitzung-00_themenueberblick
 
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung IIBit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
 
Bit wisem 2015-wieners-sitzung-12_Zusammenfassung I
Bit wisem 2015-wieners-sitzung-12_Zusammenfassung IBit wisem 2015-wieners-sitzung-12_Zusammenfassung I
Bit wisem 2015-wieners-sitzung-12_Zusammenfassung I
 

Bit WiSe 2013 | Basisinformationstechnologie I - 12: Algorithmen und Datenstrukturen

  • 1. Basisinformationstechnologie I Wintersemester 2013/14 29. Januar 2014 – Algorithmen und Datenstrukturen Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners // jan.wieners@uni-koeln.de
  • 2. Themenüberblick „Algorithmen und Datenstrukturen“ Datenstrukturen     Stack / Kellerspeicher Queue Liste Baum  Traversierungsarten     Preorder Inorder Postorder Levelorder Such- und Sortieralgorithmen
  • 4. Algorithmen, Datenstrukturen Algorithmus: Eindeutige Beschreibung eines endlichen Verfahrens zur Lösung einer bestimmten Klasse von Problemen Komplexität eines Algorithmus: Bedarf an Ressourcen (i.e. Rechenzeit und Speicherplatz) Güte eines Algorithmus:  Qualität der Ergebnisse  Laufzeit / Rechenbedarf des Algorithmus
  • 5. Algorithmen, Datenstrukturen Datentyp:  Bauplan für eine Variable (benannte Speicherstelle im Arbeitsspeicher des Rechners)  Legt fest, welche Operationen mit einer Variable möglich sind  Bestimmt die interne Darstellung (Repräsentation) der Variablen im Rechner  Z.B. bool, int, float, double, unsigned int, etc.
  • 6. Algorithmen, Datenstrukturen Datenstruktur = Daten + Funktionen Datenstrukturen:  Stacks (Stapel)  Queues  Listen  Einfach verkettete Listen  Doppelt verkettete Listen  Bäume  Binärbäume
  • 8. Datenstruktur „Stack“  Auch: „Kellerspeicher“  Abstrakter Datentyp, bei dem Elemente eingefügt und wieder entfernt werden können  LIFO-Prinzip: Last In, First Out – bei der Datenstruktur „Stack“ kann immer nur auf das Element zugegriffen werden, das als letztes eingefügt, d.h. auf den Stapel gelegt wurde
  • 9. Datenstruktur Stack Typische Stackoperationen / Schnittstellen  push(x, s) legt ein Element x auf den Stack s  top(s), peek(s) liefert das zuletzt auf den Stack s gelegte Element (ohne das entsprechende Element zu entfernen)  pop(s) entfernt das zuletzt auf den Stack s gelegte Element und gibt es zurück  isEmpty(s) gibt an, ob der Stack s leer ist
  • 10. Datenstruktur Stack: Die Praxis Leerer Stack mit dem Namen audiocdstapel  Prüfen, ob Stack leer über Funktion isEmpty(audiocdstapel)  gibt TRUE zurück
  • 11. Datenstruktur Stack: Die Praxis Schritt I: Element auf den Stapel legen  push  push(„boards of canada – music has the right to children“, audiocdstapel) Stack „audiocdstapel“ vor push(…) Stack „audiocdstapel“ nach push(…)
  • 12. Datenstruktur Stack: Die Praxis Schritt II: Zahlreiche push-Vorgänge später:  push(„Boards of Canada – Music has the right to children“, audiocdstapel)  push(„Clark – Iradelphic“, audiocdstapel)  …  Push(„Alt-J – An Awesome Wave“, audiocdstapel)
  • 13. Datenstruktur Stack: Die Praxis Schritt III: Prüfen, welche CD zuletzt auf den Stapel gelegt wurde  top  top(audiocdstapel)  gibt „Alt-J – An Awesome Wave“ zurück.
  • 14. Datenstruktur Stack: Die Praxis Schritt IV: Letztes Stapelelement ausgeben und von Stapel nehmen  pop  pop(audiocdstapel)  gibt „ Alt-J – An Awesome Wave“ zurück. Stapel nach pop(audiocdstapel):
  • 15. Datenstruktur Stack: Die Praxis Anwendungsbeispiel Pseudocode: Gehe den Stapel durch und suche nach einer CD while(!isEmpty(audiocdstapel)) { currentaudiocd=pop(audiocdstapel); if(currentaudiocd == mycd) { print „CD gefunden“; return currentaudiocd; } }
  • 16. Queue
  • 18. Queue Queue, auch „Warteschlange“  geordnete Liste, in der alle Einfügungen an einem Ende und alle Löschungen am entgegengesetzten Ende stattfinden Operationen:  enQueue  Objekt hinzufügen  deQueue  Objekt zurückgeben, anschließend entfernen
  • 19. Queue FIFO  First In, First Out   Beispiele: Druckerwarteschlange, Warteschlange im Supermarkt  „Wer zuerst da ist, mahlt zuerst“
  • 21. Einfach verkettete Liste Liste  Folge von Elementen; jedes Element = Teil einer Kette Jeder Eintrag in der Liste verfügt nicht nur über seinen Inhalt, sondern darüber hinaus über einen Zeiger auf das nächste Listenelement:
  • 22. Einfach verkettete Liste Um die Liste zu durchlaufen:  Beginn beim ersten Element („Anker“ für den Beginn der Liste)  „next“ zeigt auf das nächste Listenelement  Letztes Glied der Kette: next-Zeiger = NULL  Um wieder auf das erste Element zugreifen zu können: anfang-Zeiger auf das erste Element der Liste  Hilfszeiger auf innere Elemente: cursor
  • 23. Einfach verkettete Liste Element Einfügen:  Ursprüngliche Liste: start bat cat sat vat NULL  Liste nach Einfügen von Element „mat“ start bat cat sat mat vat NULL
  • 24. Einfach verkettete Liste Element Löschen:  Ursprüngliche Liste: start bat cat sat vat NULL  Liste nach Entfernen des Elements „cat“ start bat cat sat vat NULL
  • 25. Einfach verkettete Liste Vorteil:  Elemente lassen sich sehr schnell am Anfang der einfach verketteten Liste einfügen Nachteil:  Über jedes einzelne Element muss iteriert werden start bat cat sat vat NULL
  • 26. Doppelt verkettete Liste Charakteristika: Jedes Element verfügt über  Einen Inhalt  Einen Zeiger auf das nachfolgende Element  Einen Zeiger auf das vorhergehende Element start bat cat sat vat NULL Vorteile  Möglichkeit, vom Ende der Liste zum Beginn zu iterieren  Schnelles Löschen und Einfügen von Elementen Nachteil  Speicherplatzbedarf durch zweiten Zeiger erhöht
  • 27. Themenüberblick „Algorithmen und Datenstrukturen“ Datenstrukturen √     Stack / Kellerspeicher √ Queue √ Liste √ Baum  Traversierungsarten
  • 28.
  • 29.
  • 30. Juul, Jesper: „255,168 ways of playing Tic Tac Toe” („http://www.jesperjuul.net/ludologist/255168-ways-of-playing-tic-tac-toe) Extensivform von Spielen (Tic Tac Toe)
  • 32. Kleine Baumschule Baum = Menge von Knoten und Kanten, die besondere Eigenschaften aufweisen:  Wurzel: Jeder Baum besitzt genau einen Knoten, der als Wurzel bezeichnet wird  Kante: Jeder Knoten ist außer der Wurzel durch genau eine Kante mit seinem Vaterknoten (auch: „Elternknoten“ oder „Vorgänger“) verbunden  Wird dann auch als Kind (Sohn, Nachfolger) dieses Knotens genannt  Blatt: Ein Knoten ohne Kinder  Innere Knoten: Alle anderen Knoten
  • 34. Binärbäume Binärbaum: Definiert als ein Baum, dessen Knoten über höchstens zwei Kindknoten verfügen dürfen:
  • 35. Traversierung Traversieren  Jeden Knoten des Baumes besuchen Reihenfolge, in der die Knoten besucht werden:     Preorder, auch: „Hauptreihenfolge“ / Tiefensuche Inorder, auch: „symmetrische Reihenfolge“ Postorder, auch: „Nebenreihenfolge“ Levelorder, auch: „Breitensuche“
  • 36. Preorder Traversierung Rekursive Regel:  besuche die Wurzel  Besuche den linken Unterbaum  Besuche den rechten Unterbaum  WLR Quelle: http://de.wikipedia.org/w/index.php?title=Datei:Depth-First-Search.gif&filetimestamp=20090326120256 (MRE)
  • 37. Preorder Traversierung – Schritt 0 P M S A L E A R T E E
  • 38. Preorder Traversierung – Schritt 1 P M S A L E A R T Ausgabe: P E E
  • 39. Preorder Traversierung – Schritt 2 P M S A L E A R T Ausgabe: P M E E
  • 40. Preorder Traversierung – Schritt 3 P M S A L E A R T Ausgabe: P M S E E
  • 41. Preorder Traversierung – Schritt 4 P M S A L E A R T Ausgabe: P M S A E E
  • 42. Preorder Traversierung – Schritt 5 P M S A L E A R T Ausgabe: P M S A A E E
  • 43. Preorder Traversierung – Schritt 6 P M S A L E A R T Ausgabe: P M S A A L E E
  • 44. Preorder Traversierung – Schritt 7 P M S A L E A R T Ausgabe: P M S A A L E E E
  • 45. Preorder Traversierung – Schritt 8 P M S A L E A R T Ausgabe: P M S A A L E R E E
  • 46. Preorder Traversierung – Schritt 9 P M S A L E A R T Ausgabe: P M S A A L E R T E E
  • 47. Preorder Traversierung – Schritt 10 P M S A L E A R T Ausgabe: P M S A A L E R T E E E
  • 48. Preorder Traversierung – Schritt 11 P M S A L E A R T Ausgabe: P M S A A L E R T E E E E
  • 49. Themenüberblick „Algorithmen und Datenstrukturen“ Datenstrukturen √     Stack / Kellerspeicher √ Queue √ Liste √ Baum √  Traversierungsarten √     Preorder √ Inorder √ Postorder √ Levelorder √ Such- und Sortieralgorithmen
  • 51. Juul, Jesper: „255,168 ways of playing Tic Tac Toe” („http://www.jesperjuul.net/ludologist/255168-ways-of-playing-tic-tac-toe) Extensivform von Spielen (Tic Tac Toe)
  • 52.
  • 53. Problemstellung Suche Problemstellung: Wie finden wir eine gesuchte Audio CD? Umgebungsvariablen:  CD-Sammlung ist unsortiert ODER  Sortierte CD-Sammlung
  • 54. Lineare Suche Sequenzielle / Lineare Suche in unsortierter Sammlung: Anzahl Suchvorgänge bei n Elementen:  minimal: 1(best case),  maximal: n (worst case)  Durchschnittlich müssen die Hälfte der Einträge durchgesehen werden, um das gewünschte Element zu finden (average case)  Anzahl der Suchschritte steigt proportional mit der Anzahl der Einträge Quelle und Bildnachweis: http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo1.php
  • 55. Sortieralgorithmen Sortierstrategien / -Verfahren:  Insertionsort: Sortieren durch Einfügen  Analog dem Vorgehen eines Kartenspielers: Neue Karten werden einzeln einsortiert, bevor die nächste Karte aufgenommen wird  Bubblesort: Vergleichsbasierter Sortieralgorithmus  Heapsort  Quicksort (vgl. C.A.R. Hoare)
  • 57. Bubblesort Bubblesort: Sortiert z.B. ein Array von Datensätzen durch wiederholtes Vertauschen von Nachbarfeldern, die in falscher Reihenfolge stehen Wird so lange wiederholt, bis das Array vollständig sortiert ist. Dabei wird das Array in mehreren Durchgängen von links nach rechts durchwandert. Bei jedem Durchgang werden alle Nachbarfelder verglichen und ggf. vertauscht. Nach dem 1. Durchgang hat man folgende Situation:  Das größte Element ist ganz rechts.  Alle anderen Elemente sind zwar zum Teil an besseren Positionen (also näher an der endgültigen Position), im Allgemeinen aber noch unsortiert. Wandern des größten Elementes nach rechts  Aufsteigen von Luftblasen: Größte Luftblase steigt nach oben
  • 58. Bubblesort Zu sortieren ist die Zahlenfolge 55 07 78 12 42 (vgl. http://de.wikipedia.org/wiki/Bubblesort) 1. Durchlauf: 55 07 78 12 42 07 55 78 12 42 07 55 78 12 42 07 55 12 78 42 ???
  • 59. Bubblesort Zu sortieren ist die Zahlenfolge 55 07 78 12 42 (vgl. http://de.wikipedia.org/wiki/Bubblesort) 2. Durchlauf: 07 55 12 42 78 07 55 12 42 78 07 12 55 42 78 07 12 42 55 78 07 12 42 55 78 3. Durchlauf: 07 12 42 55 78 07 12 42 55 78 07 12 42 55 78 07 12 42 55 78  Fertig sortiert.
  • 60. /