Schwierigkeit mathematischer Probleme

Werbung
Grundlagen: Kombinatorische Explosion
Was unterscheidet schwierige von leichten Problemen?
Melanie Herzog∗
Wolfgang Ferdinand Riedl†
Lehrstuhl M9 für Angewandte Geometrie und Diskrete Mathematik
Technische Universität München
1 Einführung
In der Mathematik wird häug von Problemen gesprochen. Diese haben eine bestimmte
Form: einfach ausgedrückt besteht ein Problem aus Eingabedaten und einer Aufgabe (d. h.
einer Ausgabe, welche berechnet werden soll). Dies könnte zum Beispiel sein, aus einer
Menge von gegebenen Zahlen die Gröÿte zu nde:
Beispiel 1.1 (Gröÿte
Zahl Problem):
Eingabe:
n
Ausgabe:
Die Gröÿte der
Zahlen
x1 , . . . , x n
n Zahlen.
Ein anderes Beispiel könnte es sein, die beiden Zahlen zu nden, welche die kleinste Dierenz haben:
Beispiel 1.2 (Kleinste
Differenz Problem):
Eingabe:
n
Ausgabe:
Die beiden Zahlen mit der kleinsten Dierenz.
Um das
Zahlen
x1 , . . . , x n
Kleinste Differenz Problem zu lösen, muss man jedes Zahlenpaar einmal be-
trachten. Dabei berechnet man die Dierenz der beiden Zahlen und vergleicht sie mit der
bisher kleinsten Dierenz (die man sich gespeichert hat). Solch grundlegende Operationen
(wie Addition/Subtraktion/Multiplikation/Division oder Vergleich zweier Werte) werden
in der Mathematik als ein Schritt gezählt. Dementsprechend hat man hier für jedes Zahlenpaar zwei Schritte, insgesamt also
2n(n − 1)/2 − 1 = n(n − 1) − 1
Schritte (den ersten
Vergleich kann man sich ja sparen). Bei fünf Zahlen sind das also 19 Schritte, bei zehn
Zahlen 89 und bei 20 Zahlen 379 Schritte.
In der Mathematik werden Probleme nun in einfache und schwere Probleme unterteilt. Der
Unterschied wird in den folgenden zwei Abschnitten erklärt.
2 Einfache Probleme
Mathematisch einfach sind Probleme, welche sich in kurzer Zeit lösen lassen. Natürlich
hängt die benötigte Zeit immer von den Eingabedaten ab. Wenn wir beispielsweise 20
Zahlen gegeben haben brauchen wir länger als wenn wir nur 5 Zahlen bekommen. Deshalb
wird die Laufzeit immer in Abhängigkeit von der Eingabe angegeben. In Beispiel 1.2 haben
wir beispielsweise festgestellt, dass wir
∗
†
n(n − 1) − 1
[email protected]
[email protected]
1
Schritte zur Lösung brauchen.
Denition 2.1 (Mathematisch einfache Probleme):
Ein Problem wird einfach genannt, wenn die zur Lösung nötige Anzahl von Schritten ein
Polynom der Eingabe ist.
Die beiden oben genannten Probleme sind demnach einfach. Das schöne an solchen Problemen ist, dass sie sich sehr schnell und ezient lösen lassen. In der Mathematik wird die
Menge dieser Probleme als die Komplexitätsklasse
P
bezeichnet.
3 Schwierige Probleme
Dies ist bei mathematisch schwierigen Problemen vermutlich anders. Vermutlich deshalb,
weil noch nicht bewiesen ist, dass es Probleme gibt, die nicht einfach sind. Es könnte
durchaus sein, dass sich auch alle Probleme einfach lösen lassen und man lediglich noch
nicht weiÿ, mit welcher Methode.
Ein Phänomen, das häug bei mathematisch schwierigen Problemen auftritt ist das der
kombinatorischen Explosion. Dies kann zum Beispiel bei folgendem Problem beobachtet
werden:
Beispiel 3.1 (Teilmengen
Problem):
Eingabe:
n
Ausgabe:
Eine Teilmenge der
Zahlen
x1 , . . . , x n
n
Zahlen, welche eine bestimmte Eigenschaft
erfüllt.
Die Schwierigkeit des
Teilmengen Problems kommt daher, dass es sehr viele Teilmengen
n Zahlen gibt es 2n Teilmengen, bei fünf Zahlen also 25 = 32, bei 10 Zahlen schon
= 1024 und bei 20 Zahlen sind es sogar mehr als eine Million Teilmengen. Wenn wir
gibt. Für
210
also keine bessere Idee haben, müssen wir im schlimmsten Fall jede einzelne Teilmengen
anschauen und überprüfen, ob sie die gewünschte Eigenschaft hat. Die Anzahl der Schritte
steigt dabei sehr schnell, sehr viel schneller als beim
Kleinste Differenz Problem, wie
man auch in Tabelle 1 sehen kann.
Kleinste Differenz Problem
n
5
Teilmengen Problem
Schritte
Zeit
Schritte
Zeit
19
19ns
89ns
0, 4µs
2, 4µs
3, 6µs
9, 9µs
0, 2ms
32
32ns
1, 0µs
1, 0ms
312h
∼ 73 Jahre
∼ 40 · 1012 Jahre
∼ 10134 Jahre
10
89
20
379
50
2449
61
3559
100
9899
500
244999
1024
1048576
1125899906842624
∼ 2, 30584 · 1018
∼ 1, 26765 · 1030
∼ 3, 27339 · 10150
Tabelle 1: Anzahl nötiger Schritte und Rechenzeit auf einem Computer (bei
109
Schritten
pro Sekunde, was einem Computer mit 1GHz Single-Core Prozessor entspricht)
Tabelle 1 zeigt auch, dass sich mathematisch einfache Probleme selbst bei groÿen Eingaben
mit einem Computer noch schnell ausrechnen lassen, während das Lösen von mathematisch
schwierigen Problemen bei groÿen Problemen viele Menschenleben dauert zumindest
solange man keine Methode kennt um auch diese Probleme schnell lösen zu können. So ist
2
das
Teilmengen Problem für 50 Zahlen noch in 13 Tagen lösbar; bei 61 Zahlen braucht
man schon Menschenleben; für 100 Zahlen wären schon
1012
Jahre nötig (was der Anzahl
Sterne in der Andromeda Galaxie entspricht) und für 500 Zahlen benötigt man mehr Jahre
als es Atome im Universum gibt.
Ein weiteres Problem, welchem wir noch häuger begegnen werden, ist das
Problem:
Beispiel 3.2 (Anordnungen
Anordnungen
Problem):
n
Elementen
x1 , x2 , . . . , xn
n Elementen
Eingabe:
Eine Menge von
Ausgabe:
Wie viele verschiedene Anordnungen der
gibt es?
Diese verschiedenen Anordnungen werden auch Permutationen der Elemente genannt. Für
n
Elemente gibt es
n · (n − 1) · . . . · 2 · 1
verschiedene Anordnungen. Hierfür wurde eine
besondere Schreibweise eingeführt (genannt n Fakultät):
n · (n − 1) · . . . · 2 · 1 = n!
Ihre Anzahl steigt sogar noch stärker als die Anzahl aller Teilmengen (siehe Tabelle 2). Das
heiÿt auch das Testen aller verschiedenen Permutationen (zum Beispiel auf eine bestimmte
Eigenschaft) ist ein schweres Problem.
Anordnungen Problem
n
Schritte
Zeit
5
120
10
3628800
20
∼ 2, 4329 · 1018
∼ 3, 0414 · 1064
∼ 5, 0758 · 1083
∼ 9, 3326 · 10157
∼ 1, 2201 · 101134
0, 1µs
3, 6ms
∼ 77 Jahre
∼ 9 · 1047 Jahre
∼ 2 · 1067 Jahre
∼ 10141 Jahre
∼ 101117 Jahre
50
61
100
500
Tabelle 2: Anzahl nötiger Schritte und Rechenzeit auf einem Computer (bei
109
Schritten
pro Sekunde, was einem Computer mit 1GHz Single-Core Prozessor entspricht)
Bemerkung 3.3 (Kombinatorische Explosion):
Das Phänomen, dass die Anzahl von verschiedenen Anordnungen oder Kombinationen von
Elementen sehr schnell extrem groÿ wird (geradezu explodiert), wird häug auch Kombinatorische Explosion genannt.
Um zu zeigen, dass ein Problem schwierig ist, sagt man häug, dass es mindestens so
schwierig wie ein anderes Problem ist. Das heiÿt, wenn es schnell gelöst werden kann, dann
können auch andere schwierige Probleme schnell gelöst werden. Dies kann man gut an
den folgenden Beispielproblemen der Graphentheorie sehen. In ihnen wird gefragt, ob in
einem Graphen ein Pfad mit einer bestimmten Eigenschaft existiert und ob Pfade einer
bestimmten Mindestlänge existieren.
Beispiel 3.4 (Hamilton
Pfad Problem):
G = (V, E)
Ein Graph
Ausgabe:
Gibt es in diesem Graphen einen Hamilton Pfad von
einen Pfad, der von
s
und zwei Knoten
s 6= t ∈ V
Eingabe:
nach
t
3
s
nach
t
geht und alle Knoten besucht)?
(d. h.
Beispiel 3.5 (Längster
Pfad Problem):
G = (V, E),
Ein Graph
Ausgabe:
Gibt es in diesem Graphen einen Pfad von
K
zwei Knoten
s 6= t ∈ V und eine Zahl K
s nach t, der mindestens
Eingabe:
Kanten benutzt?
Hamilton Pfad Problem schwierig zu lösen ist.
Dann können wir auch sagen, dass das Längster Pfad Problem schwierig ist. Wenn
es nämlich einfach wäre, dann könnten wir mit seiner Hilfe auch das Hamilton Pfad
Problem schnell lösen, weshalb es nicht mehr schwierig wäre. Wie können wir aber das
Angenommen wir wissen, dass das
zweite Problem zu Lösung des ersten benutzen?
Im ersten Problem suchen wir einen Hamilton Pfad, d. h. einen Pfad, der alle Knoten
besucht. Dieser Pfad muss dann
|V | − 1
Kanten benutzen. Um zu testen, ob es einen
solchen Pfad gibt, können wir also einfach mit Hilfe des
fragen, ob es einen Pfad mit mindestens
K = |V | − 1
Längster Pfad Problems
Kanten gibt. Gibt es Ja zurück,
wissen wir, dass dieser Pfad ein Hamilton Pfad sein muss. Andernfalls wissen wir, dass
kein Hamilton Pfad existieren kann. Somit können wir das
zur Lösung des
Hamilton Pfad Problems nutzen.
Längster Pfad Problem
Literatur
[1]
Ravindra K. Ahuja, Thomas L. Magnanti und James B. Orlin. Network ows. Theory,
algorithms, and applications. Englewood Clis, NJ: Prentice Hall Inc., 1993, S. xvi+846.
isbn: 0-13-617549-X.
[2]
Ingo Wegener. Complexity theory. Exploring the limits of ecient algorithms, Translated from the German by Randall Pruim. Berlin: Springer-Verlag, 2005, S. xii+308.
isbn: 978-3-540-21045-0; 3-540-21045-8.
4
Herunterladen