Rechnerstrukturen WS 2012/13

Werbung
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
Herunterladen