• Keine Ergebnisse gefunden

Der Carry-Look-Ahead-Addierer

13.3 Additionsschaltkreis 101

13.3.3 Der Carry-Look-Ahead-Addierer

13-22 Warum der naive Addierer so lange braucht. 13-22

Der naive Addierer braucht lange, da die Carry-Bits hinten einen Einfluss auf das Ergebnis vorne haben können.

Bei einemCarry-Look-Ahead-Addiererversucht man deshalb, den Einfluss der Carry- Bits schneller zu berechnen.

13-23 Die drei Effekte, die zwei Bits haben können. 13-23

Sei an. . .a1bn. . .b1die Eingabe und betrachten wir zwei Bitsai und bi. Ihr Einfluss auf das Carry-Bit lässt sich in drei Klassen unterteilen:

generate Falls beide Bits1sind, erzeugen sieauf jeden Fall ein Carry-Bit, unabhängig davon, was an den niederwertigeren Stellen passiert.

kill Falls beide Bits0 sind, erzeugen sieauf keinen Fall ein Carry-Bit.

propagate Falls genau ein Bit0ist, soreichen sie das Carry-Bit der niederwertigen Bits einfach durch.

13-24 Wie die Effekte zusammenwirken. 13-24

Nehmen wir nun an, der Effekt zweier Bitsai und bi istg,koder p und der Effekt von ai1 undbi1ist ebenfallsg,koderp. Dann ist der Gesamteffekt:

Effekt von ai,bi Effekt vonai1,bi1 Gesamteffekt

g g g

g k g

g p g

p g g

p p p

p k k

k g k

k k k

k p k

13-25 Der Carry-Look-Ahead-Addierer. 13-25

Ein Carry-Look-Ahead-Addierer ist wie folgt aufgebaut:

Zunächst wird parallel in TiefeO(1)für jedes Bitpaar(ai,bi)der Effekt ausgerechnet.

Dann wird für jede Stelle der Effekt ausgerechnet, den alle Bits haben, die nieder- wertiger sind.

Dazu kann man einenPostfixsummeberechnen. Dies geht in TiefeO(log n)und Platz O(n).

Ist für jede Stelle der Übertrag der vorherigen Stellen bekannt, kann die Ausgabe in TiefeO(1)und PlatzO(n)berechnet werden.

Beispiel

Bitposition i 4 3 2 1 0

ai 0 1 1 1

bi 0 0 0 1

Effekt vonai undbi k p p g Gesamteffekt bisi. . . k g g g . . . und folglicher Übertragci 0 1 1 1 Summeai+bi+ci1 0 1 0 0 0

Zusammenfassung dieses Kapitels

13-26 1. Das mathematische Schaltkreismodellabstrahiertvon vielen Details. 13-26

2. Die wichtigsten Schaltkreisklassen sind POLYSIZE,NCi undACi.

3. Man kann Zahlen in TiefeO(log n)und PlatzO(n)addieren.

13 Boole’sche Schaltkreise

13.4 Übungen zu diesem Kapitel 103

Übungen zu diesem Kapitel

Übung 13.1 (Simmulation der Sprache der Palindrome durch Schaltkreise, leicht) Geben Sie eineAC0- oder eineNC1-Schaltkreisfamilie für die Sprache der Palindrome an. Begrün- den Sie auch, warum Ihre Schaltkreisfamilie logspace-uniform ist.

Übung 13.2 (AC versus NC, mittel)

Zeigen Sie, dass für alle i∈N gilt: NCi⊆ACi⊆NCi+1. Folgern Sie daraus, dass für NC :=

S

iNNCi undAC :=S

iNACigilt:AC=NC.

Übung 13.3 (Schaltkreiskomplexität von regulären Sprachen, schwer) Zeigen Sie, dass jede reguläre Sprache inNC1 ist.

Aus Ihrem Beweis sollte einem »geübten Leser« aufgrund Ihrer Beschreibung klar sein, wie der Schaltkreis zu konstruieren ist; es müssen nicht alle Gatter einzeln beschrieben werden.

Tipp:Benutzen Sie die Charakterisierung von regulären Sprachen durch deterministische endliche Automaten und verknüpfen Sie die Zustände eines solchen Automaten ähnlich wie beim Carry- Look-Ahead-Addierer.

104 14 Multiplizieren und Dividieren

14-1 14-1

Kapitel 14

Multiplizieren und Dividieren

Computer rechnen nicht so, wie wir es in der Schule gelernt haben

14-2 14-2

Lernziele dieses Kapitels

1. NC1-Multiplikationsalgorithmus kennen

2. NC2-Divisionsalgorithmus kennen

Inhalte dieses Kapitels

14.1 Multiplikationsschaltkreis 105 14.1.1 Ziel . . . 105 14.1.2 Ein Trick . . . 105 14.1.3 Der Schaltkreis . . . 106

14.2 Divisionsschaltkreis 106

14.2.1 Problemstellung . . . 106 14.2.2 Division in modernen Prozessoren . . . 107 14.2.3 Vorbereitungen . . . 107 14.2.4 Das Newton-Verfahren . . . 108 14.2.5 Der Schaltkreis . . . 109 Übungen zu diesem Kapitel 110

Worum es heute geht

Worum es heute geht

Zwei Zahlen zu multiplizieren oder gar zu dividieren ist eine Kunst für sich. Beide Ope- rationen sind so grundlegend, dass die Menschheit sich wirklichvieleGedanken darüber gemacht hat, wie man diese beiden Operationen möglichst effizient hinbekommt. Um so verblüffender erscheint es, dass die Komplexität der Division aus komplexitätstheoretischer Sicht erst im Jahr 2001 endgültig geklärt werden konnte (das Dividieren ist vollständig für TC0, eine Klasse zwischen AC0und NC1).

Dabei erscheinen beide Operationen zunächst ganz einfach, schließlich lernt jedes Kind in der Schule schon recht früh, wie dies geht. Die »Schulmethoden« haben aber den Nachteil, dass sie (a) »sehr sequentiell« sind, insbesondere die Methode zur Division, und (b) quadratischen Aufwand (in der Länge der Zahlen) haben, was bei sehr großen Zahlen – wie sie zum Beispiel in der Kryptologie oft auftreten – zu viel erscheint.

Ist man nicht an einer Parallelisierung interessiert, dann bietet der Algorithmus von Ana- tolij Alexejewitsch Karazuba eine schnellere Methode. Soll es aber parallel gehen, so muss man sich etwas neues ausdenken. Mit etwas Informatiksachverstand sieht man schnell, dass die Multiplikation mit einem Divide-and-Conquer-Algorithmus recht gut parallelisiert wer- den kann, was recht einfach einen NC2-Algorithmus liefert. Für einen NC1-Algorithmus, unser erstes Ziel für dieses Kapitel, ist ein netter kleiner Zusatztrick nötig.

Bei der Division muss man schon mit größeren Kalibern hantieren. In diesem Kapitel wird eine Newton-Iteration für die Division vorgestellt, welche einen NC2-Algorithmus liefert.

Dies ist noch ein sehr kleines Geschütz verglichen mit den mathematischen Schwerge- wichten, die im Beweis für die TC0-Vollständigkeit der Division notwendig sind. Da sie für diese Veranstaltung eine Nummer zu groß sind, lassen wir deshalb lieber die Finger davon.

14 Multiplizieren und Dividieren

14.1 Multiplikationsschaltkreis 105

14.1 Multiplikationsschaltkreis

14.1.1 Ziel

14-4 Die Problemstellung zum Multiplikationsproblem. 14-4

Problemstellung

Für ein gegebenes nwollen wir die Funktionmn:{0,1}2n→ {0,1}2n berechnen.

Sie multipliziert die ersten n Bits der Eingabe mit den zweiten n Bits und liefert das Ergebnis zurück.

Beispiel

m4(01001101) =00110100. m4(00010001) =00000001. Ziel

Eine NC1-Schaltkreisfamilie für die Funktion.

14-5 Wie einNC2-Schaltkreis für die Multiplikation funktioniert. 14-5

1. Mit einem Schaltkreiskonstanter Tiefewerdenn Zahlen ermittelt, deren Summe das gesuchte Produkt ist. (Schulmethode.)

2. Wir wissen schon, dass sich zwei Zahlen in TiefeO(log n)addieren lassen.

3. Addieren wirn Zahlen baumartig, so müssen erhalten wir einen Additionsbaum der TiefeO(log n).

4. Dies liefert eine Gesamttiefe vonO(log2n). Beispiel (Ein Produkt)

1001·1101= 00001001+ 00000000+ 00100100+ 01001000= 00001001+ 01101100= 01110101