Rechnerstrukturen WS 2012/13 ◮ Repräsentation von Daten ◮ Repräsentation von Texten (Wiederholung) ◮ Repräsentation ganzer Zahlen (Wiederholung) ◮ Repräsentation rationaler Zahlen (Wiederholung) ◮ Repräsentation anderer Daten ◮ Boolesche Funktionen und Schaltnetze ◮ Einleitung ◮ Boolesche Algebra ◮ Repräsentationen boolescher Funktionen ◮ Normalformen boolescher Funktionen ◮ Repräsentation boolescher Funktionen mit OBDDs Hinweis: Folien teilweise a. d. Basis von Materialien von Thomas Jansen Fink Rechnerstrukturen ¶·º» 17. Oktober 2012 Repräsentation von Daten Boole. Fkt. 1 Repräsentation von Texten: Unicode Prinzip: Standardisierte numerische Kodierung von Zeichen aktueller Standard Unicode 6.2 (26. September 2012) ◮ verwaltet vom Unicode-Konsortium (http://www.unicode.org) ◮ unterstützt verschiedene Codierungsformate (Unicode Transformation Format): UTF-8, UTF-16, UTF-32 mit 8, 16, 32 Bits ◮ längere Formate erweitern kürzere Formate ◮ vereinbart auch weitere Informationen (z. B. Schreibrichtung, Kombination von Zeichen (Codepoints)) Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 2 Repräsentation ganzer Zahlen: Überblick feste Länge l = 5, (2l = 32, 2l−1 = 16, 2l−1 − 1 = 15) z 1 −1 0 15 −15 16 −16 VZ-Betrag 00001 10001 00000 10000 01111 11111 — — Bias b = 16 10001 01111 10000 Bias b = 15 10000 01110 01111 11111 00001 — 00000 11110 00000 11111 — 1er-K. 00001 11110 00000 11111 01111 10000 — — 2er-K. 00001 11111 00000 01111 10001 — 10000 Zweierkomplement bei weitem gebräuchlichste Darstellung Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 3 Repräsentation rationaler Zahlen Wunsch rationale Zahlen q ∈ Q repräsentieren können Vereinbarung feste Repräsentationslänge l Bits Feste Position des Kommas ⇒ Festkommazahlen Beispiel 24 = 16 1 16 = 22,625 23 =8 0 22 =4 1 +4 21 =2 1 +2 20 =1 0, 2−1 = 0,5 1 +0,5 2−2 = 0,25 0 allgemein bei v Vorkomma- und m Nachkommastellen vP −1 zi · 2i z= 2−3 = 0,125 1 +0,125 i =−m Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 4 Gleitkommazahlen: IEEE-754 1985 z = (−1)s · m · 2e mit s ∈ {0, 1}, e ∈ Z, m ∈ Q und 1 ≤ m < 2 Festlegungen ◮ ◮ ◮ führende 1 der Mantisse“ wird nicht mit abgespeichert (heißt ” implizite Eins“) ” Mantisse in Binärcodierung (Festkommazahlen mit Ziffern ausschließlich hinter dem Komma) Exponent in Exzessdarstellung mit Bias b = 2le −1 − 1 Gesamtlänge Vorzeichen Exponent Mantisse 32 1 8 23 single 64 1 11 52 double Fink Rechnerstrukturen ¶·º» Precision Repräsentation von Daten Boole. Fkt. 5 IEEE 754-1985: ein Beispiel l = 32, ls = 1, le = 8, lm = 23 b = 27 − 1 = 127, emin = −b + 1 = −126, emax = 28 − b − 2 = 127 Wir wollen −3 darstellen. negativ, also Vorzeichenbit 1 Darstellung als Summe von Zweierpotenzen 3 = 2 + 1 = 21 + 20 = 20 + 2−1 · 21 Exponent 1 Exzessdarstellung 1 + b = 128 darstellen 128 = (1000 0000)2 Mantisse 1,1, implizite Eins entfällt, also 100 0000 0000 · · · Ergebnis |{z} 1 1000 0000 0000 0000} | 0000 0000{z | {z0000} 100 VZ Fink Rechnerstrukturen Exponent Mantisse ¶·º» Repräsentation von Daten Boole. Fkt. 6 Repräsentation anderer Daten hier für uns interessant primitive Daten“ ” (von Hardware direkt unterstützt) zentral Programme in der Regel Bitmuster fester Länge (z.B. 4 Byte): Befehl, Operand Problem Was repräsentiert ein Byte im Speicher? kaum verwendet: Fink Rechnerstrukturen Typbits ¶·º» Repräsentation von Daten Boole. Fkt. 7 Repräsentation von Datenfolgen Speicher oft in Worten organisiert Wort ja nach Rechner 2 Bytes, 4 Bytes, . . . heterogene Daten hintereinander in den Speicher schreiben dabei manchmal Wortgrenzen beachten dann leere Zellen (Bytes) möglich homogene Daten Problem Arrays Wie erkennt man das Ende der Folge? ◮ feste Anzahl vereinbaren ◮ Länge am Anfang speichern ◮ spezielles Endezeichen verwenden Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 8 Boolesche Funktionen und Schaltnetze Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 9 Boolesche Funktionen vielleicht schon bekannt Aussagenlogik Satz ist Aussage mit eindeutigem Wahrheitswert Wahrheitswerte wahr, falsch neue zusammengesetzte Aussagen durch Verknüpfung von Aussagen Verknüpfungen ◮ ◮ ◮ Negation (¬, nicht“) ” Konjunktion (∧, und“) ” Disjunktion (∨, oder“) ” Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 10 Definition der Verknüpfungen Seien A, B zwei Aussagen. A Definition Negation falsch wahr ¬A wahr falsch A falsch Definition Konjunktion falsch wahr wahr A falsch Definition Disjunktion falsch wahr wahr Fink Rechnerstrukturen B falsch wahr falsch wahr B falsch wahr falsch wahr ¶·º» A∧B falsch falsch falsch wahr A∨B falsch wahr wahr wahr Repräsentation von Daten Boole. Fkt. 11 Boolesche Algebra Definition 2 Wir nennen (B, ∪, ∩,− ) mit B = {0, 1} und x ∪ y = max{x, y }, x ∩ y = min{x, y }, x = 1 − x für alle x, y ∈ B boolesche Algebra. George Boole, englischer Mathematiker, 1815–1864 beobachte Entsprechungen: Fink Rechnerstrukturen falsch wahr ∧ ∨ ¬ ¶·º» ⇔ ⇔ ⇔ ⇔ ⇔ 0 1 ∩ ∪ − Repräsentation von Daten Boole. Fkt. 12 Rechengesetze Satz 3 In der booleschen Algebra (B, ∪, ∩,− ) gilt für alle x, y , z ∈ B: Kommutativität: x ∪ y = y ∪ x, x ∩ y = y ∩ x Assoziativität: (x ∪ y ) ∪ z = x ∪ (y ∪ z), (x ∩ y ) ∩ z = x ∩ (y ∩ z) Distributivität: x ∩ (y ∪ z) = (x ∩ y ) ∪ (x ∩ z), x ∪ (y ∩ z) = (x ∪ y ) ∩ (x ∪ z) Neutralelemente: x ∪ 0 = x, x ∩ 1 = x Nullelemente: x ∪ 1 = 1, x ∩ 0 = 0 Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 13 Rechengesetze II Satz 3 (cont.) In der booleschen Algebra (B, ∪, ∩,− ) gilt für alle x, y , z ∈ B auch: Idempotenz: x = x ∪ x = x ∩ x Involution: x = x = ¬¬x Absorption: (x ∪ y ) ∩ x = x, (x ∩ y ) ∪ x = x Resolution: (x ∪ y ) ∩ (x ∪ y ) = y , (x ∩ y ) ∪ (x ∩ y ) = y Komplementarität: x ∪ (y ∩ y ) = x, x ∩ (y ∪ y ) = x de Morgansche Regeln: x ∪ y = x ∩ y , x ∩ y = x ∪ y Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 14 Beweis Absorption Absorption: (x ∪ y ) ∩ x = x x 0 0 1 1 y 0 1 0 1 Fink Rechnerstrukturen x ∪y 0 1 1 1 linke Seite (x ∪ y ) ∩ x 0 0 1 1 rechte Seite x 0 0 1 1 ¶·º» √ √ √ √ Repräsentation von Daten Boole. Fkt. 15 Repräsentationen boolescher Funktionen Definition 4 Seien n, m ∈ N. Eine Funktion f : B n → B m heißt boolesche Funktion. Notation B n = Menge aller n-stelligen Tupel über B Beispiel B 2 = {(0, 0), (0, 1), (1, 0), (1, 1)} Anzahl boolescher Funktionen boolesche Funktion f : B n → B m als Wertetabelle darstellbar mit |B n | = 2n Zeilen und |B m | = 2m Möglichkeiten je Zeile ⇒ 2m 2n Beispiel Fink Rechnerstrukturen n = 2m·2 boolesche Funktionen f : B n → B m 2 21·2 = 24 = 16 boolesche Funktionen f : B 2 → B ¶·º» Repräsentation von Daten Boole. Fkt. 16 Alle booleschen Funktionen f : B 2 → B x y f1 f2 f3 f4 f5 f6 f7 f8 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 Nullfkt. AND 0 ∧ Proj. x Proj. XOR OR y ⊕ ∨ x y f9 f10 f11 f12 f13 f14 f15 f16 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 NOR Äquiv. Negation Negation Impl. NAND Einsfkt. ⇔ ¬y ¬x ⇒ 1 Verwenden im Weiteren ∧ (Konjunktion), ∨ (Disjunktion), ¯ (Negation) Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 17 Darstellung boolescher Funktionen gerade gesehen x 0 0 1 1 y 0 1 0 1 Wertetabelle (Orientierung meistens wie hier) f7 0 1 1 0 bei fester Reihenfolge Wertevektor f7 : (0, 1, 1, 0) Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 18 Index und Minterm Index 0 1 2 3 x 0 0 1 1 y 0 1 0 1 f7 0 1 1 0 nicht einschlägig einschlägig einschlägig nicht einschlägig Definition Die boolesche Funktion, für die nur der Index i einschlägig ist, heißt Minterm zum Index i . Ein Minterm ist nur mit Negationen und Konjunktionen darstellbar: ( 0 xj xj = 1 xj und dann Konjunktion all dieser Literale (= ˆ [negierte] Variable) Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 19 Beispiel zu Index und Minterm Index 0 1 2 3 x1 0 0 1 1 x2 0 1 0 1 f7 0 1 1 0 nicht einschlägig einschlägig einschlägig nicht einschlägig Beispiel Minterm zum Index 2 = (1 0)2 , Index 0 1 2 3 Fink Rechnerstrukturen x1 0 0 1 1 x2 0 1 0 1 x1 x2 0 0 1 0 also m2 (x1 , x2 ) = x1 ∧ x2 Hinweis: In der Regel abkürzende Notation der Konjunktion, z.B.: x1 x2 x1 ∧ x2 ¶·º» Repräsentation von Daten Boole. Fkt. 20 Normalformen Für wie viele Eingaben liefert ein Minterm 1? klar für genau 1 Folgerungen ◮ Disjunktion aller Minterme zu einschlägigen Indizes einer booleschen Funktion f ist wieder f ◮ XOR-Verknüpfung aller Minterme zu einschlägigen Indizes einer booleschen Funktion f ist wieder f Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 21 Normalformen Definition 8 ◮ Die Darstellung von f als Disjunktion all ihrer Minterme zu einschlägigen Indizes heißt disjunktive Normalform (DNF). ◮ Die Darstellung von f als XOR-Verknüpfung all ihrer Minterme zu einschlägigen Indizes heißt Ringsummen-Normalform (RNF). Anmerkung Normalformen sind eindeutig. Index x y 0 0 0 Beispiel 1 0 1 2 1 0 3 1 1 DNF von f7 x y ∨ x y Fink Rechnerstrukturen f7 0 1 1 0 Minterm xy xy xy xy RNF von f7 ¶·º» Repräsentation von Daten Boole. Fkt. xy ⊕xy 22 Funktionale Vollständigkeit Beobachtung jede boolesche Funktion f : B n → B nur mittels Konjunktion, Disjunktion und Negation darstellbar (z. B. durch ihre DNF) Definition 5 Eine Menge F von booleschen Funktionen heißt funktional vollständig, wenn sich jede boolesche Funktion durch Einsetzen und Komposition von Funktionen aus F darstellen lässt. Satz 6 {∧, ∨, ¬} ist funktional vollständig. Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 23 Funktionale Vollständigkeit Gibt es kleinere funktional vollständige Mengen? Behauptung Beobachtung {∨, ¬} und {∧, ¬} sind beide funktional vollständig. Zum Beweis genügt es zu zeigen, dass {∧, ∨, ¬} darstellbar ist. Beweis. Anwendung der de Morgan-Regeln (Satz 3) x ∨ y = x ∧ y ⇒ {∨} mit {∧, ¬} darstellbar x ∧ y = x ∨ y ⇒ {∧} mit {∨, ¬} darstellbar Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 24 Kleinste funktional vollständige Mengen Wie viele Funktionen für funktionale Vollständigkeit mindestens? Satz 7 {NAND} ist funktional vollständig. Beweis. Es genügt, {¬, ∨} mit NAND darzustellen. x ¬x NAND(x, x) ¬x = NAND(x, x) 0 1 1 1 0 0 x ∨ y = NAND(NAND(x, x), NAND(y , y )) x y x ∨ y ¬x ¬y NAND(NAND(x, x), NAND(y , y )) 0 0 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 Fink Rechnerstrukturen ¶ · º » Repräsentation von Daten Boole. Fkt. 1 0 0 1 1 1 25 Vorsicht, Notation! Anmerkung x y 6= x y x y = ¬(x y ) x y = (¬x) ∧ (¬y ) x 0 0 1 1 Fink Rechnerstrukturen y 0 1 0 1 xy 1 1 1 0 xy 1 0 0 0 ¶·º» Repräsentation von Daten Boole. Fkt. 26 Maxterme Minterm-Darstellung betont Funktionswert 1. Definition Die boolesche Funktion, für die nur der Index i nicht einschlägig ist, heißt Maxterm zum Index i . Beobachtung Definition Maxterm unterscheidet sich nur in nicht“ ” von Definition Minterm Beobachtung mi Minterm zum Index i , Mi Maxterm zum Index i ⇒ Mi = ¬mi Beobachtung Konjunktion aller Maxterme zu nicht einschlägigen Indizes einer booleschen Funktion f ist wieder f Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 27 Normalformen Fortsetzung von Definition 8 ◮ Die Darstellung von f als Konjunktion all ihrer Maxterme zu nicht einschlägigen Indizes heißt konjunktive Normalform (KNF). Beispiel Index 0 1 2 3 4 5 6 7 Fink Rechnerstrukturen x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 fbsp 1 0 0 0 1 1 1 1 x ∨y ∨z 1 0 1 1 1 1 1 1 ¶·º» x ∨y ∨z 1 1 0 1 1 1 1 1 x ∨y ∨z 1 1 1 0 1 1 1 1 Repräsentation von Daten Boole. Fkt. 28 Darstellungen boolescher Funktionen Wozu stellt man boolesche Funktionen dar? ◮ Realisierung ◮ Verifikation ◮ Fehleranalyse ◮ Synthese ◮ ... Wo stellt man boolesche Funktionen dar? ◮ auf dem Papier ◮ im Computer Probleme ◮ Wertetabelle, Wertevektor immer groß ◮ Normalformen oft groß ◮ Normalformen unterstützen gewünschte Operationen kaum Fink Rechnerstrukturen Wunsch ¶·º» andere Repräsentation Repräsentation von Daten Boole. Fkt. 29 Eine Datenstruktur für boolesche Funktionen Ziel f : B n → B darstellen Wünsche ◮ zu einer Belegung x1 , x2 , . . . , xn schnell den Funktionswert f (x1 , x2 , . . . , xn ) ausrechnen können ◮ Funktionen schnell auf Gleichheit testen können ◮ Funktionen schnell manipulieren (z. B. eine Variable konstant setzen) können ◮ schnell eine Null-Eingabe/eine Eins-Eingabe finden können ◮ Funktionen möglichst klein repräsentieren ◮ ... Ordered Binary Decision Diagrams Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 30 OBDDs erster Schritt dann ◮ ◮ ◮ ◮ ◮ ◮ Festlegen einer Variablenordnung π (z. B. π = (x3 , x1 , x2 , x4 )) x4 1 Baue πOBDD aus Knoten oder 1 x3 x2 nach folgenden Regeln: und Kanten Knoten mit Variablen, 0 oder 1 markiert Kanten mit 0 oder 1 markiert Variablen-Knoten mit je einer ausgehenden 0- und 1-Kante Konstanten-Knoten ohne ausgehende Kante genau ein Knoten ohne eingehende Kante Kanten zwischen Variablenknoten beachten π Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 31 πOBDD – Ein Beispiel Variablenordnung π = (x1 , x2 , x3 ) Beispiel Auswertung f (1, 0, 1) x1 = 1, x2 = 0, x3 = 1 f (1, 0, 1) = 1 x1 0 1 x2 x2 0 1 x3 0 Fink Rechnerstrukturen 1 0 x3 1 x3 1 0 1 0 0 0 0 1 ¶·º» x3 1 0 1 1 1 1 Repräsentation von Daten Boole. Fkt. 32 πOBDD-Größe gleichartige Senken verschmelzen x1 0 1 x2 x2 0 1 x3 1 x3 0 Fink Rechnerstrukturen 0 0 1 1 x3 x3 0 1 0 ¶·º» 1 0 1 Repräsentation von Daten Boole. Fkt. 33 πOBDD-Größe gleichartige Knoten verschmelzen x1 0 1 x2 x2 0 1 x3 1 x3 0 Fink Rechnerstrukturen 0 0 1 1 x3 0 1 0 ¶·º» 1 Repräsentation von Daten Boole. Fkt. 34 πOBDD-Größe Knoten ohne Einfluss eliminieren x1 0 1 x2 x2 0 1 x3 1 1 x3 0 Fink Rechnerstrukturen 0 0 1 0 ¶·º» 1 Repräsentation von Daten Boole. Fkt. 35 πOBDD-Größe Knoten ohne Einfluss eliminieren x1 0 1 x2 0 1 x3 1 x3 0 Fink Rechnerstrukturen 0 1 0 ¶·º» 1 Repräsentation von Daten Boole. Fkt. 36 πOBDD-Größe Knoten ohne Einfluss eliminieren x1 0 1 x2 0 Größe minimal 1 x3 1 0 Fink Rechnerstrukturen 0 ¶·º» 1 Repräsentation von Daten Boole. Fkt. 37 Alternative Darstellung eines πOBDDs x1 x2 x3 Fink Rechnerstrukturen 0 ¶·º» 1 Repräsentation von Daten Boole. Fkt. 38 OBDD-Reduzierung Satz 9 Die erschöpfende Anwendung der ◮ Verschmelzungsregel Knoten mit gleicher Markierung und ” gleichen Nachfolgern können verschmolzen werden“ und ◮ Eliminationsregel Ein Knoten mit gleichem Null- und ” Einsnachfolger kann entfernt werden“ in beliebiger Reihenfolge führt zum reduzierten πOBDD. reduziert = minimale Größe und eindeutig Fink Rechnerstrukturen ¶·º» Repräsentation von Daten Boole. Fkt. 39