23.06.2013 Aufrufe

finale Version des Vorlesungsskripts - ZIB

finale Version des Vorlesungsskripts - ZIB

finale Version des Vorlesungsskripts - ZIB

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.

4<br />

4.3 Datenstrukturen zur Speicherung von Graphen<br />

1 2<br />

Abbildung 4.1: Ungerichteter Graph zur Kantenliste 4, 6, 1, 2, 2, 3, 4, 3, 3, 2, 2, 2, 1, 3.<br />

terminiert und „ja“ oder „nein“ antwortet. Das Halteproblem ist nun das folgende: Gegeben<br />

seien eine Turing-Maschine M und eine Eingabe w, hält M auf w? Dieses Halteproblem<br />

ist beweisbar unentscheidbar. Der Satz von Rice zeigt noch etwas viel Stärkeres. Alle<br />

„interessanten“ (das kann man präzise definieren) Eigenschaften von Turing-Maschinen<br />

sind unentscheidbar.<br />

David Hilbert hat im Jahr 1900 eine Liste von 23 wichtigen, seinerzeit ungelösten,<br />

mathematischen Problemen vorgelegt. Sein zehntes Problem lautete: Gibt es einen Algorithmus,<br />

der für eine beliebige diophantische Gleichung entscheidet, ob sie lösbar ist?<br />

Diophantische Gleichungen sind von der Form p(x1, . . . , xn) = 0, wobei p ein Polynom<br />

mit ganzzahligen Koeffizienten ist. J. Matijassewitsch hat 1970 in seiner Dissertation bewiesen,<br />

dass es keinen solchen Algorithmus gibt. Um Lösungen von allgemeinen diophantischen<br />

Gleichungen zu finden, muss man also spezielle Fälle betrachten, gute Einfälle<br />

und Glück haben.<br />

4.3 Datenstrukturen zur Speicherung von Graphen<br />

Wir wollen hier einige Methoden skizzieren, mit deren Hilfe man Graphen und Digraphen<br />

speichern kann, und ihre Vor- und Nachteile besprechen. Kenntnisse dieser Datenstrukturen<br />

sind insbesondere dann wichtig, wenn man laufzeit- und speicherplatzeffiziente (oder<br />

gar -optimale) Co<strong>des</strong> von Algorithmen entwickeln will.<br />

4.3.1 Kanten- und Bogenlisten<br />

Die einfachste Art, einen Graphen oder Digraphen zu speichern, ist die Kantenliste für<br />

Graphen bzw. die Bogenliste für Digraphen. Ist G = (V, E) ein Graph mit n = |V |<br />

Knoten und m = |E| Kanten, so sieht eine Kantenliste wie folgt aus:<br />

n, m, a1, e1, a2, e2, a3, e3, . . . , am, em,<br />

wobei ai, ei die beiden Endknoten der Kante i sind. Die Reihenfolge <strong>des</strong> Aufführens der<br />

Endknoten von i bzw. den Kanten selbst ist beliebig. Bei Schleifen wird der Endknoten<br />

zweimal aufgelistet.<br />

Eine mögliche Kantenliste für den Graphen aus Abbildung 4.1 ist die folgende:<br />

4, 6, 1, 2, 2, 3, 4, 3, 3, 2, 2, 2, 1, 3.<br />

3<br />

69

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!