Presentation laddar. Vänta.

Presentation laddar. Vänta.

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8 Relationer, prioritetsköer och grafer.

Liknande presentationer


En presentation över ämnet: "© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8 Relationer, prioritetsköer och grafer."— Presentationens avskrift:

1 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8 Relationer, prioritetsköer och grafer

2 Datastrukturer och algoritmer VT 2003 2© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Innehåll  Relationer  Snabb genomgång, resten läses på egen hand.  Prioritetsköer  Modell, organisation, konstruktioner, implementationer  Grafer  Modell, organisation, konstruktioner, implementationer  Kapitel 16, 14.5-8 och 17.1-2 i kursboken

3 Datastrukturer och algoritmer VT 2003 3© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Relationer  En instans av datatypen Relationer består av alla de relationer (relationsobjekt) som kan bildas ur en domänbas för instansen.  ”Kurstillfällen” är en relation över domänmängden (Kurskoder, År, Termin, Del av termin) med element som (TDBA36, 03, VT, 1) och (TDBA47, 03, VT, 2)  ”Läsperioder” är en annan relation över samma mängd med element som (03, VT, 1), (98, HT, 3) etc.  En relationsdatatyp kan alltså ha relationsobjekt med olika aritet.

4 Datastrukturer och algoritmer VT 2003 4© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Modell av Relation  Ofta beskriver man en relation med hjälp av en tabell över de element som ingår i relationen.  Relationen Kursansvar: Anders BrobergTDBA36 Johan EliassonTDBA63 Lena Kallin WestinTDBA47 Helena LindgrenTDBD06 ……

5 Datastrukturer och algoritmer VT 2003 5© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Tillämpningar av Relation  Relationsdatabaser  Vilka lärare undervisar på våren? LärareKurskod Anders BrobergTDBA36 Johan EliassonTDBA63 Lena Kallin WestinTDBA47 Helena LindgrenTDBD06 …… KurskodÅrTerminPeriod TDBA3603VT1 TDBA6303VT1 TDBA4703VT2 TDBD0602HT3 …………

6 Datastrukturer och algoritmer VT 2003 6© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Prioritetskö  Modell: Patienterna på en akutmottagning, man kommer in i en viss tidsordning men behandlas utifrån en annan ordning.  Organisation: En mängd vars grundmängd är linjärt ordnad av en prioritetsordning.  Avläsningar och borttagningar görs endast på de element som har högst prioritet.  Andra mängdoperationer är inte aktuella

7 Datastrukturer och algoritmer VT 2003 7© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Specifikation av prioritetskö  Gränsytan Pqueue(val, R): Empty()  Pqueue(val, R) Insert(v:val, p:Pqueue(val, R))  Pqueue(val, R) Isempty(p:Pqueue(val, R))  Bool Inspect-first (p:Pqueue(val, R))  val Delete-first (p:Pqueue(val, R))  Pqueue(val, R)  R är relationen för prioritetsordningen.  Ibland slås de två sista metoderna ihop.  Ytan ovan förutsätter statisk prioritet. Vill man ha dynamisk prioritet måste en update- metod finnas.

8 Datastrukturer och algoritmer VT 2003 8© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Specifikation av prioritetskö  Man kan också tänka sig att prioritetskön tar element (val) som består av ett värde och en prioritet.  Förra fallet antog man att värde = prioritet  Gränsytan kan varieras på flera sätt  update har vi redan nämnt  Vi kan också vilja finna det högsta/minsta prioritetsvärdet i kön

9 Datastrukturer och algoritmer VT 2003 9© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Stack och kö är specialfall av prioritetskön!  Om R är den totala relationen, dvs gäller för alla par av värden blir prioritetskön en stack.  Om R är den tomma relationen, dvs inte gäller för några par av värden, blir det en kö.  Dessutom:  Om R är en strikt partiell ordning, som ”>”, kommer lika element behandlas som en kö.  Om R är icke-strikt, som ”≥” behandlas lika element som en stack. Se axiomen på s 294!

10 Datastrukturer och algoritmer VT 2003 10© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Konstruktioner av Prioritetskö  Man utgå från konstruktioner av Mängd eller Lexikon  Men de har vi inte stött på än…  Lista, ej sorterad  Insert O(1), Delete-first O(n)  Lista, sorterad  Insert O(n), Delete-first O(1)

11 Datastrukturer och algoritmer VT 2003 11© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Konstruktioner av Prioritetskö  Man kan också använda ett partiellt sorterat binärt träd (kallas också för Hög/Heap).  Etiketterna är sorterade efter en relation R så att a är förälder till b endast om a är före b i ordningen som ges av R.  Insättningar och borttagningar görs så att trädet hålls komplett.  Insert O(log n), Delete-first O(log n) Se figur 14.10 och 14.11 s 296!

12 Datastrukturer och algoritmer VT 2003 12© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Tillämpningar  Operativsystem som fördelar jobb mellan olika processer  Enkelt sätt att sortera något.  Stoppa in allt i en prioritetskö och plocka ut det igen.  Hjälpmedel vid traversering av graf  Jmfr att stack och kö används vid traversering av träd.

13 Datastrukturer och algoritmer VT 2003 13© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Graf  Modell:  Vägkarta med enkelriktade gator utritade.  Tillämpningar  Signaturdiagrammen  Elektroniska kretsar  Nätverk (gator, flygrutter, kommunikation)  Neurala nätverk  … Se figur 17.1 s 337 och 17.3 s 340!

14 Datastrukturer och algoritmer VT 2003 14© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Mängorienterad specifikation (vanlig inom matematiken)  En graf G = (V, E) består av  V : en mängd av noder (vertices)  E : en mängd av bågar (edges) som binder samman noderna i V. oEn båge e = (u, v) är ett par av noder. ab c de V = {a, b, c, d, e} E = {(a,b), (a,c), a,d), (b,e), (c,d), (c,e), (d,e)}

15 Datastrukturer och algoritmer VT 2003 15© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Navigeringsorienterad specifikation  En graf är en mängd med noder där man till varje nod associerar en grannskapsmängd av noder som kallas grannar.  Alla noder tillhör samma typ  Alla ordnade par av en godtycklig nod och en av noderna i dess grannskapsmängd utgör en båge.  Denna specifikation passar ofta bättre i algoritmer eftersom de förutsätter effektiva navigeringsoperationer.

16 Datastrukturer och algoritmer VT 2003 16© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Riktade/oriktade grafer  Oriktade grafer  Bågen är en mängd av två noder. Noderna är grannar till varandra.  Gradtalet = Antalet bågar till grannar (eller sig själv)  Riktade grafer  Bågen är ordnade par av noder.  Gradtalet indelas i oIngradtalet = antalet bågar som går till noden oUtgradtalet = antalet bågar som startar i noden och går till en annan nod. ab c de ab c de

17 Datastrukturer och algoritmer VT 2003 17© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Bokens informella specifikation: Empty – konstruerar en tom graf utan noder och bågar Insert-node(v, g) – sätter in noden v i grafen g Insert-edge(e, g) – sätter in en båge e i grafen g. Det förutsätts att noderna finns i grafen Isempty(g) – testar om grafen g är tom, dvs utan noder Has-no-edges(g) – testar om grafen g saknar bågar Choose-node(g) – väljer ut en nod ur grafen g Neighbours(v, g) – mängden av alla grannar till v i grafen g Delete-node(v, g) – tar bort noden v ur grafen g, förutsatt att v inte ingår i någon båge Delete-edge(e, g) – tar bort bågen e ur grafen g

18 Datastrukturer och algoritmer VT 2003 18© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Terminologi  Väg/stig (path): En sekvens av noder v 1, v 2, …, v n så att v i och v i+1 är grannar.  I figuren ovan, a, b, e, c  Enkel väg (simple path): Inga noder förekommer två gånger i vägen.  Cykel (cycle): En enkel väg där den sista noden i sekvensen är densamma som den första. ab c de

19 Datastrukturer och algoritmer VT 2003 19© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Terminologi  Sammanhängande (connected) graf  Varje nod har en väg till varje annan nod.  Delgraf (subgraf) en delmängd av noderna och kanterna som formar en graf.  Sammanhängande komponenter  En sammanhängande subgraf  Grafen uppe till höger har två sammanhängande komponenter. ab c de ab c de

20 Datastrukturer och algoritmer VT 2003 20© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Connectivity (nåbarhet)  Låt n = antalet noder och m = antalet bågar.  En komplett graf (complete graph) får man när alla noder är grannar till alla andra.  I en komplett oriktad graf är m = n(n-1)/2  För ett träd gäller m = n-1  Om m < n-1 så är grafen inte sammanhängande ab dc m=5, n =6 m=6, n =4 ab c de m=3, n =5

21 Datastrukturer och algoritmer VT 2003 21© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Digraph och DAGs  DiGraph = Directed graph  dvs riktad graf  kan vara sammanhängande (dvs vägar finns från alla till alla noder)  kan ha sammanhängande komponenter  DAG = Directed Acyclic Graf  dvs, en riktad graf utan cykler ab c de ab c de

22 Datastrukturer och algoritmer VT 2003 22© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Mer grafer…  Viktad graf  En graf där bågarna har vikter  Multigraf  Tillåtet med flera bågar mellan två noder. Dessa bågar har då olika egenskaper som måste lagras.  Ordnad graf har inbördes ordning mellan grannarna till en nod.

23 Datastrukturer och algoritmer VT 2003 23© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Konstruktion av grafer  Förbindelsematris  Bågarna representeras av ettor i en matris.  Rad 1 visar vilka bågar man kan nå från a.  Kolumn 3 visar från vilka noder det kommer bågar till c. + Enkel att implementera och passar när man har siffror på noder och bågar. -Matrisen kan bli stor och gles och kräva specialtrick. 12345 1111 21 3 41 511 ab c de

24 Datastrukturer och algoritmer VT 2003 24© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Konstruktion av grafer  Graf som fält av lista.  Listan är grannskapslistan.  Man utgår att det finns minst en båge från varje nod (Fält) men inte att går en båge från varje nod till varje annan nod (därför Lista). + Inte lika utrymmeskrävande som en gles matris. Utrymmet = O(n+m) - Fixt antal noder ab c de a b c d e c c c b de e

25 Datastrukturer och algoritmer VT 2003 25© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Grafalgoritmer  Traversera  Bredden-först och djupet-först  Konstruera ett uppspännande träd  Finna vägarna från en nod till alla andra noder  Man kan vilja hitta kortaste vägen mellan två noder  Finna maximala flödet  Finna det maximala flödet mellan två noder


Ladda ner ppt "© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8 Relationer, prioritetsköer och grafer."

Liknande presentationer


Google-annonser