Algorithmen und Berechenbarkeit / Formale Methoden Hertrampf/Eisner WS 2011/2012 Institut für Formale Methoden der Informatik Universität Stuttgart http://www.fmi.uni-stuttgart.de/ti Übungsblatt 2 Abgabe: 22.November 2011; 12:00 Uhr Konvention: Soweit nicht anders angegeben, sind alle betrachteten Graphen in der Übung einfach (keine Schlingen oder Mehrfachkanten). Problem 1 (5 P.) Erinnerung: Der Begriff Zusammenhangskomponente (ZHK) in einem Graphen G = (V, E) kann wie folgt definiert werden: Man führt die Äquivalenzrelation R, “Erreichbarkeit” auf den Knoten von G ein - uRv ⇔ es existiert ein Pfad von u nach v in G. Damit zerfällt V in eine oder mehrere Äquivalenzklassen - die Zusammenhangskomponenten. Ein Graph heißt zusammenhängend wenn er aus nur einer ZHK besteht. Ein Cut in einem zusammenhängenden Graphen G = (V, E) ist eine Teilmenge von Kanten E 0 ⊆ E für die gilt: G0 = (V, E \ E 0 ) zwerfällt in zwei ZHK’s. Ein minimaler Cut in G ist ein Cut mit der minimal möglichen Anzahl von Kanten. Gegeben sei ein zusammenhängender Graph G = (V, E). Ein randomisierter Algorithmus um einen minimalen Cut in G zu finden kann wie folgt definiert sein: randMinCut(G = (V, E)) while (|V | > 2) wähle zufällig, gleichverteilt eine Kante e ∈ E kontrahiere(e) gebe alle Kanten zwischen den verbliebenen 2 Knoten zurück Die Funktion kontrahiere(e) verschmilzt die beiden zu e inzidenten Knoten und entfernt alle entstehenden Schleifen. Die Menge V wird also in jedem Durchgang um genau einen Knoten kleinen und der Graph kann Mehrfachkanten enthalten. Schätzen Sie die Laufzeit des Algorithmus ab. Wurde in der Vorlesung eine Graphdatenstruktur vorgestellt, die kontrahiere(e) in O(1) unterstützt? Unter welchen Bedingungen ist die zurückgegebene Kantenmenge wirklich ein minimaler Cut in G? Wann macht der Algorithmus Fehler? Warum ist es besser Kanten zufällig, gleichverteilt zu wählen und nicht einen zufälligen Knoten v ∈ V und einen adjazenten zweiten Knoten u ∈ V ? Geben Sie eine untere Schranke für die Wahrscheinlichkeit an, dass der Algorithmus tatsächlich einen korrekten minimalen Cut zurück gibt. Hinweis: Um letztere Frage zu beantworten, sollten Sie die folgenden Teilfragen beantworten : Wenn der minimale Cut aus k Kanten besteht - wie viele Kanten hat G dann mindestens? Wie hoch ist die Wahrscheinlichkeit im ersten (i’ten) Schritt eine Kante aus dem (tatsächlichen) min Cut zu kontrahieren? Problem 2 (5 P.) Ein Graph ist planar gdw. er in eine Ebene eingebettet (“gezeichnet”) werden kann, ohne dass sich zwei Kanten überschneiden. Die Einbettung des Graphen in die Ebene zerlegt diese in disjunkte Gebiete. Beweisen Sie dass für jeden planaren, zusammenhängenden Graph gilt: Knotenzahl − Kantenzahl + Gebietszahl = 2. Warum muss es in jedem planaren, zusammenhängenden Graphen einen Knoten vi mit deg(vi ) < 6 geben? Problem 3 (5 P.) Die topologische Sortierung eines Graphen G = (V, E) ist eine bijektive Abbildung φ : V → N, welche jedem Knoten v ∈ V eine eineindeutige natürliche Zahl zuordnet, so dass gilt: ∀e = (u, v) ∈ E ⇒ φ(u) < φ(v). Beweisen Sie, dass jeder zyklenfreie Graph eine solche Sortierung besitzt und diese effizient gefunden werden kann. Geben Sie dazu einen linearzeit Algorithmus an, der für einen gegebenen, zyklenfreien Graph G ein solches φ findet. Problem 4 (5 P.) Sie bekommen aus zweifelhafter Quelle einen Rubik-Würfel zugesteckt und sollen die Frage beantworten, ob dieser in seine sortierte Ausgangskonfiguration überführt werden kann. (Das ist möglicherweise nicht der Fall, wenn er zerlegt und falsch zusammengebaut wurde.) Modellieren Sie dieses Problem als ein in der Vorlesung besprochenes Graphproblem. Erklären Sie den Aufbau des Graphen und geben Sie an, wie Sie mit diesem Graphen verfahren, um das Problem zu lösen. Können Sie mit dieser Modellierung noch mehr über die Ihnen übergebene Konfiguration aussagen? Für die Freunde von Rubik-Würfeln: Können Sie mehr über den von Ihnen modellierten Graph aussagen?