Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk

Relaterede dokumenter
Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

Grafer og graf-gennemløb

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Mindste udspændende træ

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Mindste udspændende træ

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Prioritetskøer og hobe. Philip Bille

Danmarks Tekniske Universitet

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille

Danmarks Tekniske Universitet

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Danmarks Tekniske Universitet

Sammenhængskomponenter i grafer

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Danmarks Tekniske Universitet

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Danmarks Tekniske Universitet

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb. Philip Bille

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Førsteårsprojekt F2008. Nogle algoritmer på grafer

Danmarks Tekniske Universitet

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning

Søgning og Sortering. Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering. Philip Bille

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

Søgning og Sortering. Philip Bille

Plan. Introduktion. Eks: Max i tabel. Algoritmer og datastrukturer. Algoritmer og datastrukturer. Toppunkter. Algoritme 1. Algoritme 2.

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Danmarks Tekniske Universitet

Minimum udspændende Træer (MST)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Hashing. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Philip Bille

Hashing. Hashing. Ordbøger. Ordbøger. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Ordbøger Hægtet hashing Hashfunktioner Lineær probering

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Introduktion til datastrukturer

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er

Dynamisk programmering

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Minimum udspændende Træer (MST)

DM02 Kogt ned. Kokken. Januar 2006

Danmarks Tekniske Universitet

Dynamisk programmering

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Danmarks Tekniske Universitet

Grafer / Otto Knudsen

Hashing. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Philip Bille

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Et udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives. Type Expr = Sumèplus, minus, times, div: Args, const: Int, name: Textè

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

Datastrukturer (recap)

Algoritmisk geometri

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Divide-and-Conquer algoritmer

Dynamisk programmering

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Introduktion til datastrukturer. Philip Bille

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Førsteårsprojekt F2008 Flere grafalgoritmer, og visualisering SØGES

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Skriftlig eksamen i Datalogi

Minimum udspændende Træer (MST)

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Divide-and-Conquer algoritmer

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Korteste veje. Korteste veje. Introduktion. Introduktion. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

Korteste veje. Korteste veje. Introduktion. Introduktion. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

Divide-and-Conquer algoritmer

Korteste veje. Korteste veje. Introduktion. Introduktion. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2.

Introduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille

Danmarks Tekniske Universitet

Transkript:

Philip Bille Orienteret graf (directed graph). Mængde af knuder forbundet parvis med orienterede kanter. Vejnetværk Knude = vejkryds, kant = ensrettet vej. deg + (6) =, deg - (6) = sti fra til 6 8 7 9 kreds

Spildopsamling (garbage collection) Knude = objekt, kant = peger/reference. Hvilke objekter kan vi nå fra en rod? WWW Knude = hjemmeside, kant = hyperlink. Webcrawling PageRank rødder http://computationalculture.net/article/what_is_in_pagerank Automater og regulære udtryk Knude = tilstand, kant = tilstandsovergang. Accepterer automaten aab = findes sti fra til der matcher aab? Regulære udtryk kan repræsenteres som automat. Afhængigheder Knude = emner, kant = afhængighed. Er der nogle cykliske afhængigheder? Kan vi finde en rækkefølge af emnerne så vi undgår cyckliske afhængigheder? a a b 6 7 c 86 79 8 flettesortering tabeller indsættelsessortering ordbøger køer stakke grafer uorienterede grafer stærke sammenhængkomponenter orienterede grafer R = a (a ) (b c) binær søgning binære søgetræer hægtede lister foren og find MST BFS/DFS korteste veje topologisk sortering hob Dijkstras algoritme

Afhængigheder Grafanvendelser tabeller flettesortering hægtede lister stakke køer ordbøger indsættelsessortering hob foren og find grafer uorienterede grafer binær søgning binære søgetræer MST orienterede grafer BFS/DFS topologisk sortering graf knuder kanter internet hjemmeside hyperlink transport vejkryds ensrettet vej skedulering job precedens relation infektionssygdom person infektion citation artikel citation objekt graf objekter pegere/referencer objekt hieraki klasse nedarver fra kontrol-flow kode hop korteste veje Dijkstras algoritme stærke sammenhængkomponenter Lemma. v V deg - (v) = v V deg + (v) = m. Bevis. Hver kant har netop en startknude og slutknude. Algoritmiske problemer på orienterede grafer Sti. Er der en sti fra s til t? Korteste sti. Hvad er den korteste sti fra s til t. Orienteret acyklisk graf. Findes der kredse i grafen? Topologisk sortering. Kan vi ordne knuder i en sekvens så alle kanter peger samme vej? Stærk sammenhængskomponent. Er der en vej mellem alle par af knuder? Transitiv afslutning. For hvilke knuder v og w er der en sti fra v til w? 6 8 7 9

Repræsentation G orienteret graf med n knuder og m kanter.. Vi skal bruge følgende operationer på uorienterede grafer. POINTSTO(v, u): afgør om knude v peger på knude u. NEIGHBORS(v): returner alle knuder som v peger på. INSERT(v, u): tilføj kant (v, u) til G (medmindre den allerede findes). 6 8 7 9 Incidensmatrix Incidensliste Orienteret graf G med n knuder og m kanter. 6 8 7 Incidensmatrix. D n n tabel A. A[i,j] = hvis i peger på j og ellers. 9 Plads. O(n ) Tid. 6 7 8 9 POINTSTO i O() tid NEIGHBORS(v) i O(n) tid. INSERT(v, u) i O() tid. 6 7 8 9 Graf G med n knuder og m kanter. Incidensliste. Tabel A[..n-]. A[i] indeholder liste af knuder som i peger på. Plads. O(n + v V deg + (v)) = O(n + m) Tid. POINTSTO, NEIGHBORS OG INSERT i O(deg(v)) tid. 6 7 8 9 6 8 7 9 6 9 8 9 6 9 9

Repræsentation Datastruktur POINTSTO NEIGHBORS INSERT Plads incidensmatrix O() O(n) O() O(n ) incidensliste O(deg + (v)) O(deg + (v)) O(deg + (v)) O(n+m) Søgning Dybdeførst søgning. Lad alle knuder være umarkede og besøg knude s. Når vi besøger knude v: Marker v. Besøg alle umarkede knuder som v peger på rekursivt. Breddeførst søgning. Lad alle knuder være umarkede. Marker s og tilføj s til kø K. Sålænge K ikke er tom: Udtag knude v fra K. For alle umarkede knuder u som v peger på Tid. O(n + m) Marker u. Tilføj u til K. s s

Topologisk sortering og DAGs DAG. Orienteret acyklisk graf (directed acyclic graph). Graf uden kredse. Topologisk sortering (topological sorting). Ordning af knuder v, v,, vn- fra venstre til højre således at alle kanter peger mod højre. DAGs og topologisk sortering Lemma. G har en topologisk sortering G er en DAG. Bevis. Modbevis. Antag G har topologisk sortering v, v,, vn- og ikke er en DAG. G indeholder kreds K. v i v j Algoritmiske problemer. Afgør om G er en DAG. 6 6 Beregn en topologisk sortering (hvis den findes). Mål. Vise G er en DAG G har en topologisk sortering + find algoritme til at løse begge problemer. Kig på knude vi i K som er længst til venstre i sortering og knude vj lige før (vj, vi) er kant i K og dermed i G. Men vi er før vj i rækkefølge v, v,, vn- er ikke en topologisk sortering. DAGs og topologisk sortering Opgave. Givet en DAG, find på en strategi til at beregne en topologisk sortering. DAGs og topologisk sortering Lemma. G er en DAG G har en knude med indgrad. 6 6 Bevis. Modbevis. Antag G er en DAG og alle knuder har indgrad. 6 Vælg knude v og følg kanter baglæns fra v. Efter n+ skridt må der være mindst knude u vi har besøgt gange. u + de knuder mellem første og anden gang vi besøger u udgør kreds.

DAGs og topologisk sortering Lemma. G er en DAG G har topologisk sortering. DAGs og topologisk sortering Algoritme. Induktionsbevis som algoritme. 6 6 TOPSORT(G) if G = ({v}, ) print v else find v så deg - (v) = print v TopSort(G - {v}) Bevis. Induktion over n (antallet af knuder). Basis n =. Induktionsskridt n >. Find knude v med indgrad. G - {v} er en DAG G - {v} har en topologisk sortering. Placer v længst til venstre efterfulgt af den topologiske sortering af G - {v}. Giver topologisk sortering af G da v ikke har nogen indgående kanter. Korrekthed. Følger af induktionsbevis. Implementation Mål. Implementer algoritmen effektivt på incidenslisterepræsentation TOPSORT(G) if G = ({v}, ) print v else find v så deg - (v) = print v TopSort(G - {v}) Implementation Løsning. Konstruer omvendt graf G R. Linæer søgning i incidensliste for G R efter knude med indgrad i hvert skridt. TOPSORT(G) if G = ({v}, ) print v else find v så deg - (v) = print v TopSort(G - {v}) Tid per knude. Find knude v med indgrad : O(n). Fjern kanter ud af v: O(deg + (v)) Samlet tid for n knuder. O(n + v V deg + (v)) = O(n + m) = O(n ).

Implementation Løsning. Vedligehold indgrad af hver knude i incidensliste + hægtet liste af alle knuder med indgrad. deg tabel TOPSORT(G) if G = ({v}, ) print v else find v så deg - (v) = print v TopSort(G - {v}) -deg Initialisering. O(n+m) Tid per knude. Find knude v med indgrad : O(). Fjern kanter ud af v: O(deg + (v)) Samlet tid for n knuder. O(n + v V deg + (v)) = O(n + m). Topologisk sortering og DAGs Lemma. G er en DAG G har en topologisk sortering. Theorem. Vi kan afgøre om G er DAG og hvis den er så finde en topologisk sortering i O(n + m) tid. Topologisk sortering med DFS Topologisk sortering med DFS. Ide. Kør DFS på G. Ved slutning af rekursivt kald til knude v læg v på stak. Udskriv stak. Tid. O(n + m) Intuition. Finder rekursivt knuder med udgrad.

Stærke sammenhængskomponenter Def. v og u er stærk sammenhængende (strongly connected) hvis der er sti fra v til u og fra u til v. Def. Et stærk sammenhængskomponent (strongly connected component) er en maksimal delmængde af stærk sammenhængende knuder. Stærke sammenhængskomponenter med DFS med DFS. Ide. Kør DFS på omvendt graf G R. Kør DFS på G ifht. rækkefølge fra første DFS. Hver rekursiv søgning finder et stærkt sammenhængskomponent. Intuition? Korrekthed. Se kap. i CLRS. Tid. O(n + m) 6 8 7 9 Stærke sammenhængskomponenter med DFS Theorem. Vi kan finde alle stærke sammenhængskomponenter i O(n + m) tid.

Implicit graf Implicit graf (implicit graph). Uorienteret/orienteret graf G repræsenteret implicit. Implicit repræsentation. Startknude s. Algoritme til at generere naboer af en knude. Bruges i spil, kunstig intelligens, etc. Rubiks terning Rubiks terning n+m =...7.89.86. ~ trillioner. Hvad er det optimale antal træk man skal bruge på at "løse" en terning ligegyldigt hvor man starter? Rubiks terning år nedre grænse øvre grænse 98 8 99 8 99 8 9 99 8 7 99 8 9 99 9 8 6 7 7 6 8 8 8 www.cube.org