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