• No results found

2.3 Euler en Hamilton grafen

2.3.1 Euler grafen

Niet-gerichte Euler grafen K¨onigsberger bruggenprobleem

Door de voormalige Pruisische stad K¨onigsberg stroomt de rivier de Pregel. De oevers van deze rivier en twee eilandjes in de rivier zijn verbonden door zeven bruggen (zie onderstaande figuur). Toen de beroemde Zwitserse wiskundige Euler in 1736 daar op bezoek was werd hem de vraag gesteld of het mogelijk was een wandeling te maken waarbij iedere brug precies ´e´en keer wordt aangedaan en bij het beginpunt terugkeert.

Door elke rivieroever en elk eiland te representeren door een knooppunt en elke brug door een tak kunnen we er een probleem in een niet-gerichte graaf van maken. De vraag is dan of de graaf een Euler graaf is. Euler9 wist op deze wijze het probleem op te lossen.

' & $ % ' & $ % 3 1 2 4 a c b d f g e k k k k 3 2 1 4 ©©©© ©©©© ©© HH HH HH HH HH c a d b f g e Lemma 2.6

Indien voor ieder knooppunt de graad minstens 2 is, dan heeft de graaf een kring. Bewijs

De bewering is triviaal indien de graaf een lus of een paar evenwijdige takken heeft. We mogen dus aannemen dat de graaf normaal is. Neem een willekeurig knooppunt v1. Omdat d(v) ≥ 2, kunnen we van v1 naar een ander knooppunt v2 en vandaar naar een v3 etc. Omdat er eindig veel knooppunten zijn, komt op een gegeven moment een knooppunt voor de tweede keer voor, zeg vi komt voor de tweede keer voor na vk. Dan is C = {vi, vi+1, . . . , vk, vi} een kring.

Stelling 2.17

Een samenhangende graaf is een Euler graaf d.e.s.d. als de graad van ieder knooppunt even is. Bewijs

⇒ Zij C een Euler kring. Indien C een knooppunt passeert, dan geeft dat een bijdrage 2 aan de graad van dat knooppunt. De graad van ieder knooppunt is dus even.

9L. Euler: Solutio problematis ad geometriam situs pertinentis, Comment. Acad. Sci. Petropol. 8 (1736) 128-140. Zie ook http://turnbull.mcs.st-and.ac.uk/˜history/Mathematicians/Euler.html

⇐ Pas volledige inductie naar het aantal takken van de graaf toe. Omdat de graaf samenhangend is, is de graad van ieder knooppunt minstens 2, zodat volgens Lemma 2.6 de graaf een kring C bevat. Als dit de enige takken van de graaf zijn, dan zijn we klaar. Veronderstel dus dat er nog andere takken zijn. Als we de takken van C weglaten, dan blijft de graad in ieder knooppunt even, maar de graaf hoeft niet meer samenhangend te zijn. Beschouw nu de component van de graaf zonder C, zeg G1, G2, . . . , Gk. Iedere Giheeft minstens een knooppunt gemeen met de kring C, zeg het knooppunt vi, 1 ≤ i ≤ k. Volgens de inductieveronderstelling vormen de takken van een component een kring en dit geeft de kringen C1, C2, . . . , Ck. Doorloop nu de eerste kring C en iedere keer als we voor het eerst vi tegenkomen, voegen we de kring Ci in, 1 ≤ i ≤ k. Dit geeft de gewenste Euler kring.

Gevolg 2.5

Een samenhangende graaf is een semi-Euler graaf d.e.s.d. als er hoogstens twee knooppunten met oneven graad zijn.

Bewijs

Als er twee knooppunten van oneven graad zijn (´e´en knooppunt van oneven graad kan niet volgens Gevolg 2.1), dan voegen we een tak toe tussen die twee knooppunten. Vervolgens kunnen we Stelling 2.17 toepassen. Dit geeft een Euler king C. Door uit C de toegevoegde tak weg te laten krijgen we een Euler keten.

Als we willen bepalen of een gegeven graaf een Euler graaf is moeten we eerst nagaan of de graaf samenhangend is. Dit kan met DF S met complexiteit O{max(n, m)}. Indien dat het geval is moet worden nagegaan of de graad in ieder knooppunt even is en de complexiteit daarvan is O(m). Het Euler probleem behoort dus tot de klasse P van de ’makkelijke’ problemen.

Het bewijs van Stelling 2.17 is hieronder vertaald naar een algoritme.10 In dit algoritme wordt steeds een kring bepaald, die dan aan de bestaande kring wordt ’geplakt’ totdat de kring alle takken bevat. In het onderstaande algoritme is H de deelgraaf waarin de gebruikte takken zijn weggelaten, C de (gedeeltelijke) Euler kring en dC(v) de graad van knooppunt v in C. Verder gebruiken we een index r voor de positie van C waar de volgende subkring C moet worden ingevoegd en w het knooppunt waarmee wordt begonnen om een nieuwe subkring te vinden.

Algoritme 2.19 Bepalen van Euler kring in een Euler graaf G Invoer: Een Eulergraaf G.

Uitvoer: Een Eulerkring C.

10Er bestaan diverse algoritmen om een Euler kring te vinden. De eerste is afkomstig van Fleury (Fleury: Deux

problemes de geometrie de situation, Journal de mathematiques elementaires (1883), 257-261). Het luidt als volgt:

start in een knooppunt en in iedere stap kiezen we een nog niet gebruikte tak zdd. we een brug (in de resterende deelgraaf) niet kiezen, tenzij het niet anders kan.

1. H := G; w := v1; C := {w}; r := 1; for i = 1 step 1 until n do dC(vi) := 0. 2. a. w0:= w; C:= {w0}; j := 0.

b. if er een tak (wj, vk) in H is then go to stap 2c. else go to stap 3.

c. wj+1:= vk; C := C∪ {wj+1}; H := H\(wj, wj+1); dC(wj) := dC(wj) + 1; dC(wj+1) := dC(wj+1) + 1; j := j + 1; go to stap 2b.

3. a. Voeg C op positie r aan C toe.

b. Stel C = {u1, u2, . . . , up} (in de rest van deze stap wordt de volgende r bepaald). c. i := r + 1.

d. if i > p : C is een Euler kring en ST OP .

else begin if dC(ui) < d(ui) then begin w := ui, r := i en go to stap 2a end else go to stap 4.

end

4. i := i + 1; go to stap 3d.

Voorbeeld 2.18

In dit voorbeeld bepalen we een Euler kring met Algoritme 2.19 in onderstaande graaf.

s s s s s s s s s s s s s s s s s s s 16 15 12 11 14 17 18 13 10 1 2 5 6 9 3 4 7 8

In stap 2 van het algoritme hebben we vaak vrijheid in de keuze van de tak (wj, vk). We zullen voor vk het knooppunt met de kleinste index kiezen. Het algoritme verloopt dan als volgt (we schrijven niet alle tussenstappen volledig uit):

Initialisatie: C = {1}; r = 1. Iteratie 1:

2. C= {1, 2, 3, 4, 5, 2, 17, 14, 1}.

3. Invoegen op positie r = 1 geeft C = [1, 2, 3, 4, 5, 2, 17, 14, 1]. w = 5; r = 5.

Iteratie 2:

2. C= {5, 6, 7, 8, 9, 6, 13, 10, 9, 10, 11, 12, 13, 18, 5}.

3. Invoegen op positie r = 5 geeft C = {1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 13, 10, 9, 10, 11, 12, 13, 18, 5, 2, 17, 14, 1}. w = 18; r = 18.

Iteratie 3:

2. C= {18, 15, 16, 17, 18}.

3. Invoegen op positie r = 18 geeft C = {1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 13, 12, 11, 10, 9, 10, 13, 18, 15, 16, 17, 18, 5, 2, 17, 14, 1}. Hiermee is een Euler kring gevonden.

We zullen nu ingaan op de complexiteit van het algoritme. Het is als volgt in te zien dat de complexiteit van stap 2 over het gehele algoritme O(m) is. Gebruik een takkenlijst voor ieder van de knooppunten; de takkenlijst bevat voor ieder knooppunt de takken waarmee het knooppunt incident is. Iedere keer als een tak aan C wordt toegevoegd verwijderen we deze uit de lijst (d.w.z. zit niet meer in H). De keuze van een tak (wj, vk) is dan O(1) (de eerste van de lijst) en per tak is er vervolgens werk van de orde O(1). De complexiteit van stap 2 over het hele algoritme is dus O(m). Ook stap 3 heeft complexiteit O(m): het invoegen over het hele algoritme is van O(m). Hetzelfde geldt voor de bepalingen van de waarde r.

Voorbeeld 2.19

Beschouw alle dominostenen: dit zijn alle mogelijkheden om twee getallen uit 0 t/m 6 naast elkaar te zetten, waarbij de volgorde niet van belang is (je mag de stenen omdraaien). Ga na dat er 28 van dergelijke stenen zijn. Is het mogelijk om al deze stenen in ´e´en kring te leggen zdd. op stenen die aan elkaar grenzen hetzelfde getal staat?

Maak een volledige graaf met 7 knooppunten die we nummeren met 0, 1, . . . , 6. We voegen aan deze graaf in ieder knooppunt een lus toe. De tak (i, j) associeren we met de dominosteen waar i en j op staan. Deze graaf is Eulers, want ieder knooppunt heeft graad 8 (een lus telt voor graad 2). Hieruit volgt dat zo’n kring bestaat. Een oplossing is bijvoorbeeld:

[0, 1][1, 2][2, 2][2, 3][3, 3][3, 4][4, 4][4, 5][5, 6][6, 0][0, 0][0, 2][2, 4][4, 6][6, 1][1, 1][1, 3][3, 5][5, 5][5, 0][0, 3] [3, 6][6, 6][6, 2][2, 5][5, 1][1, 4][4, 0].

Het resultaat van Euler stamt uit 1736. In Stelling 2.18 staat een andere karakterisering, die pas ongeveer 250 jaar later, tussen 1973 en 1986, is gevonden.11

Stelling 2.18

Een samenhangende graaf is een Euler graaf d.e.s.d. als iedere tak in een oneven aantal enkelvoudige kringen ligt.

11De noodzakelijkheid van de voorwaarde is bewezen in S.Toida: Properties of an Euler graph, Journal of the Franklin Institute 295 (1973) 343–345. In T.A. McKee: Recharacterizing Eulerian: intimations of new duality, Journal of Graph Theory 10 (1986) 277–297 is aangetoond dat de voorwaarde ook voldoende is.

Bewijs

⇒ Neem een tak e = (i, j). Beschouw de collectie S van alle ketens in G\{e} die in i beginnen en eindigen in j, waarbij j slechts ´e´en keer voorkomt (dus als eindpunt). Omdat i in G\{e} een oneven graad heeft, kunnen we in i starten met een oneven aantal takken. Beschouw zo’n tak, zeg (i, k). Dan kunnen we in k ook met een oneven aantal andere takken verder gaan. Dit herhalen we totdat we knooppunt j bereiken. Het aantal ketens in S is dus oneven (het product van een aantal oneven getallen).

Beschouw een keten die niet-enkelvoudig is, zeg C = [i, . . . , k, . . . , l = k, . . . , j], waarbij k het eerste knooppunt van C is dat meer dan ´e´en keer voorkomt en dat gebeurt voor de eerste keer als de keten l aandoet. Dan is er ook een niet-enkelvoudige keten door het stuk tussen k en l in de andere richting te doorlopen: C = [i, . . . , l, . . . , k, . . . , j]. Dus de ketens van S die niet enkelvoudig zijn kunnen worden verdeeld in deelverz. die uit twee elementen bestaan. Als we deze weglaten, verandert de pariteit van S niet. Als we aan een enkelvoudige keten de tak e toevoegen, dan ontstaat een enkelvoudige kring. De tak e ligt dus in een oneven aantal enkelvoudige kringen.

⇐ Veronderstel dat G een knooppunt v van oneven graad heeft, zeg graad d, en laat ei, 1 ≤ i ≤ d, de met v incidenten takken zijn. Laat ei in mi enkelvoudige kringen liggen. Als C een enkelvoudige kring is die eibevat, dan moet C ook een ej met i 6= j bevatten. Dus inPdi=1 mi wordt iedere enkelvoudige kring die v aandoet 2x geteld, zodatPdi=1mi even is. Omdat d en alle mi’s oneven zijn, geeft dit een tegenspraak.

Gerichte Euler grafen

Een gerichte graaf heet een Euler graaf als alle pijlen een ronde vormen; deze ronde heet een Euler ronde. Als alle pijlen een pad vormen, dan spreken we over een semi-Euler graaf en een Euler pad.

Stelling 2.19

Een samenhangende gerichte graaf is een Euler graaf d.e.s.d. als d+(v) = d(v) voor ieder knooppunt v.

Bewijs

De argumenten zijn geheel analoog aan die van het bewijs van Stelling 2.17.

Gevolg 2.6

Een samenhangende gerichte graaf is een semi-Euler graaf d.e.s.d. als er hoogstens twee knoop-punten zijn waarvoor niet geldt in-graad = uit-graad en voor de knoopknoop-punten waarvoor het niet geldt is het verschil tussen in-graad en uit-graad gelijk aan 1.

Bewijs

⇒ Het is direct duidelijk dat een Euler pad impliceert dat voor alle knooppunten v, behalve het begin en eindpunt van het pad, geldt dat d+(v) = d(v), en dat voor begin- en eindpunt het verschil gelijk is aan 1.

⇐ Veronderstel dat voor twee knooppunten de in-graad ongelijk is aan de uit-graad en dat het verschil voor die knooppunten 1 is. OmdatPv d+(v) =Pv d(v), is er dan een v en w met d+(v) − d(v) = 1 en d+(w) − d(w) = −1. Voeg een pijl (w, v) toe, dan ontstaat een Euler graaf. Er is dus een Euler ronde, zodat zonder de extra pijl er een Euler pad is. De Bruijn rijtjes

We zullen nu een toepassing geven van gerichte Euler grafen. Laat X = {x1, x2, . . . , xN} een alfabet zijn. Omdat er op iedere plaats N mogelijkheden zijn, zijn er Nn woorden met n letters. Een De Bruijn12 rij is een rij a0a1· · · am−1 met letters uit het alfabet zdd. voor ieder woord w van n letters (n nemen we vast), er een unieke index i is, met 0 ≤ i ≤ m − 1, waarvoor w = aiai+1· · · ai+n−1, waarbij de indices modulo m worden genomen (d.w.z. de rij is cyclisch). Veronderstel dat er een De Bruin rij a0a1· · · am−1 bestaat voor een gegeven alfabet X met N ≥ 2 letters. Omdat geen twee van de Nn woorden met n letters op dezelfde plaats kunnen beginnen, moet een De Bruijn rij minstens Nn letters hebben, d.w.z. m ≥ Nn. Anderzijds kunnen we op iedere plaats i beginnen met een woord van n letters, zodat m ≤ Nn, waaruit volgt dat m = Nn. Neem bijvoorbeeld X = {x, y, z} en n = 2. Dan is een De Bruijn rij die alle 9 woorden van twee let-ters produceert de rij xxyyzzxzy. Deze geeft namelijk de woorden xx, xy, yy, yz, zz, zx, xz, zy en yx.

We zullen nu laten zien hoe we een gerichte Euler graaf kunnen gebruiken om een De Bruijn rij te produceren. Als knooppunten nemen we alle Nn−1 woorden met n − 1 letters. We trekken vanuit het woord y1y2· · · yn−1 pijlen naar alle N woorden y2y3· · · yn−1yn, waarbij yniedere letter van X kan zijn. Zo heeft y1y2· · · yn−1 ook N binnenkomende pijlen, namelijk van y0y1· · · yn−2 voor alle N letters y0. Deze graaf is Eulers (de samenhang is ook eenvoudig in te zien).

Alle Nn pijlen van de graaf vormen dus ´e´en ronde C. De De Bruijn rij krijgen we door van iedere pijl de eerste letter te nemen. Dit geeft inderdaad een rij ter lengte Nn en ieder woord van n letters komt in deze rij voor, namelijk het woord y1y2· · · yn door vanaf y1y2· · · yn−1 via y2y3· · · yn−1yn verder te lopen (dit geeft y3y4· · · ynyn+1, daarna y4y5· · · yn+1yn+2 tot en met ynyn+1· · · y2n−3y2n−2).

We zullen nu een toepassing laten zien van De Bruijn rijtjes, waarmee de positie van een roterende drum kan worden bepaald zonder erin te kijken. Veronderstel dat de drum 2n verschillende sectoren heeft. In iedere sector stoppen we geleidend of niet geleidend materiaal, en aan de buitenkant van de drum plaatsen we op n opeenvolgende plaatsen een apparaatje waarmee voor 12Genoemd naar de Nederlander De Bruijn die deze toepassing heeft bedacht; zie het artikel: N.G. De Bruijn, A

ieder van die n sectoren kan worden afgelezen of het een geleidende of een niet geleidende sector betreft. Hoe moet de keuze van geleidende en niet geleidende sectoren worden bepaald zdd. we uit het aflezen van n naast elkaar gelegen sectoren de volledige positie van de drum kunnen bepalen? Aan iedere sector kennen we een 1 toe als de sector geleidend is en als de sector niet geleidend is kennen we een 0 toe. Neem als alfabet X = {0, 1} en beschouw een De Bruijn rij met woorden van de lengte n. Deze rij is een (0, 1)-string met 2n elementen. Deze string wordt gebruikt om de sectoren geleidend of niet geleidend te maken en als we n opeenvolgende bits kennen weten we precies waar we in de De Bruijne rij zijn, dus ook de positie van de drum.

Beschouw een voorbeeld met n = 4. Een De Bruijne rij hiervoor is 0000100110101111 en maak de sectoren overeenkomstig deze rij geleidend of niet geleidend (dus de eerste 4 sectoren niet geleidend, de 5-de geleidend etc.). Veronderstel dat we op een bepaald moment waarnemen dat 4 opeenvolgende sectoren om-en-om wel en niet geleidend zijn (beginnend met geleidend). Dit geeft de deelstring 1010 en deze komt op een unieke plaats voor in de De Bruijn rij, namelijk op de plaatsen 9 t/m 12. Dit betekent dat de drum met de sectoren 9 t/m 12 op de plaatsen van de apparaatjes staat, en daarmee is de positie volledig bepaald.

Vraag 2.19

Welke volledige bipartiete grafen Kp,q zijn Eulers? Vraag 2.20

Toon aan dat een Eulerse reguliere graaf met een even aantal knooppunten ook een even aantal takken heeft.

Vraag 2.21

Beschouw de hieronder getekende plattegrond van een tentoonstellingsruimte. Is het mogelijk om door de zeven zalen en de daaromheen liggende gang een wandeling te maken waarbij iedere doorgang precies ´e´en keer wordt gepasseerd? De wandeling moet beginnen en eindigen in de gang.

1 2 3 4

5 6 7 gang

Vraag 2.22

Beschouw een samenhangende gerichte graaf met hoogstens twee knooppunten, zeg v en w, waar-voor niet geldt in-graad = uit-graad, en veronderstel dat k = d+(v)−d(v) = d(w)−d+(w) ≥ 0. Bewijs dat de pijlen van de graaf in k enkelvoudige paden plus eventuele ronden kunnen worden verdeeld.