INF-MAT5370. Grafer og datastrukturer

Like dokumenter
INF-MAT5370. Trianguleringer i planet (Preliminaries)

Trianguleringer i planet.

Trianguleringer og anvendelser

Algoritmer for Delaunay-triangulering

INF-MAT5370. Delaunay-trianguleringer og Voronoi-diagram

UNIVERSITETET I OSLO

Visualisering av trianguleringer og trianguleringsprosesser. Hovedfagsoppgave. Per-Idar Evensen

IN Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Data-avhengige trianguleringer

INF Algoritmer og datastrukturer

Grunnleggende Grafteori

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

Dagens plan: INF Algoritmer og datastrukturer. Grafer vi har sett allerede. Det første grafteoretiske problem: Broene i Königsberg

INF Algoritmer og datastrukturer

Liste som abstrakt konsept/datatype

Innhold. Innledning 1

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

PG4200 Algoritmer og datastrukturer Forelesning 10

Pensum: fra boken (H-03)+ forelesninger

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Kap 9 Tre Sist oppdatert 15.03

INF Algoritmer og datastrukturer

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Et eksempel: Åtterspillet

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

INF Triangulering. Med sterk støtte fra Petter Kristiansen. Skal først se på et eksempel fra Google Earth

INF Algoritmer og datastrukturer

INF1020 Algoritmer og datastrukturer GRAFER

Anvendelser av grafer

Notat med oppgaver for MAT1140

Vi skal se på grafalgoritmer for:

Romlig datamanipulering

A study of different matching heuristics. Hovedfagspresentasjon Jan Kasper Martinsen

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Aksiom 3.1 (Likhet av mengder). La A og B være mengder. Da er A og B like hvis og bare hvis de har akkurat de samme elementene.

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen

Korteste vei i en vektet graf uten negative kanter

KORTESTE STI. Vektede Grafer. Korteste Sti. Dijkstra s Algoritme. Vektet Urettet Graf

Velkommen til webseminar. - Store modeller. Novapoint DCM. VIANOVA/Statens vegvesen. Solveig Fiskaa,

Dagens plan: INF Algoritmer og datastrukturer. Eksempel. Binære Relasjoner

Det første grafteoretiske problem: Broene i Königsberg

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Kapittel 10 fra læreboka Grafer

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

MAT1140: Kort sammendrag av grafteorien

Flerveis søketrær og B-trær

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Øvingsforelesning 2 - TDT4120. Grafer og hashing. Benjamin Bjørnseth

Eksamen i Geometrisk Modellering

Definisjon av binært søketre

Grunnleggende Grafalgoritmer

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Anvendelser av grafer

Grunnleggende Grafalgoritmer II

Sist gang (1) IT1101 Informatikk basisfag. Sist gang (2) Oppgave: Lenket liste (fysisk) Hva menes med konseptuelt og fysisk i forb med datastrukturer?

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

IN Algoritmer og datastrukturer

Lineære ligningssystemer og gausseliminasjon

SIF8010 ALGORITMER OG DATASTRUKTURER

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

AlgDat 12. Forelesning 2. Gunnar Misund

INF Algoritmer og datastrukturer

EKSAMEN. GIS og kart

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

GRAFER. Korteste vei i en vektet graf uten negative kanter. Korteste vei, en-til-alle, for: Minimale spenntrær

Enkle datastrukturer. Lars Greger Nordland Hagen. Introduksjon til øvingsopplegget og gjennomgang av python

Lars Vidar Magnusson

MATEMATIKK. September

Lineære likningssystemer

Algoritmeanalyse. (og litt om datastrukturer)

Programmeringsspråket C Del 3

INF2220: Time 12 - Sortering

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

Transkript:

INF-MAT5370 Grafer og datastrukturer Øyvind Hjelle oyvindhj@simula.no, +47 67 82 82 75 Simula Research Laboratory, www.simula.no August 3, 2009

Innhold Kort om grafer Topologiske operatorer og operasjoner, G-maps Presentasjon og analyse av forskjellige datastrukturer Kort om objekt-orientert implementasjon

Grafer Definisjon En graf G(V,E) består av et sett noder V og et sett kanter E som forbinder to og to noder i V. (a) (b) Grafer har i utgangspunktet ingen geometrisk informasjon. I forbindelse med trianguleringer snakker vi om embedded graphs, dvs. vi assosierer geometri til de topologiske elementene noder og kanter.

Topologi og geometri Vi prøver å skille mellom topologi og geometri: Topologi: Noder Kanter Trekanter Geometri: punkter kurver (linjer) flatelapper

Grafer og trianguleringer Trianguleringer kan sees på som spesialtilfeller av grafer: Hver trekant er implisitt gitt som en cycle av tre kanter (og tre noder). G (V,E) er planar. Definisjon En graf G(V,E) kalles planar dersom den kan tegnes i planet slik at en hver kant e i,j = (v i,v j ) ikke skjærer G utenom i v i og v j. Grafen i figur (a) er opplagt planar. Det kan vises at grafen i figur (b) ikke er planar.

Grafer... Andre definisjoner: Rettet graf: Kantene e i,j har retninger, for eks., fra v i til v j Multigraf: Det kan være mer enn en kant mellom to noder v i og v j. Ellers kalles grafen en enkel graf. Noen datastrukturer for trianguleringer er basert på halv-kanter (half-edges) der hver sidekant er to topologiske elementer som peker i hver sin retning; altså en Planar rettet multigraf. Ved å se på trianguleringer som grafer kan vi nyttegjøre oss av grafteortiske konsepter og graf-algoritmer.

Elementære topologiske operasjoner Med topologiske operasjoner på en triangulering menes operasjoner som ikke bruker geometrisk informasjon (embedding). Konseptuelt har vi to typer: I. Operasjoner som endrer topologien i. II. Operasjoner for å traversere (I) kan bestå av operatorer som: bevarer antall topologiske elementer, V, E og T, for eks. swapping, 2 fjerner topologiske elementer, 3 legger til topologiske elementer. Vi skal se nærmere på operatorer av typen II.

G-maps (generalized maps) G-maps muliggjør en algebraisk beskrivelse av topologien i B-rep strukturer (B-rep= Boundary Representation ). G-maps er basert på noen få enkle konsepter, og gir oss et kraftig verktøy til å implementere interfacer til datastrukturer. Vi skal bruke konsepter fra G-maps til å lage traverserings-operatorer (iteratorer) på trianguleringer. TTL (Triangulation Template Library), til bruk i øvinger, er basert på G-maps.

G-maps... Definisjon En dart i en triangulering er et entydig trippel d = (v i,e j,t k ) der v i er en av nodene i kanten e j, og e j er en sidekant i trekanten t k. Topologien i en triangulering består dermed av et entydig sett D av darts. e j t k v i d=(v i,e j,t k )

α-iteratorer (involusjoner) Vi definerer tre entydige funksjoner α 0, α og α 2 som opererer på settet D av darts. α i : D D, i = 0,,2 (dvs.α i (d) = d ) α i, i = 0,,2 er en-til-en avbildninger og bijektive, dvs. α i (α i (d)) = d. Initial dart Result of α 0 Result of α Result of α 2

α-iteratorer... Initial dart Result of α 0 Result of α Result of α 2 node edge triangle α 0 (switch nodes) fixed fixed α (switch edges) fixed fixed α 2 (switch triangles) fixed fixed

G-maps... flere definisjoner Fix point: Dersom e j i en dart d = (v i,e j,t k ) er på randen Ω av en triangulering, definerer vi d til å være uendret under α 2 : α 2 (d) = d. Komposisjon: En komposisjon α i (α j (d)) skrives α i α j (d) En triangulering kan nå representeres som en graf G (D,α 0,α,α 2 ) som vi kaller en G-map.

Orbits d d d α,α 2 ( d ) α,α ( d ) α,α ( d ) 0 2 0 0-orbit -orbit 2-orbit Definisjon (k-orbit, k = 0,, 2) La {α i } være en, to eller alle tre α -iteratorer til en G-map G(D,α 0,α,α 2 ), og la d D. En orbit {α i } (d) av d er settet av alle darts i D som kan nås med komposisjoner av {α i } (i vilkårlig rekkefølge) ved å starte fra d. α i,α j, i,j k, i j (d) kalles k-orbit til d.

Egenskaper ved α-iteratorer Hvis en komposisjon α i α j utføres gjentatte ganger har vi: orbits... α 0 α itererer over noder og kanter i en trekant (2-orbit) α α 2 itererer rundt en node (0-orbit) α 0 α 2 iterer rundt en sidekant (-orbit) Hvis vi bytter α i α j med α j α i itereres det i motsatt retning. Alle d D i en regulær triangulering kan nås med komposisjoner av α i, i = 0,,2 α i (d), i = 0,,2 bytter klokke-retning på d unntatt for et fix point, dvs. for α 2 (d) når d er på randen.

egenskaper... I tillegg har vi og α i α i (d) = d, i = 0,,2 (α 0 α 2 (d)) 2 = α 0 α 2 α 0 α 2 (d) = d. e j t k v i d=(v i,e j,t k )

Dualen til en G-map er en merket graf: 2 2 2 0 2 2 2 0 2 0 0 0 2 0 0 0 2 2 2 2 0 2 2 Dualen til G(D,α 0,α,α 2 ): En node svarer til en dart En graf-kant merket i svarer til α i (d). Grafen er regulær av grad 3.

n-g-maps... G-maps kan generaliseres til n dimensjoner; n-g-map Eksempel: tetrahedrisering, n = 3; 3-G-map: d = (node, edge, triangle, tetrahedron) α-iteratorer: α i, i = 0,,2,3. node edge triangle tetrahedron α 0 fixed fixed fixed α fixed fixed fixed α 2 fixed fixed fixed α 3 fixed fixed fixed

Datastrukturer for trianguleringer Valg av datastruktur er avhengig av applikasjonen. Generelt; trade-off mellom hastighet av å utføre topologiske operasjoner, dvs. α 0, α, α 2, og 2 lagringsbehov (i RAM eller database). Eksempel: Visualisering: Må ha tilstrekkelig naboskapsrelasjon for å ekstrahere trekant-striper raskt. Lagring på database: Trenger en datastruktur som tar liten plass. I mange applikasjoner trengs flere datastrukturer; og verktøy for å mappe mellom dem.

Eksempel-triangulering 3 3 4 2 6 2 7 6 4 5 5

recall... Fra preliminaries : T 2 V, E 3 V, V deg(v i ) 6 V i= (når V >> V B.) T = 2 V I + V B 2 T 2 V 5 E 3 V 6 V 3 V B 3

Lagring av geometrisk informasjon Hvis en triangulering representerer en terrengmodell, er den oftest stykkevis lineær; og kun nodene, {(x i,y i,z i )}, må lagres: 3 V 8 (bytes pr. double) = 24 V bytes (For glatte Bernstein-Bezier flater kan det være aktuelt å lagre mange koeffisienter i tillegg.)

Minimal trekant-basert datastruktur Kun en liste med trekanter uten topologisk informasjon: Triangle # : 2: 3: 4: 5: 6: Triangle i j k 7 2 2 7 4 2 4 3 7 6 4 4 6 5 7 6

Lagringsbehov for pekere : La N P være antall pekere. Bruker T 2 V 5, og T 2 V. N P = 3 T 6 V 5 og N P 6 V.

minimal trekantbasert... Hvis hver peker krever 4 bytes, må det lagres 4N P 24 V bytes, dvs. det samme som for geometrien ((x i,y i,z i )-koordinatene til nodene). Kompakt lagring Ingen naboskapsinformasjon α 2 er en O(N) operasjon. Brukes for lagring i database?

Trekant-basert med naboer Lagrer også nabotrekanter (mot klokka). k t k,i t j,k t i,j,k i t i,j j Triangle # : 2: 3: 4: 5: 6: Triangle i j k 7 2 2 7 4 2 4 3 7 6 4 4 6 5 7 6 neighbours t j,k t k,i t i,j 2-6 4 3 - - 2 5 2 6 - - 4-4

trekantbasert med naboer... Lagringsbehovet for pekere er det doble av den minimale strukturen: N P 2 V 30 and N P 2 V

α 0, α og α 2 er O(). 4 α 0 ( d) 7 4 6 d α ( d 2 ) α ( d) 6 d = (v 6,e 6,7,t 7,,6 ) α 0 (d) = (v 7,e 6,7,t 7,,6 ). α (d) = (v 6,e,6,t 7,,6 ). α 2 (d) = (v 6,e 7,6,t 7,6,4 ).

Node-basert med naboer 4 7 4 5 6 5 - Pseudo node 6

node-basert med naboer... Vertex # 2 3 4 5 6 7 Adjaceny (ADJ) 6 7 2 0 7 4 3 0 2 4 0 3 2 7 6 5 0 4 6 0 5 4 7 0 6 4 2 End (END) 4 9 2 8 2 26 30

lagringsbehov: N ADJ = V deg(v i ) + V B, inkludert pseudonoder, og i= N END = V. N ADJ = 2 E + V B = 2(3 V V B 3) + V B = 6 V 2 V B 6 + V B = 6 V V B 6 (Recall: E = 3 V V B 3)

lagringsbehov... N P = N ADJ + N END = (6 V V B 6) + V = 7 V V B 6 7 V 9 7 V når V >> V B. Dette er betydelig mindre enn for trekant-basert (N P 2 V ), men vi har ingen liste av trekanter. Med trekanter: N P 3 V. (pluss 2 3 V ) α 0, α og α 2 er O() og (muligens) raskere enn trekant-basert.

Halv-kant (half-edge) datastruktur Hver sidekant splittes i to rettede halv-kanter orientert i hver sin retning. (a) 3 8 9 7 4 2 4 6 5 2 3 7 5 2 8 0 3 5 7 4 6 6 En halv-kant hører kun til en trekant og er orientert mot klokka. Hver halv-kant har tre pekere i) Node, ii) NextEdge, iii) TwinEdge (b) 7 6 4

Half- Edge # : 2: 3: 4: 5: 6: 7: 8: 9: 0: : 2: 3: 4:... Vertex 2 7 2 7 4 2 4 3 7 6 4 4 6... Half-edge pointers Next edge Twin-edge 2-3 8 4 5 3 6 2 4 7 8 6 9-7 - 7 2 3 0 5 4 5 -......

Lagringsbehov: N V : antall nodepekere N Eh : antall halv-kant pekere Totalt: N P = N V + N Eh 8 V. Hvis vi også skal ha trekanter må vi lagre 2 V pekere i tillegg, dvs. totalt: N P 20 V. Krever mer minne enn de andre strukturene, men α 0, α og α 2 er (mye) raskere.

Dart-basert datastruktur Lar dart en være det eneste topologiske elementet i datastrukturen. (a) 2 3 7 4 (b) 6 0 7 7 5 4 5 4 9 8 4 5 α 2 8 6 6 α 2 7 3 3 2 α 0 6 Dette konseptet brukes bl.a. i 3D geologisk modellering, for eks. i gocad. Kan brukes for små modeller.

(a) 2 3 7 4 (b) 6 0 7 7 5 4 5 4 9 8 4 Dart d : 2: 3: 4: 5: 6: 7: 8: 9: 0: : 6 5 8 α 2 6 α 3 α 0 Dart pointers Vertex α 0 (d) α (d) α 2 (d) 2 6 6 3 2 6 4 2 2 7 3 5 7 6 4 7 5 8 6 8 2 3 4 7 9 4 4 0 8 5 7 9 6 7 2 0 4 2 2 6 7 3

dart-basert... lagringsbehov: 6 darts for hver trekant bruker T 2 V 5 og T 2 V N P 48 V 20 og N P 48 V. Hvis en liste av trekanter også lagres (hver trekant som en leading dart ), får vi i tillegg 2 V pekerfelter; dvs. totalt N P 50 V. ca. tre ganger lagringsbehovet for halv-kant strukturen!!! Men, rask: ingen beregninger eller sammenligninger for å utføre α 0, α og α 2. Konklusjon: uakseptabelt for store datamengder.

Sammendrag, datastrukturer Trade-off mellom lagringsbehov og hastighet: Struktur Lagring Effektivitet Minimal trekant-basert N P 6 V α 2 = O(N) Node-basert med naboer N P 7 V god Trekant-basert med nab. N P 2 V god+ Halv-kant (Half-Edge) N P 8 V god++ Dart-basert N P 48 V O(0)

Objekt-orientert design Eksempel med halv-kant (half-edge) struktur: Klasser: Node, HalfEdge, Triangle, Triangulation. (twin edge) Node 0 Half-Edge Triangle N Tiangulation (next in triangle) Klassediagram

Implementasjon class Triangle kan implementeres som en peker til en av halv-kantene. class Triangulation kan implementeres som std::list<triangle>. Typiske medlemsfunksjoner: HalfEdge::getNextHalfEdge: α α 0 (d) HalfEdge::getTwinEdge: α 0 α 2 (d)