Datastructuren voor graafrepresentatie

Slides:



Advertisements
Verwante presentaties
Algoritmen en Datastructuren (ALDAT)
Advertisements

1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
1 Datastructuren Lijstjes (Stacks & Queues) Onderwerp 7.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
Inleidend probleem Data structuur (hiërarchie van classes)
1 Datastructuren Skiplists. 2 Skiplists  Vrij eenvoudige datastructuur  “Makkelijker” dan gebalanceerde bomen  Kunnen hetzelfde als gebalanceerde bomen.
Optuigen van datastructuren
Project OO-AD: Color Crazy Domien Nowicki, Bjorn Schobben.
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 3.
Datastructuren Sorteren, zoeken en tijdsanalyse
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
Project OO-AD: Color Crazy Domien Nowicki, Bjorn Schobben.
Code compressie in Embedded Systems Onno Kievit ET4074 Kwantitatieve aspecten van computer architectuur.
Grafentheorie Graaf Verzameling knopen al dan niet verbonden door takken, bijv:
Amorized Analysis en Union-Find Algoritmiek. 2 Vandaag Amortized analysis –Technieken voor tijdsanalyse van algoritmen Union-find datastructuur –Datastructuur.
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
Doorzoeken van grafen Algoritmiek. Algoritmiek: Divide & Conquer2 Vandaag Methoden om door grafen te wandelen –Depth First Search –Breadth First Search.
Netwerkstroming Algoritmiek. 2 Vandaag Netwerkstroming: definitie en toepassing Het rest-netwerk Verbeterende paden Ford-Fulkerson algoritme Minimum Snede.
Divide & Conquer: Verdeel en Heers vervolg Algoritmiek.
Datastructuren voor grafen Algoritmiek. 2 Grafen Model van o.a.: –Wegennetwerk –Elektrische schakeling –Structuur van een programma –Computernetwerk –…
Trillingen en Cirkelbewegingen
4/10/2017 Opleiding BINNENISOLATIE voor thermische renovatie Module 3 Train the trainer – 06/12/ Brugge.
Gerandomiseerde algoritmes
Wageningen University Meteorologie en Luchtkwaliteit
Materialen en moleculen
Hoe deel je gesteenten in? Codering; Streckeisen
Havo 5: Stoffen en Materialen
Handboek Commercieel Budgetteren: toegepast J. Vanhaverbeke & L
Veevoeding Blok 3 en 4: Ruwvoerbalans melkveehouderij
Doorzoeken van grafen Algoritmiek.
Dynamica van luchtstromen
Natuurkunde Overal Hoofdstuk 1: Beweging in beeld.
VAN KEUKENBLAD TOT FRIKANDEL presentatie door Koen Ongkiehong
Gaat u dan snel naar Goedkoop of in kleine oplagen kleding (laten) bedrukken, met een embleem, logo en/of tekst van uzelf, of.
Bomen en struiken IVN Helden.
Mictieklachten bij mannen
Hoofdstuk 6 Warmte.
Klaar met de toets? Lees aandachtig het samenvattingenblad hst 6
All-Pairs Shortest paths
Minimum Opspannende Bomen
Risico’s en de vertaling naar wettelijke uitgangspunten
Hoofdstuk 5 Les 1: Markten.
VPH Les 13.
Welkom Brussel, 25/02/2017.
Amorized Analysis en Union-Find
Niet iedereen houdt van rozijnen Willem van der Vegt
Periodieke verbanden.
Modderdorp UNPLUGGED Bron: csunplugged.org.
De definitie onder de loep
Algemene relativiteitstheorie
Doolhof. doolhof doolhof Maak een routine die de ‘hekken’ tussen de cellen weghaalt Maak een 2-dimensionale array met kolommen en rijen aangeklikt.
Hardy-Weinberg 2.0 NiBi VO2019, Jasper Croll.
Software Development fundamentals
De zoektocht naar betrouwbare opdrachtnemers
Participatieve kunstpraktijken
Osteogenesis Imperfecta
Voorstellen. Naam, werkzaam bij Hanzehogeschool als onderzoeker voornamelijk. Doe mee aan activiteiten vrouwengroep en verleden ook dingen gedaan in de.
Homogeniteit van de meetsectie
Regiobijeenkomsten IBD voorjaar 2019
Kiezen en verliezen Over de rol van het B-attest in de sociale reproductie van onderwijsverschillen naar een breder debat over onderwijskeuzes Bram Spruyt,
Training voorzitter stembureau Europees Parlement 2019
ED VERSIE STAND VAN ZAKEN (S79)
“OMZIEN NAAR ELKAAR” COMPASSIE - DOEN   “OMZIEN NAAR ELKAAR” COMPASSIE - DOEN   2019.
Beantwoord zo snel mogelijk de vragen.
Inleiding door Jeroen Schokkaert (LICOS, KU Leuven)
15 januari 2019 Stefaan Standaert Riynto Simanjuntak
Opleidingscoördinator
Ledenvergadering Sectie Neuropsychologie
Keuzedeel 0751 Verdieping Chromatografie
Transcript van de presentatie:

Datastructuren voor graafrepresentatie Algoritmiek

Taken Tel of enumereer alle knopen of kanten in graaf Tel of enumereer alle buren van een knoop of alle incidente kanten (ingaande/uitgaande pijlen) Test of er kant tussen twee knopen is Toevoegen van kanten en knopen Verwijderen van kanten en knopen Algoritmiek

Oplossing 1: lijsten Lijst van knopen en lijst van kanten Alle knopen of kanten tellen/enumereren is snel Rest is traag: O(a) per operatie Hoe vind ik een kant tussen 2 knopen in de lijst? Hele lijst doorzoeken Hoe vind ik een incidente kant? Hele lijst doorzoeken Voordeel: O(n+a) ruimte Algoritmiek

Oplossing 2: adjacency list Lijst van knopen Voor iedere knoop: lijst van incidente kanten of van buren (ingaande/uitgaande pijlen/buren) 1 2 v1 v2 v3 v4 v5 v6 v2 v1 v3 v5 v4 v6 3 Lijst: array of linked list 4 5 6 Algoritmiek

Oplossing 2: adjacency list Lijst van knopen Voor iedere knoop: lijst van incidente kanten of van buren (ingaande/uitgaande pijlen/buren) 1 2 v1 v2 v3 v4 v5 v6 3 a12 a12 a23 a34 a45 a56 Lijst: array of linked list 4 a23 a34 a45 a56 5 6 Algoritmiek

Adjacency list: implementatie (1) Alle knopen of kanten tellen/enumereren is snel Alle buren van een knoop of alle incidente kanten (ingaande/uitgaande pijlen) enumeren is snel Testen of er een kant tussen u,v is: traag Kijk naar lijst met buren/incidente kanten van u of v erin voorkomt Θ(maximum graad) O(log maximum graad) als knopen gesorteerd Lijst: array of linked list Algoritmiek

Adjacency list: implementatie (2) Toevoegen: O(1) tijd Verwijderen: zelfde tijd als om kant tussen u,v te vinden Nog steeds O(n+a) ruimte Lijst per knoop kan een linked list of een array/vector zijn Algoritmiek

Oplossing 3: adjacency matrix n bij n matrix: elementen 0 of 1 (0,1,-1) element (i,j) is 1 dan en slechts dan als er een kant is tussen knoop i en knoop j Gerichte grafen: gebruik 1,-1 voor richting 1 2 1 2 3 4 5 6 3 4 5 6 Algoritmiek

Oplossing 3: adjacency matrix Testen er een kant tussen twee knopen is: O(1) Bekijk juiste element in matrix Alle knopen tellen/enumereren is snel Rest is traag Bijv.: incidente kanten tellen kost Θ(n) Hele rij moet bekeken worden Kant toevoegen/verwijderen is snel: O(1) Nadeel: Θ(n2) bits ruimte Algoritmiek

Afweging (1) Adjacency matrix Eenvoudig te implementeren O(n2) bits Kan nog efficiënt zijn bij kleine grafen Adjacency list Meest ruimte-efficiënt, vooral voor grote of ijle grafen Meeste operaties zeer snel Meest gebruikt in praktijk Algoritmiek

Afweging (2) Kijk goed naar welke operaties je nodig hebt in je algoritme Is je graaf ijl? Is geheugenruimte een probleem? Meest gebruikt: adjacency list Combinatie ook mogelijk, maar lastig te implementeren Gewichten: in beide datastructuren goed op te slaan Pas op: gewicht is misschien op 2 plekken opgeslagen Algoritmiek

Incidentie matrix n bij a matrix: ieder element 0 of 1 (0,1,-1) Element (i,j) is 1 dan en slechts dan als kant j incident is op knoop i Gerichte grafen: gebruik -1, 1 Traag en ruimteverkwistend Maar wel handig voor sommige wiskundige operaties Algoritmiek