Konzepte der Informatik

Werbung
Konzepte der Informatik
Vorkurs Informatik zum WS 2011/2012
26.09. - 30.09.2011
17.10. - 21.10.2011
Dr. Werner Struckmann / Christoph Peltz
Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens Gallenbacher
Vorkurs Informatik 2011
1
Was steckt dahinter?
Einleitung
Die besprochenen Probleme gehören in das Umfeld der so genannten
Graphenalgorithmen.
Ein Graph besteht hierbei aus einer Menge von Knoten und einer Menge von
Kanten, die zwischen den Knoten verlaufen.
Die Knoten werden oft als Kringel und die Kanten als Linien oder Pfeile
dazwischen dargestellt.
Man unterscheidet ungerichtete Graphen (ohne Pfeil), bei denen die Verbindung
zweier Konten in beide Richtungen geht und gerichtete Graphen (mit Pfeil).
Wozu ist aber ein Graph gut?
Wie andere Modelle in der Informatik kann er ein Ausschnitt der Wirklichkeit
modellieren, um diese einfacher zu verstehen und zu analysieren.
Vorkurs Informatik 2011
2
Was steckt dahinter?
Anforderungen an Algorithmen
Aufgrund der vielfältigen Anwendungen gibt es auch eine Menge von Algorithmen
auf Graphen. Der Dijkstra-Algorithmus ist hier ein sehr bekannter Vertreter.
Was zeichnet einen guten Algorithmus aus?
 Er muss zuerst einmal die gestellte Aufgabe lösen.
 Wichtiges Kriterium ist außerdem, dass dieser die Aufgabe möglichst schnell
löst und auch bei großen Problemen nicht in die Knie geht.
Vorkurs Informatik 2011
3
Was steckt dahinter?
Berechnung des Zeitbedarfs
Wir betrachten wie stark der Zeitbedarf mit der Problemgröße ansteigt.
Am Beispiel der Landkarte kann dies sehr gut demonstriert werden.
Eine Problemgröße ist zum Beispiel die Anzahl der Städte auf der Landkarte.
Betrachten wir jetzt noch einmal den Brute-Force-Ansatz zur Bestimmung des
kürzesten Weges:
„Bestimme alle möglichen Wege vom Start zum Ziel und suche davon den
kürzesten“.
Vorkurs Informatik 2011
4
Was steckt dahinter?
Beispiel: Brute-Force-Methode
Im schlechtesten Fall müssen also alle von einem Punkt ausgehenden Wege
bestimmt werden.
Außerdem sind im schlechtesten Fall alle Knoten mit allen anderen Knoten
verbunden (vollständiger Graph).
Für drei Knoten ist es noch kein Problem, die Anzahl möglicher Wege vom
Startpunkt S aus zu bestimmen.
Vorkurs Informatik 2011
5
Was steckt dahinter?
Beispiel: Brute-Force-Methode
Mit jedem zusätzlichen Knoten steigt die Anzahl der möglichen Wege stark an.
Zeichnerisch die Lösung zu bestimmen ist dann nicht mehr praktikabel.
Man kann die Anzahl der Knoten auch rechnerisch bestimmen.
Für den Graphen mit vier Knoten gilt, dass man ihn aus zwei Komponenten
zusammensetzen kann: ein einzelner Knoten S plus ein Graph mit drei Knoten.
Da der bekannte Graph drei Knoten besitzt, kann vom neuen Knoten S auf drei
Arten ein Weg zum bekannten Graphen begonnen werden.
Vorkurs Informatik 2011
6
Was steckt dahinter?
Beispiel: Brute-Force-Methode
Im 3er Graphen wird dann auf die bereits ermittelte Weise ein Weg gesucht.
Daher ist die Anzahl möglicher Wege im 4er-Graphen 3 * 2 = 6.
Für einen 5er-Graphen gibt es vier Möglichkeiten, Wege vom neuen Knoten zum
4er-Graphen zu beginnen. Die Anzahl der Wege beträgt daher 4*6 = 24.
Auf diese Weise kann man ableiten, dass in einem vollständigen Graphen mit n
Knoten (n-1)! verschiedene Wege von einem gesetzten Startpunkt ausgehen.
Da für jeden der Wege n-1 Streckenabschnitte eingerechnet werden müssen,
bedarf es für die Brute-Force-Methode ungefähr (n-1)(n-1)! Berechnungen, um
den kürzesten Weg zu finden.
Vorkurs Informatik 2011
7
Was steckt dahinter?
Beispiel: Brute-Force-Methode
# Knoten
Schritte
3
4
4
18
5
96
6
600
7
4.320
8
35.280
9
322.560
10
3.265.920
15
1.220.496.076.800
20
2.311.256.907.767.808.000
50
29805811337679110482740356002743473467490088737581301760000000000
Vorkurs Informatik 2011
8
Was steckt dahinter?
Beispiel: Brute-Force-Methode
Für 100 Knoten sind im schlimmsten Fall bereits
92392953289504711154882246467704033485808808581737805253907034256
26542399329761645528520493363949531033911609416189515206686733588
07695360000000000000000000000
Berechnungen nötig.
Wenn auch nur alle 12.903 Gemeinden Deutschlands als Knoten in die Suche
einbezogen werden, sind 9,88 * 1047438 Berechnungen nötig.
Um sich diese Zahl vorstellen zu können, folgende Analogie:
Vorkurs Informatik 2011
9
Was steckt dahinter?
Beispiel: Brute-Force-Methode
Wenn sich die verfügbaren Rechenleistungen wie momentan jedes Jahr fast
verdoppeln, haben im Jahre 2010 alle Rechner der Erde zusammengenommen
etwa die Möglichkeit 128 Petaflops durchzuführen, also 128 Billiarden
Fließkommaoperationen pro Sekunde.
Nehmen wir an, wir vereinigen alle Rechner zu einer gigantischen Maschine, die
sich dann um unser Wegeproblem kümmert.
Dann würde sie immer noch etwa 4*1047415 Jahre für das Ergebnis benötigen.
Das Alter des Universums wird heute auf etwa 12 Milliarden Jahre geschätzt.
Die Maschine würde also immer noch 333*1047400 Mal so lange benötigen, wie das
gesamte Universum alt ist.
Vorkurs Informatik 2011
10
Darstellung von Graphen
Überlegung
Computer kennt keine graphische Darstellung
 Insbesondere keine Kanten und Knoten
Abstraktion notwendig
 Überführung der graphischen Darstellung in eine Datenstruktur
Vorkurs Informatik 2011
11
Darstellung von Graphen
Adjazenzmatrix
Idee für ungerichtete Graphen:
 Sei n die Anzahl der Knoten.
 Benutze eine n x n Matrix.
 Wenn eine Kante zwischen Knoten a und b existiert, dann trage in Spalte a
und Zeile b eine 1 ein, andernfalls eine 0.
 Verfahre ebenso mit Spalte b und Zeile a.
Vorkurs Informatik 2011
0
1
1
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
1
1
0
1
1
0
12
Darstellung von Graphen
Adjazenzmatrix
Beispiel für ungerichteten Graphen mit Gewichten:
 Symmetrie bleibt erhalten.
 Anstelle von einer 1 trage das Kantengewicht ein.
Vorkurs Informatik 2011
0
7
8
0
5
7
0
0
1
0
8
0
0
2
6
0
1
2
0
9
5
0
6
9
0
13
Darstellung von Graphen
Adjazenzmatrix
Beispiel für gerichteten Graphen mit Gewichten:
 Keine Symmetrie mehr.
Vorkurs Informatik 2011
0
0
0
0
0
7
0
0
1
0
8
0
0
0
6
0
0
2
0
0
5
0
0
9
0
14
Darstellung von Graphen
Adjazenzliste
Anstatt einer Matrix wird eine verkettete Liste benutzt.
 Besonders geeignet für gerichtete Graphen
 Die Basisstruktur bildet die Liste aller Knoten.
 Für jeden Knoten wird eine Liste der Nachfolger entlang gerichteter Kanten
abgespeichert.
Vorkurs Informatik 2011
15
Darstellung von Graphen
Inzidenzmatrix
Anstatt Verbindungen von Knoten zu Knoten darzustellen, wird hier die
Nachbarschaft der Kanten zu den Knoten dargestellt.
Jede Spalte enthält 2 von Null verschiedene Einträge
e1
Vorkurs Informatik 2011
e2 e3 e4 e5
e6
e7
1
1
1
0
0
0
0
1
-1
0
0
0
-1
0
0
2
0
-1
0
1
0
0
-1
3
0
0
0
-1
1
1
0
4
0
0
-1
0
0
-1
1
5
16
Zusammenfassung Datenstrukturen
Listen
Array's (zusammenhängender Speicher)
1 2 3 4 5 6 7 8 9 . . .
n
(doppelt) Verkettete Listen
1
2
3
4
Stapel
4
3
2
1
Vorkurs Informatik 2011
4
3
2
1
3
2
1
5
2
1
17
Zusammenfassung Datenstrukturen
Graphen
Bäume
2
Vorkurs Informatik 2011
7
5
3
9
6
8
1
18
Vielen Dank für Ihre Aufmerksamkeit!
Vorkurs Informatik 2011
19
Herunterladen