Praktische Grenzen der Berechenbarkeit - Informatik
Praktische Grenzen der Berechenbarkeit - Informatik Praktische Grenzen der Berechenbarkeit - Informatik
Satz 5. Werden zwei polynomiale Algorithmen nacheinander ausgeführt, ist der resultierende Gesamtalgorithmus polynomial. Beweis. Seien f(n) und g(n) die Komplexitäten der beiden Algorithmen mit f(n) = ck · n k + ck−1 · n k−1 + · · · + c1 · n + c0 ∈ O(n k ) , g(n) = dl · n l + dl−1 · n l−1 + · · · + d1 · n + d0 ∈ O(n l ) . Ohne Beschränkung der Allgemeinheit gelte l ≥ k. Setzt man nun ci := 0 für i = k + 1, . . .,l, so ergibt sich für den Gesamtalgorithmus die Komplexität f(n) + g(n) = (cl + dl) · n l + (cl−1 + dl−1) · n l−1 + · · · + (c1 + d1) · n + c0 + d0 ∈ O(n l ) . Satz 6. Wird ein Teil eines polynomialen Algorithmus durch ein Modul ersetzt, das selbst einen polynomialen Algorithmus enthält, ist der resultierende Gesamtalgorithmus polynomial. Beweis. Es sei f(n) die Komplexität des Algorithmus, in dem ein Teil durch ein Modul mit der Komplexität g(n) ersetzt wird. f(n) = ck · n k + ck−1 · n k−1 + · · · + c1 · n + c0 ∈ O(n k ) , g(n) = dl · n l + dl−1 · n l−1 + · · · + d1 · n + d0 ∈ O(n l ) . Die Komplexität h(n) des resultierenden Algorithmus hängt davon ab, in welchem Umfang die ersetzten Anweisungen in die Berechnung eingehen. In jedem Fall gilt jedoch mit h(n) ≤ f(g(n)) f(g(n)) = ck · (dl · n l + dl−1 · n l−1 + · · · + d1 · n + d0) k + ck−1 · (dl · n l + dl−1 · n l−1 + · · · + d1 · n + d0) k−1 + · · · + c1 · (dl · n l + dl−1 · n l−1 + · · · + d1 · n + d0) + c0 Demnach hat der Gesamtalgorithmus maximal die Komplexität n k+l . Die Klasse der polynomialen Algorithmen ist also abgeschlossen bezüglich der Hintereinanderausführung und der Ersetzung. Dies bildet eine wichtige Grundlage für die folgende 14
Definition 7. Ein Algorithmus heißt praktisch anwendbar (durchführbar, handhabbar, engl. tractable), wenn er polynomial ist, andernfalls praktisch nicht anwendbar (nicht durchführbar, nicht handhabbar, engl. intractable). Zusammen mit den vorangegangenen Sätzen sind durch diese Definition grundlegende Forderungen erfüllt, die man intuitiv an anwendbare Algorithmen stellt: — Werden zwei anwendbare Algorithmen nacheinander ausgeführt, so soll auch der resultierende Algorithmus als anwendbar bezeichnet werden. — Wird in einem anwendbaren Algorithmus ein Teil durch ein Modul ersetzt, das einen anwendbaren Algorithmus enthält, so soll auch der neue Gesamtalgorithmus als anwendbar bezeichnet werden. In Abschnitt 2 wurde bereits anhand von Beispielen argumentiert, dass auch eine weitere wichtige Forderung erfüllt ist: Nicht anwendbare Algorithmen werden auch auf zukünftigen Computern nicht anwendbar sein. Diesen Sachverhalt gilt es nun etwas formaler zu fassen. Durch die Church–Turing–These wurde der Begriff der Berechenbarkeit auf die Existenz einer Turingmaschine zurückgeführt. Analog dazu lässt sich auch ein Algorithmus als polynomial bezeichnen, wenn er auf einer Turingmaschine polynomiale Komplexität besitzt. Dies ist möglich, weil die Transformation einer beliebigen Beschreibung eines Algorithmus in eine äquivalente Turingtafel stets mit polynomialem Aufwand durchführbar ist. Wenn auch nicht absehbar ist, welche Computer uns in der Zukunft zur Verfügung stehen werden, rechtfertigt dies doch die folgende These: Satz 8 (These der sequentiellen Berechenbarkeit). Alle sequentiellen Computer besitzen ähnliche polynomiale Berechnungszeiten. Dadurch ist gewährleistet, dass unsere Definition der Anwendbarkeit von Algorithmen maschinenunabhängig ist. Zwar lässt sich die These nicht beweisen, doch sprechen alle bisherigen Erkenntnisse über sequentielle Computer für ihre Gültigkeit. In der Praxis ist bei der Klassifizierung eines Algorithmus als nicht durchführbar dennoch Vorsicht geboten. Man muss stets berücksichtigen, dass es sich bei allen bisherigen Betrachtungen um die asymptotische Komplexität handelt, also um eine Abschätzung der Laufzeit bei sehr großem Umfang der Eingabedaten. Es können daher auch exponentielle Algorithmen praktisch brauchbar sein, wenn der Exponent einen sehr kleinen Vorfaktor hat und zu hohe Laufzeiten aufgrund der konkret gegebenen Daten nicht vorkommen können. Auch haben exponentielle Algorithmen ihre praktische Relevanz, wenn es darum geht, eine angemessene Zeit nach einer optimalen Lösung eines Problems zu suchen, bevor man sich mit einer Näherungslösung zufrieden gibt. Umgekehrt können auch polynomiale Algorithmen unbrauchbar sein und sogar ungünstiger als exponentielle. 15
- Seite 1 und 2: Praktische Grenzen der Berechenbark
- Seite 3 und 4: Tag Kurs GuV Tag Kurs GuV 1 150 1 1
- Seite 5 und 6: n 20 40 60 80 100 ta1(n) 1540 11480
- Seite 7 und 8: earbeitet, unabhängig davon, wie a
- Seite 9 und 10: darstellt. Aussagekräftige Abschä
- Seite 11 und 12: komplexität tbin(n) der binären S
- Seite 13: Um das oben gestellte Problem der T
- Seite 17 und 18: a c B A C Abbildung 8: Skizze zum K
- Seite 19 und 20: Abbildung 11: Graphen mit bzw. ohne
- Seite 21 und 22: Entscheidungsvariante: Gibt es eine
- Seite 23 und 24: 1 2 3 4 5 2 3 5 2 5 5 6 7 8 5 6 8 5
- Seite 25 und 26: Von zentraler Bedeutung — aber bi
- Seite 27 und 28: Um nun die NP-Vollständigkeit eine
- Seite 29 und 30: 7 8 6 5 1 2 Abbildung 15: Graph zum
- Seite 31 und 32: aw af bw bf cw cf dw df Abbildung 1
- Seite 33 und 34: die Klausel, die dem Teilgraphen en
- Seite 35 und 36: Beispiel 40. Das Problem des Handlu
- Seite 37 und 38: eispielsweise bei der Kreuzung der
- Seite 39: Literatur — Dewdney A. K.: The (n
Definition 7. Ein Algorithmus heißt praktisch anwendbar (durchführbar, handhabbar,<br />
engl. tractable), wenn er polynomial ist, an<strong>der</strong>nfalls praktisch nicht anwendbar<br />
(nicht durchführbar, nicht handhabbar, engl. intractable).<br />
Zusammen mit den vorangegangenen Sätzen sind durch diese Definition grundlegende<br />
For<strong>der</strong>ungen erfüllt, die man intuitiv an anwendbare Algorithmen stellt:<br />
— Werden zwei anwendbare Algorithmen nacheinan<strong>der</strong> ausgeführt, so soll<br />
auch <strong>der</strong> resultierende Algorithmus als anwendbar bezeichnet werden.<br />
— Wird in einem anwendbaren Algorithmus ein Teil durch ein Modul ersetzt,<br />
das einen anwendbaren Algorithmus enthält, so soll auch <strong>der</strong> neue<br />
Gesamtalgorithmus als anwendbar bezeichnet werden.<br />
In Abschnitt 2 wurde bereits anhand von Beispielen argumentiert, dass auch<br />
eine weitere wichtige For<strong>der</strong>ung erfüllt ist: Nicht anwendbare Algorithmen werden<br />
auch auf zukünftigen Computern nicht anwendbar sein. Diesen Sachverhalt gilt es<br />
nun etwas formaler zu fassen. Durch die Church–Turing–These wurde <strong>der</strong> Begriff<br />
<strong>der</strong> <strong>Berechenbarkeit</strong> auf die Existenz einer Turingmaschine zurückgeführt. Analog<br />
dazu lässt sich auch ein Algorithmus als polynomial bezeichnen, wenn er auf<br />
einer Turingmaschine polynomiale Komplexität besitzt. Dies ist möglich, weil die<br />
Transformation einer beliebigen Beschreibung eines Algorithmus in eine äquivalente<br />
Turingtafel stets mit polynomialem Aufwand durchführbar ist. Wenn auch<br />
nicht absehbar ist, welche Computer uns in <strong>der</strong> Zukunft zur Verfügung stehen<br />
werden, rechtfertigt dies doch die folgende These:<br />
Satz 8 (These <strong>der</strong> sequentiellen <strong>Berechenbarkeit</strong>). Alle sequentiellen Computer<br />
besitzen ähnliche polynomiale Berechnungszeiten.<br />
Dadurch ist gewährleistet, dass unsere Definition <strong>der</strong> Anwendbarkeit von Algorithmen<br />
maschinenunabhängig ist. Zwar lässt sich die These nicht beweisen,<br />
doch sprechen alle bisherigen Erkenntnisse über sequentielle Computer für ihre<br />
Gültigkeit.<br />
In <strong>der</strong> Praxis ist bei <strong>der</strong> Klassifizierung eines Algorithmus als nicht durchführbar<br />
dennoch Vorsicht geboten. Man muss stets berücksichtigen, dass es sich bei<br />
allen bisherigen Betrachtungen um die asymptotische Komplexität handelt, also<br />
um eine Abschätzung <strong>der</strong> Laufzeit bei sehr großem Umfang <strong>der</strong> Eingabedaten.<br />
Es können daher auch exponentielle Algorithmen praktisch brauchbar sein, wenn<br />
<strong>der</strong> Exponent einen sehr kleinen Vorfaktor hat und zu hohe Laufzeiten aufgrund<br />
<strong>der</strong> konkret gegebenen Daten nicht vorkommen können. Auch haben exponentielle<br />
Algorithmen ihre praktische Relevanz, wenn es darum geht, eine angemessene<br />
Zeit nach einer optimalen Lösung eines Problems zu suchen, bevor man sich mit<br />
einer Näherungslösung zufrieden gibt. Umgekehrt können auch polynomiale Algorithmen<br />
unbrauchbar sein und sogar ungünstiger als exponentielle.<br />
15