Tutorium 23 Grundbegriffe der Informatik (6. Sitzung) Tutor: Felix Stahlberg SOFTWARE DESIGN AND QUALITY GROUP Source: pixelio.de KIT – The cooperation of Forschungszentrum Karlsruhe GmbH and Universität Karlsruhe (TH) Agenda - 6. Sitzung Anmerkungen zu den Übungsblättern Homomorphismen Huffman-Codierungen Graphen 2 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Abschreiben Sehr gute Idee: Lerngruppen Halbwegs schlechte Idee: Abschreiben Geht nicht in der Klausur Sehr schlechte Idee: gedankenlos Abschreiben Geht nicht in der Klausur Kein Lerneffekt 3 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Abschreiben (Neue Policy) Halbwegs schlechte Idee: Abschreiben Wenn „offensichtlich“: < die Hälfte der Punkte Sehr schlechte Idee: gedankenlos Abschreiben Wenn „offensichtlich“: 0 Punkte 4 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Formulierung der Induktionsvoraussetzung „Sei π ∈ β0 beliebig aber fest und gelte…“ ist nicht nur Schikane! FALSCHE Alternativen aus den Übungsblättern: „Für alle π ∈ β0 gilt…“ Behauptung im Beweis benutzt. Negativbeispiel: Zeige per Induktion: Für alle π ∈ β0 gilt: 3n=5n IA: n=0: 4*0=5*0=0 Korrekt. IV: Für alle π ∈ β0 gilt: 3n=5n IS: Zeige Behauptung für n+1. Sei m:=n+1 IV gilt dann insbesondere für m. Also: 3(n+1)=3m=5m=5(n+1). 5 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Formulierung der Induktionsvoraussetzung „Sei π ∈ β0 beliebig aber fest und gelte…“ ist nicht nur Schikane! FALSCHE Alternativen aus den Übungsblättern: „Es gibt ein π ∈ β0 für das gilt…“ IV damit zu schwach Negativbeispiel: Zeige per Induktion: Alle π ∈ β0 sind kleiner als 10. IA: n=0: 0<10 Korrekt. IV: Es gibt ein π ∈ β0 , das kleiner als 10 ist IS: Zeige: n+1 ist kleiner als 10. Sei z.B. n=5. Dann ist n+1=6<10 und die Behauptung gilt auch für n+1. 6 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Agenda - 6. Sitzung Anmerkungen zu den Übungsblättern Homomorphismen Huffman-Codierungen Graphen 7 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Homomorphismen (1) Eine Übersetzung ist eine Abbildung π: πΏπ΄ → πΏπ΅ , die die „Bedeutung“ erhält (πΏπ΄ , πΏπ΅ seien Sprachen) Legalität Lesbarkeit Verschlüsselung Kompression Fehlererkennung/Fehlerkorrektur Eine injektive Übersetzung heißt Codierung Die Menge *f(w)|w ∈ πΏπ΄ + (Bildmenge) heißt dann Code Deren Elemente Codewörter heißen 8 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Homomorphismen (2) Seien π΄ und π΅ Alphabete und eine π: π΄ → π΅∗ Abbildung. Definiere zu π die Funktion π∗∗ : π΄∗ → π΅∗ mit π∗∗ ε = ε ∀π€ ∈ π΄∗ : ∀π₯ ∈ π΄: π∗∗ π€π₯ = π∗∗ π€ π(π₯) π∗∗ ist dann ein Homomorphismus π∗∗ heißt π–frei gdw. ∀π₯ ∈ π΄: π(π₯) ≠ ε π∗∗ heißt präfixfrei gdw. ∀π₯, π¦ ∈ π΄: π π₯ ππ π‘ ππππ ππäπππ₯ π£ππ π(π¦) Manchmal schreibt man auch einfach π statt π∗∗ (Warum?) 9 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Homomorphismen (Beispiel) Sei π π = 001, π π = 1101 Berechne π∗∗ (πππ) π∗∗ ε = ε ∀π€ ∈ π΄∗ : ∀π₯ ∈ π΄: π∗∗ π€π₯ = π∗∗ π€ π(π₯) 10 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Homomorphismen (Beispiel - π–Freiheit) Sei π π = 001, π π = π Was ist π€, wenn π π€ = 001001? Genau zwei a, beliebig viele b an beliebiger Stelle => Information geht verloren π∗∗ ε = ε ∀π€ ∈ π΄∗ : ∀π₯ ∈ π΄: π∗∗ π€π₯ = π∗∗ π€ π(π₯) π∗∗ heißt π–frei gdw. ∀π₯ ∈ π΄: π(π₯) ≠ ε 11 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Homomorphismen (Beispiel - Präfixfreiheit) Sei π π = 001, π π = 1101 => h ist präfixfrei Sei π π = 01, π π = 011 => h ist nicht präfixfrei Ist das ein Problem in diesem Fall? Gibt es eine Umkehrabbildung? Sei π π = 01, π π = 010, π π = 1 => h ist nicht präfixfrei Problem: π ππ = π(ππ) = 0101 => Information geht verloren π∗∗ ε = ε ∀π€ ∈ π΄∗ : ∀π₯ ∈ π΄: π∗∗ π€π₯ = π∗∗ π€ π(π₯) π∗∗ heißt präfixfrei gdw. ∀π₯, π¦ ∈ π΄: π π₯ ππ π‘ ππππ ππäπππ₯ π£ππ π(π¦) 12 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Homomorphismen (Abschluss) Formalisiere „Information geht verloren“ π∗∗ nicht injektiv Präfixfreiheit garantiert, wenn alle Codewörter gleich lang und π injektiv Beispiel ASCII Nicht unbedingt die optimale Herangehensweise 13 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Agenda - 6. Sitzung Anmerkungen zu den Übungsblättern Homomorphismen Huffman-Codierungen Graphen 14 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Huffman-Codierung (Motivation) David A. Huffman (August 9, 1925 – October 7, 1999) Pionier der Informatik "My products are my students." Huffman-Kodierung Anwendung fast in Allem, was mit Kompression zu tun hat Kompressionsverfahren gzip, bzip2 Fax, Modems, Computer-Netzwerke, HDTV Optimal für Sequenzen voneinander (statistisch) unabhängiger Symbole (möglichst kurze Codewörter) präfixfrei 15 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Huffman-Codierung (Beispiel) Kodiere w = deedbeef als Wort über {0,1} Primitiver Ansatz Zum Beispiel h(b) = 00, h(d) = 01, h(e) = 10, h(f) = 11 => h(w) = 01 10 10 01 00 10 10 11 => |h(w)| = 16 16 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Huffman-Codierung (Beispiel) Kodiere w = deedbeef als Wort über {0,1} Hufmancodierung Symbol 8 1 4 0 1 0 2 0 e,4 17 02.12.2010 d,2 b,1 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik 1 f,1 Häufigkeit b 1 f 1 d 2 e 4 h(b) = 110, h(f) = 111, h(d) = 10, h(e) = 0 => h(w) = 10 0 0 10 110 0 0 111 => |h(w)| = 14 Huffman-Codierung (Beispiel) Kodiere w = dcaababddabb als Wort über {0,1} Hufmancodierung Symbol 12 0 1 8 0 a,4 18 02.12.2010 4 1 b,4 0 c,1 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik 1 d,3 Häufigkeit a 4 b 4 c 1 d 3 h(a) = 00, h(b) = 01, h(c) = 10, h(d) = 11 => h(w) = 111000000100011111000101 => |h(w)| = 24 ( = |w|*2 Warum?) Huffman-Codierung (Beispiel) Kodiere w = caabdacdab als Wort über {0,1} mit Hufmancodierung 19 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Symbol Häufigkeit a 4 b 2 c 2 d 2 Agenda - 6. Sitzung Anmerkungen zu den Übungsblättern Homomorphismen Huffman-Codierungen Graphen 20 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Graphen (Motivation) Gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz wichtig in der Informatik Reflex des Informatikers: Modelliere Problem als Graphen Beispiele von Problemen, die weniger offensichtlich als Graph modelliert/auf Graphen reduziert werden können Stundenplanproblem Färbungszahl von Landkarten Positionierungsproblem von Geldautomaten Hochintegrierte Schaltkreise (Planarität) (letzendlich) Modellierung objektorientierter Software- oder Prozessentwürfen (UML) uvm. 21 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Gerichtete Graphen (1) Eingangsgrad: 1 Ausgangsgrad: 0 Knoten Eingangsgrad: 2 Ausgangsgrad: 2 0 3 1 2 Schlinge Kante Gerichteter Graph ist ein 2-Tupel G = (V,E) mit V ist Knotenmenge und E ist Kantenmenge 22 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Gerichtete Graphen (2) 0 3 1 2 Pfad (3, 2, 0, 1) 23 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Gerichtete Graphen (3) 0 3 1 2 Pfad (0, 3, 3, 3) 24 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Gerichtete Graphen (4) 0 3 1 2 3-Zyklus (2, 0, 3, 2) 25 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Gerichtete Graphen (Baum) Wurzel ∃π ∈ π: ∀π£ ∈ π: ∃ πππππ’ πππ ππππ π£ππ π ππππ π£ Innere Knoten Blätter 26 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Gerichtete Bäume (Alternative Definitionen?) ∃π ∈ π: ∀π£ ∈ π: ∃ πππππ’ πππ ππππ π£ππ π ππππ π£ ππ πΊ mit G=(V,E) ist Graph ist äquivalent zu G ist zyklenfrei? G ist zyklenfrei und weder transitiv, noch symmetrisch, noch reflexiv? Die Eingangsgrade aller Knoten in V sind kleiner oder gleich 1 Die Wurzel hat Eingangsgrad 0, alle anderen Eingangsgrad gleich 1 Zusätzlich G noch zyklenfrei? Scheint korrekt zu sein.. 27 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik Fragen? 28 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik http://xkcd.com/197/ 29 02.12.2010 Felix Stahlberg: www.das-tutorium.de Tutorium 23 für Grundbegriffe der Informatik