Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
150 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN<br />
simuliert und diese wird wiederum von e<strong>in</strong>er Tur<strong>in</strong>gmasch<strong>in</strong>e M mit der Zeitkomplexität<br />
O(n 2 + (t(n)) 4 ) simuliert. Dann berechnet M dieselbe Funktion wie die<br />
RAM, und da n 2 + t(n) 4 e<strong>in</strong> Polynom ist, folgt daraus, dass die Funktion zu FP<br />
gehört.<br />
Schlußbemerkung: Die Klasse P ist unabhängig von unserer Wahl des Berechnungsmodells:<br />
wir konnten, statt TM, e<strong>in</strong>e beliebige determ<strong>in</strong>istische Variante von TM<br />
nehmen, um dieselbe Klasse zu beschreiben. Auch RAM, obwohl es e<strong>in</strong> viel stärkeres<br />
Modell ist, ergibt für Zahlenfunktionen ke<strong>in</strong>e größere Klasse von Funktionen,<br />
die polynomiale Zeitkomplexität haben, als die Klasse FP.<br />
6.5 Geometrische Algorithmen und reelle RAM<br />
Viele Algorithmen, speziell <strong>in</strong> der Computer-Graphik, arbeiten mit geometrischen<br />
Objekten <strong>in</strong> der Ebene oder im Raum, und für ihre Komplexität wird e<strong>in</strong> modifiziertes<br />
Berechnungsmodell benutzt: RAM, die mit reellen Zahlen arbeitet.<br />
Reelle RAM ist genau wie RAM (siehe 4.1) def<strong>in</strong>iert, nur enthält jedes Register<br />
und jedes Feld des E<strong>in</strong>- und Ausgabebandes e<strong>in</strong>e reelle Zahl. Auch die Liste aller<br />
Operationen ist gleich (zum Beispiel LOAD i, LOAD ∗i, LOAD !i für e<strong>in</strong>e beliebige<br />
natürliche Zahl i), aber die Operanden von ADD s<strong>in</strong>d reelle Zahlen.<br />
Wie <strong>in</strong> Kapitel 4 gezeigt wurde, s<strong>in</strong>d weitere Operationen (für RAM oder reelle<br />
RAM) e<strong>in</strong>fach zu programmieren, zum Beispiel die Multiplikation von zwei Zahlen.<br />
Wir nehmen ferner an, dass Multiplikation und Division an e<strong>in</strong>er reellen RAM so<br />
programmiert werden, dass sie <strong>in</strong> O(1) Schritten durchgeführt werden.<br />
Für die uniforme Komplexität im Fall der reellen RAM def<strong>in</strong>ieren wir die Größe<br />
der reellen Zahl x = n10 −m als dig(n) + dig(m).<br />
Beispiel 1 (LINIE). E<strong>in</strong>gabe: Punkte a, b und r der Ebene, a = b<br />
Ausgabe: JA, falls r auf der L<strong>in</strong>ie L(a, b), von a und b bestimmt, liegt.<br />
Falls ( )x und ( )y die x- und y-Koord<strong>in</strong>aten bezeichnen, ist die Antwort genau dann<br />
JA, wenn<br />
rx − ax<br />
ry − ay<br />
= bx − ax<br />
by − ay<br />
(im Fall ry = ay und by = ay) oder ganz allgeme<strong>in</strong>: genau wenn<br />
(rx − ax)(by − ay) = (bx − ax)(ry − ay).<br />
Diese Entscheidung dauert nur O(1) Schritte auf e<strong>in</strong>er reellen RAM.<br />
Beispiel 2 (ÜBER DER LINIE). E<strong>in</strong>gabe: Punkte a, b und r <strong>in</strong> der Ebene mit<br />
ax = bx<br />
Ausgabe: JA, falls r über der L<strong>in</strong>ie L(a, b) liegt.<br />
<br />
<br />
•<br />
<br />
<br />
<br />
<br />
• <br />
a<br />
b<br />
r<br />
•<br />
r über L(a, b), mit k > 0<br />
•a <br />
<br />
<br />
<br />
• b<br />
r<br />
•<br />
r über L(a, b), mit k < 0