Onderzoeksmethoden Force directed graph drawing Gebaseerd op materiaal van Hans Bodlaender 1 Grafen Grafen G=(V,E) V is verzameling knopen (“nodes”, “vertices”) E is verzameling kanten (“edges”) • Een kant is een verzameling van twee verschillende knopen 2 V={1,2,3} E={ {1,2}, {2,3}} 2 1 3 Toepassingen van grafen Grafen als model voor o.a.: Wegennetwerken Landschappen in computer games Linkstructuur van website Vriendschapsrelaties uit sociaal netwerk Klassediagram van object georienteerd programma Etc. etc. 3 Tekenen van grafen Wens om een graaf te tekenen op het platte vlak zodat “mooi” “duidelijk” Veel methoden We bekijken in dit project het force-directed graph drawing algoritme. Die methode laat nog veel keuzes open, instellen parameters…. Force-directed methoden toegepast binnen Geografische informatie systemen Computer vision Motion planning 4 Tekening van graaf (met rechte lijnen) Iedere knoop heeft een x en een y coordinaat Elke kant is een rechte lijn tussen de twee knopen Lijnen kunnen kruisen Zelfde graaf, twee verschillende tekeningen 5 Force directed Veren en magneten Inspiratie: natuurkundige wetten Iedere knoop wordt “gezien als” een magneet: knopen stoten elkaar af Iedere kant wordt “gezien als” een veer: kracht die veer naar “juiste lengte” wil trekken 6 Idee van methode Elke knoop heeft een positie (xcoordinaat, ycoordinaat) Op elke knoop wordt een kracht uitgeoefend Hangt af van afstanden naar andere knopen en lengte van kanten met die knoop als een eindpunt 7 Herhaal totdat tekening niet heel erg veranderd Voor elke knoop v reken kracht uit op v Verplaats v evenredig met de kracht op v Keuzes Kies voor elke kant {u,v} in de graaf waardes: Stijfheid suv Gewenste lengte luv Kies voor elk paar knopen u en v De afstotende werking (repulsie) van u en v ruv Misschien wil je al die waarden hetzelfde nemen, misschien niet? 8 Kracht op knoop Noteer: d(u,v) = Euclidische afstand van u naar v xv : x-coordinaat van v yv : x-coordinaat van v Kracht op knoop v in x-richting Px(v): xv − xu ruv s uv ∗ (d(u, v) − l uv ) ∗ + ∗ (x v − x u ) 3 d(u, v) u:u ≠ v (d(u, v)) u:{u , v}∈E ∑ ∑ Soortgelijke formule voor Py(v) Staan ook in info op website. 9 Krachten op knopen afstoten aantrekken 10 Algoritme (schets) Maak een eerste locatie voor alle punten Herhaal totdat (stopcriterum geldt): Voor alle knopen v, bereken Px(v) en Py(v) Voor elke knoop v • xv += c * Px(v) • yv += c * Py(v) c is een kleine constante 11 Vragen Algoritme heeft veel keuzes open: waarden van parameters (stijfheid, gewenste lengtes, repulsies, waarde van c, begintekening, stopcriterium) Wat is een goede invulling van die keuzes? En wat bedoelen we met die vraag? 12
© Copyright 2024 ExpyDoc