18.09.2013 Aufrufe

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

132 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN<br />

zifikation realisierbar ist. Trotz e<strong>in</strong>igen Wochen <strong>in</strong>tensiven Versuchens ist es Ihnen<br />

nicht gelungen, das Programm zu schreiben. Was jetzt? Wenn Sie die Produktspezifikation<br />

analysieren und feststellen, dass sie sehr allgeme<strong>in</strong> formuliert ist, liegt es<br />

vielleicht an der Allgeme<strong>in</strong>heit und nicht an Ihrer Unfähigkeit. Es wäre z.B. toll,<br />

wenn Sie zeigen können, dass das von Ihnen verlangte Programm eigentlich auch<br />

das Halteproblem lösen könnte – dann können Sie Ihrem Chef beweisen, dass er<br />

unlösbare Aufgaben erteilt. Das ist aber leider nicht sehr wahrsche<strong>in</strong>lich, denn das<br />

Halteproblem ist doch sehr allgeme<strong>in</strong>. Also versuchen Sie zu zeigen, dass Ihr Programm<br />

e<strong>in</strong>es von den hunderten N P-vollständiger Problemen lösen würde – das<br />

zeigt nicht, dass die Aufgabe pr<strong>in</strong>zipiell nicht effektiv implementierbar wäre, aber<br />

dass es schon e<strong>in</strong>er Schar ausgezeichneter Programmierer nicht gelungen ist, e<strong>in</strong>en<br />

effizienten Algorithmus zu entwickeln.<br />

6.1 Beispiele effizienter Algorithmen<br />

In diesem Abschnitt illustrieren wir e<strong>in</strong>e genaue Analyse der Effizienz von Algorithmen<br />

an e<strong>in</strong>igen wichtigen Beispielen von Graphen-Algorithmen. E<strong>in</strong> gerichteter<br />

Graph G = (V, E), wobei V die Menge aller (n) Knoten und E die Menge aller<br />

Kanten (d.h. geordneten Paaren von Knoten) ist, wird gewöhnlich durch se<strong>in</strong>e<br />

n × n-Adjazenzmatrix<br />

repräsentiert, wobei<br />

aij =<br />

(aij)<br />

<br />

1 falls (i, j) e<strong>in</strong>e Kante <strong>in</strong> E ist<br />

0 sonst<br />

Oder durch Adjazenzlisten, d.h., durch n l<strong>in</strong>eare Listen, wobei die i-te Liste alle<br />

Knoten j mit (i, j) ∈ E enthält und die heads (Listenköpfe) <strong>in</strong> e<strong>in</strong>em Array<br />

gespeichert werden. Beispiel: für den gerichteten Graphen<br />

<br />

1<br />

<br />

<br />

5<br />

<br />

<br />

<br />

<br />

2<br />

<br />

3 <br />

<br />

4<br />

haben wir die Adjazenzmatrix der Gesamtgröße m = n 2<br />

⎛<br />

0<br />

⎜<br />

⎜0<br />

⎜<br />

⎜0<br />

⎝0<br />

1 0<br />

1 1<br />

0 0<br />

0 1<br />

⎞<br />

0 0<br />

1 0 ⎟<br />

0 0 ⎟<br />

0 1⎠<br />

1 0 0 0 0<br />

und die Adjazenzlisten der Gesamtgröße m = n + k

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!