Basisinformationstechnologie I
Wintersemester 2013/14
29. Januar 2014 – Algorithmen und Datenstrukturen

Universität zu Kö...
Themenüberblick „Algorithmen und Datenstrukturen“

Datenstrukturen





Stack / Kellerspeicher
Queue
Liste
Baum
 Trav...
Algorithmen und
Datenstrukturen
Algorithmen, Datenstrukturen
Algorithmus: Eindeutige Beschreibung eines
endlichen Verfahrens zur Lösung einer bestimmten
K...
Algorithmen, Datenstrukturen
Datentyp:
 Bauplan für eine Variable (benannte Speicherstelle im
Arbeitsspeicher des Rechner...
Algorithmen, Datenstrukturen
Datenstruktur = Daten + Funktionen

Datenstrukturen:
 Stacks (Stapel)
 Queues
 Listen
 Ei...
Stack / Kellerspeicher
Datenstruktur „Stack“
 Auch: „Kellerspeicher“
 Abstrakter Datentyp, bei dem Elemente eingefügt und
wieder entfernt werde...
Datenstruktur Stack
Typische Stackoperationen / Schnittstellen
 push(x, s)
legt ein Element x auf den Stack s
 top(s), p...
Datenstruktur Stack: Die Praxis
Leerer Stack mit dem Namen audiocdstapel


Prüfen, ob Stack leer über Funktion
isEmpty(au...
Datenstruktur Stack: Die Praxis
Schritt I: Element auf den Stapel legen  push
 push(„boards of canada – music has the ri...
Datenstruktur Stack: Die Praxis
Schritt II: Zahlreiche push-Vorgänge später:
 push(„Boards of Canada – Music has the righ...
Datenstruktur Stack: Die Praxis
Schritt III: Prüfen, welche CD zuletzt auf den Stapel
gelegt wurde  top
 top(audiocdstap...
Datenstruktur Stack: Die Praxis
Schritt IV: Letztes Stapelelement ausgeben und
von Stapel nehmen  pop
 pop(audiocdstapel...
Datenstruktur Stack: Die Praxis
Anwendungsbeispiel Pseudocode: Gehe den Stapel
durch und suche nach einer CD

while(!isEmp...
Queue
Queue / Warteschlange
Queue
Queue, auch „Warteschlange“
 geordnete Liste, in der alle Einfügungen an einem Ende und
alle Löschungen am entgegen...
Queue

FIFO  First In, First Out




Beispiele: Druckerwarteschlange, Warteschlange im
Supermarkt
 „Wer zuerst da ist,...
Listen
Einfach verkettete Liste
Liste  Folge von Elementen; jedes Element = Teil
einer Kette
Jeder Eintrag in der Liste verfügt ...
Einfach verkettete Liste
Um die Liste zu durchlaufen:
 Beginn beim ersten Element („Anker“ für den Beginn der
Liste)
 „n...
Einfach verkettete Liste
Element Einfügen:
 Ursprüngliche Liste:
start

bat

cat

sat

vat

NULL

 Liste nach Einfügen v...
Einfach verkettete Liste
Element Löschen:
 Ursprüngliche Liste:
start

bat

cat

sat

vat

NULL

 Liste nach Entfernen d...
Einfach verkettete Liste
Vorteil:
 Elemente lassen sich sehr schnell am Anfang der einfach
verketteten Liste einfügen

Na...
Doppelt verkettete Liste
Charakteristika: Jedes Element verfügt über
 Einen Inhalt
 Einen Zeiger auf das nachfolgende El...
Themenüberblick „Algorithmen und Datenstrukturen“

Datenstrukturen √





Stack / Kellerspeicher √
Queue √
Liste √
Bau...
Juul, Jesper: „255,168 ways of playing Tic Tac Toe”
(„http://www.jesperjuul.net/ludologist/255168-ways-of-playing-tic-tac-...
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
...
Kleine Baumschule
Baum = Menge von Knoten und Kanten, die
besondere Eigenschaften aufweisen:
 Wurzel: Jeder Baum besitzt ...
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:





Preo...
Preorder Traversierung
Rekursive Regel:
 besuche die Wurzel
 Besuche den linken
Unterbaum
 Besuche den rechten
Unterbau...
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 √
Bau...
Such- und
Sortieralgorithmen
Juul, Jesper: „255,168 ways of playing Tic Tac Toe”
(„http://www.jesperjuul.net/ludologist/255168-ways-of-playing-tic-tac-...
Problemstellung Suche
Problemstellung: Wie finden wir eine gesuchte
Audio CD?
Umgebungsvariablen:
 CD-Sammlung ist unsort...
Lineare Suche
Sequenzielle / Lineare Suche in unsortierter Sammlung:

Anzahl Suchvorgänge bei n Elementen:
 minimal: 1(be...
Sortieralgorithmen
Sortierstrategien / -Verfahren:
 Insertionsort: Sortieren durch Einfügen
 Analog dem Vorgehen eines K...
Bubblesort
Bubblesort
Bubblesort: Sortiert z.B. ein Array von Datensätzen durch wiederholtes
Vertauschen von Nachbarfeldern, die in f...
Bubblesort
Zu sortieren ist die Zahlenfolge 55 07 78 12 42
(vgl. http://de.wikipedia.org/wiki/Bubblesort)

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

2. Durchlauf:
0...
/
Bit WiSe 2013 | Basisinformationstechnologie I - 12: Algorithmen und Datenstrukturen
Bit WiSe 2013 | Basisinformationstechnologie I - 12: Algorithmen und Datenstrukturen
Bit WiSe 2013 | Basisinformationstechnologie I - 12: Algorithmen und Datenstrukturen
Nächste SlideShare
Wird geladen in …5
×

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

673 Aufrufe

Veröffentlicht am

Veröffentlicht in: Bildung
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
673
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
77
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

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

  1. 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. 2. Themenüberblick „Algorithmen und Datenstrukturen“ Datenstrukturen     Stack / Kellerspeicher Queue Liste Baum  Traversierungsarten     Preorder Inorder Postorder Levelorder Such- und Sortieralgorithmen
  3. 3. Algorithmen und Datenstrukturen
  4. 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. 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. 6. Algorithmen, Datenstrukturen Datenstruktur = Daten + Funktionen Datenstrukturen:  Stacks (Stapel)  Queues  Listen  Einfach verkettete Listen  Doppelt verkettete Listen  Bäume  Binärbäume
  7. 7. Stack / Kellerspeicher
  8. 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. 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. 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. 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. 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. 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. 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. 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. 16. Queue
  17. 17. Queue / Warteschlange
  18. 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. 19. Queue FIFO  First In, First Out   Beispiele: Druckerwarteschlange, Warteschlange im Supermarkt  „Wer zuerst da ist, mahlt zuerst“
  20. 20. Listen
  21. 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. 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. 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. 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. 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. 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. 27. Themenüberblick „Algorithmen und Datenstrukturen“ Datenstrukturen √     Stack / Kellerspeicher √ Queue √ Liste √ Baum  Traversierungsarten
  28. 28. 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)
  29. 29. 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
  30. 30. 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
  31. 31. Bäume Baum: Begrifflichkeiten Wurzel Kante Innerer Knoten / Kindknoten Blatt
  32. 32. Binärbäume Binärbaum: Definiert als ein Baum, dessen Knoten über höchstens zwei Kindknoten verfügen dürfen:
  33. 33. 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“
  34. 34. 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)
  35. 35. Preorder Traversierung – Schritt 0 P M S A L E A R T E E
  36. 36. Preorder Traversierung – Schritt 1 P M S A L E A R T Ausgabe: P E E
  37. 37. Preorder Traversierung – Schritt 2 P M S A L E A R T Ausgabe: P M E E
  38. 38. Preorder Traversierung – Schritt 3 P M S A L E A R T Ausgabe: P M S E E
  39. 39. Preorder Traversierung – Schritt 4 P M S A L E A R T Ausgabe: P M S A E E
  40. 40. Preorder Traversierung – Schritt 5 P M S A L E A R T Ausgabe: P M S A A E E
  41. 41. Preorder Traversierung – Schritt 6 P M S A L E A R T Ausgabe: P M S A A L E E
  42. 42. Preorder Traversierung – Schritt 7 P M S A L E A R T Ausgabe: P M S A A L E E E
  43. 43. Preorder Traversierung – Schritt 8 P M S A L E A R T Ausgabe: P M S A A L E R E E
  44. 44. 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
  45. 45. 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
  46. 46. 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
  47. 47. Themenüberblick „Algorithmen und Datenstrukturen“ Datenstrukturen √     Stack / Kellerspeicher √ Queue √ Liste √ Baum √  Traversierungsarten √     Preorder √ Inorder √ Postorder √ Levelorder √ Such- und Sortieralgorithmen
  48. 48. Such- und Sortieralgorithmen
  49. 49. 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)
  50. 50. Problemstellung Suche Problemstellung: Wie finden wir eine gesuchte Audio CD? Umgebungsvariablen:  CD-Sammlung ist unsortiert ODER  Sortierte CD-Sammlung
  51. 51. 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
  52. 52. 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)
  53. 53. Bubblesort
  54. 54. 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
  55. 55. 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 ???
  56. 56. 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.
  57. 57. /

×