Grafer og grafalgoritmer
|
|
- Birgit Astrup
- 7 år siden
- Visninger:
Transkript
1 Algoritmer og Datastrukturer/Datalogi C Forelæsning 26/ Henning Christiansen Grafer og grafalgoritmer Hvad mener vi med en graf? NEJ! Graf: En matematisk abstraktion over ting som er logisk forbundet med hinanden Dagens program: Terminologi og anvendelser Repræsentationer af grafer Algoritme til korteste vej Algoritme til korteste vej med vægte (=omkostninger) Kort om netværksplanlægning o Princippet o Skitser af algoritmer, topologisk sortering, kritisk vej m.v. (1)
2 Grafer, terminologi og baggrund Udspringer af matematisk disciplin Grafteori Leonard Euler 1736: De 7 broer i Königsberg (nu Kaliningrad) Er det muligt at gå en tur, så man passerer alle broer, men ikke mere end én gang? (2)
3 Svaret er nej... beviset baseret på abstraktion = grafer: (Interesserede kan finde bevis på nettet eller i en bog på biblioteket) Grafteori: Stort og spændende område, mange spændende sætninger og anvendelser! (3)
4 Terminologi: En graf består af knuder (vertices); en eller anden (abstrakt mængde) {1,2,3,4} kanter (edges), en binær relation over knuder. {(1,2), (2,3), (2,2),...} Forskellige typer grafer: Ikke-orienteret graf: Kanter uden retning, dvs. (1,2) (2,1) Orienteret graf: Kanter har retning, dvs. (1,2) (2,1), dvs. Pile Vi taler om ind-kanter og ud-kanter for given knude Vægtet graf (typisk orienteret, men også ikke-orienteret): Hver kant har en vægt ( pris omkostning...) Tætte og tynde grafer: Tæt: Alle kan se alle, dvs. antal kanter O(antal-knuder 2 ) Tynd: Hver knude har lille antal kanter til/fra, dvs. antal kanter O(antal-knuder) Eksempel 2D-strukturer uden krydsende kanter (4)
5 Fænomener i grafer: En vej (path) fra K1 til Kn: En sekvens af kanter (K1,K2),(K2,K3),...,(Kn-1,Kn). En kreds/cyklus (cycle): En vej fra K til K. Klassifikation af grafer: Acyklisk: ingen kredse Sammenhængende: For vilkårlige knuder K1, K2, altid vej fra K1 til K2 eller omvendt Skov: Aldrig mere end én vej mellem to knuder Træ: en sammenhængende skov :) o NB: et træ har altid én top-knude (burde hedde dets rod, men nu er det altså etableret) (5)
6 Anvendelser Infrastruktur/forsyningslinjer Knuder = Byer/Forbrugere-Producenter /Computere-Servere-Printere Kanter = Veje/Lastbilsruter/Togstrækninger/Vandrør /el-ledninger/datanetforbindelser Interessante spørgsmål: Er grafen sammenhængende (ellers øer) Billigste vej mellem to knuder Billigste vej som involverer givet punktmængde Sammenhængsgrad et mål for forsyningssikkerhed: hvor mange forskellige veje mellem to vilkårlige punkter Rejseplanlægning: Knuder = stationer/stoppesteder/adresser Kanter = trafikforbindelser; pris = rejsetid Ekstra komplikation: Køreplan => ventetid (6)
7 Planlægning af projekter: Knuder = Produkter (=aktivitet afsluttet) Kanter = Hvilke ting forudsætter hvilke andre Hvor lang tid tager aktivitet X? Programstrukturer: Kaldegrafer: Hvilke metoder kalder hvilke? Fejlsøgning, optimering på compiletime UML: Hvilke klasser benytter hvilke og hvordan (f.eks. nedarver fra, indeholder objekter fra,...) Vedligeholdelse af programmer... (7)
8 Repræsentation af grafer Matrice: bool [ 5][ 5] graf Lister: For hver knude, en liste over dens ud-kanter 0: 1, 3 1: 2 2: 3: 2 4: 4 (8)
9 Eksempel på listerepræsentation af vægtede grafer: (9)
10 Hvordan var det nu med java.util.linkedlist Constructors LinkedList() Constructs an empty list. boolean add(object o) Appends the specified element to the end of this list. Object Object getfirst() Returns the first element in this list. getlast() Returns the last element in this list. int indexof(object o) Returns the index in this list of the first occurrence of the specified element, or -1 if the List does not contain this element. int lastindexof(object o) Returns the index in this list of the last occurrence of the specified element, or -1 if the list does not contain this element. (10)
11 ListIterator Object listiterator(int index) Returns a list-iterator of the elements in this list (in proper sequence), starting at the specified position in the list. remove(int index) Removes the element at the specified position in this list. boolean remove(object o) Removes the first occurrence of the specified element in this list. Object Osv. osv. removefirst() Removes and returns the first element from this list. Object removelast() Removes and returns the last element from this list. (11)
12 Repræsentation med lister benytte i lærebogen (her renset for diverse ekstrainf. og fejlcheck ved indlæs) Knuderne har her tekstlige navne som benyttes ved indlæs og udskriv class Edge // each edge attached to its start vertex, so implicit here {public Vertex dest; // Second vertex in Edge public double cost; // Edge cost public Edge( Vertex d, double c ) {dest = d; cost = c;}} class Vertex { public String name; // Vertex name public List adj; // Adjacent vertices //liste over ud-kanter public Vertex(String nm){name=nm;adj=new LinkedList( );}} public class Graph {private Map vertexmap = new HashMap( ); // String to Vertex private Vertex getvertex( String vertexname ) {Vertex v = (Vertex) vertexmap.get( vertexname ); if(v==null) {v=new Vertex(vertexName); vertexmap.put(vertexname,v);} return v;} public void addedge( String sourcename, String destname, double cost) {Vertex v=getvertex(sourcename); Vertex w=getvertex(destname); v.adj.add( new Edge( w, cost ) );} } (12)
13 public static void main( String [ ] args ) {Graph g = new Graph( ); FileReader fin = new FileReader( args[0] ); //file name BufferedReader graphfile = new BufferedReader( fin ); // Read the edges and insert String line; while( ( line = graphfile.readline( ) )!= null ) {StringTokenizer st = new StringTokenizer( line ); String source = st.nexttoken( ); String dest = st.nexttoken( ); int cost = Integer.parseInt( st.nexttoken( ) ); g.addedge( source, dest, cost );}; System.out.println( "File read..." ); System.out.println( g.vertexmap.size( ) + " vertices" );... } (13)
14 Korteste vej mellem to knuder beregner korteste veje fra startknude til alle andre knuder a la princippet i dynamisk programmering; vi har måske brug for at gå via andre knuder Version 1: Orienterede grafer uden vægte; vejlængde = antal kanter. Datastruktur: hver knude tilføjes hjælpevariable: double dist; //hidtil bedst fundne afstand fra start; init=infinity Vertex previous; // Previous vertex on shortest path; init=null Metode clearall, som initialiserer alle hjælpevariable i graf global kø q over knuder som skal besøges. Princip i algoritme: Givet knude kalde start. Først besøges start; Så besøges alle knuder i afstand 1 fra start dvs. alle som kan nås via én kant fra start Dernæst alle knuder i afstand 2 fra start; dvs. alle som kan nås via én kant fra dem i forrige skridt, dog ikke dem som allerede har været besøgt! osv. (14)
15 Eksempel fra bogen (ingen fra) (15)
16 (16)
17 Implementation i Java public void unweightedshortestpath( String startname ) { clearall( ); Vertex start = (Vertex) vertexmap.get( startname ); LinkedList q = new LinkedList( ); q.addlast( start ); start.dist = 0; while(!q.isempty( ) ) { Vertex v = (Vertex) q.removefirst( ); for( Iterator itr = v.adj.iterator( ); itr.hasnext( ); ) { Edge e = (Edge) itr.next( ); Vertex w = e.dest; if( w.dist == INFINITY ) { w.dist = v.dist + 1; w.prev = v; q.addlast( w );}}}} Sluttilstand: Alle knuder med påskrevet korteste afstand fra start + korteste vej baglæns via».prev«. Incl. dem som ikke kan nås fra start: INFINITY (17)
18 Korteste vej med vægte, Dijkstras algoritme Princip, som før men ekstra komplikation i og med ikke nok med besøgt/ikke besøgt vægt for knude kan tælles ned flere gange Vi skelner mellem færdigbehandlede knuder ( visited ) besøgte, ufærdige naboer til færdigbehandlede knuder ( unseen ) For at generalisere algoritmen fra før bruger vi en prioritetskø, som indeholder den sidste slags. Alle knuder tildeles fra start afstand fra startknude = uendelig. (18)
19 Abstrakt algoritme: indsæt start-knude med afstand=0 i kø; while( der-er-flere-kø ) { lad v = knuden i køen med mindst afstand... v fjernes fra køen; for alle v s naboer w, som ikke allerede er færdigbehandlede, { hvis v.afstand + længde(v--> w) < w.afstand så { w.afstand= v.afstand + længde(v--> w); sæt w i kø (hvis den ikke allerede er der; } notér v som færdigbehandlet }} (19)
20 (20)
21 Bogens algoritme i Java: Prioritetskøen implementeres uelegant med BinaryHeap... (NB: ikke i Javas std. pakker) BinaryHeap er en datastruktur, med underligt navn, hvis indmad vi ikke kender men som implementerer metoderne insert(comparable x) Comparable deletemin( ) hvor Min er bestemt ved objekternes compareto. Problem ved denne BinaryHeap: Objekternes rækkefølge bestemmes på indsættelsestidspunktet. Dvs. hvis objekt ændres undervejs, så det påvirker resultat af compareto, opfører deletemin sig ikke korrekt!!! Teknik (læs: hæsligt bøjet søm): I algoritmen ændres knudernes afstand altid nedad Vi vælger altid knude med mindst afstand Når knude er valgt, sættes dens scratch felt = 1 (init=0). Hvis en knude med scratch =1 fremkommer ved deletemin, ignoreres den. (21)
22 Følgende Path objekter (misvisende navn) indsættes i BinaryHeap en: class Path implements Comparable { public Vertex dest; // w public double cost; // d(w) public Path( Vertex d, double c ) {dest = d; cost = c;} public int compareto( Object rhs ) { double othercost = ((Path)rhs).cost; return cost < othercost? -1 : cost > othercost? 1 : 0;}} (22)
23 Dijkstras algoritme for korteste vej i vægtede grafer ved brug af BinaryHeap : public void dijkstra( String startname ) { PriorityQueue pq = new BinaryHeap( ); Vertex start = (Vertex) vertexmap.get( startname ); clearall( ); pq.insert( new Path( start, 0 ) ); start.dist = 0; int nodesseen = 0; while(!pq.isempty( ) && nodesseen < vertexmap.size( ) ) {Path vrec = (Path) pq.deletemin( ); Vertex v = vrec.dest; if( v.scratch!= 0 ) continue; // Hack: already processed v v.scratch = 1; nodesseen++; for( Iterator itr = v.adj.iterator( ); itr.hasnext( ); ) { Edge e = (Edge) itr.next( ); Vertex w = e.dest; double cvw = e.cost; if( w.dist > v.dist + cvw ) { w.dist = v.dist +cvw; w.prev = v; pq.insert( new Path( w, w.dist ) );}}}} (23)
24 Kompleksitet af Dijkstra s algoritme til korteste vej: Man kan vise O(e * log v) hvor e er antal knuder, v antal kanter Den synes altså»kun lidt værre end lineær«men lineær i hvad??? Antag Dijkstra s alg. brugt i rejseplanner som finder rute fra A til B, og den optimeres med udhop når B er nået. A B Dvs. i stor»euklidisk«graf: O(n 2 (log n) 2 ) FOR DÅRLIGT! Optimering ved præ-analyse af landkort... (24)
25 Acykliske grafer Typisk anvendelse: Planlægning 0: tagspær 1: lægter : rejsegilde 3: tagsten A --> B: A forudsætter B Acykliske grafer nemmere at programmere om: Man kommer aldrig tilbage til samme sted! Eksempel: Topologisk sortering at ordne knuderne i en graf i rækkefølge, så afhængigheder er overholdt. tagspærene skal på før lægterne hvorvidt du sætter vinduer i før eller efter tagstenene er ligegyldigt Algoritme som udskriver knuderne i topologisk sorteret rækkefølge G = vor graf; while(flere-knuder-tilbage) { find knude V med nul indgående kanter; //findes fordi G acyklisk udskriv V; fjern v og alle dens udgående kanter fra G; } Dvs: På givet tidspunkt repræsenterer G mængden af ugjort arbejde (25)
26 Eksempel fra bogen V2 V0 V1 V3 V4 V6 V5 (26)
27 Bogens algoritme i Java (udsnit af fig ) (fig blander top.sort. med en korteste vej algoritme) Princip: hver knudes scratch benyttes som tæller for antal ind-kanter; der bruges en kø til at holde de knuder som på givet tidspunkt har 0 ind-kanter LinkedList q = new LinkedList( ); // Compute the indegrees Collection vertexset = vertexmap.values( ); for( Iterator vsitr = vertexset.iterator( ); vsitr.hasnext( ); { Vertex v = (Vertex) vsitr.next( ); for( Iterator witr = v.adj.iterator( ); witr.hasnext( ); ) ( (Edge) witr.next( ) ).dest.scratch++;} (27)
28 // Enqueue vertices INITIALLY of indegree zero for( Iterator vsitr = vertexset.iterator( ); vsitr.hasnext( ); ) { Vertex v = (Vertex) vsitr.next( ); if( v.scratch == 0 ) {q.addlast( v ); UDSKRIV v; } ; // Loop: Remove 0-nodes from queue and count down in-degrees while(!q.isempty( )) { Vertex v = (Vertex) q.removefirst( ); for( Iterator itr = v.adj.iterator( ); itr.hasnext( ); ) { Edge e = (Edge) itr.next( ); Vertex w = e.dest; if( --w.scratch == 0 ) {q.addlast( w ); UDSKRIV v; }}} (28)
29 Korteste vej for acykliske grafer Tricket: Knuderne besøges i rækkefølge svarende til topologisk sortering Dvs. når en knude besøges, er alle dens forgængere besøgt (og med garanti ikke ændrer sin korteste vej) [her formuleret uelegant, så man starter med at traversere uinteressante dele af grafen] Algoritmen for topologisk sortering med et par ekstra linjer i stedet for udskrift: clearall(); start.dist = 0; LinkedList q = new LinkedList( ); // Compute the indegrees Collection vertexset = vertexmap.values( ); for( Iterator vsitr = vertexset.iterator( ); vsitr.hasnext( ); { Vertex v = (Vertex) vsitr.next( ); for( Iterator witr = v.adj.iterator( ); witr.hasnext( ); ) ( (Edge) witr.next( ) ).dest.scratch++;} // Enqueue vertices INITIALLY of indegree zero for( Iterator vsitr = vertexset.iterator( ); vsitr.hasnext( ); ) { Vertex v = (Vertex) vsitr.next( ); if( v.scratch == 0 ) q.addlast( v ) ; (29)
30 // Loop: Remove 0-nodes from queue and count down in-degrees while(!q.isempty( )) { Vertex v = (Vertex) q.removefirst( ); for( Iterator itr = v.adj.iterator( ); itr.hasnext( ); ) { Edge e = (Edge) itr.next( ); Vertex w = e.dest; double cvw = e.cost; if( --w.scratch == 0 ) q.addlast( w ); if( v.dist == INFINITY ) continue; // skip nodes unreachable from start if( w.dist > v.dist + cvw ) { w.dist = v.dist + cvw; w.prev = v;}}} Kompleksitet Man kan redegøre for O(e) modsat Dijkstra s O(e * log v) (30)
31 Skitse af netværksplanlægning Udgangspunkt: En aktivitetsgraf Knuder: Aktivitet m. forventet tidsforbrug Kanter: Forudsætningsforhold Obs: Omkostninger på knuder passer ikke ind i vores hidtidige model. I stedet: En begivenhedsgraf: Knuder: aktivitet-start, aktivitet-slut Kanter. Forudsætningsforhold, Aktivitet m. tidsforbrug (31)
32 Hvor lang tid tager projektet hvis arbejdet planlægges optimalt? Kritiske vej = længste vej fra start til slut (32)
33 Algoritmer a la korteste vej kan tilpasses længste vej for hver aktivitet, tidligst mulige slutpunkt Yderligere algoritmer til: Senest mulige starttidspunkt Tidligts mulige sluttidspunkt Hvor meget der kan slækkes (33)
34 Yderligere forfining af modellen med ressourcer: Aktivitet A kræver 1 gravko m. fører, 1 rendegraver m. fører Aktivitet E kræver 1 rendegraver m. fører, 1 bobcat, 5 gartnere, 3 river, 2 skovle Vi har ialt følgende ressourcer: 1 gravko, 2 rendegraver, 1 byggekran,... Alt dette kan behandles med algoritmer små forbedringer = store penge heuristikker til at behandle usikkerheder, robusthed for forudsete og uforudsete ændringer løbende justering af plan ud fra hvordan det er gået indtil nu... (34)
Grafer og grafalgoritmer
Algoritmer og Datastrukturer/Datalogi C Forelæsning 15/10-2002 Henning Christiansen Grafer og grafalgoritmer Hvad mener vi med en graf? NEJ! Graf: En matematisk abstraktion over ting som er logisk forbundet
Læs mereGrafer og graf-gennemløb
Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).
Læs mereStakke, køer og lidt om hægtede lister - kapitel 16 og 17
Datastrukturer & Algoritmer, Datalogi C Forelæsning 2/11-2004 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Fundamentale datastrukturer man får brug for igen og igen Et
Læs mereStakke, køer og lidt om hægtede lister
Datastrukturer & Algoritmer, Datalogi C Forelæsning 4/11-2003 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Hvorfor? Fundamentale datastrukturer man får brug for igen og
Læs mereGrafer og graf-gennemløb
Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).
Læs mereGrafer og graf-gennemløb
Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).
Læs mereGrafer og graf-gennemløb
Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Figur: Terminologi: n = V, m = E (eller V og E (mis)bruges som V og E ).
Læs mereKorteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.
Korteste veje Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. δ(u, v) = længden af en korteste
Læs mereKorteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.
Korteste veje Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. δ(u, v) = længden af en korteste
Læs mereOrienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk
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
Læs mereGrafer og graf-gennemløb
Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).
Læs mereKorteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.
Korteste veje Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. δ(u, v) = længden af en korteste
Læs merePrioritetskøer og hobe. Philip Bille
Prioritetskøer og hobe Philip Bille Plan Prioritetskøer Træer Hobe Repræsentation Prioritetskøoperationer Konstruktion af hob Hobsortering Prioritetskøer Prioritetskø Vedligehold en dynamisk mængde S af
Læs mereFørsteårsprojekt F2008 Flere grafalgoritmer, og visualisering SØGES
Førsteårsprojekt F2008 Flere grafalgoritmer, og visualisering Peter Sestoft 2008-03-11* SØGES 1-2 studerende til Åbent Hus torsdag 10. april kl 1700-1800 Skal kunne fortælle 5-10 minutter om hvad hvordan
Læs mereMindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion
Philip Bille Introduktion (MST). Udspændende træ af minimal samlet vægt. Introduktion (MST). Udspændende træ af minimal samlet vægt. 0 0 Graf G Ikke sammenhængende Introduktion (MST). Udspændende træ af
Læs mereOrienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer
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.
Læs mereOrienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.
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
Læs mereMindste udspændende træ
Mindste udspændende træ Introduktion Repræsentation af vægtede grafer Egenskaber for mindste udspændende træer Prims algoritme Kruskals algoritme Philip Bille Mindste udspændende træ Introduktion Repræsentation
Læs mereMindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion
Philip Bille Introduktion (MST). Udspændende træ af minimal samlet vægt. Introduktion (MST). Udspændende træ af minimal samlet vægt. 0 0 Graf G Ikke sammenhængende Introduktion (MST). Udspændende træ af
Læs mereLøsning af møntproblemet
Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 11 sider Skriftlig eksamen i Datalogi Modul 1 Sommer 2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 10% Opgave 2 10%
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således
Læs merePrioritetskøer ved»heap«, simulering
Datastrukturer & Algoritmer, Datalogi C Forelæsning 25/11-2003 Prioritetskøer ved»heap«, simulering Yet another teknik til at repræsentere mængder Hvor hashtabellen fremviste: Konstant tid for finde og
Læs mereRekursion og dynamisk programmering
Rekursion og dynamisk programmering Datastrukturer & Algoritmer, Dat C Forelæsning 12/10-2004 Henning Christiansen Rekursion: at en procedure kalder sig selv eller et antal metoder kalder hinanden gensidigt.
Læs mereKorteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille
Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs Philip Bille Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje
Læs mereKorteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille
Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs Philip Bille Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje
Læs mereIntroduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer
Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
Læs mereIntroduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer
Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt
Læs mereTræer. Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/
Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/11-2004 Træer En meget vigtig datastruktur Repræsentation af sprog (i meget generel betydning), syntakstræer: Java (i en compiler), SQL (i et databasesystem),
Læs mereSøgetræer: Generel repræsentation af (sorterede) mængder og funktioner Databasesystemer...
Datastrukturer & Algoritmer, Datalogi C Forelæsning 11/11-2003 Træer En meget vigtig datastruktur Repræsentation af sprog (i meget generel betydning), syntakstræer: Java (i en compiler), SQL (i et databasesystem),
Læs mereAlgoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012
Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012 May 15, 2012 1 CONTENTS 2012 CONTENTS Contents 1 Kompleksitet 3 1.1 Køretid................................................ 3 1.2 Asymptotisk
Læs merePrioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille
Prioritetskøer Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering Philip Bille Prioritetskøer Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer
Læs mereIntroduktion til datastrukturer
Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Philip Bille Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller
Læs mereOm binære søgetræer i Java
Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret
Læs merePrioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer
Philip Bille. Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key og satellitdata x.data. MAX(): returner element med største nøgle. EXTRACTMAX(): returner og fjern
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3
DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget
Læs mereIntroduktion til datastrukturer. Philip Bille
Introduktion til datastrukturer Philip Bille Plan Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Datastrukturer Datastrukturer Datastruktur: Metode til at organise data så det kan søges
Læs merePrioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer
Philip Bille (priority-queues). Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key og satellitdata x.data. MAX(): returner element med største nøgle. EXTRACTMAX():
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereFørsteårsprojekt F2008. Nogle algoritmer på grafer
Førsteårsprojekt F2008 Nogle algoritmer på grafer Peter Sestoft 2008-02-19 Oversigt for i dag Definition: graf og orienteret graf Repræsentation ved kantlister Bredde-først gennemløb Dybde-først gennemløb
Læs mereMindste udspændende træ
Mindste udspændende træ Introduktion Repræsentation af vægtede grafer Egenskaber for mindste udspændende træer Prims algoritme Kruskals algoritme Philip Bille Mindste udspændende træ Introduktion Repræsentation
Læs mere02105 Eksamensnoter. Lasse Herskind S maj Sortering 3
02105 Eksamensnoter Lasse Herskind S153746 12. maj 2017 Indhold 1 Sortering 3 2 Analyse af algoritme 4 2.1 Køretid.......................................... 4 2.2 Pladsforbrug.......................................
Læs mereDATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004
Københavns Universitet bacheloruddannelsen i datalogi side 1 af 6 DATALOGI 0GB Skriftlig eksamen tirsdag den 6. januar 2004 Dette opgavesæt består af 6 nummererede sider. Eksamensdeltagerne bør straks
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
Læs mereDanmarks Tekniske Universitet
side af 3 sider anmarks Tekniske Universitet Skriftlig prøve, den 29. maj 203. ursusnavn: lgoritmer og datastrukturer ursus nr. 02326. jælpemidler: Skriftlige hjælpemidler. et er ikke tilladt at medbringe
Læs mereForelæsning Uge 5 Mandag
Forelæsning Uge 5 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Brug af klassen Collections og interfacet Comparable BlueJ s Debugger Nyttig til at inspicere
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereAbstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Læs mere.. if L(u) + w(u, v) < L(v) then.. begin... L(v) := L(u) + w(u, v)... F (v) := u.. end. med længde L(z)}
Procedure Dijkstra(G = (V, E): vægtet sh. graf,. a, z: punkter) { Det antages at w(e) > 0 for alle e E} For alle v V : L(v) := L(a) := 0, S := while z / S begin. u := punkt ikke i S, så L(u) er mindst
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2015 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 3. marts, 2015 Dette projekt udleveres i to dele. Hver del har sin deadline, således
Læs mereVægtede grafer. I en vægtet graf har enhver kant tilknyttet en numerisk værdi, kaldet kantens vægt
Korteste veje 1 Vægtede grafer HNL I en vægtet graf har enhver kant tilknyttet en numerisk værdi, kaldet kantens vægt Vægte kan repræsentere afstande, omkostninger, o.s.v. Eksempel: I en flyrutegraf repræsenterer
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2
DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld
Læs mereSkriftlig Eksamen Algoritmer og Datastrukturer (DM507)
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Onsdag den 0. juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)
Læs mereSkriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)
Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning) Datalogisk Institut Aarhus Universitet Fredag den 28. maj 2004, kl. 9.00 13.00 Opgave 1 (20%) En (r, k) kryds-graf er en orienteret graf
Læs mereDM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/
DM502 Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!
Læs mereINSTITUT FOR DATALOGI, AARHUS UNIVERSITET
INSTITUT FOR DTOI, RUS UNIVERSITET Science and Technology ESEN lgoritmer og Datastrukturer (00-ordning) ntal sider i opgavesættet (incl. forsiden): (elleve) Eksamensdag: Fredag den. juni 0, kl. 9.00-.00
Læs mereDanmarks Tekniske Universitet
Eksamen 005, F0 side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 00. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler.
Læs mereDatastrukturer (recap)
Dictionaries Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang
Læs mereDatastrukturer (recap) Datastruktur = data + operationer herpå
Dictionaries Datastrukturer (recap) Datastruktur = data + operationer herpå Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data (ofte underforstået, også
Læs mereGrådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for
Læs mereEksamen i Diskret Matematik
Eksamen i Diskret Matematik Første Studieår ved Det Tekniske Fakultet for TT og Design samt Det Ingeniør- og Naturvidenskabelige Fakultet 29. maj 2017. Kl. 9-13. Nærværende eksamenssæt består af 11 nummererede
Læs mereGrådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for
Læs mereGeometrisk skæring. Afgørelse af om der findes skæringer blandt geometriske objekter Bestemmelse af alle skæringspunkter
Planfejning 1 Skæring 2 Geometrisk skæring Afgørelse af om der findes skæringer blandt geometriske objekter Bestemmelse af alle skæringspunkter Løsningsmetoder: Rå kraft Planfejning (eng. plane sweep)
Læs mereINSTITUT FOR DATALOGI, AARHUS UNIVERSITET
INSTITUT FOR DTLOGI, RHUS UNIVERSITET Science and Technology EKSEN lgoritmer og Datastrukturer (00-ordning) ntal sider i opgavesættet (incl. forsiden): 11 (elleve) Eksamensdag: Torsdag den 1. juni 01,
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereDM02 - Obligatorisk opgave E.05 Rejseplanlægning. Jacob Aae Mikkelsen
DM02 - Obligatorisk opgave E.05 Rejseplanlægning Jacob Aae Mikkelsen 191076 3. November 2005 Resumé Denne rapport dokumenterer opbygningen af et program der skal beregne den korteste rejsetid mellem en
Læs mereBRP 6.9.2006 Kursusintroduktion og Java-oversigt
BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:
Læs mereDANMARKS TEKNISKE UNIVERSITET
DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler
Læs mereNetværksalgoritmer 1
Netværksalgoritmer 1 Netværksalgoritmer Netværksalgoritmer er algoritmer, der udføres på et netværk af computere Deres udførelse er distribueret Omfatter algoritmer for, hvorledes routere sender pakker
Læs mereDatalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)
Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 Datastrukturer og algoritmer Henning Christiansen henning@ruc.dk http://www.ruc.dk/~henning Formål: at kunne - forstå datastrukturer og algoritmer
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 6
DM502 Forelæsning 6 Klasser og objekter Introduktion Math-klassen Indhold Klasser vs. objekter Først et tænkt eksempel: Vi vil lave en bil i Java 1. spørgsmål: Hvad karakteriserer en bil? Model År Farve...
Læs mereDanmarks Tekniske Universitet
side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 0205. Varighed: 4 timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.
Læs mereDanmarks Tekniske Universitet
side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 26. maj 2009. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning
Læs mereGrafer / Otto Knudsen 20-11-06
Grafer / Otto Knudsen -- Grafer Definition En graf er pr. definition et par G = (V, E). Grafen består af en mængde knuder V (eng: vertices) og en mængde kanter E (eng: edges), som forbinder knuderne. A
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Vinter 1998/99 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 16% Opgave 2 12% Opgave 3 10% Opgave
Læs mereDM02 Kogt ned. Kokken. Januar 2006
DM02 Kogt ned Kokken Januar 2006 1 INDHOLD Indhold 1 Asymptotisk notation 2 2 Algoritme analyse 2 3 Sorterings algoritmer 2 4 Basale datastrukturer 3 5 Grafer 5 6 Letteste udspændende træer 7 7 Disjunkte
Læs mereAAU, Programmering i Java Intern skriftlig prøve 18. maj 2007
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal
Læs mereDatalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning
Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:
Læs mereP2-gruppedannelsen for Mat og MatØk
Institut for Matematiske Fag Aalborg Universitet Danmark 1-02-2012 Vejledere Bo Hove E-mail: bh@thisted-gymnasium.dk 3 Mat grupper (semesterkoordinator) E-mail: diego@math.aau.dk. Web page: http://people.math.aau.dk/~diego/
Læs mereDanmarks Tekniske Universitet
side af 2 sider anmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 02326. Varighed: 4 timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.
Læs mereGrådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Varighed: timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave
Læs mereMinimum udspændende Træer (MST)
Minimum udspændende Træer (MST) Træer Et (frit/u-rodet) træ er en uorienteret graf G = (V, E) som er Sammenhængende: der er en sti mellem alle par af knuder. Acyklisk: der er ingen kreds af kanter. Træer
Læs mereGrådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Grådige algoritmer Grådige algoritmer Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af opgaverne:
Læs mereSkriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 10. april, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereSammenhængskomponenter i grafer
Sammenhængskomponenter i grafer Ækvivalensrelationer Repetition: En relation R på en mængde S er en delmængde af S S. Når (x, y) R siges x at stå i relation til y. Ofte skrives x y, og relationen selv
Læs mereTree klassen fra sidste forelæsning
Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years
Læs mereDATALOGI 0GB. Skriftlig eksamen mandag den 7. juni 2004
Københavns Universitet bacheloruddannelsen i datalogi side 1 af 6 DATALOGI 0GB Skriftlig eksamen mandag den 7. juni 2004 Dette opgavesæt består af 6 nummererede sider. Eksamensdeltagerne bør straks sikre
Læs mereBinære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo
Philip Bille Nærmeste naboer. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle key[] og satellitdata data[]. operationer. PREDECESSOR(k): returner element med største nøgle k.
Læs mereForelæsning Uge 3 Mandag
Forelæsning Uge 3 Mandag ArrayList klassen Gør det let at lave en objektsamling (collection) med et variabelt antal elementer Der er mange andre slags objektsamlinger (se Collection interfacet i JavaDoc)
Læs mereSkriftlig Eksamen DM507 Algoritmer og Datastrukturer
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Tirsdag den 24. juni 2014, kl. 10:00 14:00 Besvarelsen skal afleveres elektronisk. Se
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereDefinition : 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
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 en unik simpel vej mellem ethvert par af punkter i
Læs mere