Technische Universität München Stand der Vorlesung Kapitel 2: Mathematische Grundlagen • Wiederholung einiger wichtiger Grundlagen • Mengen, • Relationen (Odnungsrelation, Äquivalenzrelation) • Funktionen: injektiv, surjektiv, bijektiv • Modul-Rechnung (wird häufig benötigt), • Polynom-Darstellungen. Permutation • Boolesche Algebra: (M, +, ., -), wobei +,., - hier nur als ‚Platzhalter‘ für Operatoren stehen, eine konkrete Algebra definiert die jeweiligen Operatoren z.B. Aussagenlogik: mit den konkreten Operatoren ∧, ∨, ¬ AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 1 Technische Universität München Beispiel: Aussagenlogik • M = {falsch, wahr} (oder M = {0, 1}) • mit Operationen ∧, ∨, ¬ ⇒ kleinstmögliche Boolesche Algebra. UND – Verknüpfung ODER – Verknüpfung a b a∧b a b a∨b 0 0 0 0 0 0 a ¬a 0 1 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert NEGATION 2 Technische Universität München Axiome: für alle a,b,c ∈ M gilt • Kommutativität: a ⋅ b = b ⋅ a a+b = b+a • Assoziativität: (a ⋅ b) ⋅ c = a ⋅ (b ⋅ c) (a+b)+c = a+(b+c) • Absorption: a + (a ⋅ b) = a a ⋅ (a+b) = a • Distributivität: a + (b ⋅ c) = (a+b) ⋅ (a+c) a ⋅ (b+c) = (a ⋅ b) + (a ⋅ c) • Neutrales Element n,e ∈ M , n=0, e =1 a+n=a a⋅ e=a • Komplementäres Element: ∀ a ∈ M, ∃ a‘ mit a + a‘ = e AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert a ⋅ a‘ = n 3 Technische Universität München Rechengesetze der Booleschen Algebra 0-1-Gesetze ∀ a ∈ M: a ⋅ 1 = a, a ⋅0=0 ∀ a ∈ M: a + 1 = 1, a+0=a Idempotenzgesetze: ∀ a ∈ M: a ⋅ a = a ∀ a ∈ M: a + a = a De Morgansche Regeln: ∀ a, b ∈ M: (a ⋅ b)‘ = a‘ + b‘ ∀ a, b ∈ M: (a + b)‘ = a‘ ⋅ b‘ Doppeltes Boolesches Komplement: ∀ a ∈ M: a‘‘ = a AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 4 Technische Universität München Rechengesetze der Booleschen Algebra (Forts.) Komplementarität der neutralen Elemente: 0‘ = 1 1‘ = 0 Folgerung: Eindeutigkeit der neutralen Elemente Beispiel: 0‘ + 1 ⋅ 0 = (0‘) + (1 ⋅ 0) =1+0 =1 AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 5 Technische Universität München 2.4 Boolesche Funktionen Eine n-stellige Boolesche Funktion f ist gegeben durch: f : { 0,1 }n → { 0,1 } Abbildung eines n-Tupels (x1, x2, ..., xn) mit xi ∈ { 0, 1 } auf eine Zahl f (x1, x2, ..., xn) ∈ { 0,1 } Es gibt 2n 2 verschiedene n-stellige Boolesche Funktionen Die Menge {0,1}n besteht aus 2n Elementen. • Für eine Boolesche Funktion muss für jedes Element der Funktionswert festgelegt werden. • Für jedes Element gibt es genau 2 Möglichkeiten, 0 oder 1. AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 6 Technische Universität München 2 – stellige Boolesche Funktionen y f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 UND (AND) Inhibition Identität Inhibition Identität Exklusiv ODER ODER (OR) NOR Äquivalenz Negation Implikation Negation Implikation NAND AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert f10 f11 f12 f13 f14 f15 Einsfunktion x Nullfunktion Für n = 2 gibt es 16 verschiedene 2-stellige Boolesche Funktionen 7 Technische Universität München 2.5 Alphabete, Wörter Definitionen: A sei eine endliche, nichtleere Menge. |A| := Anzahl der Elemente von A, A heißt Zeichenvorrat oder Alphabet, Das Paar (A, <) heißt geordnetes Alphabet, wenn ′< ′ eine totale Ordnung auf A ist. Beispiele • Menge der Dezimalziffern ID = {0, ..., 9} • Lat. Großbuchstaben {A, B, ..., Z} mit der natürlichen Ordnung A < B < ... < Z • Geordnete binäre Zeichenvorräte IB = {0, 1} mit 0 < 1, oder {true, false} mit false < true AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 8 Technische Universität München Definitionen: A sei Alphabet mit Ordnung <. • Wort über A: endliche Folge w = a1a2 ... ak (ai ∈ A, k ∈ IN0) Bem.: wir schreiben w = a1a2 ... ak statt w = a1, a2, ..., ak • Länge des Wortes w: |w| = k leeres Wort: ε, |ε| = 0 • Ak := {w | w ist ein Wort über A, |w| = k}, für k ∈ IN0 oder rekursiv: A0 := {ε}, Ak := {ua | u ∈ Ak-1, a ∈ A} • w = uv, dann heißen u, v Teilworte von w. • A* ∞ := {w | w Wort über A} = ∪ Ak k=0 ∞ k A+ := {w | w nichtleeres Wort über A} =k ∪ A =1 AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 9 Technische Universität München • Lexikographische Ordnung auf A* ist die von < induzierte totale Ordnung auf A* (analog zur Reihenfolge im Lexikon), d.h. für w, v ∈ A*: w < v: ⇔ entweder: oder: v=wv‘, mit v‘ ∈ A*, w = uaw‘, v = ubv‘, mit a, b ∈ A, u,w‘,v‘ ∈ A* und a < b, a ≠ b. Beispiel: • Lexikographische Ordnung auf der Menge der Dezimalzahlen: z.B. 13 < 132 < 1324 < 2 < 29 < 8 (entspricht nicht der numerischen Ordnung!) AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 10 Technische Universität München 2.6 Summenformeln und Eigenschaften Gegeben sei eine Zahlenfolge a1, .., an. Die endliche Summe n a1 + a2 + .. + an schreiben wir auch in der Form ∑ ai i =1 n Die Summe ∑ k = 1+2+ … +n ist eine arithmetische Reihe. k= 1 n Sie hat die Werte ∑ k = ½ *n(n+1) κ=1 Es gelten die Summenformeln: AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 11 Technische Universität München Geometrische Reihe Harmonische Reihe AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 12 Technische Universität München 2.7 Logarithmus Definition des Logarithmus zur Basis b x= logb a ⇔ a= bx Beispiel: log2 16 = x ⇔ 2x = 16, d.h. x=4 Logarithmus-Gesetze 1. Produkt: logb (x*y) = logbx + logb y 2. Quotient: logb (x/y) = logbx - logby 3. Potenzen: sei r eine reelle Zahl logb(xr) = rlogbx für r=-1: logb(1/x) = -logbx AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 13 Technische Universität München 2.8 Wahrscheinlichkeiten • Ein Ereignisraum S ist Menge, deren Elemente als Elementarereignisse bezeichnet werden. • Ein Elementarereignis kann als Ausgang eines Experiments interpretiert werden. • Beispiel: • Werfen zweier unterscheidbarer Münzen, wobei jeder Münzwurf in Kopf(Ko) oder Zahl(Za) endet. • S = {KoKo,KoZa,ZaKo,KoKo} • Ein Ereignis ist eine Teilmenge des Ereignisraums S. Beispiel AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 14 Technische Universität München 2.8 Wahrscheinlichkeiten • Ein Ereignisraum S ist Menge, deren Elemente als Elementarereignisse bezeichnet werden. • Ein Elementarereignis kann als Ausgang eines Experiments interpretiert werden. • Beispiel: • Werfen zweier unterscheidbarer Münzen, wobei jeder Münzwurf in Kopf(Ko) oder Zahl(Za) endet. • S = {KoKo,KoZa,ZaKo,KoKo} • Ein Ereignis ist eine Teilmenge des Ereignisraums S. Ein Elementarereignis s ∈S bezeichnet das Ereignis {s}. • Ereignis S wird sicheres Ereignis genannt, • Ereignis Ø als unmögliches Ereignis. AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 15 Technische Universität München • Wahrscheinlichkeitsverteilung Pr{} über einem Ereignisraum S ist eine Funktion von einer Menge von Ereignissen aus S in das Intervall [0,1] der reellen Zahlen, Pr : 2S → [0,1], wobei folgende Axiome erfüllt sind: • Pr{A} ≥ 0, für jedes Ereignis A • Pr{S} = 1 • Pr{A∪ B} = Pr{A} + Pr{B} für zwei sich gegenseitig ausschließende Ereignisse A und B Beispiel AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 16 Technische Universität München • Wahrscheinlichkeitsverteilung Pr{} über einem Ereignisraum S ist eine Funktion von einer Menge von Ereignissen aus S in das Intervall [0,1] der reellen Zahlen, Pr : 2S → [0,1], wobei folgende Axiome erfüllt sind: • Pr{A} ≥ 0, für jedes Ereignis A • Pr{S} = 1 • Pr{A∪ B} = Pr{A} + Pr{B} für zwei sich gegenseitig ausschließende Ereignisse A und B • Für unmögliches Ereignis Ø gilt: Pr{Ø} = 0. • Aus A⊆ B folgt Pr{A} ≤ Pr{B} • Komplement eines Ereignisses A wird als Ā bezeichnet. Es gilt Pr{Ā} = 1-Pr{A} AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 17 Technische Universität München • • • • Eine (diskrete) Zufallsvariable X ist eine Funktion von einem endlichen oder abzählbar unendlichen Ereignisraum S in die Menge der reellen Zahlen. Sie ordnet jedem möglichen Ausgang eines Experiments eine reelle Zahl zu. Für eine Zufallsvariable X und eine reelle Zahl x definieren wir das Ereignis X=x als { s ∈ S : X(s) = x }, so dass gilt: Pr{X = x} = ∑ Pr{ s} s∈S : X ( s ) = x Funktion f(x) = Pr{X=x} ist die Wahrscheinlichkeitsdichtefunktion der Zufallsvariable X. Aus den Wahrscheinlichkeitsaxiomen folgt Pr{X = x} ≥ 0, ∑ Pr{ X = x} = 1 x AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 18 Technische Universität München Beispiel: 2 Würfel AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 19 Technische Universität München Erwartungswert: Gegeben sei eine diskrete Zufallsvariable X. Der Erwartungswert (oder Mittelwert) von X ist: E[X] = ∑ x Pr{ X = x} x AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 20 Technische Universität München Beispiel: Das Experiment sei das Werfen eines Butterbrots. Der Ereignisraum S ist gegeben durch: S = {Butterseite oben, Butterseite unten}. Wir nehmen an, dass wir: • 2 Euro erhalten, wenn die Butterseite nach oben zeigt und • 1 Euro verlieren, wenn die Brutterseite nach unten zeigt. • Die Wahrscheinlichkeiten für die Elementarereignisse aus S seien: Pr{Butterseite oben} = 1/4 und Pr{Butterseite unten} = 3/4. Frage: Wie ist der Erwartungswert der Zufallsvariable X, die einen Gewinn darstellt? AuD, Kapitel 2 Mathematische Grundlagen, WS10/11, C. Eckert 21 Technische Universität München Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Ziel: • Kurze Einführung in den Pseudocode zur Beschreibung von Algorithmen • Induktionsbeweise als wichtiges Hilfsmittel, um die Korrektheit eines Algorithmus nachzuweisen • Komplexität/Effizienz von Algorithmen: wie misst man das, wie ist dazu das ganz allgemeine Vorgehen 3.1. Einführung in den verwendeten Pseudocode Bem.: Hier werden nur die wichtigsten Konzepte kurz vorgestellt. Eine ausführlichere Erläuterung finden Sie unter https://www.sec.in.tum.de/assets/lehre/ws1011/aud/pseudocode.pdf AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 22 Technische Universität München Pseudocode umfasst Anweisungen/Befehle Beispiel • Einrücken Kennzeichnet die Blockstruktur Beispiel: • // Rest der Zeile ist Kommentar. Kommentare werden nicht ausgeführt! for j = 2 to länge(A) do key = A[ j ] // Füge A[ j ] in die // sortierte Liste j - 1] ein. i = 0 A[1.. // Kommentar… i=j–1 // Auch Kommentar while i > 0 und A[ i ] > key do A[i + 1] = A[ i ] i=i–1 // Ausgabe: i = 7 A[i + 1] = key • print Gibt etwas aus. Zeichenketten in Anführungszeichen werden unverändert ausgegeben. Z.B. print X gibt den Wert der Variablen X aus. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 23 Technische Universität München Pseudocode Fortsetzung: • Zuweisung: z.B. X=5 Weist der Variable X den Wert 5 zu for j = 2 to länge(A) do key = A[ j ] // Füge A[ j ] in die // sortierte Liste A[1.. j - 1] ein. i=j–1 while i > 0 und A[ i ] > key do A[i + 1] = A[ i ] i=i–1 A[i + 1] = key • Feld A[Wert1 .. Wert2] Ein Feld ist eine Folge von Werten. Auf den Wert an Position i des Feldes A[i], wird mit einem Indexwert i zugegriffen. A[1..j] bezeichnet die Elemente A[1], A[2], …, A[j]. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 24 Technische Universität München Pseudocode Fortsetzung: • for i = Wert1 to Wert2 Variable i nimmt schrittweise die for j = 2 to länge(A) do Werte von Wert1 bis Wert2 an. key = A[ j ] // Füge A[ j ] in die Jedes Mal werden die Anweisung // sortierte Liste A[1.. j - 1] ein. des For-Schleifenkörpers ausgeführt. i=j–1 while i > 0 und A[ i ] > key do Nach Beendigung der ganzen A[i + 1] = A[ i ] Schleife hat die Variable i den Wert i=i–1 A[i + 1] = key Wert2+1 • while Bedingung do Führt einen While-Schleifenkörper aus, solange die Bedingung erfüllt ist. Problem? AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 25 Technische Universität München Beispiel Pseudocode Fortsetzung: i=3 • if Bedingung if i == 0 Anweisungsblock // Bedingung erfüllt X= 0 else else Anweisungsblock X= 2 Verzweigung im Code anhand der Bedingung. else kennzeichnet den Zweig, der gewählt wird,falls die Bedingung nicht erfüllt ist. • <obj>.<attr> Per „.“ wird auf das Attribut <attr> des Objekts <obj> zugegriffen. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert // A: Feld, 5 Elemente i = A.länge // i hat den Wert 5 26 Technische Universität München 3.2. Einführendes Beispiel: Sortieren • Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen Sortierproblem • Eingabe: Folge von n natürlichen Zahlen a1, a2, …, an, die Folge ist nicht sortiert • Ausgabe: Permutation der Eingabefolge Sortieren der Eingabewerte: a‘1 ≤ a‘2 ≤ a‘3 ≤ … ≤ a‘n Beispiel Eingabe: Ausgabe: 41, 31, 26, 59, 58 26, 31, 41, 58, 59 sortierte Liste AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 27 Technische Universität München 3.2.1 Konkreter Sortieralgorithmus: Sortieren durch Einfügen, Algorithmus in Pseudo-Code Insertion Sort A[1 ..n] ist die Eingabe, ein Feld von natürlichen Zahlen key ist der bei jeder Iteration der Schleife einzusortierende Wert Insertion_Sort (A) Beispiel: Beispiel for j = 2 to länge(A) do Eingabe A[1 .. 6] = 5, 2, 4, 6, 1, 3 key = A[ j ] Prinzipieller Ablauf: // Füge A[ j ] in die // sortierte Liste A[1.. j - 1] ein. i=j–1 while (i > 0 und A[ i ] > key) do A[i + 1] = A[ i ] i=i–1 A[i + 1] = key AuD, Kapitelder 3 Effizienz, WS09/10, C. WS010/11, C.Eckert Eckert // Ende For-Schleife 28