Grafentheorie

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
6n-graf.svg

De grafentheorie is een tak van wiskunde die de eigenschappen van grafen bestudeert.

Een graaf bestaat uit een verzameling punten, knopen genoemd, waarvan sommige verbonden zijn door lijnen, de zijden, kanten of takken. Afhankelijk van de toepassing kunnen de lijnen gericht zijn, dan worden ze ook wel pijlen genoemd, men spreekt dan van een gerichte graaf. Ook worden wel gewichten aan de lijnen toegekend door middel van getallen, deze stellen dan bijvoorbeeld de afstand tussen twee punten voor. Een graaf met gewichten noemt men een gewogen graaf.

Structuren die als grafen weergegeven kunnen worden zijn alomtegenwoordig en veel praktische problemen kunnen als een probleem op een graaf worden gemodelleerd. Grafen worden bijvoorbeeld gebruikt om eindigetoestandsautomaten te modelleren of om een schematische routekaart te maken tussen een aantal plaatsen met de afstanden daartussen. Verschillende soorten grafen spelen in de informatica een rol, niet alleen in de vorm van boomstructuren, maar ook om dataverkeer over netwerken weer te geven. Er kunnen algoritmes worden uitgevoerd om bepaalde eigenschappen van zo'n graaf te berekenen en aan de hand daarvan voorspellingen te doen of beslissingen te nemen over de optimale route voor een datapakket; binnen de informatica is dit dan ook een belangrijk onderwerp.

Complexe netwerken is een vrij recente stroming in het onderzoek rond grafen die minder is gericht op de studie van kleine grafen en de eigenschappen van individuele knopen en bogen in deze grafen, maar eerder op de statistische eigenschappen van grootschalige netwerken.

Definitie[bewerken]

Er zijn verschillende definities gangbaar om grafen te definiëren. Hier volgen de definities zoals ze in deze encyclopedie worden gehanteerd.

Een graaf bestaat uit een verzameling knopen of toppen (Engels: vertices) en een verzameling zijden, kanten, bogen of takken (Engels: edges) van paren knopen. Formeler:

Een graaf G = (V, E) is een geordend paar van een verzameling V en een verzameling E van paren elementen uit V. De elementen van V heten de knopen van de graaf G en de elementen van E de zijden, kanten of takken van G. De knopen die een zijde vormen heten de eindpunten van de zijde.

Een ruimer begrip graaf laat toe dat twee knopen door meer dan één zijde zijn verbonden. Een graaf G = (V,E) is dan een geordend paar van een verzameling V en een multiset E van paren deelverzamelingen van V:

E = \{(E_1, E_2) \mid E_1, E_2 \in \it \wp(V))\}

Daarbij worden soms, ter verduidelijking, de volgende notaties gebruikt:

V_G = V(G), de knopen van G
E_G = E(G), de kanten van G

Normaal wordt ervan uitgegaan dat een zijde twee knopen met elkaar verbindt of eventueel een lus is en bij dezelfde knoop terug komt.

Terminologie[bewerken]

  • Noteer dat twee knopen met elkaar zijn verbonden met een tilde, bijvoorbeeld v_1 \sim v_2.
  • Een knoop k heet ook verbonden met een kant e als k een begin- of eindpunt van e is
  • Een wandeling tussen twee verbonden knopen a en b is een serie verbonden knopen, waarvan a het begin en b het einde is:
\mathrm{walk}(a,b) \mathrel{\dot =}(v_1,...,v_n): a \sim v_1 \sim v_2 \sim \ldots \sim v_n \sim b
In een ongewogen graaf is de lengte van een wandeling het aantal knopen in de wandeling.
  • Een graaf heet samenhangend, wanneer er tussen alle punten in de graaf een wandeling mogelijk is.
  • Een pad tussen twee verbonden knopen a en b is een wandeling tussen a en b waarin geen punt meer dan eenmaal voorkomt.
  • De afstand tussen twee knopen a en b, notatie: d(a,b), is de lengte van het kortste pad tussen a en b. Wanneer er geen wandeling mogelijk is van a naar b heeft het geen zin over de afstand tussen a en b te spreken.
  • De diameter van een samenhangende graaf G is de maximale lengte van het kortste pad tussen twee knopen in G.
  • Een cykel in een graaf G is een wandeling van een knoop a naar a.
  • De taille van een samenhangende graaf is de lengte van de kortste cykel in de graaf.
  • De graad van een knoop k, notatie deg(k), is het aantal kanten waarmee k incident is.
  • Indien alle knopen dezelfde graad g hebben wordt de graaf g-regulier genoemd. Een graaf heet regulier als er een getal g bestaat, zodat hij g-regulier is.
  • Twee grafen G_1 en G_2 zijn isomorf als de ene graaf ontstaat uit de andere alleen door de namen van de knopen te veranderen. Meer formeel is er dan een bijectie f: V(G_1) \rightarrow V(G_2) zodanig dat (u,v)\in E(G_1) dan en slechts dan als (f(u),f(v))\in E(G_2).
  • Een partitie van een graaf G is een verdeling van V_G in een aantal deelverzamelingen V_{G,i} zodanig dat \bigcup_{i} V_{G,i} = V_G \wedge \forall_{i,j} j \not = i \Rightarrow V_{G,i} \cap V_{G,j} = \empty

Enkelvoudige grafen[bewerken]

De enkelvoudige graaf, is de meest gebruikte soort graaf. Het is een graaf, waarin de zijden altijd tussen twee knopen lopen en waarin niet meer dan één zijde tussen twee knopen voorkomt.

6n-graf.svg

De enkelvoudige graaf vindt veel toepassing binnen de wiskunde en de informatica. Over deze grafen zijn een groot aantal verschillende bewijzen gegeven. Er worden veel verschillende van deze grafen gebruikt.

Componenten en de samenhangende graaf[bewerken]

Een graaf, die bestaat uit twee componenten.

Binnen een enkelvoudige ongerichte graaf is een component een aantal knopen van de graaf die onderling zijn verbonden: een component C van graaf G is V_C \subseteq V_G met

\forall_{v_1, v_2 \in V_C} v_1 \sim v_2

Een graaf waarin alle punten verbonden zijn en dus één component vormen, heet een samenhangende graaf.

De matrixvoorstelling van een graaf[bewerken]

We kunnen een graaf eenvoudig voorstellen in een matrix, de bogenmatrix. Dit is een vierkante matrix met dimensie n*n, waarbij n het aantal knopen in de graaf is. Het element a_{ij} in de bogenmatrix A is 1 als er een zijde (boog) bestaat die van i naar j gaat en 0 als dit niet het geval is.

Gelabelde graaf Bogenmatrix
6n-graph2.svg \begin{pmatrix}
1 & 1 & 0 & 0 & 1 & 0\\
1 & 0 & 1 & 0 & 1 & 0\\
0 & 1 & 0 & 1 & 0 & 0\\
0 & 0 & 1 & 0 & 1 & 1\\
1 & 1 & 0 & 1 & 0 & 0\\
0 & 0 & 0 & 1 & 0 & 0\\
\end{pmatrix}

Is de bogenmatrix opgesteld, dan kan deze worden gebruikt om af te lezen hoeveel paden er van een knoop naar een andere zijn. Door de bogenmatrix A tot de macht n te verheffen, kan men in de kolom s op rij t aflezen hoeveel paden er zijn van lengte n van knoop s naar knoop t.

De boom[bewerken]

Een boom met 6 knopen en 5 kanten.

Een samenhangende graaf zonder cykels heet een boom. Dit omdat een dergelijke graaf in een tekening vaak op een boom lijkt. Een boom heeft één kant minder dan hij knopen heeft.

Een boom met verzameling knopen V_B heeft |V_B| - 1 kanten

Bewijs

Het bewijs gaat met de methode van de volledige inductie.

Met maar één knoop zijn er geen zijden en is de stelling waar,
Vorm nu een grotere graaf.
Een nieuwe knoop is via precies één zijde met de al gevormde graaf verbonden, wanneer de graaf met twee zijden met de gevormde graaf wordt verbonden, ontstaat een cykel.
Per nieuwe knoop komt er dus één nieuwe zijde bij.

Het is bij algoritmes op bomen vaak handig en ook gebruikelijk om een knoop in de boom aan te wijzen en deze een speciale status binnen de boom te geven, vaak wordt deze knoop gezien als het 'begin' van de boom. Deze knoop wordt dan de wortel van de boom genoemd.

Bomen behoren tot de meest fundamentele structuren in de wiskunde en de informatica. Bomen worden vaak gebruikt (of gekozen) om model te staan voor verzamelingen van objecten waar een inherente hiërarchie in zit. Als zodanig zijn bomen onder meer terug te vinden binnen aandachtsgebieden als

  • onderzoek naar taal en structuur van wiskunde, als model van de opbouw van termen, documenten en dergelijke
  • compilatie, als model voor de structuur van formele talen
  • bestandssystemen, als het model waarnaar een bestandssysteem opgebouwd wordt
  • codeertheorieën, zoals Huffmancodering

De veelvuldigheid en populariteit van bomen maakt dat er op bomen als zodanig vele algoritmen gedefinieerd zijn. Voorbeelden hiervan zijn

De cykel-graaf[bewerken]

De cykel-graaf met n knopen C_n is de enkelvoudige, samenhangende graaf met n knopen waarbij iedere knoop verbonden is met twee andere. Een dergelijke graaf heeft de vorm van een cirkel en er komen evenveel knopen als zijden in voor. De cykel-graaf met het minste aantal knopen en zijden is de K_3-graaf.

Cykel-grafen zijn binnen de informatica zeer bekend als netwerkmodel. Het Token Ring netwerk is hierop gebaseerd. Cykel-grafen dienen ook als vaak als model voor lokale zoekalgoritmen.

De volledige graaf[bewerken]

De volledige graaf met n knopen K_n is de graaf waarin alle punten onderling verbonden zijn.

De volgende grafen zijn voorbeelden van volledige grafen:

Complete graph K1.svg Complete graph K2.svg Complete graph K3.svg Complete graph K4.svg Complete graph K5.svg Complete graph K6.svg Complete graph K7.svg Complete graph K8.svg
De volledige grafen K_1...K_8.

Het aantal kanten van K_n is \frac{n \cdot (n-1)}{2}, het n-1e driehoeksgetal.

Bewijs
Om een knoop met een andere knoop te verbinden, is één kant nodig. Om twee knopen met een andere knoop te verbinden, zijn twee kanten nodig. Om n-1 knopen met een andere te verbinden, zijn dus n-1 kanten nodig. Willen we van n knopen iedere twee knopen onderling met elkaar verbinden, dan hebben we dus n*(n-1) knopen nodig. Maar als we inderdaad zoveel kanten gebruiken, hebben we iedere knoop dubbel met iedere andere knoop verbonden: een kant van a naar b is in een enkelvoudige graaf tenslotte ook een kant van b naar a. Dus hebben we maar de helft nodig: \frac{n \cdot (n-1)}{2}.

Een clique of kliek is een deelverzameling punten uit een puntenverzameling V, zo dat elk punt in de deelverzameling verbonden is met alle andere punten in die verzameling; ze vormen samen met de lijnen waaraan ze incident zijn dus een volledige graaf.

Euler en Hamilton[bewerken]

De Euler-graaf is een speciaal soort graaf die is bedacht door de wiskundige Leonhard Euler toen hij bezig was met het probleem van de zeven bruggen van Koningsbergen. Dit probleem komt neer op de vraag of het mogelijk is in een samenhangende graaf een wandeling te maken waarin alle kanten van de graaf precies één keer voorkomen, een Euler-wandeling, of zelfs een dergelijke wandeling te maken zodat deze begint en eindigt in dezelfde knoop, een Euler-cykel.

In 1736 loste Euler dit probleem op:

Een enkelvoudige, samenhangende graaf bevat een Euler-cykel dan en slechts dan als de graad van alle knopen even is.

Bewijs

\Rightarrow

Iedere keer dat een Euler-cykel langs een knoop komt, is er een zijde waarover de cykel aankomt en waarover de cykel vertrekt.

\Leftarrow

Stel, je hebt twee gesloten wandelingen, dus cykels, allebei zonder dubbel gebruikte kanten, die niet een kant maar wel een knoop k gemeen hebben. Die kunnen we aan elkaar plakken tot een nieuwe wandeling: start de eerste wandeling in k. Maak hem af en ga dan verder met de volgende, die weer eindigt in k. Stel nu dat in een enkelvoudige, samenhangende graaf alle knopen een even graad hebben. In deze graaf kan een cykel worden gemaakt zonder dubbele kanten: kies een knoop en begin over kanten te lopen totdat het niet verder kan. Nu ben je weer terug waar je bent begonnen (alle knopen hebben even graad, dus de enige knoop die tijdens jouw wandeling een ongebruikte ingang heeft en geen ongebruikte uitgangen is die knoop waar je bent begonnen. De kanten die je in jouw cykel hebt gebruikt, haal je nu weg. Dan herhaal je dit proces, totdat alle kanten op zijn. Nu heb je een aantal losse, gesloten wandelingen die geen kanten, maar wel een aantal punten gemeen hebben. Op de manier van de algemene opmerking boven, plak je nu al jouw wandelingen aan elkaar, je hebt nu de graaf terug waar je was mee begonnen en een Euler-cykel die je erin hebt gemaakt.
Complete graph K3.svg Complete graph K5.svg Königsberg graph.svg
De K_3- en K_5-grafen bevatten beide Euler-cykels. De graaf die het probleem van de zeven bruggen voorstelt, bevat geen Euler-cykel.

De voorwaarde voor een Euler-wandeling is iets minder streng.

Een enkelvoudige, samenhangende graaf bevat een Euler-wandeling dan en slechts dan als de graad van alle knopen, eventueel op twee na, even is.

Bewijs

\Rightarrow

Als de Euler-wandeling begint en eindigt in dezelfde knoop is het een Euler-cykel en hebben alle knopen even graad. Anders is een Euler-wandeling in feite een Euler-cykel met een ontbrekende kant. Neem je nu de Euler-wandeling in de graaf en plaats je een fictieve kant tussen de begin- en eindknoop, dan heb je een Euler-cykel, waarin de graad van alle knopen dus even is. Haal je nu de fictieve kant weg, dan trek je één af van de graad van de begin- en eindknoop. Hun graden worden dan oneven, de graad van de rest van de knopen blijft gelijk.

\Leftarrow

Zoek de twee knopen met oneven graad, als die er zijn, trek er een fictieve kant tussen. Nu zijn de graden van alle knopen even, dus is er een Euler-cykel. Haal de fictieve kant weer weg, een Euler-cykel minus één kant is een Euler-wandeling.

Behalve de Euler-cykels en -wandelingen is er nog een variant: de cykel en de wandeling, waarin iedere knoop één keer voorkomt. Dit zijn de Hamilton-cykel en Hamilton-wandeling. Deze variant is bedacht door William Hamilton. Er bestaat geen karakteristiek van grafen die een Hamilton-cykel bevatten. De wiskundige Øystein Ore bewees wel de volgende stelling:

Als voor elk tweetal knopen a,b \in V_G met (a,b) \notin E_G geldt dat deg(a) + deg(b) \geq |V_G| dan bevat G een Hamilton-cykel.

G bevat een Hamilton-cykel als de som van de graden van elk tweetal niet-verbonden knopen samen groter is dan het aantal knopen van de graaf.

Over het algemeen is het vinden van een Hamilton-cykel in een graaf een NP-volledig probleem, dit in tegenstelling tot de Euler-cykel waar het probleem in polynomiale tijd kan worden opgelost dankzij de bovengenoemde regels. Een Hamilton-cykel is een simpel geval van het handelsreizigersprobleem. Bij dit probleem worden ook afstanden aan de verbindingen tussen de knopen of plaatsen toegevoegd en is het de opdracht de kortste rondreis te bepalen.

Overige grafen[bewerken]

De planaire graaf[bewerken]

Planaire of vlakke grafen zijn grafen die je op een plat vlak kunt tekenen, zonder daarbij de kanten van de graaf elkaar te laten snijden.

Complete graph K3.svg Complete graph K5.svg
De K_3-graaf is planair; de K_5-graaf niet

Dergelijke grafen zijn van belang bij de modellering van zaken als pijpleidingen en printplaten voor elektronica, waar de verbindingen natuurlijk geen kortsluiting mogen maken. Wat dat eerste betreft zijn planaire grafen dan ook bij het grotere publiek bekend in de vorm van puzzeltjes zoals "probeer drie huizen aan te sluiten op de gas-, water- en elektra-bronnen, zonder dat enige van de leidingen elkaar snijden". Dit is in feite de vraag of K_{3,3} planair is.

Ook over planaire grafen heeft Leonhard Euler nagedacht, hij vond de stelling van Euler. Deze stelling is gebaseerd op het aantal knopen, kanten en gebieden van een graaf. Een gebied is het deel van het papier waarop de graaf is getekend, of anders het deel van de graaf dat geheel door kanten of door buitenste knopen van de graaf wordt omgeven. Het aantal gebieden hangt ervan af hoe je de graaf precies tekent, maar het blijkt dat je een bepaalde graaf altijd met een bepaald aantal gebieden kunt tekenen, dat niet verandert, hoe je de graaf ook precies tekent, behalve als je de graaf niet-planair tekent.

Graaf gebieden.png

Stelling van Euler: Zij G een samenhangende, planaire graaf met v knopen, e kanten en f gebieden. Dan geldt

v - e + f = 2
Bewijs

Het bewijs gaat met inductie naar e - v. Omdat G samenhangend is, geldt altijd e - v \geq -1.

nulhypothese: e - v = -1, de graaf is een boom
De graaf G bevat geen cykels; het aantal gebieden is dus 1. e - v = -1 \equiv v - e = 1, dus v - e + f = v - e + 1 = 1 + 1 = 2.
inductiestap: Neem aan dat voor -1\leq k < n geldt dat voor alle vlakke grafen met v - e =k v-e+f=2 hebben. We moeten bewijzen dat voor een willekeurige vlakke graaf met v-e=n hetzelfde geldt.
De graaf bevat nu een cykel. Deze cykel scheidt een apart gebied af. Verwijderen we nu een kant uit de cykel, dan hebben we een graaf met een kant en een gebied minder. Als we het aantal knopen, kanten en gebieden in deze graaf v' , e' en f' noemen, geldt e'-v'=(e-1)-v=(e-v)-1=n-1, en dus v'-e'+f'=2 vanwege de inductiehypothese. Hieruit kunnen we afleiden dat v-e+f=v'-(e'+1)+(f'+1)=v'-e'+f'=2, wat precies is wat we moesten bewijzen.

Met de stelling van Euler kunnen we laten zien dat een samenhangende graaf alleen planair kan zijn als hij niet al te veel kanten heeft.

Zij G een samenhangende, planaire graaf met v knopen en e kanten en 3 \leq v. Dan geldt e \leq 3v - 6.

Bewijs
Het idee achter de stelling is dat er een relatie is tussen het aantal kanten in G en het soort van gebieden waarin G het vlak verdeelt. In een planaire muur fungeert iedere kant als "binnenmuur" en als "buitenmuur" van een (afgesloten) gebied – de "buitenkant" van de graaf telt als één groot gebied. Tellen we alle binnen- en buitenmuren, dan komen we aan 2e (iedere kant tel je zo twee keer. Verder is het zo dat ieder gebied afgezonderd door de graaf een bepaalde vorm heeft: driehoek, vierhoek, vijfhoek, etc. Iedere n-hoek heeft dan n binnenmuren. Noemen we het aantal driehoekige gebieden f_3, het aantal vierhoekige f_4, het aantal vijfhoekige f_5 enzovoorts, dan kunnen we het aantal muren ook op een andere manier tellen: \sum_{i = 3}^{n} n \cdot f_n. Oftewel
2e = 3f_3 + 4f_4 + 5f_5 + \ldots
Dus we weten ook 2e \geq 3f_3 + 3f_4 + 3f_5 + \ldots = 3f.
v - e + \frac {2e}{3} \geq 2
Dus 3v - e \geq 6

Met deze informatie in de hand, kunnen we zo narekenen dat bijvoorbeeld K_5 niet planair is.

Op een soortgelijke manier als hierboven, kunnen we ook bewijzen voor samenhangende, planaire grafen zonder driehoeken (dus het "kleinste" gebied is een vierhoek) dat e \leq 2v - 4. Hiermee is ook het puzzeltje opgelost: K_{3,3} is niet planair.

Een opmerkelijke en nuttige stelling is die van Kuratowski: een graaf is planair dan en slechts dan als hij niet K_5 of K_{3,3} bevat. Oftewel, alleen die twee grafen zijn in feite niet-planair.

De bipartiete graaf[bewerken]

Een voorbeeld van een bipartiete graaf

Een bipartiete graaf G is een graaf zodanig dat

V_G = V_{G,1} \cup V_{G,2} \wedge (V_{G,1} \cap V_{G,2}) = \empty \wedge
\forall_{\{v_1,v_2\} \in E_G}:v_1 \in V_{G,1} \wedge v_2 \in V_{G,2}

oftewel: er is een partitie van V zodanig dat alle kanten van V tussen de twee deelverzamelingen van knopen lopen en er geen "interne" kanten zijn. Hierbij is het ook toegestaan dat een van beide verzamelingen leeg is, of zelfs allebei, zodat ook een graaf op 0 of 1 knoop bipartiet is.

Eveneens is duidelijk dat C_3 de kleinste, niet-bipartiete graaf is. Met dit inzicht valt ook goed in te zien dat een graaf niet-bipartiet is, als deze een cykel van oneven lengte bevat. Met name geldt voor alle grafen C_{2*n + 1} dat deze niet bipartiet zijn, sterker nog:

Een graaf G is bipartiet \Leftrightarrow G bevat geen oneven cykels

Bewijs

\Rightarrow

Stel, G is bipartiet. Alle kanten van G lopen dus over de partitie-grens heen. Heb ik nu een cykel van oneven lengte, dan ligt er één knoop van de cykel meer in de ene deelverzameling dan in de andere – zogezegd, de "eerste" en "laatste" knoop van de cykel liggen in dezelfde deelverzameling. Maar deze twee knopen kunnen niet verbonden zijn om de cykel te sluiten: zijn ze het wel, dan is de graaf niet bipartiet.

\Leftarrow

Stel, G bevat geen oneven cykels. Dat wil zeggen, voor iedere cykel in G die niet samenhangt met een andere kan ik een knoop kiezen, die in V_1 plaatsen, de volgende in V_2, de volgende weer in V_1, enzovoorts, en de laatste in V_2 en dan lopen alle kanten in de cykel over de partitie-grens. Voor alle andere knopen (cykels, anderzijds) geldt dan dat dat hun verdeling over de partities vastligt zodra ik de verdeling van bovengenoemde cykels gekozen heb (en merk op: ook voor cykels in deze situatie geldt dat ze perfect verdeeld kunnen worden omdat ze even lengte hebben). Daarmee is de graaf bipartiet.

Er zijn ook k-partiete grafen, waarbij de graaf wordt opgesplitst in k partities waarvoor er wederom geen lijnen zijn tussen punten in dezelfde partitie. Voor k=2 heb je weer de bipartiete graaf.

De Petersen-graaf[bewerken]

Petersen-graaf.

De volgende graaf staat bekend als de Petersen-graaf, gedefinieerd door de Deense wiskundige Petersen.

Op zich is er niets speciaals mee aan de hand; de Petersen-graaf komt echter binnen de grafentheorie vaak voor, hetzij als voorbeeld bij bewijzen dan wel als tegenvoorbeeld om stellingen mee te ontkrachten. De Petersen-graaf wordt dan vaak gebruikt als deelgraaf van een andere, meer complexe graaf.

Overigens is de Petersen-graaf ook een voorbeeld van een graaf die K_5 bevat: als we de buitenste "ring" van knopen en de binnenste "ring" samentrekken, vinden we de K_5-graaf. We kunnen dan ook duidelijk zien dat de Petersen-graaf niet planair is.

Graafoperaties, de 2-graaf en geïnduceerde grafen[bewerken]

De rechtse graaf is een geïnduceerde subgraaf op de linker.

Uitgaande van een graaf G (of een aantal verschillende grafen) kunnen we, via allerlei operaties, andere grafen maken.

Om te beginnen is er de op G geïnduceerde graaf G' . Deze graaf is als volgt gedefinieerd:

de op G geïnduceerde graaf G' is een paar (V', E') met
V' \subset V_G
\forall_{\{v_1, v_2\} \in E_G} : v_1 \in V' \wedge v_2 \in V' \Rightarrow \{v_1, v_2\} \in E'

oftewel, de graaf op een aantal knopen van G en de kanten van G die je nog tussen die twee knopen kunt trekken.

Graaf met zijn complementgraaf.

Daarnaast is er de complementgraaf van G. Dit is

de complementgraaf \overline{G} van G is het paar (V(\overline{G}), E(\overline{G})) met
V(\overline{G}) = V(G)
E(\overline{G}) = \{ \{v_1, v_2\} | v_1,v_2 \in V(G) \wedge v_1 \not = v_2\} \backslash E(G)

oftewel de graaf met dezelfde knopen als G, maar alle kanten die juist niet in G zitten.

Graaf met bijbehorende lijngraaf.

Ook kennen we de lijngraaf L(G) van G. Deze graaf is

L(G) is een graaf (V_L, E_L) met
V_L = E(G)
E_L = \{ \{e_1, e_2\} | e_1 = \{v_{1,1}, v_{1,2}\} \wedge e_2 = \{v_{2,1}, v_{2,2}\} \wedge (v_{1,1} = v_{2,1} \vee v_{1,1} = v_{2,2} \vee v_{1,2} = v_{2,1} \vee v_{1,2} = v_{2,2})\}

oftewel de graaf waarvan de knopen de kanten zijn van G en er een kant loopt tussen twee knopen van L(G) als de bijbehorende kanten van G een knoop gemeen hebben.

De vereniging van twee disjuncte grafen.

Voor twee grafen G en H die geen knopen of kanten gemeen hebben kunnen we ook de vereniging en het cartesisch product definiëren. De vereniging van G en H is de graaf G ∪ H met

V(G \cup H) = V(G) \cup V(H)
E(G \cup H) = E(G) \cup E(H)
Het cartesisch product van twee grafen.

Het cartesisch product van G en H is de graaf G \times H met

V(G \times H) = V(G) \times V(H)
E(G \times H) = \{ \{(g_1, h_1), (g_2,h_2)\} | (g_1 = g_2 \wedge h_1 \sim h_2) \vee (g_1 \sim g_2 \wedge h_1 = h_2)\}

oftewel de knopen van G \times H zijn de paren van knopen van G en H en deze knopen zijn verbonden door kanten als een van de knopen in de twee paren dezelfde zijn en de andere verbonden waren.

V.l.n.r.: K_2 ^0, K_2 ^1, K_2 ^2 en K_2 ^3.

Een bekend voorbeeld van graaf-vermenigvuldiging is de rij van de "machten" van de 2-graaf (d.i. K_2): dit zijn de n-dimensionale kubussen hier rechts.

Gerichte grafen[bewerken]

Een type graaf die naast de enkelvoudige graaf vaak voorkomt, is de gerichte graaf. Formeel is een gerichte graaf een graaf G met

G = (V, E) \;\text{met}
V een verzameling knopen (V = \{v_1, v_2, v_3, \ldots\})
E een verzameling kanten: E \subseteq \{ (v_1,v_2) | v_1, v_2 \in V \wedge v_1 \not = v_2 \}

Het verschil met de enkelvoudige graaf is dat de kanten niet langer ongeordende paren zijn, maar juist geordende paren (intuïtief wil dat zeggen: de kanten hebben nu een richting). Merk op dat in de bovenstaande definitie een kant dan ook een geordend paar is en niet een verzameling. Dit wil dan ook zeggen dat een kant (a,b) niet hetzelfde is als de kant (b,a).

Vanwege de richting is het normaal om bij een gerichte graaf de kanten als pijlen te tekenen.

Veel van de concepten zoals die gedefinieerd zijn voor enkelvoudige grafen, bestaan ook voor gerichte grafen. Bomen, volledige grafen, somgrafen en productgrafen bestaan allemaal. Alleen is de uitwerking soms anders, omdat de richting nu meespeelt. Zo is het bij enkelvoudige grafen zo dat er voor iedere knoop k maar één pad is van de wortel naar k; bij een gerichte graaf kunnen er meerdere zijn, zonder dat dit een cykel oplevert.

Gerichte grafen worden vaak toegepast in de modellering van problemen waarbij het niet zinnig is om paden in meer dan één richting te doorlopen. Gebruik je bijvoorbeeld een graaf om aan tijdsplanning te doen voor de bouw van een woning, dan heeft het alleen zin om de bouw van de fundering voor de bouw van de muren plaats te laten vinden en andersom heeft geen zin.

Enige verschillen ten opzichte van enkelvoudige grafen[bewerken]

Er zijn een aantal typische dingen die anders zijn in gerichte grafen in vergelijking met enkelvoudige grafen. Bijvoorbeeld heeft de graad een andere betekenis. De graad van een knoop is in een enkelvoudige graaf het aantal kanten waarmee de knoop incident was, in een gerichte graaf is de definitie iets anders:

  • ingraad van een knoop k: het aantal kanten (m, k) \in E
  • uitgraad van een knoop k: het aantal kanten (k, n) \in E

Een gerichte graaf bevat een Euler-wandeling dan en slechts dan als voor alle knopen in de graaf de in- en uitgraad gelijk zijn. Het bewijs hiervoor is vrijwel hetzelfde als dat voor de enkelvoudige Eulergraaf.

Een gerichte graaf heet samenhangend als er voor iedere partitie V = V_1 \cup V_2 een kant loopt van V_1 naar V_2 of omgekeerd. Loopt er altijd een dergelijke kant in beide richtingen, dat wil zeggen als er tussen iedere twee knopen een wandeling is in beide richtingen, dan heet de graaf sterk samenhangend.

Gelabelde en gewogen grafen[bewerken]

Een andere uitbreiding op de enkelvoudige graaf die vaak voorkomt is die van labeling. Hierbij wordt de graaf G uitgebreid met één of twee functies f en g:

f : E(G) \rightarrow A
g : V(G) \rightarrow B

Deze functies voegen aan iedere kant ,of knoop, in het geval van g, een element toe uit een of andere verzameling symbolen. Kanten labelen komt meer voor dan de knopen labelen.

Als de beeld-verzameling een verzameling van getallen is (\Bbb{N}, \Bbb{Z}, \Bbb{Q}, \Bbb{R}, \Bbb{C}, etc.), dan noemen we de labeling ook wel een weging. De graaf heet dan een gewogen graaf. Een gewogen, gerichte graaf wordt ook wel een netwerk genoemd.

Labeling en met name weging worden gebruikt om aan een graaf speciale betekenissen toe te kennen. Wordt een graaf gebruikt als model voor een wegennet bij routeplanning, dan kan bij een weging bijvoorbeeld gedacht worden aan de lengte van de weg, of de drukte. Optimaliseringsproblemen op grafen gebruiken meestal weging als criterium aan de hand waarvan wordt geoptimaliseerd.

Het aantal gelabelde bomen op v knopen is v^{v-2}

Bewijs

Het bewijs volgt uit de codering van Prüfer van knoop-gelabelde bomen. Deze constructie werkt als volgt:

  • Van knoopgelabelde boom met v knopen naar Prüferrij ter lengte v-2: Kies het blad (knoop met graad 1) van de boom met het laagste label. Verwijder deze knoop en noteer het label van zijn buur. Ga zo door totdat er maar twee knopen over zijn en verwijder deze gewoon. Nu heb je een Prüferrij ter lengte v-2, door steeds bladeren te verwijderen naar volgorde van grootte.

Tree graph Prufer code step 1.svg Tree graph Prufer code step 2.svg Tree graph Prufer code step 3.svg Tree graph Prufer code step 4.svg Tree graph Prufer code step 5.svg

  • Van Prüferrij ter lengte v-2 naar knoopgelabelde boom met v knopen: Merk om te beginnen op dat een element van de Prüferrij een buur is van een andere knoop in de boom. Alleen labels van bladeren in de nog op te bouwen (deel)boom staan dus niet in de rij. Schrijf nu alle getallen 1, 2, ..., v op. Kies uit dit rijtje het laagste element dat niet in de Prüferrij staat. Verbindt dit element met het eerste element van de Prüferrij en streep beide weg. Herhaal dit totdat de Prüferrij leeg is. Er staan nu nog twee getallen in de rij – verbindt deze twee in de boom. Nu heb je een boom opgebouwd met v knopen, door steeds bladeren toe te voegen naar volgorde van grootte.

Prufer graph construction step 1.svg Prufer graph construction step 2.svg Prufer graph construction step 3.svg Prufer graph construction step 4.svg Prufer graph construction.svg

  • Iedere boom op v knopen kan dus eenduidig gecodeerd worden als een rij van lengte v-2. Ieder van deze elementen kan ieder element zijn uit de verzameling \{1, \ldots, v\}. Dat zijn dus v^{v-2} mogelijke combinaties.

Hypergrafen[bewerken]

Hypergrafen zijn een veralgemening van grafen, in zoverre dat in een hypergraaf een hyperkant een willekeurig aantal knopen kan verbinden, gaande van 1 tot het aantal knopen in de graaf.

Problemen op grafen[bewerken]

Belangrijke algoritmes op grafen[bewerken]

Gerelateerde wiskundige gebieden[bewerken]

Bronnen, noten en/of referenties
Etalagester
Etalagester Dit artikel is op 6 augustus 2003 in deze versie opgenomen in de etalage.