Algorithmische Graphentheorie Vorlesung 1: Einführung in die Graphentheorie Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca [email protected] 17. März 2017 1/74 G RAPHENTHEORIE Vorbemerkungen Die Vorlesung wird folienbasiert gehalten; Die Folien enthalten nur die wichtigsten Aspekte (Definitionen, Sätze, knappe Beispiele, wichtige Bemerkungen); Alles was sonst eine Vorlesung ausmacht (Erläuterungen, ausführliche Beispiele, Beweise von Sätzen , Anwendungen, Querverweise auf andere Gebiete der Informatik, etc.) gibt es nur in der Vorlesung selbst. Sprechstunden: nach Vereinbarung 2/74 Ü BUNGEN Autonomes Lösen der Aufgaben ohne vorherige Wiederholung seitens des Dozenten ohne Musterlösung an der Tafel (kommt dann später als extra Datei). Notwendig dafür ist, dass man während der Vorlesung mitschreibt man sich für die nächste Übungsstunde zu Hause vorbereitet Mitschrift und Folien mitgebracht werden Initiative ergriffen wird. 3/74 V ORTEILE aktives Erlernen der Inhalte ist effektiver Zusammenhänge aus dem Vorlesungsstoff werden selbst entdeckt und ausgearbeitet Man erlernt strukturiert und unabhängig zu denken team work wird erlernt Erklären wird geübt und erlernt Trainieren für die Prüfung ;-) You have finished your study of . . . Your personal strengths include pro-activity and team work, you are communicative and willing to cooperate. (typical job advertisement) 4/74 L ITERATUR Slides benutzen Lehrmaterial aus folgenden Lehrbücher: V. Turau - Algorithmische Graphentheorie R. Sedgewick - Algorithms V.K. Balakrishnan - Graph Theory R. Sedgewick - Algorithms in C++ 5/74 E INF ÜHRUNG 6/74 E INF ÜHRUNG Brückenproblem 6/74 E IN LUSTIGES B EISPIEL 7/74 N OCH EIN B EISPIEL 8/74 U ND JETZT ALS G RAPH DARGESTELLT 9/74 E INLEITUNG In vielen praktischen und theoretischen Anwendungen treten Situationen auf, die durch ein System von Objekten und Beziehungen zwischen diesen Objekten charakterisiert werden können. Die Graphentheorie stellt zur Beschreibung von solchen Systemen ein Modell zur Verfügung: den Graphen. Die problemunabhängige Beschreibung mittels eines Graphen läßt die Gemeinsamkeit von Problemen aus den verschiedensten Anwendungsgebieten erkennen. 10/74 E INLEITUNG Die Graphentheorie ermöglicht somit die Lösung vieler Aufgaben, welche aus dem Blickwinkel der Anwendung keine Gemeinsamkeiten haben. Die algorithmische Graphentheorie stellt zu diesem Zweck Verfahren zur Verfügung, die problemunabhängig formuliert werden können. Ferner erlauben Graphen eine anschauliche Darstellung, welche die Lösung von Problemen häufig erleichtert. 11/74 B EISPIEL : V ERLETZLICHKEIT DER K OMMUNIKATIONSNETZE Ein Kommunikationsnetz ist ein durch Datenübertragungswege realisierter Verband mehrerer Rechner. Es unterstützt den Informationsaustausch zwischen Benutzern an verschiedenen Orten. 12/74 V ERLETZLICHKEIT DER K OMMUNIKATIONSNETZE Verletzlichkeit Die Verletzlichkeit eines Kommunikationsnetzes ist durch die Anzahl von Leitungen oder Rechnern gekennzeichnet, die ausfallen müssen, damit die Verbindung zwischen zwei beliebigen Benutzern nicht mehr möglich ist. Häufig ist eine Verbindung zwischen zwei Benutzern über mehrere Wege möglich. Somit ist beim Ausfall einer Leitung oder einer Station die Verbindung nicht notwendigerweise unterbrochen. 13/74 V ERLETZLICHKEIT DER K OMMUNIKATIONSNETZE Welche Netzwerke sind verletzlicher? Ein Netzwerk, bei dem schon der Ausfall einer einzigen Leitung oder Station gewisse Verbindungen unmöglich macht ist verletzlicher, als ein solches, wo dies nur beim Ausfall von mehreren Leitungen oder Stationen möglich ist. Die minimale Anzahl von Leitungen und Stationen, deren Ausfall die Funktion des Netzwerkes beeinträchtigt, hängt sehr stark von der Beschaffenheit des Netzwerkes ab. Netzwerke lassen sich graphisch durch Knoten und Verbindungslinien zwischen den Knoten darstellen: Die Knoten entsprechen den Stationen, die Verbindungslinien den Datenübertragungswegen. 14/74 N ETZWERKTOPOLOGIEN 15/74 N ETZWERKTOPOLOGIE Vermaschte Struktur Beim Ausfall einer Station ist die Kommunikation zwischen den restlichen Stationen weiter möglich. Sogar der Ausfall von bis zu sechs Datenübertragungswegen muss noch nicht zur Unterbrechung führen. Um die Kommunikation mit einem Benutzer zu unterbrechen, müssen mindestens vier Datenübertragungswege ausfallen. Sternstruktur Nach dem Ausfall der zentralen Station ist keine Kommunikation mehr möglich. Hingegen führt in diesem Fall der Ausfall einer Leitung nur zur Abkopplung eines Benutzers. 16/74 W EITERE THEORETISCHE B EGRIFFE Schnitt Eine Menge von Datenübertragungswegen in einem Kommunikationsnetzwerk heißt Schnitt, falls ihr Ausfall die Kommunikation zwischen irgendwelchen Stationen unterbricht. Ein Schnitt mit der Eigenschaft, daß keine echte Teilmenge ebenfalls ein Schnitt ist, nennt man minimaler Schnitt. Kohäsion Die Anzahl der Verbindungslinien in dem minimalen Schnitt mit den wenigsten Verbindungslinien nennt man Verbindungszusammenhang oder auch die Kohäsion des Netzwerkes. Sie charakterisiert die Verletzlichkeit eines Netzwerkes. Die Kohäsion von Bus- und Sternstruktur ist gleich 1, die der Ringstruktur gleich 2, und die vermaschte Struktur hat die Kohäsion 4. 17/74 N ETZWERKTOPOLOGIE Knotenzusammenhang Er gibt die minimale Anzahl von Stationen an, deren Ausfall die Kommunikation der restlichen Stationen untereinander unterbrechen würde. Bei der Bus- und Sternstruktur ist diese Zahl gleich 1 und bei der Ringstruktur gleich 2. Fällt bei der vermaschten Struktur eine Station aus, so bilden die verbleibenden Stationen immer noch eine vermaschte Struktur. Somit ist bei dieser Struktur beim Ausfall von beliebig vielen Stationen die Kommunikation der restlichen Stationen gesichert. 18/74 W EGPLANUNG F ÜR R OBOTER Planung von kollisionsfreien Wegen für Roboter in ihrem Einsatzgebiet. Wie findet man die kürzesten Wege, auf denen der Roboter mit keinem Hindernis in Kontakt kommt? Zum Auffinden dieser Wege muß eine Beschreibung der Geometrie des Roboters und des Einsatzgebietes vorliegen. Ohne Einschränkungen der Freiheitsgrade des Roboters und der Komplexität des Einsatzgebietes ist dieses Problem praktisch nicht lösbar. 19/74 B EISPIEL 20/74 W IE FINDET MAN EINE L ÖSUNG ? Modellieren! 21/74 W IE FINDET MAN EINE L ÖSUNG ? Modellieren! Schränke die Bewegungen auf eine Ebene Reduziere Roboter auf einen Punkt Problem wird zur: Für eine Menge von Polygonen in der Ebene, einen Startpunkt s und einen Zielpunkt z ist der kürzeste Weg von s nach z gesucht, welcher die Polygone nicht schneidet 21/74 L ÖSUNG 1 2 3 4 Geradensegmente von s oder z zu einer konvexen Ecke eines Hindernisses, welche keine anderen Hindernisse schneiden Kanten von Hindernissen zwischen konvexen Ecken Geradensegmente zwischen konvexen Ecken von Hindernissen, welche keine anderen Hindernisse schneiden das Geradensegment von s nach z, sofern kein Hindernis davon geschnitten wird. 22/74 L ÖSUNG Für jede Wahl von s und z ist der kürzeste Weg eine Kombination von Geradensegmenten der oben beschriebenen vier Typen. Der letzteTyp kommt nur dann vor,wenn die direkte Verbindung von s und z kein Hindernis schneidet; in diesem Fall ist dies auch der kürzeste Weg. 23/74 K ÜRZESTER W EG 24/74 W IRTSCHAFT: O PTIMALE U MR ÜSTZEITEN F ÜR F ERTIGUNGSZELLEN Die Maschinen einer Fertigungszelle in einer Produktionsanlage müssen für unterschiedliche Produktionsaufträge verschieden ausgerüstet und eingestellt werden. Während dieser Umrüstzeit kann die Fertigungszelle nicht produktiv genutzt werden. Aus diesem Grund wird eine möglichst geringe Umrüstzeit angestrebt. Liegen mehrere Produktionsaufträge vor, deren Reihenfolge beliebig ist, und sind die entsprechenden Umrüstzeiten bekannt, so kann nach einer Reihenfolge der Aufträge gesucht werden, deren Gesamtumrüstzeit minimal ist. 25/74 W IRTSCHAFT: O PTIMALE U MR ÜSTZEITEN F ÜR F ERTIGUNGSZELLEN Gegeben sind n Produktionsaufträge P1 , . . . , Pn . Die Umrüstzeit der Fertigungszelle nach Produktionsablauf Pi für den Produktionsablauf Pj wird mit Tij bezeichnet. Im allgemeinen ist Tij 6= Tji , d.h. die Umrüstzeiten sind nicht symmetrisch. Eine optimale Reihenfolge hat nun die Eigenschaft, dass unter allen Reihenfolgen Pi1 , . . . , Pin die Summe n−1 X Tij ij+1 j=1 minimal ist. Diese Summe stellt nämlich die Gesamtumrüstzeit dar. 26/74 W IRTSCHAFT: O PTIMALE U MR ÜSTZEITEN F ÜR F ERTIGUNGSZELLEN Das Problem läßt sich auch graphisch interpretieren: Jeder Produktionsablauf wird durch einen Punkt in der Ebene und jeder mögliche Umrüstvorgang durch einen Pfeil vom Anfangs- zum Zielzustand dargestellt. Die Pfeile werden mit den entsprechenden Umrüstzeiten markiert. 27/74 W IRTSCHAFT: O PTIMALE U MR ÜSTZEITEN F ÜR F ERTIGUNGSZELLEN 28/74 W IRTSCHAFT: O PTIMALE U MR ÜSTZEITEN F ÜR F ERTIGUNGSZELLEN Eine Reihenfolge der Umrüstvorgänge entspricht einer Folge von Pfeilen in den vorgegebenen Richtungen. Hierbei kommt man an jedem Punkt genau einmal vorbei. Die Gesamtumrüstzeit entspricht der Summe der Markierungen dieser Pfeile; umgekehrt entspricht jeder Weg mit der Eigenschaft, dass er an jedem Punkt genau einmal vorbeikommt, einer möglichen Reihenfolge. Alle Wege müssen bei Punkt 1 beginnen. 29/74 W IRTSCHAFT: O PTIMALE U MR ÜSTZEITEN F ÜR F ERTIGUNGSZELLEN Für n Produktionsaufträge gibt es somit n + 1 Punkte. Es gibt dann insgesamt n! verschiedene Wege. Eine Möglichkeit, den optimalen Weg zu finden, besteht darin, die Gesamtumrüstzeiten für alle n! Wege zu berechnen und dann den Weg mit der minimalen Zeit zu bestimmen. Im Beispiel: 6 verschiedene Wege; Weg 1 − 4 − 3 − 2 der günstigste n = 10: 3628800 Wege n = 15: 1.3 × 1012 Wege; Eine Sekunde für 1 Million Wege → mehr als 15 Tage ⇒ suche andere Möglichkeiten 30/74 O BJEKTORIENTIERTE P ROGRAMMIERSPRACHEN In traditionellen Programmiersprachen sind Daten und Prozeduren separate Konzepte. Der Programmierer ist dafür verantwortlich, beim Aufruf einer Prozedur diese mit aktuellen Parametern vom vereinbarten Typ zu versorgen. In objektorientierten Programmiersprachen steht das Konzept der Objekte im Mittelpunkt. Objekte haben einen internen Zustand, welcher nur durch entsprechende Methoden verändert werden kann. Methoden entsprechen Prozeduren in traditionellen Programmiersprachen, und das Konzept einer Klasse ist die Verallgemeinerung des Typkonzeptes. Jedes Objekt ist Instanz einer Klasse; diese definiert die Struktur und die Methoden zum Verändern des Zustandes ihrer Instanzen. 31/74 O BJEKTORIENTIERTE P ROGRAMMIERSPRACHEN Ein Hauptziel der objektorientierten Programmierung ist es, eine gute Strukturierung und eine hohe Wiederverwendbarkeit von Software zu erzielen. Dazu werden Klassen in Hierarchien angeordnet; man spricht dann von Ober- und Unterklassen. Jede Methode einer Klasse ist auch auf die Instanzen aller Unterklassen anwendbar. Man sagt, eine Klasse vererbt ihre Methoden rekursiv an ihre Unterklassen. Der Programmierer hat aber auch die Möglichkeit, die Implementierung einer geerbten Methode zu überschreiben. Die Methode behält dabei ihren Namen; es wird nur die Implementierung geändert. 32/74 O BJEKTORIENTIERTE P ROGRAMMIERSPRACHEN 1 Enthält ein Programm den Aufruf einer Methode für ein Objekt, so kann in vielen Fällen während der übersetzungszeit nicht entschieden werden, zu wel- cher Klasse dieses Objekt gehört. 2 Somit kann auch erst zur Laufzeit des Programms die korrekte Implementierung einer Methode ausgewählt werden (late binding). 3 Der Grund hierfür liegt hauptsächlich darin, dass der Wert einer Variablen der Klasse C auch Instanz einer Unterklasse von C sein kann. 33/74 O BJEKTORIENTIERTE P ROGRAMMIERSPRACHEN Die Auswahl der Implementierungeiner Methode zur Laufzeit nennt man Dispatching. Bestimmung der Klasse, zu der das Objekt gehört. Falls diese Klasse eine Implementierung für diese Methode zurVerfügung stellt, wird diese ausgeführt. Andernfalls werden in aufsteigender Reihenfolge die Oberklassen durchsucht und wie oben verfahren. Wird keine Implementierung gefunden, so liegt ein Fehler vor. 34/74 O BJEKTORIENTIERTE P ROGRAMMIERSPRACHEN Im folgenden wird nur der Fall betrachtet, dass jede Klasse maximal eine Oberklasse hat (single inheritance). Hat eine Klasse mehrere Oberklassen (multiple inheritance), so muss die Reihenfolge, in der in Schritt 3) die Oberklassen durchsucht werden, festgelegt werden. 35/74 O BJEKTORIENTIERTE P ROGRAMMIERSPRACHEN Abbildung 1: Klassenhierarchie bestehend aus sieben Klassen A, B, . . . , G. Die Unterklassenrelation ist durch einen Pfeil von einer Klasse zu ihrer Oberklasse gekennzeichnet. Ferner ist angegeben, welche Klassen welche Methoden implementieren. Beispielsweise kann die Methode m1 auf jedes Objekt angewendet werden, aber es gibt vier verschiedene Implementierungen von m1 . 36/74 D ISPATCHTABELLEN Abbildung 2: Welche Objekte verwenden welche Implementierung von m1 ? Die Adresse einer Methode m, welche durch die Klasse K implementiert wird, wird durch m | K dargestellt. Wird z.B. die Methode m1 für eine Instanz der Klasse G aufgerufen, so ergibt sich direkt, dass m1 | E die zugehörige Implementierung ist. 37/74 D ISPATCHTABELLEN Ein Programm einer objektorientierten Sprache besteht im wesentlichen aus Methodenaufrufen. Untersuchungen haben gezeigt, dass in manchen objektorientierten Sprachen bis zu 20% der Laufzeit für Dispatching verwendet wird. Aus diesem Grund besteht ein hohes Interesse an schnellen Dispatchverfahren. Die effizienteste Möglichkeit, Dispatching durchzuführen, besteht darin, zur ubersetzungszeit eine globale Dispatchtabelle zu erzeugen. 38/74 D ISPATCHTABELLEN Diese Tabelle enthält für jede Klasse eine Spalte und für jede Methode eine Zeile. Ist m der Name einer Methode und C eine Klasse, so enthält der entsprechende Eintrag der Dispatchtabelle die Adresse der Implementierung der Methode m, welche für Instanzen der Klasse C aufgerufen wird. Ist eine Methode auf die Instanzen einer Klasse nicht anwendbar, so bleibt der entsprechende Eintrag in der Dispatchtabelle leer. Diese Organisation garantiert, dass die Implementierung einer Methode in konstanter Zeit gefunden wird; es ist dabei genau ein Zugriff auf die Dispatchtabelle notwendig. 39/74 D ISPATCHTABELLEN Abbildung 3: Dispatchtabelle für das obige Beispiel 40/74 D ISPATCHTABELLEN Der große Nachteil einer solchen Dispatchtabelle ist der Platzverbrauch. Für die komplette Klassenhierarchie eines Smalltalk Systems mit 766 Klassen und 4500 verschiedenen Methoden ergibt sich ein Platzverbrauch von über 13 MBytes. Hierbei benötigt eine Adresse 4 Bytes. Aus diesem Grund sind Dispatchtabellen in dieser Form praktisch nicht verwendbar. 41/74 D ISPATCHTABELLEN Wie reduziert man den Speicheraufwand? Man verwendet, für zwei Methoden, welche sich nicht beeinflussen, eine einzige Zeile Zwei Methoden beeinflussen sich nicht, wenn es kein Objekt gibt, auf welches beide Methoden anwendbar sind. Im obigen Beispiel beeinflussen sich die Methoden m3 und m5 nicht; somit können beide Methoden in der Dispatchtabelle eine gemeinsame Zeile verwenden. Um eine optimale Kompression zu finden, wird zunächst untersucht, welche Methoden sich nicht beeinflussen. Dazu wird ein sogenannter Konfliktgraph gebildet. In diesem werden Methoden, welche sich beeinflussen, durch eine Kante verbunden. 42/74 K ONFLIKTGRAPH Reduktion des Speicheraufwands um 90 Prozent! 43/74 WWW ALS GERICHTETER G RAPH Page Rank Algorithmus von Lawrence Page and Sergey Brin LC(W) Anzahl der Verweise (Links), welche von Seite W ausgehen P(W) Menge der Webseiten, welche einen Verweis auf Seite W enthalten Page Rank: X PR(D) , d ∈ [0, 1] PR(W) = (1 − d) + d · LC(D) D∈PL(W) 44/74 S OZIALE N ETZWERKE Folksonomies Cliques Kontexte Begriffe als maximale Cliques 45/74 G RAPH - INFORMELL 46/74 V ERSCHIEDENE R EPR ÄSENTATIONEN 47/74 F ORMALE D EFINITION EINES G RAPHES 48/74 B EISPIEL 49/74 G RAPHISCHE D ARSTELLUNG Graph drawing problem planare Graphen Euklidische Graphen u.v.m. 50/74 F RAGESTELLUNGEN 1 Ein Graph ist bestimmt durch die Kanten, Knoten + Zuordnung Kanten - Endknoten Kann man die Kanten eines Graphen so durchlaufen, dass man jeden Knoten (oder jede Kante) genau einmal besucht? Wie viele Kanten muss man mindestens durchlaufen, um von einem Knoten zu einem anderen zu gelangen? Wie viele Knoten muss man mindestens besetzen, damit alle anderen Knoten die Graphen in der Nachbarschaft eines besetzten Knotens liegen? Gibt es zwischen je zwei Knoten einen Weg? 51/74 F RAGESTELLUNGEN 2 Wie viele Kanten kann man aus dem Graphen auswählen, sodass keine zwei ausgewählten Kanten einen gemeinsamen Endknoten besitzen? Wie viele verschiedene Graphen mit einer gegebenen Knoten- und Kantenanzahl gibt es? Wie viele davon sind strukturell gleich? Wie viele Knoten und Kanten kann man aus einem Graphen entfernen, ohne dass dieser den Zusammenhang (oder andere wichtige Eigenschaften) verliert? Kann man einen gegebenen Graphen so in die Ebene zeichen, dass sich keine zwei Kanten überkreuzen? 52/74 S PEZIELLE G RAPHEN Definition Ein Graph G = (V, E, γ) heißt endlich (finite) gdw. die Knotenmenge V und die Kantenmenge E endlich sind. V(G), E(G) Schlinge: e ∈ E.γ(e) = {v} Parallele Kanten: e, f ∈ E.γ(e) = γ(f ). Definition Ein Graph, der weder Schlingen noch parallele Kanten besitzt, heißt schlichter Graph. 53/74 S CHLICHTE G RAPHEN - B EISPIEL 54/74 S CHLICHTE G RAPHEN - F ORMALE D EFINITION 55/74 H AUS VOM N IKOLAUS ALS SCHLICHTER G RAPH 56/74 D IAGRAMME 57/74 K NOTENGRADE 58/74 B EISPIEL 59/74 H ANDSCHLAGLEMMA 60/74 H ANDSCHLAGLEMMA 2 61/74 G RAD 62/74 S CHUBFACHPRINZIP 63/74 B EISPIEL Herr Müller hat in seiner Sockenkiste weiße, schwarze und grüne Socken. Wenn er vier Socken aus der Kiste nimmt, hat er mindestens zwei Socken mit der gleichen Farbe. n = 4 Elemente verteilt auf m = 3 Mengen. 64/74 S CHUBFACHPRINZIP Unter je fünf Punkten, die in einem Quadrat der √ Seitenlänge 2 liegen, gibt es stets zwei, die einen Abstand ≤ 2 haben. 65/74 B EWEIS VOM S ATZ 1.3. 66/74 B EWEIS VOM S ATZ 1.3. 67/74 V OLLST ÄNDIGE G RAPHEN 68/74 B EISPIEL Die vollständigen Graphen K4 und K5 : 69/74 I SOMORPHIE 70/74 I SOMORPHIE (2) 71/74 I SOMORPHIE (3) Die Abbildung 72/74 I SOMORPHIE (4) Definition Wenn G1 = G2 in der Definition der Isomorphie, dann ist φ ein Automorphismus. Ein Automorphismus für einen Graphen G ist eine strukturerhaltende Abbildung von G auf sich selbst. Beispiel Für den linken Graphen ist {a → c, b → b, c → a, d → e, e → d} ein Automorphismus. 73/74 I SOMORPHIE (5) Zwei ja, eins nein... Welcher und wie? :P 74/74