Universität Konstanz Mathematische Grundlagen der Informatik Fachbereich Informatik & Informationswissenschaft WS 2015/2016 Prof. Dr. Sven Kosub / Dominik Bui, Franz Hahn, Fabian Sperrle 5. Übungsblatt (Musterlösung) Ausgabe: 20.11.2015 Abgabe: 27.11.2015, bis spätestens 12:00 per Mail an den Tutor Vertiefung: (a) Gilt stets (A B) (C D) = (A C) (B D)? (b) Wie können Sie A B ohne Verwendung des Komplements, sondern nur mittels (geschachtelter) Anwendung der Operationen, und und den Mengen A, A, B, B ausdrücken? (c) Ist { (a, b), (b, c), (c, a), (d, c) } {a, b, c, d} 2 linkstotal, rechtseindeutig, rechtstotal oder linkseindeutig? (d) Ist { (x, y, z) x y = x z } Z 2 N linkstotal, rechtseindeutig, rechtstotal oder linkseindeutig? (e) Gibt es eine Relation R {1, 2, 3, 4} {1, 2, 3, 4}, die rechtseindeutig und linkseindeutig ist aber weder linkstotal noch rechtstotal? Wenn ja, welche? (f) Geben Sie für f : R R : x 2 1/x die Bildmengen f({x x R x > 1}) und f([ 1, 1]) an. (g) Geben Sie für f : R R : x 2 sin(x) die Urbildmengen f 1 ({0}) und f 1 ({ 2}) an. (h) Geben Sie für f : R R : x x 2 2x die Urbildmengen f 1 ([4, 9]) und f 1 ([0, 1]) an. (i) Gilt generell eine der Beziehungen, oder = für die Mengen f 1 (f(a)) und A und einer beliebigen Funktion f? Wenn ja, welche? (j) Gilt generell eine der Beziehungen, oder = für die Mengen f(f 1 (A)) und A und einer beliebigen Funktion f? Wenn ja, welche? (a) Ja, denn es gilt: Ist (x, y) (A B) (C D), so gilt x A B und y C D und mithin auch (x, y) A C sowie (x, y) B D; also (x, y) (A C) (B D). Ist (x, y) (A C) (B D), so gilt sowohl x A, y C als auch x B, y D und mithin x A B, y C D; also gilt (x, y) (A B) (C D). (b) Es gilt A B = A B A B A B. Zur Begründung: (x, y) A B (x, y) / A B x / A oder y / B Die rechte Seite der Gleichung drückt die zur Disjunktion gehörigen Fälle mengentheoretisch aus.
(c) Die Relation ist linkstotal, rechtseindeutig, nicht rechtstotal und nicht linkseindeutig. (d) Die Relation ist nicht linkstotal (für (1, 1) gibt es kein z N mit 1 = z), nicht rechtseindeutig ((0, 0, 1), (0, 0, 2) R), rechtstotal ((1, z, z) R für alle z N), nicht linkseindeutig ((1, z, z), (2, z, z) R für alle z N). (e) Ja, die Relation {(1, 1)} ist beispielsweise rechtseindeutig und linkseindeutig, aber weder linkstotal noch rechtstotal. Für generelle Menge A, B ist die nirgend definierte Funktion ν : A B, d.h., die Relation ν = A B, stets linkseindeutig und rechtseindeutig, aber weder linkstotal noch rechtstotal. (f) Es gilt f({x R x > 1}) = (1/2, 1) sowie f([ 1, 1]) = (0, ) ( wegen 1/n [ 1, 1] für n > 0; 0 wegen 1/n [ 1, 1] für n > 0). (g) Aus der Periodizität der Sinusfunktion ergibt sich f 1 ({0}) = {πn n Z} und f 1 ({ 2}) = { 2πn π 2 n Z}. (h) Mit x 2 2x = (x 1) 2 1 ergibt sich zunächst (x 1) 2 1 4, d.h., x 1 + 5 oder x 1 5, sowie (x 1) 2 1 9, d.h., x 1 + 10 und x 1 10, mithin gilt also f 1 ([4, 9]) = [1 10, 1 5] [1 + 5, 1 + 10]; andererseits ergibt sich (x 1) 2 1 0, d.h. x 2 oder x 0, sowie (x 1) 2 1 1, d.h., x 1 + 2 und x 1 2, mithin gilt also f 1 ([0, 1]) = [1 2, 0] [2, 1 + 2]. (i) Für jedes a A gilt a f 1 (f({a})). Mithin gilt sets A f 1 (f(a)). Gleichheit gilt i.a. nicht, beispielsweise für nicht injektive Funktionen. (j) Ist a f(f 1 (A)), so gibt es ein b f 1 (A) mit f(b) = a, also a A. Mithin gilt f(f 1 (A)) A. Gleichheit gilt i.a. nicht, beispielsweise für nicht surjektive Funktionen. Kreativität: Für zwei beliebige, nicht leere Mengen A, B bezeichne A B die Menge der totalen Funktionen von A nach B, d.h., A B = def { f f : A B ist eine totale Funktion } Zeigen Sie mittels vollständiger Induktion, dass für alle natürlichen Zahlen n > 0 und alle nicht leeren Mengen A 0, A 1,..., A n das Prinzip von Schönfinkel gilt: A 0 A 1 A n 1 A n = A 0 (A 1 ( (A n 1 A n )... )) Für n = 3 bedeutet dies beispielsweise: A 0 A 1 A 2 A 3 = A 0 (A 1 (A 2 A 3 )) Hinweis: Beachten Sie, dass Sie die Gleichheit von Mengen zeigen müssen. Induktionsanfang n = 1: Klarerweise gilt A 0 A 1 = A 0 A 1.
Induktionsschritt n > 0: Wir zeigen die beiden Inklusionen einzeln: : Es sei f : A 1 A 2 A n 1 A n eine totale Funktion, d.h., die Relation f (A 1 A 2 A n 1 ) A n ist linkstotal und rechtseindeutig. Für x A 1 definieren wir die Relation f x (A 2 A n 1 ) A n wie folgt Mit anderen Worten: f x = def { (y 2,..., y n 1, y n ) (x, y 2,..., y n 1, y n ) f }. (y 2,..., y n 1, y n ) f x f(x, y 2,..., y n 1 ) = y n Für jedes x A 1 ist f x stets linkstotal und rechtseindeutig, da f linkstotal und rechtseindeutig ist; f x ist also eine totale Funktion, d.h., f x A 2 A n 1 A n. Nach Induktionsvoraussetzung gilt somit f x A 2 ( (A n 1 A n )... ). Außerdem gibt es zu jedem x A 1 genau eine Funktion f x, wiederum wegen der Linkstotalität und Rechtseindeutigkeit von f. Darüber hinaus gilt f = x A 1 {x} f x. Mithin kann f aufgefasst werden als Funktion f : A 1 (A 2 ( (A n 1 A n )... )). : Es sei f : A 1 (A 2 ( (A n 1 A n )... )) eine totale Funktion. Für jedes x A 1 gibt es somit genau eine Funktion f x : A 2 ( (A n 1 A n )... )) mit f(x) = f x, nach Induktionsvoraussetzung also genau eine Funktion f x : A 2 A n 1 A n mit dieser Eigenschaft. Somit gilt also für alle (x 1, x 2,..., x n 1 ) A 1 A 2 A n 1 (x 1, x 2,..., x n 1, f x1 (x 2,..., x n 1 )) f sowie für (x 1, x 2,..., x n 1, y) f und (x 1, x 2,..., x n 1, z) f, y = f x1 (x 2,..., x n 1 ) = z. Mithin ist f (A 1 A 2... A n 1 ) A n linkstotal und rechtseindeutig. Also kann f aufgefasst werden als Funktion Damit ist die Aussage bewiesen. f : A 1 A 2... A n 1 A n. Transfer: Sie planen, mit anderen Kommilitonen unter dem Projektnamen www.kopfhoch.de ein soziales Netzwerk zur Vermittlung von Nachhilfe für in Aus- oder Weiterbildung (in Schule, Beruf, Universität etc.) befindliche Freunde aufzubauen. Neben jeder Menge Kommunikationsmöglichkeiten soll Ihr Netzwerk für jede registrierte Person eine Seite mit zwei Basisinformationen beinhalten: eine Liste von Wissensgebieten, in den die jeweilige Person Nachhilfe geben kann; und eine zweite Liste, in der die Person eine andere Person für Nachhilfe (in irgendeinem Wissensgebiet) empfiehlt. Sie sind für die Anbindung der Website an eine relationale Datenbank verantwortlich. Diese enthält unter anderem zwei Relationen:
W PersonID DomainID (als Sammlung der Listen von Wissensgebieten) E PersonID PersonID (als Sammlung der Listen von Empfehlungen) Hierbei steht DomainID für eine Menge eindeutiger Identifikatoren (Namen, Nummern etc.) für Wissensgebiete und PersonID für eine Menge eindeutiger Identifikatoren für die registrierten Nutzer. Zur Optimierung der Zugriffszeiten auf die Website müssen in regelmäßigen Abständen Tabellen für vordefinierte Anfragen aus der Datenbank berechnet werden. Um dies konzeptionell und mathematisch umzusetzen, erweitern Sie die übliche Relationenalgebra um spezielle Operationen: Transitive Join: R S = def { (a, c) es gibt ein b B mit (a, b) R und (b, c) S } Reversal: R 1 = def { (b, a) (a, b) R } Eine Testdatenbank für www.kopfhoch.de sei wie folgt gegeben: E Person Person 1 Abner Ashkan 2 Ashkan Elshad 3 Betty Abner 4 Elshad Sasha 5 Evette Evette 6 Kenzo Linda 7 Linda Betty 8 Sasha Evette W Person Domain 1 Abner Ruby 2 Ashkan PHP 3 Betty SQL 4 Elshad Java 5 Evette Python 6 Kenzo Typo3 7 Linda LaTeX 8 Sasha C/C++ E steht für eine Relation, in der die erste Person die zweite für die Nachhilfe empfiehlt; W steht für eine Relation, in welchem Wissensgebiet eine Person Nachhilfe anbietet. Die Relation E W enthält Paare von Personen und Wissensgebieten, sodass die Personen über eine Ecke Nachhilfe in dem Wissensgebiet bekommen können. (a) Bestimmen Sie (E W ) 1. (b) Gilt E E 1 = E 1 E? (c) Kann Python jeder in E enthaltenen Person über mehrere Ecken zur Nachhilfe angeboten werden - und wenn ja, über wie viele Ecken? (d) Gilt (R S) 1 = S 1 R 1 für beliebige Relationen R A B und S B C? (e) Wie würden Sie ((E E 1 ) 1 E) 1 mit möglichst wenig Platzkosten berechnen? Formen Sie den Ausdruck dazu geeignet um. Hinweis: Die Platzkosten für einen Transitive Join auf R und S seien R S ; die Platzkosten für einen Reversal auf R seien R. Die Platzkosten einer Folge von Transitive Joins und Reversals ist die Summe der Platzkosten der einzelnen Operationen. (a) Wir bestimmen (E W ) 1, indem wir zunächst E W bestimmen und anschließend die Reversal-Operation anwenden: (E W ) 1 = {(PHP, Abner), (Java, Ashkan), (Ruby, Betty), (C/C + +, Elshad), (Python, Evette), (LaTeX, Kenzo), (SQL, Linda), (Python, Sasha)} Diese Relation lässt sich interpretieren als Aufzählung von Wissensgebieten und zugeordneten Personen, die jemanden für Nachhilfe in diesen Wissensgebieten empfehlen können.
(b) Nein, denn es gilt: (E E 1 ) (E 1 E) = {(Evette, Sasha), (Sasha, Evette)}. Dies findet man durch Vergleich der extensionalen Darstellungen von (E E 1 ) und (E 1 E). (c) Ja, Python kann jeder in E enthaltenen Person über mehrere Ecken zur Nachhilfe angeboten werden, und zwar über höchstens 8 Ecken. Dazu gehen wir von Evette aus, die als einzige Nachhilfe für Python anbietet. Evette wird fragwürdigerweise von sich selbst und darüber hinaus auch von Sasha empfohlen, dieser wiederum von Elshad etc. So findet man schließlich, dass jede in E vorkommende Person jemanden kennt, der direkt oder indirekt jemanden für Nachhilfe in Python empfiehlt. Im Falle von Kenzo läuft dies über 8 Ecken. (d) Wir nutzen die Definitionen der Operationen Transitive Join und Reversal: (R S) 1 = { (c, a) es gibt ein b B mit (a, b) R und (b, c) S } = { (c, a) es gibt ein b B mit (b, c) S und (a, b) R } = { (c, a) es gibt ein b B mit (c, b) S 1 und (b, a) R 1 } = S 1 R 1 (e) Eine geeignete Umformung ist ((E E 1 ) 1 E) 1 = E 1 (E E 1 ). Der zweimal auftretende Ausdruck E 1 muss nur einmal berechnet werden, damit ergeben sich als Platzkosten P = E 1 + E E 1 + E 1 (E E 1 ).