Färbungsprobleme

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

= Färbungsprobleme =

== Motivation ==

* Einfärben einer Karte mit so wenig Farben wie möglich, wobei zwei einander angrenzende Länder nie dieselbe Farbe haben dürfen

[[Bild:Bothe_deutschland_vier_farben.gif]]

== Grundlegende Definitionen ==

==== Farbe ====

    Ein Element $c$ heißt Farbe, wenn gilt: $c \in C$und $c$ ist von jedem beliebigen Element $c' \in C$unterscheidbar.

Aus mathematischer sowie programmiertechnischer Sicht ist es daher sinnvoll, Farben als Zahlen festzulegen. In graphischen Darstellungen sind hingegen
tatsächliche Farben wesentlich geeigneter. Theoretisch jedoch ist alles als Farbe zugelassen.

==== Färbung ====

Eine Färbung ist ein Zuordnung einer Farbe zu Elementen eines Graphen. Eine Knotenfärbung zum Beispiel ordnet jedem Knoten eine Farbe zu. Insgesamt
gibt es drei hauptsächliche Arten der Färbung eines Graphen:

* Knotenfärbung: jedem <b>Knoten</b> des Graphen wird eine Farbe zugeordnet
* Kantenfärbung: jeder <b>Kante</b> des Graphen wird eine Farbe zugeordnet
* Totalfärbung: sowohl jedem Knoten als auch jeder Kante wird eine Farbe zugeordnet

Desweiteren wird ausschließlich auf Knotenfärbung eingegangen. Definiert wird die Knotenfärbung (im folgenden nur Färbung) folgendermaßen:

    Wenn $G(V,E)$ ein ungerichteter Graph ohne Schleifen und Mehrfachkanten ist, dann ist $f: V \to C$ die <i>Färbung</i> dieses Graphen.

===== Übung =====
Sind die folgenden Graphen nach dieser Definition korrekt gefärbt?

[[Bild:Eichhorn_colored_graph_1]][[Bild:Eichhorn_colored_graph_2]][[Bild:Eichhorn_colored_graph_3]]

$C = \{$[[Bild:Bothe_red_32]]$, $[[Bild:Bothe_blue_32]]$, $[[Bild:Bothe_green_32]]$\}$

<popup name="Lösung">
* Graph 1: Ja
* Graph 2: Nein
* Graph 3: Ja
</popup>

Das Färben eines Graphen ist jedoch nicht beliebig möglich, wenn die Färbung <i>gültig</i> sein soll.

    Wenn je zwei beliebige benachbarte Knoten nicht dieselbe Farbe haben, dann heißt die dazugehörige Färbung <i>gültig</i>.
    $\forall v  \in V : \forall w \in \Gamma (v) : f(v) \ne f(w)$, wenn $\Gamma(v)$ die Menge aller Nachbarn von v bezeichnet.

Daraus ergibt sich auch die Notwendigkeit zu definieren, ob ich einen Graphen überhaupt gültig färben kann. Diese kann abgeleitet werden
aus dem Wissen über die Gültigkeit einer Färbung.

    Wenn es eine gültige Färbung $f$ gibt, die eine Anzahl $k$ an Farben verwendet, dann heißt der so gefärbte Graph $G$ <i>k-färbbar</i>.
    
===== Übung =====

Finden sie eine gültige Färbung für den nachstehenden Graphen. Schätzen sie auch, wie viele Farben sie mindestens brauchen werden.

[[Bild:Eichhorn_petersen_graph]]

<popup name="Lösung">
Eine Möglichkeit:
[[Bild:Eichhorn_petersen_colored]]
<br>
Für diesen Graphen existieren 120 Färbungen mit 3 Farben.
</popup>

==== Greedy-Algorithmus zum Färben eines Graphen ====

Um einen Graphen $G$ effizient gültig einzufärben, genügt ein "gieriger" Algorithmus. Dieser wird stets eine gültige Färbung zurückgeben, garantiert jedoch nicht, dass die Färbung mit der geringstmöglichen Anzahl an Farben auskommt.

<div style="background-color:#86DFFF" padding="8px">
* 0.
* 1.
* 2.
* 3.
* 4.
* 5.
</div>

==== Die chromatische Zahl ====

Für Anwendungsfälle sollten Färbungen mit möglichst wenig Farben auskommen. Die Mindestanzahl an benötigten Farben heißt chromatische Zahl.

    Die <i>chromatische Zahl</i> $\chi (G)$ ist die kleinste natürliche Zahl, für die der Graph $G$ eine gültige Färbung mit ebensovielen Farben besitzt.
    Gibt es für keine Anzahl an Farben eine gültige Färbung, so ist $\chi (G) = \infty$

Die höchste Anzahl an benötigten Farben, um einen beliebigen, schleifenfreien Graphen einzufärben, entspricht der Anzahl der vorhandenen Knoten.
Die Problem der Bestimmung der chromatischen Zahl ist jedoch Element der Menge der NP-Probleme, also wahrscheinlich nicht effizient zu lösen.

== NP-Vollständigkeit ==

<!-- Und unsere Zuhörer im Chor: "was is des nu wieder"? Also: (TODO: Definition mit verständlicher Erklärung, Bebilderung [es gibt schöne Sachen auf der Wikipedia dazu], definitiv auf Abgrenzung zu P - und NP-Klassen hinweisen) -->



== chromatisches Polynom ==

<!-- klingt nach Mathe, ist auch Mathe (TODO: Definition mit Formel, mal rechnen lassen, KEINE BEBILDERUNG, es gibt nämlich keine!) -->