Hamilton Kreise

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

== Einführung ==

=== Definitionen Graphentheorie ===

==== Einfacher Weg ====
Für $n ≥ 2$ nennt man einen Graphen $P_n$ mit der Knotenmenge $V(P_n)$ = {$v_0$, $v_1$, . . . , $v_n$} und der Kantenmenge $E(P_n)$ = {{$v_0$, $v_1$}, {$v_1$, $v_2$}, . . . , {$v_{n−1}$, $v_n$}} einen einfachen Weg der Länge $n$, sofern keine Kante und kein Knoten mehrfach durchlaufen wird. 

[[Bild:Jowolf_EinfacherWegCEFG.png]]

siehe auch: [[Grundbegriffe_der_Graphentheorie_1|Grundbegriffe der Graphentheorie 1]]

==== Einfacher Kreis ====
Für $n ≥ 3$ nennt man einen Graphen $P_n$ mit der Knotenmenge $V(P_n)$ = {$v_0$, $v_1$, . . . , $v_n$} und der Kantenmenge $E(C_n)$ = {{$v_0$, $v_1$}, {$v_1$, $v_2$}, . . . , {$v_{n−1}$, $v_n$}} einen einfachen Weg (oder Pfad) der Länge $n$, sofern keine Kante und kein Knoten mehrfach durchlaufen wird. 

[[Bild:Jowolf_EinfacherKreisFGJF.png]]

siehe auch: [[Grundbegriffe_der_Graphentheorie_1|Grundbegriffe der Graphentheorie 1]]

==== Bewerteter Graph ====
<table border=1>
      <tr>
        <th width=50%>kantenabhängig</th>
        <th width=50%>knotenabhängig</th>
      </tr>
      <tr>
        <td>Eine Kantenmarkierung eines Graphen $G =(V, E)$ ist eine Abbildung $b:E \rightarrow M$ die jeder Kante $e$ einen Wert oder ein Symbol zuordnet. Für die Bewertung der Kante {$u, v$} schreiben wir dann kurz $b(u, v)$.</td>
        <td>Eine Knotenmarkierung eines Graphen $G =(V, E)$ ist eine Abbildung $b:V \rightarrow M$ die jedem Knoten $v$ einen Wert oder ein Symbol zuordnet.</td>
      </tr>
    </table>
siehe auch: [[Grundbegriffe_der_Graphentheorie_2|Grundbegriffe der Graphentheorie 2]]

==== Dijktra-Algorithmus ====
Der Dijktra-Algorithmus gehört in die Gruppe der Greedy-Algorithmen. Er dient zur Berechnung der kürzesten Pfade von einem bestimmten Startknoten aus. <br>
[[Bild:Jowolf_Dijkstra_Animation.gif]]

siehe auch: [[Kürzeste_Wege_in_Graphen#Algorithmus_von_Dijkstra|Kürzeste Wege in Graphen]]

== Hamilton Graphen ==
Das [[Euler-Kreise_und_-Wege|Euler-Kreis-Problem]] behandelt die Kantenproblematik. Das Hamilton-Kreis-Problem ist das Gegenstück davon. Es handelt sich also um Knotenproblem.
Gegeben ist ein beliebig großer Graph. Wir suchen nun einen Teilgraph, der alle Knoten des Graphen durchläuft und ein möglichst minimal ist.

=== Hamiliton Wege ===
Ein Hamilton Weg ist, wie der Name schon sagt ein Weg, um genau zu sein ein einfacher Weg, da jeder Knoten nur einmal benutzt werden darf. Wenn in dem Graphen ein Hamilton Weg zu finden ist, so nennt man den Graphen auch semihamiltonisch.

<b> Beispiel Hamilton Graph: </b>

Finden sie ein Hamilton Graph.

[[Bild:Jowolf_HamiltonGraph_leer.png]]

=== Hamilton Kreise ===
Wenn wir von einem Hamilton Kreis sprechen ist in dem Graphen ein einfacher Kreis enthalten, der alle Knoten des Graphen berührt. Diesen Graphen nennt man hamiltonisch.<br>
<div style= "background-color:#F5D0A9; padding:10px">
Es sei $G = (V,E)$ ein Graph mit $n$ Knoten. Ein Kreis $C$ auf $G$ heißt Hamilton Kreis, falls er jeden der $n$ Knoten von $G$ genau einmal durchläuft.
$G$ heißt dann auch hamiltonischer Graph.
</div>
<b> Beispiel mit 4 Knoten: </b>
Hier ist nun ein Graph mit 4 Knoten und ziemlich vielen Kanten gegeben. Das macht die Suche relativ einfach. Tragen sie alle möglichen Hamilton Kreise zusammen.

[[Bild:Jowolf_HamiltonKreis-4Knoten.png]]

<!-- <popup name="Lösung">

[[Bild:Jowolf_HamiltonKreis-4Knoten-1.png]]

[[Bild:Jowolf_HamiltonKreis-4Knoten-2.png]]

[[Bild:Jowolf_HamiltonKreis-4Knoten-3.png]]

</popup> -->


<b> Beispiel Bekanntheitsgraph: </b>
Wir wollen eine Geburtstagsparty feiern. Wir haben verschieden Leute eingeladen und wollen nun die beste Tischordnung finden, dass jede Person eine bekannte Person an seiner rechten und eine bekannte an seiner linken Seite hat. Finden Sie einen Kreis, der diese Kriterien erfüllt. Entfernen sie dann alle Kanten, die nicht zum Graphen gehören und ordnen sie den Graphen.

[[Bild:Jowolf_Verwandtschaftsbeziehung.png]]

<!--<popup name="Lösung">

[[Bild:Jowolf_Verwandtschaftbeziehung_marked.png]]

[[Bild:Jowolf_Verwandtschaftbeziehung_fertig.png]]

</popup> -->

Man merkt, dass es immer schwieriger wird ein Hamilton Kreis zu finden. Es gibt kein effizientes Verfahren, der uns die Existenz und das Finden des Kreises erleichtert. Man spricht auch von einem $NP$-vollständigem Problem. <br>

<popup name=Defintion>
Bei einem $NP$-vollständigem Problem handelt es sich um ein Entscheidungsproblem. In unserem Fall jetzt um die Entscheidung, ob ein Graph ein Hamilton Kreis besitzt oder nicht. Ein deterministisch arbeitender Rechner würde dafür polynomiell viel Zeit um Problem zu lösen brauchen. Für die meisten praktischen Probleme gibt es andere Lösungsverfahren, die das Problem in annehmbarer Zeit mit zufriedenstellendem Ergebnis lösen, wie auch in diesem Fall hier gibt es die [[Hamilton_Kreise#Heuristiken|Heuristiken]].

</popup>

==== Naive Suche ====
Gäbe es ein Kriterium für die Existenz eines Hamilton Kreises wäre das Finden des Kreises leichter, da man weiß, dass es mindestens einen Hamilton Kreis gibt. Demzufolge muss es auch mindestens einen minimalen Kreis geben. Durch eine Auflistung aller können wir nun den günstigsten finden. Dies ist ab einer bestimmten Größe nicht mehr effizient. <br>
Unter der Annahme, dass $10^{30}$ Lösungen pro ns berechnet werden können. Kann man zu folgender sehr erstaunlichen Tabelle kommen.
<table border=1>
      <tr>
        <th width=10%>Anzahl Knoten</th>
        <th width=45%>Anzahl möglicher Lösungen</th>
        <th width=45%>Benötigte Zeit</th>
      </tr>
      <tr>
        <td>5</td>
        <td>$12$</td>
        <td></td>
      </tr>
      <tr>
        <td>10</td>
        <td>$181440$</td>
        <td></td>
      </tr>
      <tr>
        <td>15</td>
        <td>$4,36 \cdot 10^{10}$</td>
        <td></td>
      </tr>
     <tr>
        <td>20</td>
        <td>$6,08 \cdot 10^{16}$</td>
        <td></td>
      </tr>
     <tr>
        <td>25</td>
        <td>$3,1 \cdot 10^{23}$</td>
        <td></td>
      </tr>
         <tr>
        <td>30</td>
        <td>$4,42 \cdot 10^{30}$</td>
        <td>4,42 ns</td>
      </tr>
         <tr>
        <td>35</td>
        <td>$1,48 \cdot 10^{38}$</td>
        <td>0,15 s</td>
      </tr>
         <tr>
        <td>40</td>
        <td>$1,02 \cdot 10^{46}$</td>
        <td>118 Tage</td>
      </tr>
         <tr>
        <td>45</td>
        <td>$1,33 \cdot 10^{54}$</td>
        <td>$9,21 \cdot 10^7$ Jahre</td>
      </tr>
         <tr>
        <td>50</td>
        <td>$3,04 \cdot 10^{62}$</td>
        <td>$9,6 \cdot 10^{15}$ Jahre</td>
      </tr>
    </table>
'''Gedankenexperiment:'''<br>
Wir haben einen gegeben Graphen. Hat das hinzufügen einer Kante Auswirkungen auf die Existenz eines Hamilton Graphen bzw Hamilton Kreis.<br>
''JA'' desto mehr Kanten im Graph sind, umso wahrscheinlicher ist es, dass der Graph semihamiltonisch oder sogar hamiltonisch ist. Aus diesem Experiment hat Paul Dirac (1952) als erster Wissenschaftler sich diesem Problem angenommen und den folgenden Satz formuliert: <br> <div style= "padding:10px"> "Jeder Graph $G$ mit $n$ Knoten und Minimalgrad $\delta(G) >= \dfrac{n}{s}$ hamiltonisch" </div>  <br>
Leider ist diese Aussage falsch. Grund dafür ist dieser Graph: <br>
[[Bild:Jowolf_Dirac-Widerlegung.png]] Er besitzt den Minimalgrad von 2 und ist trotzdem hamiltonisch.
<br>
In den folgenden Jahren fand man Bedingungen für die Existenz eines Hamilton Kreises:
<ol>
<li>Entfernt man aus einem hamiltonischen Graphen einen Knoten, so bleibt der Graph zusammenhängend. </li>
<li>Ein hamiltonischer Graph mit $n$ Knoten hat einen Durchmesser (maximaler Abstand zwischen 2 Knoten) von höchstens $\dfrac{n}{2}$  </li>
</ol>
Diese Bedingungen zeigen, dass ein Graph nicht hamiltonisch ist. Dies ist eigentlich nicht das gesuchte Ziel. Man kann es aber trotzdem benutzen. Nachteilig ist außerdem, dass man jeden Knoten probieren muss, um den Minimalgrad der Aussage bestimmen zu können. Die Komplexität ist ???.

==== Anzahl an Hamilton Kreisen ====

'''Voraussetzung:''' Jeder Knoten ist mit jedem Knoten durch eine Kante verbunden.
<div style= "background-color:#F5D0A9; padding:10px">
Im vollständigen Graphen $K_n$ gibt es  $\dfrac{1}{2} (n-1)!$ verschiedene symmetrische Hamilton-Kreise oder $(n-1)!$ verschiedene asymmetrische Hamilton-Kreise</div>
'''Begründung:''' Wir starten an einem beliebigen Startknoten, der eine Anzahl $n$ an Kanten hat. Wir haben $n-1$ Möglichkeiten die richtige Kante zum nächsten Knoten zu wählen. an diesem Knoten habe wir nur noch $n-2$ Kanten zur Wahl, da ???. An dem nächsten Knoten haben wir dann nur noch die Wahl aus $n-3$ Möglichkeiten. Daraus ergibt sich dann $(n-1)!$.

???BILDER???

'''Kritische Betrachtung des Verfahrens:''' Wie viele symmetrische und asymmetrische Hamilton Kreise kann man für eine Knotenanzahl von 20 Städten finden?

<popup name="Lösung">
<table>
<tr>
<td>asymmetrische Hamilton Kreise</td>
<td>120 Billiarden</td>
<tr>
<td>symmetrische Hamilton Kreise</td>
<td>60 Billiarden</td>
</popup>

Eine Auflistung und Auswahl des minimalen Kreises gestaltet sich als sehr schwierig, da bei einer relativ geringen Anzahl an Knoten eine mächtige Menge von Hamilton Kreisen zustande kommt. Wenn wir jetzt durch die gesamte Menge durch iterieren wollen ist der Aufwand extrem.

==== Erschöpfende Suche ====
???

== Traveling Salesman Problem (TSP) ==
???

== P-NP-Problem ==

== Heuristiken ==
===Begriff===
Der Begriff Heuristik stammt von dem griechischen Wort "heurisko" ab, das heißt übersetzt etwa "ich finde", "ich suche". Eine heuristik beschreibt ein Verfahren, welches zur Lösung eines Problems genutzt wird. Dieses Verfahren liefert, wenn es erfolgreich ist eine gute jedoch nicht unbedingt eine optimale Lösung des Problems.

Es handelt sich um Faustregeln, basierend auf intuitiven Regeln, ähnlich den Bauernregeln für das Wetter. Aus einer Vielzahl von Möglichkeiten werden einige herausgefiltert.

===Definitionen===
bla

===Motivation===
Von Bedeutung sind diese Verfahren wenn es zwar theoretische optimale Lösungen für bestimmte Probleme gibt, diese jedoch in der Praxis verworfen werden müssen aufgrund extrem langer Rechenzeiten. Dies ist zu Beispiel bei NP-vollständigen Problemen der Fall, hier liefern Heuristiken praktikable Näherungen.

====Beispiele hierfür sind:====
das Rucksack problem

das TSP

===Heuristiken versus Algorithmen===
?????

===Beispiele===
Heuristiken für das Springerproblem beim Schach

Heusritiken für das Travelling Salesman Problem

==Heuristiken für das TSP==
=== Nearest-Neightbor-Heuristik ===
Ein weiterer Name für dieses ist der "Best-Successor-Algorithmus", man spricht ebenfalls von der "Methode des Besten Nachfolgers". 

====gehört zur Gruppe:====
der greedy Verfahren

====Komplexität des Algorithmus====
???

====Prinzipelles Vorgehen des Verfahrens====
Eingabe: Vollständiger bewerteter Graph $K_n$

<table>
<tr>
<td width=10%>Schritt 1:</td>
<td width=90%>Beginne an einem beliebigen Knoten mit leerer Tour $v \in V$ und $T = \emptyset$.</td>
</tr>
<tr>
<td>Schritt 2:</td>
<td>Bestimme einen noch nicht besuchten Knoten, mit der geringsten Entfernung zu $v$ $w \ne v$ und setze $T = T \cup \{v,w\}$, sowie $v = w$.</td>
</tr>
<tr>
<td>Schritt 3:</td>
<td>Solange es noch unbesuchte Knote gibt gehe zu Schritt 2. Ansonsten gehe zurück zum Anfang $v$ und füge $v$ der Tour hinzu $T = T \cup \{v\}$</td>
</tr>
</table>

Ergebnis: $Hamilton-Kreis$

====Pseudocode====
???

====Implementation====
???

====Vor.- und Nachteile====
???

=== Nearest-Insertion-Heuristik ===
???
=== Farthest-Insertion-Heuristik ===
???
=== Minimum-Spanning-Tree-Heuristik (MST)===
???

== Anwendung in der Praxis ==
???