Formale Methoden der Informatik WS 2010/2011 Lehrstuhl für Datenbanken und Künstliche Intelligenz Prof. Dr. Dr. F. J. Radermacher • H. Ünver • T. Rehfeld • J. Dollinger 4. Aufgabenblatt Besprechung in den Tutorien vom 24.11.2010 (ab Übungstermin) bis 01.12.2010 (bis Übungstermin) 17. Aufgabe (5 Punkte) Verständnisfragen: a) Was ist ein Grad eines Knotens? d(v) = die Anzahl der Kanten, die dieser Knoten hat. b) Was ist eine Gradsequenz? Eine sortierte Folge der Grade der Knoten aus einem Graphen. c) Folgt aus der gleichen Gradsequenz zweier Graphen, dass beide Graphen isomorph sind? Nein. d) Was ist ein Weg durch einen Graphen? Eine Folge von Knoten, sodass es zwischen jeden zwei aufeinanderfolgenden Knoten in der Folge eine Kante gibt. e) Was ist ein Zyklus in einem Graph? Ein einfacher Weg, bei dem Start- und Endknoten gleich sind. f) Wann ist ein Graph zusammenhängend? Wenn es einen Weg von jedem Knoten zu jedem anderen gibt. g) Ist ein stark zusammenhängender Graph auch schwach zusammenhängend? Ja. h) Was ist ein Baum? Ungerichteter Baum: Ein ungerichteter, zusammenhängender, azyklischer Graph. Gerichteter Baum: Ein gerichteter, schwach zusammenhängender, azyklischer Graph mit einem ausgezeichneten Knoten, der Wurzel, • von der aus entweder alle anderen Knoten aus erreichbar sind (Out-Tree) • oder die selbst von allen anderen Knoten aus erreichbar ist (In-Tree). alternativ (Gerichteter Baum): anstatt: azyklischer Graph → über einen eindeutigen Weg erreichbar alternativ (Gerichteter Baum, Out-Tree): Ein gerichteter, azyklischer Graph ist ein gerichteter Baum, • wenn alle Knoten einen Eingangsgrad ≤ 1 haben • und es genau einen Knoten mit Eingangsgrad = 0 gibt. (In-Tree: analog über Ausgangsgrad) i) Wann ist ein Baum der Höhe nach ausgeglichen? Wenn alle Teilbäume seiner direkten Nachfolger sich maximal um 1 in ihrer Höhe voneinander unterscheiden. Höhe eines Baumes: Höhe eines Knotens: Größte Höhe unter allen seinen Knoten. Länge des Weges von der Wurzel bis zum Knoten. j) Wann ist ein Baum dem Gewicht nach ausgeglichen? Wenn alle Teilbäume seiner direkten Nachfolger sich maximal um 1 in der Anzahl ihrer Knoten voneinander unterscheiden. 18. Aufgabe (2 Punkte) Zusammenhängende Graphen: Welche der folgenden Graphen sind zusammenhängend, bzw. schwach oder stark zusammenhängend? a) b) c j f a o f l h d a b d p e m i e c q b g k n m c) d) e b d k c h a i a f f j n c d g e l b zu a) nicht zusammenhängend, Teilgraphen: {{a, d}, {d, b}, {b, e}} und {{c, f }} zu b) laut Definition: schwach zusammenhängend laut Definition (im Skript, Folie 26): Ein Baum ist ein ungerichteter , zusammenhängender Graph ohne Zyklen. → Nach dieser Definition wäre es kein Baum. Es gibt jedoch auch etwas weniger strenge Definitionen, die auch Bäume bei gerichteten Graphen zulassen. laut Definition (im Skript, Folie 27): Ein gerichteter Baum ist ein gerichteter Graph mit einem ausgezeichneten Knoten, der so genannten Wurzel, für den gilt, dass im Falle von Out-Trees jeder Knoten durch genau einen gerichteten Pfad von diesem aus erreichbar ist oder dass im Falle von In-Trees dieser von jedem Knoten aus durch genau einen gerichteten Pfad erreichbar ist. (unterschiedliche Definitionen) Schlussfolgerung: Der hier abgebildete gerichtete Graph ist ein Out-Tree mit dem Knoten m als Wurzel. zu c) nicht zusammenhängend, Teilgraphen: {(b, a), (f, a), (f, e), (h, f )} und {(n, l), (l, j), (j, d), (d, g), (d, c), (i, c), (c, k), (k, m)} zu d) schwach zusammenhängend. 19. Aufgabe (3 Punkte) Gradsequenzen: Gegeben seien die folgenden Graphen: i) ............ ......... .....II.... ... I .. . . ........... .... ............ ....... .. .... . . . ........... ............ .....V .... ....IV.... ......... ......... ...... ... ... ..... ...... .. ...... ....1 ..... ... . .. ......... ii) ............ iii) ............ ......... ........ . . . ..... b ..... ... 3 .. ... 2 ... ... a ... ..... 4 .... .. .. ......... ........... ......... ........... ......... .... .... ... .... . . . . . . . . . . .... .... .... ... ...... .... ........ ............ ........ ...... ........ ........ .... .... ..... 6 .......... ..... d .... ..... 5 .... .... e .... ..... c .... ..... f .... ......... ......... ......... ......... ......... .......... ... . ... .. . .. .... ...... .... .............................. ......... .....III.... ........ .......... ....VI... ......... iv) ......... .....A......... ........ ....... .... ... ... .. .......... ....... ...... .....D.... . ....C . ......... ..... ......... ....B ... .......... ... ... .... ...... ....... ......... ... ...F ... ....... v) ............ ........ vi) ........ .....A.... ..... b ..... ... a ... ......... .. ... ......... ... .... ..... ... ... . . . . ... .... ... .......... ........ ........ ......... ... .... B.... .....C .... .... c .... .... E .... ... ......... ........ ................ ................. . ... . . . . . . . . .... ... ........... .. . . . . .... . .... .... .. .... .......... ....... ... .. ............ .................. .............. ......... ..... ..... ..... .... .... D ... ..... d .... ..... f ..... ... e ... ...E ....F ......... ......... ........ ....... ...... ...... . ... .. ... . . .... . . . ...... .. .............................. Berechnen Sie die Gradsequenzen der einzelnen Graphen. i.) (3, 3, 2, 2, 1, 1) ii.) (4, 3, 2, 2, 2, 1) iii.) (3, 3, 3, 2, 2, 1) iv.) (4, 3, 2, 2, 2, 1) v.) (4, 3, 2, 2, 2, 1) vi.) (5, 2, 2, 1, 1, 1) 20. Aufgabe (2 Punkte) Gradsequenztest: Auf einer Party befinden sich sieben Personen. Ist es möglich, dass jede dieser Personen genau drei andere Besucher der Party kennen? Hinweis: Es wird davon ausgegangen, daß Personen sich immer gegenseitig kennen. 1. Grafisch: 3 c 3 ? b d 3 a e 3 g 3 f 3 Das Problem ist symmetrisch. Deshalb lässt sich o.B.d.A bereits durch ausprobieren feststellen: Es geht nicht auf! Ein Partygast bleibt übrig, für den kein dritter Bekannter mehr übrig ist. ⇒ Ein entsprechender Graph kann nicht gezeichnet werden. 2. Gradsequenztest: Zahlenfolge: (3, 3, 3, 3, 3, 3, 3) (bleibt zu prüfen, ob dies eine gültige Gradsequenz ist.) i.) Siehe Vorlesung, Folie 16/Teil 2 (bzw. auch Folie 12/Teil 2): Die Summe der Knotengrade ist ungerade. ⇒ laut 1. Kriterium: keine Gradsequenz (eigentlich wären wir schon fertig) ii.) Will man den Algorithmus des Gradsequenztest aber tatsächlich durchspielen, so kommt man auf folgendes Ergebnis: 3 3 3 3 3 3 3 erste Ziffer streichen diese Ziffer hatte den Wert 3, daher die nächsten 3 Ziffern die folgenden einfach übernehmen. 3 2 2 2 3 3 3 neu sortieren 3 3 3 2 2 2 erste Ziffer wieder streichen diese Ziffer hatte den Wert 3, daher die nächsten 3 Ziffern die folgenden einfach wieder übernehmen. 3 2 2 1 2 2 neu sortieren 2 2 2 2 1 erste Ziffer wieder streichen diese Ziffer hatte den Wert 2, daher die nächsten 2 Ziffern die folgenden einfach wieder übernehmen. 2 1 1 2 1 neu sortieren 2 1 1 1 erste Ziffer wieder streichen diese Ziffer hatte den Wert 2, daher die nächsten 2 Ziffern die folgenden einfach wieder übernehmen. 2 0 0 1 Nullen können gestrichen werden. 0 0 1 neu sortieren 1 es ist nur noch eine ungerade Anzahl von Einsen übrig. ⇒ erfolgloser Abbruch! um 1 erniedrigen, um 1 erniedrigen, um 1 erniedrigen, um 1 erniedrigen, andere Abbruchbegründung: erste Ziffer wieder streichen diese Ziffer hatte den Wert 1, daher die nächste 1 Ziffer um 1 erniedrigen, die folgenden einfach wieder übernehmen. 1 ? aber: nicht mehr genügend Ziffer da, die erniedrigt werden könnten. ⇒ erfolgloser Abbruch! 21. Aufgabe (4 Punkte) Bonus: Matrixmultiplikation: Gegeben sind die Matrizen: A= 1 0 0 5 1 2 ⎛ 1 B=⎝ 3 0 ⎞ 2 0 3 4 ⎠ 1 7 ⎛ 0 4 C=⎝ 0 0 1 0 ⎞ 0 2 ⎠ 0 Berechnen Sie: a) A · B A·B = = = b) B · C B·C 1 0 0 1 5 2 ⎛ 1 ·⎝ 3 0 1·1+0·3+5·0 0·1+1·3+2·0 ⎞ 2 0 3 4 ⎠ 1 7 1·2+0·3+5·1 0·2+1·3+2·1 1+0+0 2+0+5 0+3+0 0+3+2 0 + 0 + 35 0 + 4 + 14 1·0+0·4+5·7 0·0+1·4+2·7 = 1 3 7 35 5 18 ⎛ ⎞ ⎛ ⎞ 1 2 0 0 4 0 = ⎝ 3 3 4 ⎠·⎝ 0 0 2 ⎠ 0 1 7 1 0 0 ⎛ 1·0+2·0+0·1 1·4+2·0+0·0 = ⎝ 3·0+3·0+4·1 3·4+3·0+4·0 0·0+1·0+7·1 0·4+1·0+7·0 ⎛ ⎞ 0+0+0 4+0+0 0+4+0 = ⎝ 0 + 0 + 4 12 + 0 + 0 0 + 6 + 0 ⎠ 0+0+7 0+0+0 0+2+0 ⎞ 1·0+2·2+0·0 3·0+3·2+4·0 ⎠ 0·0+1·2+7·0 ⎛ ⎞ 0 4 4 = ⎝ 4 12 6 ⎠ 7 0 2 22. Aufgabe (1+1+1+1+2 Punkte): Gegeben sei der Graph G = (V, E) mit V = {U, M, R, S, B, K}. Die angegebenen Knoten stehen für die Europaländer Ungarn, Moldawien, Rumänien, Serbien, Bulgarien, Kroatien. (Hinweis: Verwechseln Sie nicht den eingezeichneten Verlauf der Donau mit evtl. Ländergrenzen.) a) Geben Sie die Kantenmenge E an. (Zwischen zwei Ländern besteht dann eine Kante, wenn diese Länder benachbart sind) G = (V, E) V = {U, M, R, S, B, K} E = {{U, K} , {U, S} , {U, R} , {K, S} , {R, S} , {S, B} , {R, M } , {R, B}} b) Zeichnen Sie den Graphen G. ....... ....... ..... ...... ..... ...... .. . .... ..... ... .... ..... ...... . .. .. . .... ... .... ...... ...... ... ...... ... ... ... . . . . . .... . ... .... ... ... .... .... .... ... ... ... .... ... .... . . . . . . . . . . . . . . . . . . . .. .... ..... ..... ........ .... ..... .. .... . .... ... ... ..... .................. .... .............. ....... . . . ... .... . . . . .... ... .. ... .... .... ... ... .... .... ... ... . ... .... . .... ...... ..... ... .......... ...... ....... . . . .... ..... .. . . .... .... . ..... ..... ..... ...... ....... ....... U M K R S B c) Geben Sie die Darstellung des Graphen G als Adjazenzmatrix an. U M R S B K U 0 0 1 1 0 1 M 0 0 1 0 0 0 R 1 1 0 1 1 0 S 1 0 1 0 1 1 B 0 0 1 1 0 0 K 1 0 0 1 0 0 d) Geben Sie die Gradsequenz für den Graphen G an. Die Grade der Knoten sind (3, 1, 4, 4, 2, 2). Durch Sortieren der Folge bekommt man die Gradsequenz: (4, 4, 3, 2, 2, 1). e) Quadrieren Sie die Adjazenzmatrix des Graphen G. Verwenden Sie einmal die “normale” Matrix-Multiplikation sowie einmal die “bool’sche” Matrix-Multiplikation. Was stellt das Ergebnis dar? “Normale” ⎛ 0 ⎜0 ⎜ ⎜1 ⎜ ⎜1 ⎜ ⎝0 1 Matrix-Multiplikation: ⎞ ⎛ 0 0 1 1 0 1 ⎜0 0 1 0 0 0⎟ ⎟ ⎜ ⎜ 1 0 1 1 0⎟ ⎟ · ⎜1 ⎟ 0 1 0 1 1⎟ ⎜ ⎜1 0 1 1 0 0⎠ ⎝0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 0 ⎞ ⎛ 3 1 ⎜1 0⎟ ⎟ ⎜ ⎜ 0⎟ ⎟ = ⎜1 ⎟ 1⎟ ⎜ ⎜2 0⎠ ⎝2 1 0 1 1 0 1 1 0 1 0 4 2 1 2 2 1 2 4 1 1 2 1 1 1 2 1 ⎞ 1 0⎟ ⎟ 2⎟ ⎟ 1⎟ ⎟ 1⎠ 2 Ein Eintrag xij an der Stelle (i, j) in der quadrierten Matrix gibt die Anzahl der Wege von Knoten i nach Knoten j an, die die Länge 2 haben. Zum Beispiel gibt es zwischen K und R zwei Wege der Länge zwei: einmal über U und einmal über S. “Bool’sche” ⎛ 0 ⎜0 ⎜ ⎜1 ⎜ ⎜1 ⎜ ⎝0 1 Matrix-Multiplikation: ⎞ ⎛ 0 0 1 1 0 1 ⎜0 0 1 0 0 0⎟ ⎟ ⎜ ⎜ 1 0 1 1 0⎟ ⎟ · ⎜1 ⎟ 0 1 0 1 1⎟ ⎜ ⎜1 0 1 1 0 0⎠ ⎝0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 0 ⎞ ⎛ 1 1 ⎜1 0⎟ ⎟ ⎜ ⎜ 0⎟ ⎟ = ⎜1 ⎟ 1⎟ ⎜ ⎜1 0⎠ ⎝1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ⎞ 1 0⎟ ⎟ 1⎟ ⎟ 1⎟ ⎟ 1⎠ 1 Fast wie das Ergebnis der “normalen” Matrix-Multiplikation. Jedoch werden alle Zahlen in der Ergebnis-Matrix, die größer als 1 sind auf 1 reduziert. Interpretation: Ein Eintrag xij an der Stelle (i, j) in der quadrierten Matrix gibt an, ob ein Weg existiert, der von Knoten i nach Knoten j führt, der genau die Länge 2 hat. Diese Matrix stellt eine Vereinfachung (unter Informationsverlust) des Ergebnisses der “normalen” Matrix-Multiplikation dar. Hinweis: Einige Wahrheitsoperationen (Boole’sche Operatoren): und-Verknüpfung, Symbol: ∧ a falsch falsch wahr wahr b falsch wahr falsch wahr a und b falsch falsch falsch wahr entspricht a 0 0 1 1 b 0 1 0 1 a∧b 0 0 0 1 entspricht a 0 0 1 1 b 0 1 0 1 a∨b 0 1 1 1 oder-Verknüpfung, Symbol: ∨ a falsch falsch wahr wahr b falsch wahr falsch wahr a oder b falsch wahr wahr wahr 23. Aufgabe (2 Punkte): Zeigen Sie, dass ein Baum mit n Knoten immer n − 1 Kanten hat. Begründen Sie durch Induktion und Definition. • Induktionsannahme: Ein Baum mit n Knoten hat n − 1 Kanten. • Induktionsanfang: n = 1 : Ein Baum mit 1 Knoten hat 0 Kanten. n = 2 : Ein Baum mit 2 Knoten hat 1 Kante. • Induktionsschritt: Wir haben einen Baum mit n Knoten und n − 1 Kanten. Wir fügen einen Knoten zu diesem Baum hinzu, also haben wir schon n + 1 Knoten. Die Frage ist nun, wieviele Kanten können denn nun hinzugefügt werden. Machen wir doch eine Fallunterscheidung: 0 Kanten Der Knoten wird gar nicht mit dem Baum verbunden. Das ist nicht zulässig, denn ein Baum ist definiert als ein zusammenhängender Graph. → nicht möglich. ≥ 2 Kante Der Knoten n + 1 wird mit einer Kante mit einem beliebigen Knoten i aus dem Baum verbunden und dann noch mit einem Knoten j = i (die weiteren Kanten spielen keine Rolle). Laut Definition des Baumes, ist der Graph ja zusammenhängend → es gibt einen Weg von i nach j. Wir haben noch zwei Kanten hinzugefügt: (n + 1, j) und (n + 1, i). Folglich haben wir ein Kreis gebildet n + 1 → j → i → n + 1. Laut Definition des Baumes, muss der Graph azyklisch sein → es ist nicht möglich mehr als eine Kante hinzuzufgen → die Anzahl der Kanten ist um eins größer geworden, beträgt also n. qed.