Zum Inhalt springen

„Knotenüberdeckung“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Koethnig (Diskussion | Beiträge)
kat
Addition eines Beispiels der nichtminimalen Knotenabdeckung
 
(101 dazwischenliegende Versionen von 63 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Eine '''Knotenüberdeckung''' bezeichnet in der [[Graphentheorie]] eine Teilmenge der Knotenmenge eines Graphen, die von jeder Kante mindestens einen Endknoten enthält. Das Finden von kleinsten Knotenüberdeckungen gilt als algorithmisch schwierig, denn das damit eng verwandte '''Knotenüberdeckungsproblem''' ist [[NP-vollständig]].

== Definitionen ==
== Definitionen ==
[[Datei:Vertex-cover.svg|300px|mini|Zwei (nichtminimale) Knotenüberdeckungen.]]
[[Datei:Minimum-vertex-cover.svg|300px|mini|Zwei minimale Knotenüberdeckungen.]]


Sei <math>G=(V,E)</math> ein ungerichteter [[Graph (Graphentheorie)|Graph]] mit der [[Knotenmenge]] <math>V</math> und der [[Kantenmenge]] <math>E</math>. Dann ist eine [[Teilmenge]] <math>U \subseteq V</math> eine ''Knotenüberdeckung'' (englisch ''Vertex Cover'') von <math>G</math>, wenn jede Kante von <math>G</math> wenigstens einen Knoten aus <math>U</math> enthält. Entsprechend dazu ist eine ''Kantenüberdeckung'' des Graphen eine Teilmenge <math>M</math> seiner Kantenmenge, so dass jeder Knoten in mindestens einer Kante aus <math>M</math> enthalten ist.
Sei ''G''=(''V'',''E'') ein [[ungerichteter Graph|ungerichteter]] [[Graph ohne Mehrfachkanten]] und ''U'' eine [[Teilmenge]] von ''V''. Man bezeichnet ''U'' als '''Clique''' von ''G'', wenn für je zwei beliebige verschiedene [[Knoten (Graphentheorie)|Knoten]] ''v'' und ''w'' aus ''U'' gilt, dass sie durch eine [[Kante (Graphentheorie)|Kante]] miteinander verbunden sind. Gilt hingegen stets für je zwei beliebige verschiedene Knoten ''v'' und ''w'' aus ''U'', dass sie nicht [[Nachbarschaft_und_Grad_in_Graphen|benachbart]] sind, so nennt man ''U'' eine '''stabile''' bzw. '''unabhängige Menge''' ([[Independent Set]]) von ''G''. Enthält jede Kante von ''E'' einen Knoten aus ''U'', so nennt man ''U'' eine '''[[Knotenüberdeckung]]''' von ''G''.


Eine Clique bzw. stabile Menge ''U'' von ''G'' nennt man '''maximal''', wenn man keinen weiteren Knoten ''v'' aus ''V'' zu ''U'' hinzufügen kann, so dass ''U'' zusammen mit ''v'' eine Clique bzw. stabile Menge ist. Gibt es in ''G'' keine Clique bzw. stabile Menge, die mehr Elemente als ''U'' enthält, so nennt man ''U'' '''größte Clique''' bzw. '''größte stabile Menge'''. Die Anzahl Elemente einer größten Clique bzw. stabilen Menge nennt man '''Cliquenzahl''' bzw. '''Stabilitäts-''' oder '''Unabhängigkeitszahl'''. Die Anzahl Knoten einer kleinsten Knotenüberdeckung von ''G'' nennt man '''Knotenüberdeckungszahl''' von ''G''.
Eine Knotenüberdeckung <math>U</math> von <math>G</math> nennt man ''minimal'', wenn es keinen Knoten <math>v\in U</math> gibt, so dass <math>U</math> ohne <math>v</math> immer noch eine Knotenüberdeckung ist. Gibt es in <math>G</math> keine Knotenüberdeckung, die weniger Elemente als <math>U</math> enthält, so nennt man <math>U</math> eine ''kleinste Knotenüberdeckung''. Die Anzahl der Knoten einer kleinsten Knotenüberdeckung von <math>G</math> nennt man ''Knotenüberdeckungszahl'' von <math>G</math>.


[[Gerichteter Graph|Gerichtete Graphen]] oder solche mit Mehrfachkanten sind nicht Gegenstand derartiger Betrachtungen, da es nicht auf die Richtung oder Vielfachheit der Kanten ankommt.
Statt über Teilmengen von ''V'' definiert man Cliquen oder stabile Mengen auch als spezielle [[Teilgraph]]en.


== Wichtige Aussagen und Sätze ==
Als '''Cliquenüberdeckung''' von ''G'' der Größe ''k'' bezeichnet man eine [[Partition (Mengenlehre)|Partition]] der Knotenmenge ''V''(''G'') in ''k'' paarweise disjunkte Cliquen ''V''<sub>1</sub>,''V''<sub>2</sub>,...,''V''<sub>''k''</sub>.
# Die Knotenüberdeckungszahl eines Graphen ist mindestens so groß wie seine [[Matching (Graphentheorie)#Definitionen|Paarungszahl]], da die Knoten der Kanten einer größten Paarung nur zu einer Paarungskante inzident sein können.

# Andererseits kann die Knotenüberdeckungszahl höchstens doppelt so groß sein wie die Paarungszahl, da die Knoten aller Paarungskanten eine gültige Knotenüberdeckung ergeben.
[[gerichteter Graph|Gerichtete Graphen]] oder solche mit [[Graph mit Mehrfachkanten|Mehrfachkanten]] sind nicht Gegenstand derartiger Betrachtungen, da es nicht auf die Richtung oder Vielfachheit der Kanten ankommt.
# In [[Bipartiter Graph|bipartiten Graphen]] stimmen Knotenüberdeckungszahl und Paarungszahl überein. ([[Satz von König (Graphentheorie)|Satz von König]])


== Probleme und Komplexität ==
== Probleme und Komplexität ==
Das [[Entscheidbar|Entscheidungsproblem]] zu einem Graphen <math>G</math> und einer natürlichen Zahl <math>k</math> zu entscheiden, ob <math>G</math> eine Knotenüberdeckung der Größe höchstens <math>k</math> enthält, wird ''Knotenüberdeckungsproblem'' genannt. Das zugehörige [[Optimierungsproblem]] fragt nach der Knotenüberdeckungszahl eines Graphen. Das zugehörige [[Suchproblem]] fragt nach einer kleinsten Knotenüberdeckung.


=== Nachweis der NP-Schwere ===
Das [[Entscheidungsproblem]] zu einem Graphen ''G'' und einer natürlichen Zahl ''k'' zu entscheiden, ob ''G'' eine Clique der Größe ''k'' enthält, wird '''Cliquenproblem''' genannt. Das zugehörige [[Optimierungsproblem]] fragt nach der Cliquenzahl eines Graphen. Das zugehörige [[Suchproblem]] fragt nach einer größten Clique.
Das Knotenüberdeckungsproblem ist [[NP-Vollständigkeit|NP-vollständig]], das zugehörige Optimierungs- und Suchproblem ist [[NP-Äquivalenz|NP-äquivalent]]. Die [[NP-Schwere]] des Knotenüberdeckungsproblems folgt aus dem Satz, dass die Stabilitätszahl eines Graphen immer der Anzahl Knoten eines Graphen abzüglich seiner Knotenüberdeckungszahl entspricht, denn das Komplement einer kleinsten Knotenüberdeckung ist immer eine größte [[stabile Menge]] und umgekehrt. Das Knotenüberdeckungsproblem gehört zur Liste der [[Karps 21 NP-vollständige Probleme|21 klassischen NP-vollständigen Probleme]], von denen [[Richard M. Karp|Richard Karp]] [[1972]] die Zugehörigkeit zu dieser Klasse zeigen konnte.


=== In Polynomialzeit lösbare Fälle ===
Analog ist das '''Stabilitätsproblem''' über stabile Mengen definiert und das '''Knotenüberdeckungsproblem''' durch Knotenüberdeckungen.
Der ungarische Mathematiker [[Dénes Kőnig]] konnte schon 1931 zeigen, dass in [[Bipartiter Graph|bipartiten Graphen]] die Knotenüberdeckungszahl der [[Paarungszahl]] entspricht ([[Satz von König (Graphentheorie)|Satz von König]]). Für das Problem, eine [[größte Paarung]] zu finden, gibt es aber einen [[Polynomieller Algorithmus|polynomiellen Algorithmus]]. In bipartiten Graphen lässt sich daher auch eine kleinste Knotenüberdeckung und eine größte stabile Menge in polynomieller Zeit berechnen.
Tatsächlich gilt sogar etwas stärker, dass die Knotenüberdeckungszahl in [[Perfekter Graph|perfekten Graphen]] in polynomieller Zeit berechnet werden kann.


=== Approximation einer Knotenüberdeckung ===
Alle drei Probleme sind [[NP-Vollständigkeit|NP-vollständig]]. Die zugehörigen Optimierungs und Suchprobleme sind [[NP-Äquivalenz|NP-Äquivalent]]. Die [[NP-Schwere]] des Stabilitätsproblems lässt sich dabei leicht durch Reduktion auf das Cliquenproblem zeigen, indem man den Komplementgraphen bildet. Die NP-Schwere des Knotenüberdeckungsproblems folgt aus dem Satz, dass die Stabilitätszahl eines Graphen immer der Anzahl Knoten eines Graphen abzüglich seiner Knotenüberdeckungszahl entspricht, denn das Komplement einer kleinsten Knotenüberdeckung ist immer eine größte stabile Menge und umgekehrt. Für den Nachweis der NP-Schwere des Cliquenproblems existiert eine Reduktion auf [[3-SAT]].
Es existiert ein [[Approximationsalgorithmus]], der eine Knotenüberdeckung mit relativer Güte 2 berechnet. Es ist kein besserer Algorithmus mit fester Güte bekannt.


Der Algorithmus berechnet eine nicht-erweiterbare [[Paarung (Graphentheorie)|Paarung]] <math>M</math> in <math>G</math>. Da eine derartige Paarung immer eine Knotenüberdeckung darstellt und höchstens doppelt so groß ist wie eine minimale Knotenüberdeckung, berechnet der Algorithmus eine Knotenüberdeckung mit relativer Güte 2.
König konnte jedoch schon [[1931]] zeigen, dass in [[bipartiter Graph|bipartiten Graphen]] die Knotenüberdeckungszahl der [[Paarungszahl]] entspricht. Für das Problem eine [[größte Paarung]] zu finden, gibt es aber einen [[polynomieller Algorithmus|polynomiellen Algorithmus]]. In bipartiten Graphen lässt sich daher auch eine kleinste Knotenüberdeckung und eine größte stabile Menge in polynomieller Zeit berechnen.


<math>G = (V, E)</math>: Graph<br />
Eine größte Clique lässt sich entsprechend der obigen [[Reduktion (Theoretische Informatik)|Reduktion]] in polynomieller Zeit berechnen, wenn der Komplementgraph bipartit ist.
''approx_vertex_cover''(<math>G</math>)
1 <math>K \leftarrow\varnothing</math>
2 '''solange''' <math>E\neq\varnothing</math>:
3 wähle eine beliebige Kante <math>e = {u,v} \in E</math>
4 <math>K\leftarrow K \cup\left\{u,v\right\}</math>
5 entferne alle Kanten aus <math>E</math>, die inzident zu <math>u</math> oder <math>v</math> sind
6 '''return''' <math>K</math>


Der Algorithmus hat bei einer geeigneten Datenstruktur eine Laufzeit von <math>O(|E|)</math>.
Tatsächlich gilt sogar etwas stärker, dass Cliquenzahl, Stabilitätszahl und Knotenüberdeckungszahl in [[perfekter Graph|perfekten Graphen]] in polynomieller Zeit berechnet werden können. Da die [[Farbzahl]] und die Cliquenzahl in solchen Graphen identisch sind, ist auch ihre [[Farbzahl]] in polynomieller Zeit berechenbar.


== Weblinks ==
[[Kategorie:Graphentheorie]]
[[Kategorie:Übersichtsartikel zur Graphentheorie]]
[[Kategorie:Komplexitätstheorie]]


{{Wikiversity|Kurs:Diskrete Mathematik (Osnabrück 2020)/Vorlesung 21|Eine Vorlesung über Knotenüberdeckungen im Rahmen eines Kurses zur diskreten Mathematik}}
[[en:Clique problem]]

[[es:Problema de la clique]]
== Literatur ==
[[ja:最大クリーク問題]]
* {{Literatur
|Autor=[[Reinhard Diestel]]
|Titel=Graphentheorie
|Auflage=4.
|Verlag=Springer
|Ort=Berlin
|Datum=2010
|ISBN=978-3-642-14911-5
|Online=[https://diestel-graph-theory.com/ diestel-graph-theory.com]}}
* {{Literatur
|Autor=[[Bernhard Korte]], [[Jens Vygen]]
|Titel=Kombinatorische Optimierung. Theorie und Algorithmen
|Reihe=Springer Spektrum
|Auflage=2.
|Verlag=Springer
|Ort=Heidelberg
|Datum=2012
|ISBN=978-3-642-25400-0}}

{{Navigationsleiste Karps 21 NP-vollständige Probleme}}

[[Kategorie:Grundbegriff (Graphentheorie)]]
[[Kategorie:Komplexitätstheorie]]

Aktuelle Version vom 23. Mai 2024, 09:02 Uhr

Eine Knotenüberdeckung bezeichnet in der Graphentheorie eine Teilmenge der Knotenmenge eines Graphen, die von jeder Kante mindestens einen Endknoten enthält. Das Finden von kleinsten Knotenüberdeckungen gilt als algorithmisch schwierig, denn das damit eng verwandte Knotenüberdeckungsproblem ist NP-vollständig.

Zwei (nichtminimale) Knotenüberdeckungen.
Zwei minimale Knotenüberdeckungen.

Sei ein ungerichteter Graph mit der Knotenmenge und der Kantenmenge . Dann ist eine Teilmenge eine Knotenüberdeckung (englisch Vertex Cover) von , wenn jede Kante von wenigstens einen Knoten aus enthält. Entsprechend dazu ist eine Kantenüberdeckung des Graphen eine Teilmenge seiner Kantenmenge, so dass jeder Knoten in mindestens einer Kante aus enthalten ist.

Eine Knotenüberdeckung von nennt man minimal, wenn es keinen Knoten gibt, so dass ohne immer noch eine Knotenüberdeckung ist. Gibt es in keine Knotenüberdeckung, die weniger Elemente als enthält, so nennt man eine kleinste Knotenüberdeckung. Die Anzahl der Knoten einer kleinsten Knotenüberdeckung von nennt man Knotenüberdeckungszahl von .

Gerichtete Graphen oder solche mit Mehrfachkanten sind nicht Gegenstand derartiger Betrachtungen, da es nicht auf die Richtung oder Vielfachheit der Kanten ankommt.

Wichtige Aussagen und Sätze

[Bearbeiten | Quelltext bearbeiten]
  1. Die Knotenüberdeckungszahl eines Graphen ist mindestens so groß wie seine Paarungszahl, da die Knoten der Kanten einer größten Paarung nur zu einer Paarungskante inzident sein können.
  2. Andererseits kann die Knotenüberdeckungszahl höchstens doppelt so groß sein wie die Paarungszahl, da die Knoten aller Paarungskanten eine gültige Knotenüberdeckung ergeben.
  3. In bipartiten Graphen stimmen Knotenüberdeckungszahl und Paarungszahl überein. (Satz von König)

Probleme und Komplexität

[Bearbeiten | Quelltext bearbeiten]

Das Entscheidungsproblem zu einem Graphen und einer natürlichen Zahl zu entscheiden, ob eine Knotenüberdeckung der Größe höchstens enthält, wird Knotenüberdeckungsproblem genannt. Das zugehörige Optimierungsproblem fragt nach der Knotenüberdeckungszahl eines Graphen. Das zugehörige Suchproblem fragt nach einer kleinsten Knotenüberdeckung.

Nachweis der NP-Schwere

[Bearbeiten | Quelltext bearbeiten]

Das Knotenüberdeckungsproblem ist NP-vollständig, das zugehörige Optimierungs- und Suchproblem ist NP-äquivalent. Die NP-Schwere des Knotenüberdeckungsproblems folgt aus dem Satz, dass die Stabilitätszahl eines Graphen immer der Anzahl Knoten eines Graphen abzüglich seiner Knotenüberdeckungszahl entspricht, denn das Komplement einer kleinsten Knotenüberdeckung ist immer eine größte stabile Menge und umgekehrt. Das Knotenüberdeckungsproblem gehört zur Liste der 21 klassischen NP-vollständigen Probleme, von denen Richard Karp 1972 die Zugehörigkeit zu dieser Klasse zeigen konnte.

In Polynomialzeit lösbare Fälle

[Bearbeiten | Quelltext bearbeiten]

Der ungarische Mathematiker Dénes Kőnig konnte schon 1931 zeigen, dass in bipartiten Graphen die Knotenüberdeckungszahl der Paarungszahl entspricht (Satz von König). Für das Problem, eine größte Paarung zu finden, gibt es aber einen polynomiellen Algorithmus. In bipartiten Graphen lässt sich daher auch eine kleinste Knotenüberdeckung und eine größte stabile Menge in polynomieller Zeit berechnen. Tatsächlich gilt sogar etwas stärker, dass die Knotenüberdeckungszahl in perfekten Graphen in polynomieller Zeit berechnet werden kann.

Approximation einer Knotenüberdeckung

[Bearbeiten | Quelltext bearbeiten]

Es existiert ein Approximationsalgorithmus, der eine Knotenüberdeckung mit relativer Güte 2 berechnet. Es ist kein besserer Algorithmus mit fester Güte bekannt.

Der Algorithmus berechnet eine nicht-erweiterbare Paarung in . Da eine derartige Paarung immer eine Knotenüberdeckung darstellt und höchstens doppelt so groß ist wie eine minimale Knotenüberdeckung, berechnet der Algorithmus eine Knotenüberdeckung mit relativer Güte 2.

: Graph
approx_vertex_cover() 1 2 solange : 3 wähle eine beliebige Kante 4 5 entferne alle Kanten aus , die inzident zu oder sind 6 return

Der Algorithmus hat bei einer geeigneten Datenstruktur eine Laufzeit von .