www.wikidata.de-de.nina.az
Ein bipartiter oder paarer Graph ist ein mathematisches Modell fur Beziehungen zwischen den Elementen zweier Mengen Es eignet sich sehr gut zur Untersuchung von Zuordnungsproblemen Des Weiteren lassen sich fur bipartite Graphen viele Grapheneigenschaften mit deutlich weniger Aufwand berechnen als dies im allgemeinen Fall moglich ist K3 3 vollstandig bipartiter Graph mit 3 Knoten pro TeilmengeEin einfacher nicht vollstandiger bipartiter Graph mit Partitionsklassen U displaystyle U und V displaystyle V Inhaltsverzeichnis 1 Definitionen 2 Eigenschaften 3 Kombinatorik 4 Algorithmen 4 1 Matchings 5 Verallgemeinerung 6 Programmierung 7 Siehe auch 8 Literatur 9 Weblinks 10 EinzelnachweiseDefinitionen BearbeitenEin einfacher Graph G V E displaystyle G V E nbsp heisst bipartit oder paar falls sich seine Knoten in zwei disjunkte Teilmengen A und B aufteilen lassen sodass zwischen den Knoten innerhalb beider Teilmengen keine Kanten verlaufen Das heisst fur jede Kante v w E displaystyle v w in E nbsp gilt entweder v A displaystyle v in A nbsp und w B displaystyle w in B nbsp oder v B displaystyle v in B nbsp und w A displaystyle w in A nbsp Die Menge A B displaystyle A B nbsp bezeichnet man dann als Bipartition des Graphen G displaystyle G nbsp und die Mengen A B displaystyle A B nbsp als Partitionsklassen Vereinfacht dargestellt ist ein bipartiter Graph ein Graph in dem zwei Gruppen von Knoten existieren innerhalb derer keine Knoten miteinander verbunden sind Der Graph G displaystyle G nbsp heisst vollstandig bipartit falls eine Bipartition A B displaystyle A B nbsp existiert sodass jeder Knoten aus A displaystyle A nbsp mit jedem Knoten aus B displaystyle B nbsp verbunden ist Einen solchen Graphen bezeichnet man auch als K m n displaystyle K m n nbsp wobei m displaystyle m nbsp und n displaystyle n nbsp jeweils die Anzahl der Knoten von A displaystyle A nbsp und B displaystyle B nbsp sind Ein vollstandig bipartiter Graph bei dem m 1 displaystyle m 1 nbsp oder n 1 displaystyle n 1 nbsp ist heisst Sterngraph Eigenschaften BearbeitenFur alle bipartiten Graphen gilt Die Paarungszahl entspricht der Knotenuberdeckungszahl Die Partitionsklassen A B displaystyle A B nbsp sind schon nach Definition stabile Mengen Der chromatische Index entspricht seinem Maximalgrad Eine gultige Kantenfarbung lasst sich in O n m displaystyle O n cdot m nbsp bestimmen Jeder bipartite Graph ist 2 knotenfarbbar Jede Partitionsklasse bekommt also eine Farbe zugewiesen Umgekehrt ist auch jeder 2 farbbare Graph bipartit Ein k textstyle k nbsp regularer bipartiter Graph besitzt k textstyle k nbsp disjunkte perfekte Matchings Ein Graph ist genau dann bipartit wenn er keinen Kreis ungerader Lange enthalt Die kantenchromatische Zahl entspricht seinem Maximalgrad Der Listenchromatische Index ist gleich dem chromatischen Index Damit sind bipartite Graphen eine Klasse von Graphen fur welche die Listenfarbungsvermutung zutrifft Es gilt x T G D G 2 displaystyle chi T G leq Delta G 2 nbsp wobei x T G displaystyle chi T G nbsp die totalchromatische Zahl ist und D G displaystyle Delta G nbsp der Maximalgrad Fur bipartite Graphen gilt also die Totalfarbungsvermutung Alle bipartiten Graphen sind perfekte Graphen somit stimmt fur jeden induzierten Teilgraphen die Cliquenzahl mit der chromatischen Zahl uberein Nach dem Satz von Konig entspricht in bipartiten Graphen die Grosse der minimalen Knotenuberdeckung der Grosse des maximalen Matchings Eine alternative und aquivalente Form dieses Satzes besteht darin dass die Grosse der maximalen unabhangigen Menge plus die Grosse des maximalen Matchings gleich der Anzahl der Knoten ist In jedem Graphen ohne isolierte Knoten entspricht die Grosse der minimalen Kantenuberdeckung plus der Grosse eines maximalen Matchings der Anzahl der Knoten Aus der Kombination dieser Gleichung mit dem Satz von Konig folgt dass in bipartiten Graphen die Grosse der minimalen Kantenuberdeckung gleich der Grosse der maximalen unabhangigen Menge ist und dass die Grosse der minimalen Kantenuberdeckung plus der Grosse der minimalen Knotenuberdeckung gleich der Anzahl der Knoten ist Ausserdem gilt Jeder bipartite Graph das Komplement jedes bipartiten Graphen der Kantengraph jedes bipartiten Graphen und das Komplement des Kantengraphen jedes bipartiten Graphen sind alle perfekte Graphen Dies war eines der Ergebnisse die die Definition perfekter Graphen motivierten 1 Nach dem Satz der starken perfekten Graphen haben die perfekten Graphen eine verbotene Charakterisierung die der von bipartiten Graphen ahnelt Ein Graph ist genau dann bipartit wenn er keinen ungeraden Zyklus als Teilgraph hat und ein Graph ist genau dann perfekt wenn er keinen ungerader Zyklus oder sein Komplementgraphen als induzierten Teilgraphen hat Die bipartiten Graphen Kantengraphen von bipartiten Graphen und ihre Komplementgraphen bilden vier der funf Grundklassen perfekter Graphen die fur den Beweis des Satzes der starken perfekten Graphen verwendet werden 2 Fur einen Knoten wird die Anzahl benachbarter Knoten als Grad des Knoten bezeichnet und als deg v displaystyle deg v nbsp bezeichnet Die Gradsummenformel fur einen bipartiten Graphen besagt dass v V deg v u U deg u E displaystyle sum v in V deg v sum u in U deg u E nbsp Die Gradfolge eines bipartiten Graphen ist das Paar von Listen das jeweils die Knotengrade der beiden Partitionsklassen U displaystyle U nbsp und V displaystyle V nbsp enthalt Beispielsweise hat der vollstandige bipartiten Graph K 3 5 displaystyle K 3 5 nbsp die Gradfolge 5 5 5 3 3 3 3 3 displaystyle 5 5 5 3 3 3 3 3 nbsp Isomorphe bipartite Graphen haben die gleiche Gradfolge Die Gradfolge identifiziert jedoch im Allgemeinen einen bipartiten Graphen nicht eindeutig In einigen Fallen konnen nicht isomorphe zweigliedrige Graphen die gleiche Gradfolge aufweisen Kombinatorik BearbeitenDie Anzahl der bipartiten Graphen steigt schneller als exponentiell mit der Anzahl n displaystyle n nbsp der Knoten Die folgende Tabelle zeigt die mit Hilfe eines Computers bestimmten Anzahlen fur n 12 displaystyle n leq 12 nbsp 3 4 Anzahl der bipartiten Graphenn alle zusammenhangend1 1 12 2 13 3 14 7 35 13 56 35 177 88 448 303 1829 1119 73010 5479 403211 32303 2559812 251135 212780Algorithmen BearbeitenSiehe auch Graphpartitionierung Mit dem Algorithmus von Hopcroft und Karp lasst sich in der Laufzeit O m n displaystyle O m sqrt n nbsp ein maximales Matching finden und daruber auch die Stabilitatszahl bestimmen Mit einem einfachen Algorithmus der auf Tiefensuche basiert lasst sich in linearer Laufzeit bestimmen ob ein Graph bipartit ist und eine gultige Partition bzw 2 Farbung ermitteln Dabei wird einem beliebigen Knoten eine Farbe und seinen Kindern die jeweils komplementare Farbe zugewiesen Wird beim Farben festgestellt dass zwei benachbarte Knoten die gleiche Farbe haben ist der Graph nicht bipartit Die Hauptidee besteht darin jedem Knoten die Farbe zuzuweisen die sich von der Farbe des ubergeordneten Knotens in der Tiefensuche unterscheidet und Farben in der Hauptreihenfolge der Tiefensuche zuzuweisen Dies fuhrt zwangslaufig zu einer 2 Farbung des aufspannenden Waldes der aus den Kanten besteht die die Knoten mit ihren ubergeordneten Knoten verbinden aber moglicherweise werden einige Kanten die nicht zum Wald gehoren nicht richtig gefarbt Einer der beiden Endknoten jeder Kante die nicht zum Wald gehort ist ein Vorfahr des anderen Endknotens Wenn bei der Tiefensuche eine Kante dieses Typs entdeckt wird sollte uberpruft 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 gefarbten Kante einen ungeraden Zyklus der vom Algorithmus zusammen mit dem Ergebnis zuruckgegeben 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 gefarbt sein und der Algorithmus gibt die Farbung zusammen mit dem Ergebnis zuruck dass der Graph bipartit ist 5 Alternativ kann ein ahnlicher Algorithmus mit Breitensuche anstelle der Tiefensuche verwendet werden Wiederum erhalt jeder Knoten die entgegengesetzte Farbe zu seinem ubergeordneten Knoten im Suchbaum in der Reihenfolge der Breitensuche Wenn beim Farben eines Knotens eine Kante vorhanden ist die ihn mit einem zuvor gefarbten Knotens mit derselben Farbe verbindet bildet diese Kante zusammen mit den Pfaden im Suchbaum der Breitensuche ihrer beiden Endpunkte mit ihrem letzten gemeinsamen Vorfahren einen ungeraden Zyklus Wenn der Algorithmus beendet wird ohne auf diese Weise einen ungeraden Zyklus zu finden muss er eine korrekte Farbung gefunden haben und kann daraus schliessen dass der Graph bipartit ist 6 Fur die Schnittgraphen mit n displaystyle n nbsp Strecken oder andere einfache Formen in der euklidischen Ebene ist es moglich mit einer Laufzeit von O n log n displaystyle mathcal O n cdot log n nbsp zu testen ob der Graph bipartit ist und entweder eine 2 Farbung oder einen ungeraden Zyklus zu finden obwohl der Graph selbst bis zu O n 2 displaystyle mathcal O n 2 nbsp Kanten haben kann 7 Matchings Bearbeiten Hauptartikel Matching Graphentheorie Ein Matching in einem Graphen ist eine Teilmenge seiner Kanten von denen keine zwei einen Knoten gemeinsam haben Algorithmen mit polynomieller Laufzeit sind fur viele Anwendungen mit Matchings bekannt einschliesslich maximaler Matchings dem Maximum Weight Matching und dem Stable Marriage Problem 8 In vielen Fallen sind Matching Probleme fur bipartite Graphen einfacher zu losen als fur nicht bipartite Graphen und viele Matching Algorithmen wie der Algorithmus von Hopcroft und Karp fur maximale Matchings funktionieren nur fur bipartite Graphen korrekt 9 Nehmen wir als einfaches Beispiel an dass eine Gruppe P displaystyle P nbsp von Personen Jobs aus einer Menge J displaystyle J nbsp von Jobs sucht wobei nicht alle Personen fur alle Jobs geeignet sind Diese Situation kann als bipartiter Graph P J E displaystyle P J E nbsp modelliert werden bei dem eine Kante jeden Arbeitssuchenden mit jedem geeigneten Job verbindet Eine perfektes Matching beschreibt eine Moglichkeit alle Arbeitssuchenden gleichzeitig zufrieden zu stellen und alle Jobs zu besetzen Der Heiratssatz liefert eine Charakterisierung der bipartiten Graphen die eine perfektes Matching ermoglichen Das National Resident Matching Program in den Vereinigten Staaten verwendet Matching Algorithmen um dieses Problem fur Medizinstudenten und Jobs in Krankenhausern zu losen Verallgemeinerung BearbeitenEin k partiter Graph ist ein Graph dessen Knotenmenge in k displaystyle k nbsp Partitionen unterteilt werden kann sodass es keine Kante zwischen zwei Knoten einer Partition gibt Programmierung BearbeitenDas folgende Beispiel in der Programmiersprache C zeigt die Implementierung eines Algorithmus der pruft ob ein ungerichteter Graph bipartit ist Der ungerichtete Graph wird als zweidimensionales Array fur die Adjazenzmatrix deklariert Der Algorithmus weist benachbarten Knoten alternierende Farben zu Bei der Ausfuhrung des Programms wird die Methode Main verwendet die das Ergebnis auf der Konsole ausgibt 10 using System using System Collections Generic class BipartiteGraph Diese Methode gibt true zuruck wenn der Graph bipartit ist sonst false Benachbarten Knoten werden alternierende Farben zugewiesen private static bool IsBipartite int graph int startIndex int coloredVertices coloredVertices startIndex 1 Weist dem Startknoten eine Farbe zu Queue lt int gt queue new Queue lt int gt Deklariert eine Queue fur die Knotenindexe queue Enqueue startIndex Fugt den Startknoten der Queue hinzu while queue Count 0 Solange die Queue nicht leer ist int index queue Peek Index des vordersten Knotens queue Dequeue Entfernt den vordersten Knoten if graph index index 1 Wenn der Graph eine Schleife enthalt wird false zuruckgegeben return false for int i 0 i lt coloredVertices Length i for Schleife die die Knoten durchlauft if graph index i 1 amp amp coloredVertices i 1 Wenn die Knoten verbunden sind und der Zielknoten nicht gefarbt ist coloredVertices i 1 coloredVertices index Weist dem benachbarten Knoten die alternierende Farbe zu queue Enqueue i Fugt den Knoten der Queue hinzu else if graph index i 1 amp amp coloredVertices i coloredVertices index Wenn die Knoten verbunden sind und dieselbe Farbe haben wird false zuruckgegeben return false return true Wenn alle benachbarten Knoten alternierende Farben haben wird true zuruckgegeben Diese Methode gibt true zuruck wenn der Graph bipartit ist sonst false private static bool IsBipartite int graph int numberOfVertices int coloredVertices new int numberOfVertices Deklariert ein Array fur die Farben der Knoten for int i 0 i lt numberOfVertices i for Schleife die die Knoten durchlauft coloredVertices i 1 Initialisiert die Knoten mit 1 sodass die Knoten am Anfang nicht gefarbt sind Prufung fur die Komponenten des Graphen for int i 0 i lt numberOfVertices i for Schleife die die Knoten durchlauft if coloredVertices i 1 amp amp IsBipartite graph i coloredVertices Wenn der Knoten noch nicht gefarbt ist und die Komponente mit diesem Startknoten nicht bipartit ist wird false zuruckgegeben return false return true Wenn alle Komponenten bipartit sind wird true zuruckgegeben Hauptmethode die das Programm ausfuhrt public static void Main String args Deklariert und initialisiert ein zweidimensionales Array fur die Adjazenzmatrix eines ungerichteten Graphen mit 4 Knoten int graph 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 int numberOfVertices int graph GetLongLength 0 Variable fur die Anzahl der Knoten if IsBipartite graph numberOfVertices Aufruf der Methode Console WriteLine Der Graph ist bipartit Ausgabe auf der Konsole else Console WriteLine Der Graph ist nicht bipartit Ausgabe auf der Konsole Console ReadLine Siehe auch BearbeitenMatching Graphentheorie Petri Netz SekretarinnenproblemLiteratur BearbeitenFrank Gurski Irene Rothe Jorg Rothe Egon Wanke Exakte Algorithmen fur schwere Graphenprobleme Springer Verlag Berlin Heidelberg 2010 ISBN 978 3 642 04499 1 Sven Krumke Hartmut Noltemeier Graphentheoretische Konzepte und Algorithmen Vieweg Teubner Verlag 2012 ISBN 978 3 8348 1849 2 Weblinks Bearbeiten nbsp Wikiversity Eine Vorlesung uber bipartite Graphen im Rahmen eines Kurses zur diskreten Mathematik Kursmaterialien nbsp Commons Bipartiter Graph Sammlung von Bildern Videos und AudiodateienEinzelnachweise Bearbeiten Bela Bollobas Modern Graph Theory In Graduate Texts in Mathematics 184 Jahrgang Springer 1998 google com Maria Chudnovsky Neil Robertson Paul Seymour Robin Thomas The strong perfect graph theorem In Annals of Mathematics 164 Jahrgang Nr 1 2006 S 51 229 doi 10 4007 annals 2006 164 51 arxiv math 0212070 Folge A033995 in OEIS Folge A005142 in OEIS Robert Sedgewick Algorithms in Java Part 5 Graph Algorithms In Addison Wesley 2004 S 109 111 Jon Kleinberg Eva Tardos Algorithm Design In Addison Wesley 2006 S 94 97 David Eppstein Testing bipartiteness of geometric intersection graphs In ACM Transactions on Algorithms 5 Jahrgang Nr 2 2009 S Art 15 doi 10 1145 1497290 1497291 arxiv cs CG 0307023 Ravindra K Ahuja Thomas L Magnanti James B Orlin Network Flows Theory Algorithms and Applications In Prentice Hall 1993 S 461 509 John E Hopcroft Richard M Karp An n5 2 algorithm for maximum matchings in bipartite graphs In SIAM Journal on Computing 2 Jahrgang Nr 4 1973 S 225 231 doi 10 1137 0202019 GeeksforGeeks Check whether a given graph is Bipartite or not Abgerufen von https de wikipedia org w index php title Bipartiter Graph amp oldid 233490875