<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Bipartiter_Graph</id>
	<title>Bipartiter Graph - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Bipartiter_Graph"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Bipartiter_Graph&amp;action=history"/>
	<updated>2026-05-27T21:28:33Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Bipartiter_Graph&amp;diff=13900&amp;oldid=prev</id>
		<title>imported&gt;Thomas Dresler: Tippfehler korrigiert</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Bipartiter_Graph&amp;diff=13900&amp;oldid=prev"/>
		<updated>2025-10-19T22:08:19Z</updated>

		<summary type="html">&lt;p&gt;Tippfehler korrigiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:Graph K3 3.svg|gerahmt|K&amp;lt;sub&amp;gt;3,3&amp;lt;/sub&amp;gt;: vollständig bipartiter Graph mit 3 [[Knoten (Graphentheorie)|Knoten]] pro [[Teilmenge]]]]&lt;br /&gt;
[[Datei:Simple-bipartite-graph.svg|mini|Ein einfacher, nicht vollständiger, bipartiter Graph mit Partitionsklassen &amp;lt;math&amp;gt; U  &amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt; V  &amp;lt;/math&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Ein &amp;#039;&amp;#039;&amp;#039;bipartiter&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;paarer Graph&amp;#039;&amp;#039;&amp;#039; ist ein [[mathematisches Modell]] für Beziehungen zwischen den Elementen zweier Mengen. Es eignet sich sehr gut zur Untersuchung von [[Zuordnungsproblem]]en. Des Weiteren lassen sich für bipartite Graphen viele Grapheneigenschaften mit deutlich weniger Aufwand berechnen als dies im allgemeinen Fall möglich ist.&lt;br /&gt;
&lt;br /&gt;
== Definitionen ==&lt;br /&gt;
Ein [[Einfacher Graph|einfacher]] [[Graph (Graphentheorie)|Graph]] &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; heißt bipartit oder paar, falls sich seine [[Knoten (Graphentheorie)|Knoten]] in zwei [[disjunkt]]e [[Teilmenge]]n &amp;#039;&amp;#039;A&amp;#039;&amp;#039; und &amp;#039;&amp;#039;B&amp;#039;&amp;#039; aufteilen lassen, sodass zwischen den Knoten innerhalb beider Teilmengen keine [[Kante (Graphentheorie)|Kanten]] verlaufen. Das heißt, für jede Kante &amp;lt;math&amp;gt;\{v,w\} \in E&amp;lt;/math&amp;gt; gilt entweder &amp;lt;math&amp;gt;v \in A&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;w \in B&amp;lt;/math&amp;gt; oder &amp;lt;math&amp;gt;v \in B&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;w \in A&amp;lt;/math&amp;gt;. Die Menge &amp;lt;math&amp;gt;\{A,B\}&amp;lt;/math&amp;gt; bezeichnet man dann als &amp;#039;&amp;#039;&amp;#039;Bipartition&amp;#039;&amp;#039;&amp;#039; des Graphen &amp;lt;math&amp;gt; G &amp;lt;/math&amp;gt; und die Mengen &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; als &amp;#039;&amp;#039;&amp;#039;Partitionsklassen&amp;#039;&amp;#039;&amp;#039;. Vereinfacht dargestellt, ist ein bipartiter Graph ein [[Graph (Graphentheorie)|Graph]], in dem zwei Gruppen von Knoten existieren, innerhalb derer keine Knoten miteinander verbunden sind.&lt;br /&gt;
&lt;br /&gt;
Der [[Graph (Graphentheorie)|Graph]] &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; heißt &amp;#039;&amp;#039;&amp;#039;vollständig bipartit&amp;#039;&amp;#039;&amp;#039;, falls eine Bipartition &amp;lt;math&amp;gt;\{A,B\}&amp;lt;/math&amp;gt; existiert, sodass jeder [[Knoten (Graphentheorie)|Knoten]] aus &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; mit jedem Knoten aus &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; verbunden ist. Einen solchen Graphen bezeichnet man auch als &amp;lt;math&amp;gt;K_{m,n}&amp;lt;/math&amp;gt;, wobei &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; jeweils die Anzahl der Knoten von &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; sind. Ein vollständig bipartiter Graph, bei dem &amp;lt;math&amp;gt;m=1&amp;lt;/math&amp;gt; oder &amp;lt;math&amp;gt;n=1&amp;lt;/math&amp;gt; ist, heißt [[Sterngraph]].&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
Für alle bipartiten Graphen gilt:&lt;br /&gt;
&lt;br /&gt;
* Die [[Paarungszahl]] entspricht der [[Knotenüberdeckungszahl]].&lt;br /&gt;
* Die Partitionsklassen &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; sind schon nach Definition [[stabile Menge]]n.&lt;br /&gt;
* Der [[Chromatischer Index|chromatische Index]] entspricht seinem [[Maximalgrad]]. Eine gültige Kantenfärbung lässt sich in &amp;lt;math&amp;gt;O(n \cdot m)&amp;lt;/math&amp;gt; bestimmen.&lt;br /&gt;
* Jeder bipartite Graph ist [[Färbung (Graphentheorie)#Knotenfärbungen|2-knotenfärbbar]]. Jede Partitionsklasse bekommt also eine Farbe zugewiesen. Umgekehrt ist auch jeder 2-färbbare Graph bipartit.&lt;br /&gt;
* Ein &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;k&amp;lt;/math&amp;gt;-[[Regulärer Graph|regulärer]] bipartiter Graph besitzt &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;k&amp;lt;/math&amp;gt; disjunkte perfekte [[Paarung (Graphentheorie)|Matchings]].&lt;br /&gt;
* Ein Graph ist genau dann bipartit, wenn er keinen [[Kreis (Graphentheorie)|Kreis]] ungerader Länge enthält.&lt;br /&gt;
* Die [[kantenchromatische Zahl]] entspricht seinem [[Maximalgrad]].&lt;br /&gt;
* Der [[Listenchromatischer Index|Listenchromatische Index]] ist gleich dem [[Chromatischer Index|chromatischen Index]]. Damit sind bipartite Graphen eine Klasse von Graphen, für welche die [[Listenfärbung#Eigenschaften|Listenfärbungsvermutung]] zutrifft.&lt;br /&gt;
* Es gilt &amp;lt;math&amp;gt;  \chi_T (G) \leq \Delta (G) +2&amp;lt;/math&amp;gt;, wobei &amp;lt;math&amp;gt; \chi_T (G) &amp;lt;/math&amp;gt; die [[totalchromatische Zahl]] ist und &amp;lt;math&amp;gt; \Delta (G) &amp;lt;/math&amp;gt; der [[Maximalgrad]]. Für bipartite Graphen gilt also die [[Totalfärbung]]svermutung.&lt;br /&gt;
* Alle bipartiten Graphen sind [[Perfekter Graph|perfekte Graphen]], somit stimmt für jeden [[Induzierter Teilgraph|induzierten Teilgraphen]] die [[Cliquenzahl]] mit der [[Chromatische Zahl|chromatischen Zahl]] überein.&lt;br /&gt;
&lt;br /&gt;
Nach dem [[Satz von König (Graphentheorie)|Satz von König]] entspricht in bipartiten Graphen die Größe der minimalen [[Knotenüberdeckung]] der Größe des [[Matching (Graphentheorie)|maximalen Matchings]]. Eine alternative und äquivalente Form dieses Satzes besteht darin, dass die Größe der maximalen unabhängigen Menge plus die Größe des maximalen Matchings gleich der Anzahl der Knoten ist. In jedem [[Graph (Graphentheorie)|Graphen]] ohne isolierte [[Knoten (Graphentheorie)|Knoten]] entspricht die Größe der minimalen [[Kantenüberdeckung]] plus der Größe eines maximalen Matchings der Anzahl der Knoten. Aus der Kombination dieser Gleichung mit dem Satz von König folgt, dass in bipartiten Graphen die Größe der minimalen Kantenüberdeckung gleich der Größe der maximalen unabhängigen Menge ist und dass die Größe der minimalen Kantenüberdeckung plus der Größe der minimalen Knotenüberdeckung gleich der Anzahl der Knoten ist.&lt;br /&gt;
&lt;br /&gt;
Außerdem gilt: Jeder bipartite Graph, das Komplement jedes bipartiten Graphen, der [[Kantengraph]] jedes bipartiten Graphen und das Komplement des Kantengraphen jedes bipartiten Graphen sind alle [[Perfekter Graph|perfekte Graphen]]. Dies war eines der Ergebnisse, die die Definition perfekter Graphen motivierten.&amp;lt;ref&amp;gt;{{cite journal&lt;br /&gt;
|title=Modern Graph Theory&lt;br /&gt;
|volume= 184&lt;br /&gt;
|journal= Graduate Texts in Mathematics&lt;br /&gt;
|author=Béla Bollobás&lt;br /&gt;
|publisher=Springer&lt;br /&gt;
|year= 1998&lt;br /&gt;
|language=en&lt;br /&gt;
|url=https://books.google.com/books?id=SbZKSZ-1qrwC&amp;amp;pg=PA165}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem Satz der starken perfekten Graphen haben die perfekten Graphen eine verbotene Charakterisierung, die der von bipartiten Graphen ähnelt: Ein Graph ist genau dann bipartit, wenn er keinen ungeraden Zyklus als [[Teilgraph]] hat, und ein [[Graph (Graphentheorie)|Graph]] ist genau dann perfekt, wenn er keinen ungerader [[Zyklus (Graphentheorie)|Zyklus]] oder sein [[Komplementgraph]]en als induzierten Teilgraphen hat. Die bipartiten Graphen, [[Kantengraph]]en von bipartiten Graphen und ihre Komplementgraphen bilden vier der fünf Grundklassen perfekter Graphen, die für den Beweis des Satzes der starken perfekten Graphen verwendet werden.&amp;lt;ref&amp;gt;{{cite journal&lt;br /&gt;
 | last1 = Chudnovsky | first1 = Maria&lt;br /&gt;
 | last2 = Robertson | first2 = Neil&lt;br /&gt;
 | last3 = Seymour | first3 = Paul&lt;br /&gt;
 | last4 = Thomas | first4 = Robin&lt;br /&gt;
 | doi = 10.4007/annals.2006.164.51&lt;br /&gt;
 | issue = 1&lt;br /&gt;
 | journal = [[Annals of Mathematics]]&lt;br /&gt;
 | pages = 51–229&lt;br /&gt;
 | title = The strong perfect graph theorem&lt;br /&gt;
 | volume = 164&lt;br /&gt;
 | year = 2006&lt;br /&gt;
 | language = en&lt;br /&gt;
 | arxiv = math/0212070}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für einen [[Knoten (Graphentheorie)|Knoten]] wird die Anzahl benachbarter Knoten als [[Grad (Graphentheorie)|Grad]] des Knoten bezeichnet und als &amp;lt;math&amp;gt; \deg(v) &amp;lt;/math&amp;gt; bezeichnet. Die Gradsummenformel für einen bipartiten Graphen besagt, dass&lt;br /&gt;
:&amp;lt;math&amp;gt; \sum_{v \in A} \deg(v) = \sum_{u \in B} \deg(u) = |E| &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die [[Gradfolge]] eines bipartiten Graphen ist das Paar von Listen, das jeweils die [[Knotengrad]]e der beiden Partitionsklassen &amp;lt;math&amp;gt; A &amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt; enthält. Beispielsweise hat der vollständige bipartiten Graph &amp;lt;math&amp;gt; K_{3,5} &amp;lt;/math&amp;gt; die Gradfolge &amp;lt;math&amp;gt; (5, 5, 5), (3, 3, 3, 3, 3) &amp;lt;/math&amp;gt;. [[Isomorphismus|Isomorphe]] bipartite Graphen haben die gleiche Gradfolge. Die Gradfolge identifiziert jedoch im Allgemeinen einen bipartiten Graphen nicht eindeutig. In einigen Fällen können nicht-isomorphe zweigliedrige Graphen die gleiche Gradfolge aufweisen.&lt;br /&gt;
&lt;br /&gt;
== Kombinatorik ==&lt;br /&gt;
Die Anzahl der bipartiten Graphen steigt schneller als [[Exponentialfunktion|exponentiell]] mit der Anzahl &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; der [[Knoten (Graphentheorie)|Knoten]]. Die folgende [[Tabelle]] zeigt die mit Hilfe eines [[Computer]]s bestimmten Anzahlen für &amp;lt;math&amp;gt;n \leq 12&amp;lt;/math&amp;gt;:&amp;lt;ref&amp;gt;{{OEIS|A033995}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{OEIS|A005142}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |Anzahl der bipartiten Graphen&lt;br /&gt;
|-&lt;br /&gt;
!n&lt;br /&gt;
!alle&lt;br /&gt;
!zusammenhängend&lt;br /&gt;
|-&lt;br /&gt;
!1&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
!2&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
!3&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
!4&lt;br /&gt;
|7&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
!5&lt;br /&gt;
|13&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
!6&lt;br /&gt;
|35&lt;br /&gt;
|17&lt;br /&gt;
|-&lt;br /&gt;
!7&lt;br /&gt;
|88&lt;br /&gt;
|44&lt;br /&gt;
|-&lt;br /&gt;
!8&lt;br /&gt;
|303&lt;br /&gt;
|182&lt;br /&gt;
|-&lt;br /&gt;
!9&lt;br /&gt;
|1119&lt;br /&gt;
|730&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|5479&lt;br /&gt;
|4032&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|32303&lt;br /&gt;
|25598&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|251135&lt;br /&gt;
|212780&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Algorithmen ==&lt;br /&gt;
{{Siehe auch|Graphpartitionierung}}&lt;br /&gt;
Mit dem [[Algorithmus von Hopcroft und Karp]] lässt sich in der [[Laufzeit (Informatik)|Laufzeit]] &amp;lt;math&amp;gt;O(m\sqrt{n})&amp;lt;/math&amp;gt; ein [[maximales Matching]] finden und darüber auch die [[Stabilitätszahl]] bestimmen.&lt;br /&gt;
&lt;br /&gt;
Mit einem einfachen [[Algorithmus]], der auf [[Tiefensuche]] basiert, lässt sich in linearer [[Laufzeit (Informatik)|Laufzeit]] bestimmen, ob ein [[Graph (Graphentheorie)|Graph]] bipartit ist, und eine gültige Partition bzw. 2-[[Färbung (Graphentheorie)|Färbung]] ermitteln. Dabei wird einem beliebigen [[Knoten (Graphentheorie)|Knoten]] eine Farbe, und seinen Kindern die jeweils komplementäre Farbe zugewiesen. Wird beim Färben festgestellt, dass zwei benachbarte Knoten die gleiche Farbe haben, ist der Graph nicht bipartit.&lt;br /&gt;
&lt;br /&gt;
Die Hauptidee besteht darin, jedem [[Knoten (Graphentheorie)|Knoten]] die Farbe zuzuweisen, die sich von der Farbe des übergeordneten Knotens in der [[Tiefensuche]] unterscheidet, und Farben in der Hauptreihenfolge der Tiefensuche zuzuweisen. Dies führt zwangsläufig zu einer 2-[[Färbung (Graphentheorie)|Färbung]] des [[Aufspannender Baum|aufspannenden]] Waldes, der aus den [[Kante (Graphentheorie)|Kanten]] besteht, die die Knoten mit ihren übergeordneten Knoten verbinden, aber möglicherweise werden einige Kanten, die nicht zum Wald gehören, nicht richtig gefärbt. Einer der beiden Endknoten jeder Kante, die nicht zum Wald gehört, ist ein Vorfahr des anderen Endknotens. Wenn bei der Tiefensuche eine Kante dieses Typs entdeckt wird, sollte überprüft werden, ob diese beiden Knoten unterschiedliche Farben haben. Wenn dies nicht der Fall ist, bildet der Pfad im Wald vom Vorfahren zum Nachkommen zusammen mit der falsch gefärbten Kante einen ungeraden [[Zyklus (Graphentheorie)|Zyklus]], der vom [[Algorithmus]] zusammen mit dem Ergebnis zurückgegeben wird, dass der Graph nicht bipartit ist. Wenn der Algorithmus jedoch beendet wird, ohne einen ungeraden Zyklus dieses Typs zu finden, muss jede Kante richtig gefärbt sein, und der Algorithmus gibt die Färbung zusammen mit dem Ergebnis zurück, dass der Graph bipartit ist.&amp;lt;ref&amp;gt;{{cite journal&lt;br /&gt;
 | last = Sedgewick | first = Robert&lt;br /&gt;
 | pages = 109–111&lt;br /&gt;
 | journal = Addison-Wesley&lt;br /&gt;
 | title = Algorithms in Java, Part 5: Graph Algorithms&lt;br /&gt;
 | language = en&lt;br /&gt;
 | year = 2004}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ kann ein ähnlicher [[Algorithmus]] mit [[Breitensuche]] anstelle der Tiefensuche verwendet werden. Wiederum erhält jeder [[Knoten (Graphentheorie)|Knoten]] die entgegengesetzte Farbe zu seinem übergeordneten Knoten im [[Suchbaum]] in der Reihenfolge der Breitensuche. Wenn beim Färben eines Knotens eine [[Kante (Graphentheorie)|Kante]] vorhanden ist, die ihn mit einem zuvor gefärbten Knotens mit derselben Farbe verbindet, bildet diese Kante zusammen mit den [[Pfad (Graphentheorie)|Pfaden]] im Suchbaum der Breitensuche ihrer beiden Endpunkte mit ihrem letzten gemeinsamen Vorfahren einen ungeraden [[Zyklus (Graphentheorie)|Zyklus]]. Wenn der Algorithmus beendet wird, ohne auf diese Weise einen ungeraden Zyklus zu finden, muss er eine korrekte Färbung gefunden haben und kann daraus schließen, dass der Graph bipartit ist.&amp;lt;ref&amp;gt;{{cite journal&lt;br /&gt;
 | last1 = Kleinberg | first1 = Jon&lt;br /&gt;
 | last2 = Tardos | first2 = Éva&lt;br /&gt;
 | pages = 94–97&lt;br /&gt;
 | journal = Addison-Wesley&lt;br /&gt;
 | title = Algorithm Design&lt;br /&gt;
 | language = en&lt;br /&gt;
 | year = 2006}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Schnittgraphen mit &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Strecken oder andere einfache Formen in der [[Euklidische Ebene|euklidischen Ebene]] ist es möglich, mit einer [[Laufzeit (Informatik)|Laufzeit]] von &amp;lt;math&amp;gt;\mathcal{O}(n \cdot \log(n))&amp;lt;/math&amp;gt; zu testen, ob der [[Graph (Graphentheorie)|Graph]] bipartit ist und entweder eine 2-[[Färbung (Graphentheorie)|Färbung]] oder einen ungeraden [[Zyklus (Graphentheorie)|Zyklus]] zu finden, obwohl der Graph selbst bis zu &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; [[Kante (Graphentheorie)|Kanten]] haben kann.&amp;lt;ref&amp;gt;{{cite journal&lt;br /&gt;
 | last = Eppstein | first = David&lt;br /&gt;
 | arxiv = cs.CG/0307023&lt;br /&gt;
 | doi = 10.1145/1497290.1497291&lt;br /&gt;
 | issue = 2&lt;br /&gt;
 | journal = ACM Transactions on Algorithms&lt;br /&gt;
 | pages = Art. 15&lt;br /&gt;
 | title = Testing bipartiteness of geometric intersection graphs&lt;br /&gt;
 | language = en&lt;br /&gt;
 | volume = 5&lt;br /&gt;
 | year = 2009}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Matchings ===&lt;br /&gt;
{{Hauptartikel|Matching (Graphentheorie)}}Ein [[Matching (Graphentheorie)|Matching]] in einem [[Graph (Graphentheorie)|Graphen]] ist eine [[Teilmenge]] seiner [[Kante (Graphentheorie)|Kanten]], von denen keine zwei einen [[Knoten (Graphentheorie)|Knoten]] gemeinsam haben. [[Algorithmus|Algorithmen]] mit [[Polynomieller Algorithmus|polynomieller]] [[Laufzeit (Informatik)|Laufzeit]] sind für viele Anwendungen mit Matchings bekannt, einschließlich [[Maximales Matching|maximaler Matchings]], dem Maximum Weight Matching und dem [[Stable Marriage Problem]].&amp;lt;ref&amp;gt;{{cite journal&lt;br /&gt;
 | last1 = Ahuja | first1 = Ravindra K.&lt;br /&gt;
 | last2 = Magnanti | first2 = Thomas L.&lt;br /&gt;
 | last3 = Orlin | first3 = James B.&lt;br /&gt;
 | pages = 461–509&lt;br /&gt;
 | journal = Prentice Hall&lt;br /&gt;
 | title = Network Flows: Theory, Algorithms, and Applications&lt;br /&gt;
 | language = en&lt;br /&gt;
 | year = 1993}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
In vielen Fällen sind Matching-Probleme für bipartite Graphen einfacher zu lösen als für nicht bipartite Graphen, und viele Matching-Algorithmen wie der [[Algorithmus von Hopcroft und Karp]] für maximale Matchings funktionieren nur für bipartite Graphen korrekt.&amp;lt;ref&amp;gt;{{cite journal&lt;br /&gt;
 | first1 = John E. | last1 = Hopcroft&lt;br /&gt;
 | first2 = Richard M. | last2 = Karp&lt;br /&gt;
 | title = An &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;5/2&amp;lt;/sup&amp;gt; algorithm for maximum matchings in bipartite graphs&lt;br /&gt;
 | language = en&lt;br /&gt;
 | journal = SIAM Journal on Computing&lt;br /&gt;
 | volume = 2&lt;br /&gt;
 | issue = 4&lt;br /&gt;
 | pages = 225–231&lt;br /&gt;
 | year = 1973&lt;br /&gt;
 | doi = 10.1137/0202019}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nehmen wir als einfaches Beispiel an, dass eine Gruppe &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; von Personen Jobs aus einer Menge &amp;lt;math&amp;gt;J&amp;lt;/math&amp;gt; von Jobs sucht, wobei nicht alle Personen für alle Jobs geeignet sind. Diese Situation kann als bipartiter Graph &amp;lt;math&amp;gt;(P, J, E)&amp;lt;/math&amp;gt; modelliert werden, bei dem eine Kante jeden Arbeitssuchenden mit jedem geeigneten Job verbindet. Ein [[perfektes Matching]] beschreibt eine Möglichkeit, alle Arbeitssuchenden gleichzeitig zufrieden zu stellen und alle Jobs zu besetzen. Der [[Heiratssatz]] liefert eine Charakterisierung der bipartiten Graphen, die ein perfektes Matching ermöglichen. Das [[National Resident Matching Program]] in den Vereinigten Staaten verwendet Matching-Algorithmen, um dieses Problem für Medizinstudenten und Jobs in Krankenhäusern zu lösen.&lt;br /&gt;
&lt;br /&gt;
== Verallgemeinerung ==&lt;br /&gt;
Ein [[k-partiter Graph]] ist ein Graph, dessen Knotenmenge in &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; Partitionen unterteilt werden kann, sodass es keine Kante zwischen zwei Knoten einer Partition gibt.&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
Das folgende Beispiel in der [[Programmiersprache]] [[C-Sharp|C#]] zeigt die Implementierung eines [[Algorithmus]], der prüft, ob ein [[ungerichteter Graph]] bipartit ist. Der ungerichtete Graph wird als [[Feld (Datentyp)#Dimensionen|zweidimensionales Array]] für die [[Adjazenzmatrix]] deklariert. Der Algorithmus weist [[Benachbart|benachbarten]] Knoten alternierende Farben zu. Bei der Ausführung des Programms wird die [[Methode (Programmierung)|Methode]] &amp;#039;&amp;#039;Main&amp;#039;&amp;#039; verwendet, die das Ergebnis auf der Konsole ausgibt.&amp;lt;ref&amp;gt;GeeksforGeeks: [https://www.geeksforgeeks.org/bipartite-graph/ Check whether a given graph is Bipartite or not]&amp;lt;/ref&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
&lt;br /&gt;
class BipartiteGraph&lt;br /&gt;
{&lt;br /&gt;
	// Diese Methode gibt true zurück, wenn der Graph bipartit ist, sonst false. Benachbarten Knoten werden alternierende Farben zugewiesen.&lt;br /&gt;
	private static bool IsBipartite(int[,] graph, int startIndex, int[] coloredVertices)&lt;br /&gt;
	{&lt;br /&gt;
		coloredVertices[startIndex] = 1; // Weist dem Startknoten eine Farbe zu&lt;br /&gt;
		Queue&amp;lt;int&amp;gt; queue = new Queue&amp;lt;int&amp;gt;(); // Deklariert eine Queue für die Knotenindexe&lt;br /&gt;
		queue.Enqueue(startIndex); // Fügt den Startknoten der Queue hinzu&lt;br /&gt;
		while (queue.Count != 0) // Solange die Queue nicht leer ist&lt;br /&gt;
		{&lt;br /&gt;
			int index = queue.Peek(); // Index des vordersten Knotens&lt;br /&gt;
			queue.Dequeue(); // Entfernt den vordersten Knoten&lt;br /&gt;
			if (graph[index, index] == 1) // Wenn der Graph eine Schleife enthält, wird false zurückgegeben&lt;br /&gt;
			{&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
			for (int i = 0; i &amp;lt; coloredVertices.Length; i++) // for-Schleife, die die Knoten durchläuft&lt;br /&gt;
			{&lt;br /&gt;
				if (graph[index, i] == 1 &amp;amp;&amp;amp; coloredVertices[i] == -1) // Wenn die Knoten verbunden sind und der Zielknoten nicht gefärbt ist&lt;br /&gt;
				{&lt;br /&gt;
					coloredVertices[i] = 1 - coloredVertices[index]; // Weist dem benachbarten Knoten die alternierende Farbe zu&lt;br /&gt;
					queue.Enqueue(i); // Fügt den Knoten der Queue hinzu&lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
				{&lt;br /&gt;
					if (graph[index, i] == 1 &amp;amp;&amp;amp; coloredVertices[i] == coloredVertices[index]) // Wenn die Knoten verbunden sind und dieselbe Farbe haben, wird false zurückgegeben&lt;br /&gt;
					{&lt;br /&gt;
						return false;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return true; // Wenn alle benachbarten Knoten alternierende Farben haben, wird true zurückgegeben&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Diese Methode gibt true zurück, wenn der Graph bipartit ist, sonst false&lt;br /&gt;
	private static bool IsBipartite(int[,] graph, int numberOfVertices)&lt;br /&gt;
	{&lt;br /&gt;
		int[] coloredVertices = new int[numberOfVertices]; // Deklariert ein Array für die Farben der Knoten&lt;br /&gt;
		for (int i = 0; i &amp;lt; numberOfVertices; i++) // for-Schleife, die die Knoten durchläuft&lt;br /&gt;
		{&lt;br /&gt;
			coloredVertices[i] = -1; // Initialisiert die Knoten mit -1, sodass die Knoten am Anfang nicht gefärbt sind&lt;br /&gt;
		}&lt;br /&gt;
		// Prüfung für die Komponenten des Graphen&lt;br /&gt;
		for (int i = 0; i &amp;lt; numberOfVertices; i++) // for-Schleife, die die Knoten durchläuft&lt;br /&gt;
		{&lt;br /&gt;
			if (coloredVertices[i] == -1 &amp;amp;&amp;amp; !IsBipartite(graph, i, coloredVertices)) // Wenn der Knoten noch nicht gefärbt ist und die Komponente mit diesem Startknoten nicht bipartit ist, wird false zurückgegeben&lt;br /&gt;
			{&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return true; // Wenn alle Komponenten bipartit sind, wird true zurückgegeben&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Hauptmethode, die das Programm ausführt&lt;br /&gt;
	public static void Main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		// Deklariert und initialisiert ein zweidimensionales Array für die Adjazenzmatrix eines ungerichteten Graphen mit 4 Knoten&lt;br /&gt;
		int[,] graph = {{ 0, 1, 0, 1 },&lt;br /&gt;
			{1, 0, 1, 0},&lt;br /&gt;
			{0, 1, 0, 1},&lt;br /&gt;
			{1, 0, 1, 0},&lt;br /&gt;
		};&lt;br /&gt;
		int numberOfVertices = (int) graph.GetLongLength(0); // Variable für die Anzahl der Knoten&lt;br /&gt;
		if (IsBipartite(graph, numberOfVertices)) // Aufruf der Methode&lt;br /&gt;
		{&lt;br /&gt;
			Console.WriteLine(&amp;quot;Der Graph ist bipartit.&amp;quot;); // Ausgabe auf der Konsole&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			Console.WriteLine(&amp;quot;Der Graph ist nicht bipartit.&amp;quot;); // Ausgabe auf der Konsole&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		Console.ReadLine();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Matching (Graphentheorie)]]&lt;br /&gt;
* [[Petri-Netz]]&lt;br /&gt;
* [[Sekretärinnenproblem]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Frank Gurski, Irene Rothe, Jörg Rothe, Egon Wanke: &amp;#039;&amp;#039;Exakte Algorithmen für schwere Graphenprobleme&amp;#039;&amp;#039;, Springer-Verlag, Berlin Heidelberg, 2010, ISBN 978-3-642-04499-1.&lt;br /&gt;
* Sven Krumke, Hartmut Noltemeier: Graphentheoretische Konzepte und Algorithmen, Vieweg+Teubner Verlag, 2012, ISBN 978-3-8348-1849-2.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
{{Wikiversity|Kurs:Diskrete Mathematik (Osnabrück 2020)/Vorlesung 20|Eine Vorlesung über bipartite Graphen im Rahmen eines Kurses zur diskreten Mathematik}}&lt;br /&gt;
{{Commonscat|Bipartite graphs|Bipartiter Graph}}&lt;br /&gt;
* [https://www.spektrum.de/lexikon/mathematik/bipartiter-graph/2289 &amp;#039;&amp;#039;Bipartiter Graph.&amp;#039;&amp;#039;] In: &amp;#039;&amp;#039;Springer Lexikon der Mathematik.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=4145661-0}}&lt;br /&gt;
[[Kategorie:Bipartiter Graph| ]]&lt;br /&gt;
[[Kategorie:Graphenklasse]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Thomas Dresler</name></author>
	</entry>
</feed>