Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

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

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

Sammenhængskomponenter i grafer

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

Mindste udspændende træ

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

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

Danmarks Tekniske Universitet

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

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

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

Mindste udspændende træ

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

Prioritetskøer og hobe. Philip Bille

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

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

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Danmarks Tekniske Universitet

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

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

Danmarks Tekniske Universitet

Søgning og Sortering. Philip Bille

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

INSTITUT FOR DATALOGI, AARHUS 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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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

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

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

Sommeren 2001, opgave 1

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

DM02 Kogt ned. Kokken. Januar 2006

Divide-and-Conquer algoritmer

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

Introduktion til datastrukturer

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Dynamisk programmering

Divide-and-Conquer algoritmer

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Dynamisk programmering

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

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

Divide-and-Conquer algoritmer

Danmarks Tekniske Universitet

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. Philip Bille

Danmarks Tekniske Universitet

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

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

Dynamisk programmering

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

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

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

DATALOGISK INSTITUT, 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.

Minimum udspændende Træer (MST)

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

Algoritmisk geometri

Danmarks Tekniske Universitet

Skriftlig eksamen i Datalogi

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Transkript:

Philip Bille Orienteret graf. Mængde af knuder forbundet parvis med orienterede kanter. deg + (7) =, deg - (7) = Lemma. v V deg - (v) = v V deg + (v) = m. Bevis. Hver kant har netop en startknude og slutknude. sti fra til 7 9 8 7 9 8 0 kreds 0

Google Maps 8/0/ : Vejnetværk Spildopsamling (garbage collection) Knude = vejkryds, kant = ensrettet vej. Knude = objekt, kant = peger/reference. rødder Hvilke objekter kan vi nå fra en rod? Map data 0 Google 0 m WWW Automater og regulære udtryk Knude = hjemmeside, kant = hyperlink. Knude = tilstand, kant = tilstandsovergang. Webcrawling PageRank https://www.google.dk/maps/@.78,.7877,7z Accepterer automaten aab = findes sti fra til 0 der matcher aab? Page of Regulære udtryk kan repræsenteres som automat. a a 8 R = a (a ) (b c) http://computationalculture.net/article/what_is_in_pagerank b c 7 0 8 97

Afhængigheder 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? tabeller flettesortering hægtede lister stakke køer flettesortering indsættelsessortering stakke grafer stærke sammenhængkomponenter ordbøger indsættelsessortering hob tabeller ordbøger køer uorienterede grafer orienterede grafer foren og find grafer uorienterede grafer binær søgning binære søgetræer binær søgning hægtede lister BFS/DFS topologisk sortering MST orienterede grafer binære søgetræer foren og find MST korteste veje BFS/DFS topologisk sortering korteste veje hob Dijkstras algoritme Dijkstras algoritme stærke sammenhængkomponenter Problemer på orienterede grafer graf knuder kanter internet hjemmeside hyperlink transport vejkryds ensrettet vej skedulering job precedens relation infektionssygdom person infektion citation artikel citation 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? objekt graf objekter pegere/referencer objekt hieraki klasse nedarver fra kontrol-flow kode hop

Incidensmatrix Incidensmatrix. D n n tabel. Plads. O(n ) Tid for afgøre om v peger på u. O() 7 9 8 0 7 8 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Incidensliste Repræsentation Incidensliste. Tabel af hægtede lister. Plads. O(n + m) Tid for afgøre om v peger på u. O(deg + (v)) I praksis. De fleste grafer i virkeligheden er tynde brug incidenslister. 7 9 8 0 7 8 9 0 7 0 7 0 9 0 repræsentation plads kant fra v til u? incidensmatrix O(n O() incidensliste O(n + m) O(deg 0

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] = d[v] + π[w] = v Enqueue(w) Søgning i grafer DFS og BFS i O(n + m) tid på orienterede grafer.

Topologisk sortering og DAGs DAGs og topologisk sortering DAG. Orienteret acyclisk graf (directed acyclic graph). Graf uden kredse. Topologisk sortering. Ordning af knuder v, v,, 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. Lemma. G har en topologisk sortering G er en DAG. Bevis. Modbevis. v i v j Antag G har topologisk sortering v, v,, 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 v, v,, vn er ikke en topologisk sortering. DAGs og topologisk sortering DAGs og topologisk sortering Opgave. Givet en DAG, find på en strategi til at beregne en topologisk sortering. 7 Lemma. G er en DAG G har en knude med indgrad 0. Bevis. Modbevis. Antag G er en DAG og alle knuder har indgrad. 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 Algoritme Lemma. G er en DAG G har topologisk sortering. Bevis. Induktion over n Basis n =. Induktionsskridt n >. Find knude med indgrad 0. 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. Induktionsbevis som algoritme. Korrekthed. Følger af induktionsbevis. TopSort(G) if G = ({v}, ) print v else find v så deg - (v) = 0 print v TopSort(G - {v}) Implementation Mål. Implementer algoritmen effektivt på incidenslisterepræsentation 7 7 TopSort(G) if G = ({v}, ) print v else find v så deg - (v) = 0 print v TopSort(G - {v})

Implementation Implementation Løsning. Konstruer omvendt graf G R. Linæer søgning i incidensliste for G R 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 + v V deg + (v)) = O(n + m) = O(n ). Løsning. 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(). 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 0 0 0 Topologisk sortering og DAGs Topologisk sortering med DFS 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. 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.

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. 7 9 8 0 Stærke sammenhængskomponenter med DFS 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) Theorem. Vi kan finde alle stærke sammenhængskomponenter i O(n + m) tid.

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 Rubiks terning n+m =..00.7.89.8.000 ~ trillioner. Hvad er det optimale antal træk man skal bruge på at "løse" en terning ligegyldigt hvor man starter? år nedre grænse øvre grænse 98 8 990 8 99 8 9 99 8 7 99 8 9 99 0 9 00 0 8 00 0 7 007 0 008 0 008 0 008 0 00 0 0 www.cube0.org