Grafen en BFS Mark Lekkerkerker 24 februari 2014 Grafen Breadth-First Search Toepassingen 1 Grafen Wat is een graaf? Hoe representeer je een graaf? 2 Breadth-First Search Het Breadth-First Search Algoritme Schillen De BFS boom 3 Toepassingen Bipartitie Cykel zoeken Samenhangend test Mark Lekkerkerker Grafen en BFS 24 februari 2014 2 / 16 Grafen Breadth-First Search Toepassingen Wat is een graaf? Het abstracte concept van een graaf I Modelleert (binaire) relaties tussen objecten Mark Lekkerkerker Grafen en BFS 24 februari 2014 3 / 16 Grafen Breadth-First Search Toepassingen Wat is een graaf? Het abstracte/visuele concept van een graaf I Modelleert (binaire) relaties tussen objecten I Punten (knopen) zijn objecten I Strepen zijn relaties I Geometrie niet belangrijk Mark Lekkerkerker Grafen en BFS 24 februari 2014 3 / 16 Grafen Breadth-First Search Toepassingen Geometrie niet belangrijk?! Het gaat om de relatie! A B C B N A E O F K I D E L G H Mark Lekkerkerker J L J = M G F O K C I Grafen en BFS D H M 24 februari 2014 N 4 / 16 Grafen Breadth-First Search Toepassingen Wat kun je modelleren? De mogelijkheden zijn ongekend I Elektrische schakeling I Quoridor I Wie wie de hand schudt op een feestje I Internetverbindingen I Facebook vrienden I (Spoor)wegennet I Finite state automatons Mark Lekkerkerker Grafen en BFS 24 februari 2014 5 / 16 Grafen Breadth-First Search Toepassingen Uitbreidingen op de graaf Je kunt het zo gek niet bedenken I Gerichte graaf I Gewogen graaf Mark Lekkerkerker Grafen en BFS 24 februari 2014 6 / 16 Grafen Breadth-First Search Toepassingen Wiskunde Hoe beschrijf je een graaf? I Definitie van een graaf: G = (E , V ) I m = |E | (aantal elementen in E ) I n = |V | (aantal elementen in V ) I Graad van een knoop Mark Lekkerkerker Grafen en BFS 24 februari 2014 7 / 16 Grafen Breadth-First Search Toepassingen Wiskunde Hoe beschrijf je een graaf? I Definitie van een graaf: G = (E , V ) I m = |E | (aantal elementen in E ) I n = |V | (aantal elementen in V ) I Graad van een knoop I Een (simpel) pad I Een (simpele) cykel Mark Lekkerkerker Grafen en BFS 24 februari 2014 7 / 16 Grafen Breadth-First Search Toepassingen Wiskunde Hoe beschrijf je een graaf? I Definitie van een graaf: G = (E , V ) I m = |E | (aantal elementen in E ) I n = |V | (aantal elementen in V ) I Graad van een knoop I Een (simpel) pad I Een (simpele) cykel I Samenhang (m ≥ n − 1) I Afstand tussen knopen x en y : δ(x, y ) Mark Lekkerkerker Grafen en BFS 24 februari 2014 7 / 16 Grafen Breadth-First Search Toepassingen Representatie van grafen Hoe slaat de computer ze op? Matrixrepresentatie 0 1 0 0 0 0 1 0 0 Lijstrepresentatie 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 Mark Lekkerkerker Grafen en BFS Adj[A] = {B, G } Adj[B] = {A, C , F } Adj[C ] = {B, D, G } Adj[D] = {C , E , F } Adj[E ] = {D, F } Adj[F ] = {B, D, E , G } Adj[G ] = {A, C , F } Adj[X ] = {Y } Adj[Y ] = {X } 24 februari 2014 8 / 16 Grafen Breadth-First Search Toepassingen Representatie van grafen Wat is de complexiteit van deze representaties? Actie Geheugen Is xy een kant? Geef een buur van x Doe S voor all buren van x Mark Lekkerkerker Matrices n2 O(1) O(n) n Grafen en BFS Lijsten m (mits m > n) O(n) O(1) graad 24 februari 2014 8 / 16 Grafen Breadth-First Search Toepassingen Het Breadth-First Search Algoritme Eigenschappen van BFS I Onderzoek een graaf I Exploreer dichtstbijzijnde knopen eerst I Heel algemeen I Vind het kortste pad in een ongewogen graaf Mark Lekkerkerker Grafen en BFS 24 februari 2014 9 / 16 Grafen Breadth-First Search Toepassingen Het Breadth-First Search Algoritme Idee achter BFS I Onderzoek eerst de beginknoop. I Onderzoek dan eerst al zijn aangrenzende knopen. I Onderzoek dan al de aangrenzende knopen van deze knopen. I Onderzoek daarna alle aangrenzende knopen van deze knopen. I Herhaal dit principe... Mark Lekkerkerker Grafen en BFS 24 februari 2014 9 / 16 Grafen Breadth-First Search Toepassingen Het Breadth-First Search Algoritme Bereken in O(n + m) een BFS boom! Q ← lege Queue; foreach v in V do color[v ] ← wit; d[v ] ← ∞; π[v ] ← nil; color[s] ← grijs; d[s] ← 0; Q.Enqueue(s); while Q is niet leeg do u ← Q.Dequeue(); foreach v in u.Adjacent do if color[v ] = wit then color[v ] ← grijs; d[v ] ← d[u] + 1; π[v ] ← u; Q.Enqueue(v ); end end color[u] ← zwart; end Mark Lekkerkerker Grafen en BFS 24 februari 2014 9 / 16 Grafen Breadth-First Search Toepassingen Schil de graaf door BFS Eigenschappen van de BFS I Schil i bevat alle knopen x waarvoor geldt δ(x, s) = i. Mark Lekkerkerker Grafen en BFS 24 februari 2014 10 / 16 Grafen Breadth-First Search Toepassingen Schil de graaf door BFS Eigenschappen van de BFS I Schil i bevat alle knopen x waarvoor geldt δ(x, s) = i. I Buur v van knoop u in schil i zit in schil i − 1, i of i + 1. Mark Lekkerkerker Grafen en BFS 24 februari 2014 10 / 16 Grafen Breadth-First Search Toepassingen Schil de graaf door BFS Eigenschappen van de BFS I Schil i bevat alle knopen x waarvoor geldt δ(x, s) = i. I Buur v van knoop u in schil i zit in schil i − 1, i of i + 1. I Knoop u in schil i > 0 heeft tenminste 1 buur in schil i − 1. Mark Lekkerkerker Grafen en BFS 24 februari 2014 10 / 16 Grafen Breadth-First Search Toepassingen Schil de graaf door BFS Eigenschappen van de BFS I Schil i bevat alle knopen x waarvoor geldt δ(x, s) = i. I Buur v van knoop u in schil i zit in schil i − 1, i of i + 1. I Knoop u in schil i > 0 heeft tenminste 1 buur in schil i − 1. I Als schil i geen knopen bevat, dan bevat schil i + 1 er ook geen. Mark Lekkerkerker Grafen en BFS 24 februari 2014 10 / 16 Grafen Breadth-First Search Toepassingen Schil de graaf door BFS Eigenschappen van de BFS I Schil i bevat alle knopen x waarvoor geldt δ(x, s) = i. I Buur v van knoop u in schil i zit in schil i − 1, i of i + 1. I Knoop u in schil i > 0 heeft tenminste 1 buur in schil i − 1. I Als schil i geen knopen bevat, dan bevat schil i + 1 er ook geen. I Het algoritme exploreert de graaf schil voor schil Mark Lekkerkerker Grafen en BFS 24 februari 2014 11 / 16 Grafen Breadth-First Search Toepassingen Schil de graaf door BFS Eigenschappen van de BFS I Schil i bevat alle knopen x waarvoor geldt δ(x, s) = i. I Buur v van knoop u in schil i zit in schil i − 1, i of i + 1. I Knoop u in schil i > 0 heeft tenminste 1 buur in schil i − 1. I Als schil i geen knopen bevat, dan bevat schil i + 1 er ook geen. I Het algoritme exploreert de graaf schil voor schil I Na terminatie: d[u] = δ(s, u). Mark Lekkerkerker Grafen en BFS 24 februari 2014 11 / 16 Grafen Breadth-First Search Toepassingen De BFS boom De predecessor graaf, gemaakt door BFS I Voorganger-subgraaf gedefinieerd in π I Uitkomst π non-deterministisch I Niet elke BFS boom kan gemaakt worden door BFS Mark Lekkerkerker Grafen en BFS 24 februari 2014 12 / 16 Grafen Breadth-First Search Toepassingen Bipartitie Deel de graaf op in twee Mark Lekkerkerker Grafen en BFS 24 februari 2014 13 / 16 Grafen Breadth-First Search Toepassingen Cykel zoeken Zoek een cykel in een graaf I Door π kunnen we cykels detecteren. I Hierdoor kunnen we bekijken of een graaf een boom is Mark Lekkerkerker Grafen en BFS 24 februari 2014 14 / 16 Grafen Breadth-First Search Toepassingen Samenhangend test Quoridor; is een locatie nog bereikbaar? http://www.fupa.com/play/BoardGame-free-games/quoridor.html Mark Lekkerkerker Grafen en BFS 24 februari 2014 15 / 16 Samenvatting Wat hebben we vandaag behandeld? I Het concept van grafen I Computer representatie van grafen I Non determinisme door representatie I BFS Mark Lekkerkerker Grafen en BFS 24 februari 2014 16 / 16
© Copyright 2024 ExpyDoc