9. Übungsblatt - Theoretische Informatik @ Universität Konstanz

Werbung
Mathematische Grundlagen der Informatik
Universität Konstanz
Fachbereich Informatik & Informationswissenschaft
WS 2016/2017
Prof. Dr. Sven Kosub / Michael Strecke, Nadja Willenborg
9. Übungsblatt
Ausgabe: 23.12.2016
Abgabe: 13.01.2017, bis spätestens 12:00 per Mail an den Tutor
Aufgabe 25: Kongruenz modulo n
10 Punkte
Für eine beliebige natürliche Zahl n ∈ N+ betrachten wir die Kongruenzrelation modulo n auf
den natürlichen Zahlen, d.h. die folgende Äquivalenzrelation R ⊆ N × N:
R =def { (x, y) | x, y ∈ N ∧ |x − y| ist durch n teilbar }
(a) Zeigen oder widerlegen Sie, dass [x]R + [y]R = [x + y]R für alle n ∈ N+ , x, y ∈ N gilt.
(b) Zeigen oder widerlegen Sie, dass [x]R · [y]R = [x · y]R für alle n ∈ N+ , x, y ∈ N gilt.
(c) Zeigen oder widerlegen Sie, dass [x]R ˆ[y]R = [xˆy]R für alle n ∈ N+ , x, y ∈ N gilt.
Hinweis: Für beliebige Mengen A, B ⊆ N und eine beliebige Operation (eigentlich: eine Funktion) ◦ : N × N → N definieren wir:
A ◦ B =def { z | z ∈ N ∧ (∃x ∈ A)(∃y ∈ B)[z = x ◦ y]}
Zum Beispiel gilt für A = {0, 3, 4} und B = {1, 2, 5} sowie für ◦ ∈ {+, ·, ˆ}:
{0, 3, 4} + {1, 2, 5} = {1, 2, 4, 5, 6, 8, 9}
{0, 3, 4} · {1, 2, 5} = {0, 3, 4, 6, 8, 15, 20}
{0, 3, 4}ˆ{1, 2, 5} = {0, 3, 4, 9, 16, 729, 1024}
Hierbei steht ˆ für die Exponentiation: xˆy =def xy .
Aufgabe 26: Halbordnungen
10 Punkte
Die folgenden Relationen R ⊆ A×A sind noch keine Halbordnungen. Fügen Sie den Relationen
so wenig wie möglich Elemente hinzu bzw. entfernen Sie so wenig wie möglich Elemente aus
den Relationen, so dass jeweils eine Halbordnung entsteht.
(a) A =def {−3, −2, −1, 0, 1, 2, 3}, R =def { (x, y) | x < y },
(b) A =def {−3, −2, −1, 0, 1, 2, 3}, R =def { (x, y) | |x| ≤ |y| },
(c) A =def {−3, −2, −1, 0, 1, 2, 3}, R =def { (x, y) | x = y ∨ x + 1 = y }.
Aufgabe 27: Reflexive und transitive Hülle
10 Punkte
Im Rahmen eines Software Maintenance-Projektes sind Sie auf eine undokumentierte Methode
gcd gestoßen, die Sie als Implementierung des Euklidischen Algorithmus zur Bestimmung des
größten gemeinsamen Teilers zweier natürlicher Zahlen identifizieren:
public static int gcd(int x, int y) {
if (y==0) return x;
if (y>x) return gcd(y,x);
return gcd(y, x % y);
}
Um sich die davon zu überzeugen, dass diese rekursive Methode für x, y ≥ 0 stets terminiert,
definieren Sie auf den natürlichen Zahlen die Rekursionsrelation ≺gcd :
(x1 , y1 ) ≺gcd (x2 , y2 ) ⇐⇒def
bei Eingabe (x2 , y2 ) ruft die Methode gcd sich selbst
mit der Eingabe (x1 , y1 ) auf
Sie wollen die Rekursionsrelation ordnungstheoretisch auffassen. Dazu bilden Sie die reflexive
und transitive Hülle von ≺gcd :
(x1 , y1 ) ≤gcd (x2 , y2 )
⇐⇒def
(x1 , y1 ) = (x2 , y2 ) oder
es gibt ein n ∈ N und (a0 , b0 ), (a1 , b1 ), . . . , (an , bn ) ∈ N × N, so dass
(x1 , y1 ) = (a0 , b0 ) ≺gcd (a1 , b1 ) ≺gcd (a2 , b2 ) ≺gcd · · · ≺gcd (an , bn ) = (x2 , y2 )
(a) Begründen Sie, dass die Relation ≤gcd ⊆ N2 × N2 antisymmetrisch (und damit eine
Halbordnung) ist.
(b) Was würde es für das Terminierungsverhalten von gcd bedeuten, wenn die Relation
≤gcd ⊆ N2 × N2 nicht antisymmetrisch wäre?
(c) Ist die Relation ≤gcd ⊆ N2 × N2 total?
(d) Für welche Eingabe aus {0, 1, 2, 3, 4, 5}2 werden die meisten rekursiven Aufrufe von gcd
getätigt?
Frohe Weihnachten und einen guten Rutsch ins Jahr 2017!
Herunterladen