Rechnerstrukturen - LS12

Werbung
Rechnerstrukturen
Michael Engel und Peter Marwedel
TU Dortmund, Fakultät für Informatik
SS 2013
Hinweis: Folien a. d. Basis von Materialien von Gernot Fink und Thomas Jansen
Repräsentation von Daten
15. April 2013
Boole. Fkt.
1
Repräsentation von Daten
Repräsentation von Texten (Wiederholung)
Repräsentation ganzer Zahlen (Wiederholung)
Repräsentation rationaler Zahlen (Wiederholung)
Repräsentation anderer Daten
2
Boolesche Funktionen und Schaltnetze
Einleitung
Boolesche Algebra
Repräsentationen boolescher Funktionen
Normalformen boolescher Funktionen
Repräsentation boolescher Funktionen mit OBDDs
Repräsentation von Daten
Boole. Fkt.
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))
Repräsentation von Daten
Boole. Fkt.
Repräsentation ganzer Zahlen: Überblick
feste Länge ℓ = 5, (2ℓ = 32, 2ℓ−1 = 16, 2ℓ−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
Repräsentation von Daten
Boole. Fkt.
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
2−3
= 0,125
1
+0,125
allgemein bei v Vorkomma- und m Nachkommastellen
vP
−1
zi · 2i
z=
i =−m
Repräsentation von Daten
Boole. Fkt.
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 = 2ℓe −1 − 1
Gesamtlänge
Vorzeichen
Exponent
Mantisse
32
1
8
23
single
64
1
11
52
double
Repräsentation von Daten
Precision
Boole. Fkt.
IEEE 754-1985: ein Beispiel
ℓ = 32, ℓs = 1, ℓe = 8, ℓm = 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}
| {z0000} 100
| 0000 0000{z
VZ
Repräsentation von Daten
Exponent
Mantisse
Boole. Fkt.
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:
Repräsentation von Daten
Typbits
Boole. Fkt.
Repräsentation von Datenfolgen
Speicher oft in Worten organisiert
Wort
je 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
Repräsentation von Daten
Boole. Fkt.
Boolesche Funktionen
und Schaltnetze
Repräsentation von Daten
Boole. Fkt.
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“)
”
Repräsentation von Daten
Boole. Fkt.
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
Repräsentation von Daten
B
falsch
wahr
falsch
wahr
B
falsch
wahr
falsch
wahr
A∧B
falsch
falsch
falsch
wahr
A∨B
falsch
wahr
wahr
wahr
Boole. Fkt.
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:
Repräsentation von Daten
falsch
wahr
∧
∨
¬
⇔
⇔
⇔
⇔
⇔
0
1
∩
∪
−
Boole. Fkt.
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
Repräsentation von Daten
Boole. Fkt.
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
Repräsentation von Daten
Boole. Fkt.
Beweis Absorption
Absorption: (x ∪ y ) ∩ x = x
x
0
0
1
1
y
0
1
0
1
x ∪y
0
1
1
1
Repräsentation von Daten
linke Seite
(x ∪ y ) ∩ x
0
0
1
1
rechte Seite
x
0
0
1
1
√
√
√
√
Boole. Fkt.
Repräsentationen boolescher Funktionen
Definition 4
Seien n, m ∈ N. Eine Funktion f : B n → B m heißt boolesche
Funktion.
B n = Menge aller n-stelligen Tupel über B
Beispiel B 2 = {(0, 0), (0, 1), (1, 0), (1, 1)}
Notation
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
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.
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)
Repräsentation von Daten
Boole. Fkt.
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)
Repräsentation von Daten
Boole. Fkt.
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
ˆ [negierte] Variable)
und dann Konjunktion all dieser Literale (=
Repräsentation von Daten
Boole. Fkt.
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 ,
m2 (x1 , x2 ) = x1 ∧ x2
Index
0
1
2
3
Repräsentation von Daten
x1
0
0
1
1
x2
0
1
0
1
x1 x2
0
0
1
0
also
Hinweis: In der Regel
abkürzende Notation der
Konjunktion, z.B.:
x1 x2
x1 ∧ x2
Boole. Fkt.
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
Repräsentation von Daten
Boole. Fkt.
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
0 1
1
2
1 0
1 1
3
DNF von f7 x y ∨ x y
Repräsentation von Daten
f7
0
1
1
0
Minterm
xy
xy
xy
xy
RNF von f7
xy ⊕xy
Boole. Fkt.
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.
Repräsentation von Daten
Boole. Fkt.
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
Repräsentation von Daten
Boole. Fkt.
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
0 1
1
1
0
1
1 0
1
0
1
1
1
1
1
0
0
1
Repräsentation von Daten
Boole. Fkt.
Vorsicht, Notation!
Anmerkung
x y 6= x y
x y = ¬(x y )
x y = (¬x) ∧ (¬y )
x
0
0
1
1
y
0
1
0
1
Repräsentation von Daten
xy
1
1
1
0
xy
1
0
0
0
Boole. Fkt.
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
Repräsentation von Daten
Boole. Fkt.
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
Repräsentation von Daten
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
Boole. Fkt.
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
Wunsch
Repräsentation von Daten
andere Repräsentation
Boole. Fkt.
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
Repräsentation von Daten
Boole. Fkt.
OBDDs
erster Schritt
dann
◮
◮
◮
◮
◮
◮
Festlegen einer Variablenordnung π
(z. B. π = (x3 , x1 , x2 , x4 ))
x4
1
oder
Baue πOBDD aus Knoten
1 x3
x2
und Kanten
nach folgenden Regeln:
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 π
Repräsentation von Daten
Boole. Fkt.
π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
x3
1
x3
x3
0
1
0
1
0
1
0
1
1
0
0
0
1
1
1
1
Repräsentation von Daten
Boole. Fkt.
πOBDD-Größe
gleichartige Senken verschmelzen
x1
0
1
x2
x2
0
1
x3 1
x3
0
Repräsentation von Daten
0
0
1
1
x3
0
x3
0 1
1
0
1
Boole. Fkt.
πOBDD-Größe
gleichartige Knoten verschmelzen
x1
0
1
x2
x2
0
1
x3 1
x3
0
Repräsentation von Daten
0
0
1
1
x3
0
0 1
1
Boole. Fkt.
πOBDD-Größe
Knoten ohne Einfluss eliminieren
x1
0
1
x2
x2
0
1
x3 1
1
x3
0
Repräsentation von Daten
0
0
1
0
1
Boole. Fkt.
πOBDD-Größe
Knoten ohne Einfluss eliminieren
x1
0
1
x2
0
1
x3 1
x3
0
Repräsentation von Daten
0
1
0
1
Boole. Fkt.
πOBDD-Größe
Knoten ohne Einfluss eliminieren
x1
0
1
x2
0
Größe minimal
1
x3 1
0
Repräsentation von Daten
0
1
Boole. Fkt.
Alternative Darstellung eines πOBDDs
x1
x2
x3
Repräsentation von Daten
0
1
Boole. Fkt.
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
Repräsentation von Daten
Boole. Fkt.
Herunterladen