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

Relaterede dokumenter
Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

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

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Grafer og graf-gennemløb

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

Sammenhængskomponenter i grafer

Danmarks Tekniske Universitet

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

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

Danmarks Tekniske Universitet

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

Mindste udspændende træ

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Prioritetskøer og hobe. Philip Bille

Danmarks Tekniske Universitet

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

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

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

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

Danmarks Tekniske Universitet

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

Grafer / Otto Knudsen

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

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

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

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

Søgning og Sortering. Philip Bille

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

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

Danmarks Tekniske Universitet

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Introduktion til datastrukturer

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

Danmarks Tekniske Universitet

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

DM02 Kogt ned. Kokken. Januar 2006

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

Danmarks Tekniske Universitet

Introduktion til datastrukturer. Philip Bille

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Dynamisk programmering

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Dynamisk programmering

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Sommeren 2001, opgave 1

Danmarks Tekniske Universitet

Divide-and-Conquer algoritmer

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Divide-and-Conquer algoritmer

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Dynamisk programmering

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

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

Divide-and-Conquer algoritmer

Minimum udspændende Træer (MST)

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

Danmarks Tekniske 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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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

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

Datastrukturer (recap)

Skriftlig eksamen i Datalogi

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Transkript:

Orienterede grafer Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer Philip Bille

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

Orienterede grafer Orienteret graf. Mængde af knuder forbundet parvis med orienterede kanter. deg + (7) = 4, deg - (7) = 2 1 sti fra 1 til 4 2 3 7 9 8 4 10 11 kreds 5 6 12 13

Orienterede grafer Lemma. v V deg - (v) = v V deg + (v) = m. Bevis. Hver kant har netop en startknude og slutknude. 1 2 3 7 9 8 4 10 11 5 6 12 13

Vejnetværk Knude = vejkryds, kant = ensrettet vej.

Spildopsamling (garbage collection) Knude = objekt, kant = peger/reference. Hvilke objekter kan vi nå fra en rod? rødder

WWW Knude = hjemmeside, kant = hyperlink. Webcrawling PageRank http://computationalculture.net/article/what_is_in_pagerank

Automater og regulære udtryk Knude = tilstand, kant = tilstandsovergang. Accepterer automaten aab = findes sti fra 1 til 10 der matcher aab? Regulære udtryk kan repræsenteres som automat. a 1 2 3 4 5 a b 64 57 c 86 79 10 8 R = a (a ) (b c)

Afhængigheder Knude = emner, kant = afhængighed. Er der nogle cykliske afhængigheder? Hvordan kan vi finde en rækkefølge emnerne så vi undgår afhængigheder? flettesortering indsættelsessortering stakke grafer stærke sammenhængkomponenter tabeller ordbøger køer uorienterede grafer orienterede grafer binær søgning hægtede lister BFS/DFS topologisk sortering binære søgetræer foren og find MST korteste veje hob Dijkstras algoritme

Afhængigheder 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 korteste veje Dijkstras algoritme stærke sammenhængkomponenter

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

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 acyclisk 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?

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

Incidensmatrix Incidensmatrix. 2D n n tabel. Plads. O(n 2 ) Tid for afgøre om v peger på u. O(1) 1 2 3 4 5 6 7 8 9 10 11 12 13 1 0 1 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 0 0 1 0 0 0 0 0 0 0 0 0 4 0 0 1 0 1 0 0 0 0 0 0 0 0 1 5 0 0 0 0 0 1 0 0 0 0 0 0 0 6 0 0 1 1 0 0 0 0 0 0 0 0 0 2 3 7 9 8 7 1 0 0 0 0 1 0 0 1 1 0 0 0 8 0 0 0 0 0 0 1 0 0 1 0 0 0 4 10 11 9 0 0 0 0 0 0 1 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 1 0 0 5 6 12 13 11 0 0 0 0 0 0 0 0 0 0 0 0 1 12 0 0 0 0 0 0 0 0 0 1 0 0 0 13 0 0 0 0 0 0 0 0 0 1 0 1 0

Incidensliste Incidensmatrix. 2D n n tabel. Plads. O(n + m) Tid for afgøre om v peger på u. O(deg + (v)) 1 1 2 3 4 5 6 2 5 4 1 3 5 6 3 4 2 3 7 9 8 7 8 1 6 7 10 9 10 4 10 11 9 10 7 11 5 6 12 13 11 12 13 10 13 10 12

Repræsentation I praksis. De fleste grafer i virkeligheden er tynde brug incidenslister. repræsentation plads kant fra v til u? incidensmatrix O(n O(1) incidensliste O(n + m) O(deg

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

DFS(s) DFS-visit(s) DFS-visit(v) marker v for alle umarkerede knuder w som v peger på DFS-visit(w) π[w] = v BFS(s) Enqueue(s) marker s d[s] = 0 gentag indtil kø er tom v = Dequeue() for alle umarkede w som v peger på marker w d[w] = v + 1 π[w] = v Enqueue(w)

Søgning i grafer DFS og BFS i O(n + m) tid på orienterede grafer.

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

Topologisk sortering og DAGs DAG. Orienteret acyclisk graf (directed acyclic graph). Graf uden kredse. Topologisk sortering. Ordning af knuder v1, v2,, vn fra venstre til højre således at alle kanter peger mod højre. Problemer. Er G en DAG? Hvordan beregner vi en topologisk sortering? Mål. Vise G er en DAG G har en topologisk sortering + find algoritme til at løse begge problemer.

DAGs og topologisk sortering Lemma. G har en topologisk sortering G er en DAG. Bevis. Modbevis. v i v j Antag G har topologisk sortering v1, v2,, vn og ikke er en DAG. G indeholder kreds K. 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 v1, v2,, vn er ikke en topologisk sortering.

DAGs og topologisk sortering Opgave. Find på en strategi til at beregne en topologisk sortering. 1 2 3 4 5 6 7

DAGs og topologisk sortering Lemma. G er en DAG G har en knude med indgrad 0. Bevis. Modbevis. Antag G er en DAG og alle knuder har indgrad 1. Vælg knude v og følg kanter baglæns fra v. Efter n+1 skridt må der være mindst 1 knude u vi har besøgt 2 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. Bevis. Induktion over n Basis n = 1. Induktionsskridt n > 1. Find knude med indgrad 0. G - {v} er en DAG G - {v} har en topologisk sortering. Placer v længst til højre efterfulgt af den topologiske sortering af G - {v}. Giver topologisk sortering af G da v ikke har nogen indgående kanter.

Algoritme Induktionsbevis som algoritme. TopSort(G) if G = ({v}, ) print v else find v så deg - (v) = 0 print v TopSort(G - {v}) Korrekthed. Følger af induktionsbevis.

1 2 3 4 5 6 7 1 2 7 5 4 3 6

Implementation Mål. Implementer algoritmen effektivt på incidenslisterepræsentation TopSort(G) if G = ({v}, ) print v else find v så deg - (v) = 0 print v TopSort(G - {v})

Implementation Løsning 1. Linæer søgning i incidensliste efter knude med indgrad 0 i hvert skridt. Tid per knude. Find knude v med indgrad 0: O(n). Fjern kanter ud af v: O(deg + (v)) TopSort(G) if G = ({v}, ) print v else find v så deg - (v) = 0 print v TopSort(G - {v}) Samlet tid for n knuder. O(n 2 + v V deg + (v)) = O(n 2 + m) = O(n 2 ).

Implementation Løsning 2. Vedligehold indgrad af hver knude i incidensliste + hægtet liste af alle knuder med indgrad 0. Initialisering. O(n+m) Tid per knude. Find knude v med indgrad 0: O(1). Fjern kanter ud af v: O(deg + (v)) TopSort(G) if G = ({v}, ) print v else find v så deg - (v) = 0 print v TopSort(G - {v}) Samlet tid for n knuder. O(n + v V deg + (v)) = O(n + m). 0-deg deg tabel 1 0 2 0 3 3 4 2 5 0 6 1 1 2 5

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 0.

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

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. 1 2 3 7 9 8 4 10 11 5 5 12 13

Stærke sammenhængskomponenter med DFS Stærke sammenhængskomponenter 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 22.5 i CLRS. Tid. O(n + m)

Stærke sammenhængskomponenter med DFS Theorem. Vi kan finde alle stærke sammenhængskomponenter i O(n + m) tid.

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

Implicit graf Implicit graf. 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 = 43.252.003.274.489.856.000 ~ 43 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 1981 18 52 1990 18 42 1992 18 39 1992 18 37 1995 18 29 1995 20 29 2005 20 28 2006 20 27 2007 20 26 2008 20 25 2008 20 23 2008 20 22 2010 20 20 www.cube20.org

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