Grafer og grafalgoritmer
|
|
- Katrine Astrup
- 8 år siden
- Visninger:
Transkript
1 Algoritmer og Datastrukturer/Datalogi C Forelæsning 15/ 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.
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? 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 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 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 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 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...
6 Repræsentation af grafer Matrice: bool [ 5][ 5] graf Lister: For hver knude, en liste over dens ud-kanter 0: [1, [3, null]] 1: [2, null] 2: null 3: [2, null] 4: [4, null] Eksempel på listerepræsentation af vægtede grafer:
7 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. 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.
8 Repræsentation med lister benytte i lærebogen (her renset for diverse ekstrainformation og fejlcheck ved indlæsning) Attributter har her tekstlige navne som benyttes ved indlæs og udskriv class Edge // start vertex given by position in list (below) {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 ) );}
9 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" );... }
10 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.
11
12 Implementation i Java public void unweighted( 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 afstand fra start. Incl. dem som ikke kan nås fra start: INFINITY
13 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 ) 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. 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 }}
14 Hvorfor virker den? Lad os formulere et matematisk induktionsbevis over antal gennemløb af while-løkken: Hypotesen: Afstand for alle færdigbehandlede er korrekt, og Afstand for ufærdige nabo w = lgd. af korteste vej i delgraf som udover w kun indeholder færdigbehandlede. Induktionsstart, lad os vælge når startknuden er færdigbehandlet: c1 c1 start 0 c2 c2 c4 c3 c3 OK! c4 Antag nu at algoritmen har kørt korrekt op til skridt k: v Skridt k+1: Lad v være hvid knude med mindst vægt: v s naboers vægte justeres (måske) v forfremmes til færdigbehandlet
15 1. Redegøre for at v s afstand D er den mindst mulige. Men kan der være en anden vej fra start til v, som er billigere? Per induktionshypotese del 2, kan der ikke være en anden vej grå->grå->...->grå->v. Ergo må en sådan vej P være af formen... -> hvid -> grå. Kald denne hvide v1 og dens noterede afstand D1. Udfra valget af v må vi have D1 D. Kan længden af P = D1 + noget-positivt så være mindre end D?? Nej vel? Modstrid! 2. Redegøre for at de nye afstande for v s naboer er korteste vej i delgrafen bestående af de grå nu udvidet med v. Hvis en sådan nabo w får talt sin vægt ned, så er det netop fordi ny vej via v er kortere end tidligere grå->grå->...->grå-> w. Q.E.D.
16 Bogens algoritme i Java: Prioritetskøen implementeres lidt snusket 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 den scratch felt = 1 (init=0). Hvis en knude med scratch =1 fremkommer ved deletemin, ignoreres den. Følgende Path objekter 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;}}
17 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; // 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 ) );}}}}
18 Acykliske grafer Typisk anvendelse: Planlægning : tagspær 1: lægter 2: tagsten 3: rejsegilde 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; }
19 Bogens algoritme i Java (udsnit af fig ) (fig blander top.sort. med en kortestevej 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++;} // 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; }}}
20 Eksempel fra bogen
21 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) Algoritmen for topologisk sortering med 4 ekstra linjer i stedet for udskrift: 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 ) ; // 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 ); if( v.dist == INFINITY ) continue; // on island ; avoid overflow if( w.dist > v.dist + cvw ) { w.dist = v.dist + cvw; w.prev = v;}}}
22 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 Hvor lang tid tager projektet hvis arbejdet planlægges optimalt? Kritiske vej = længste vej fra start til slut
23 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 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 forudset og uforudsete ændringer
Grafer og grafalgoritmer
Algoritmer og Datastrukturer/Datalogi C Forelæsning 26/10-2004 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 mereP (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2.
P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2. Bevis ved stærk induktion. Basisskridt: P (2) er sand og P (3) er sand. Induktionsskridt: Lad k 2 og antag P
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 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 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 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 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 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 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 mereDM01 DM01. 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 13/5-2003. Side 1 af 7
DM01 DM01 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 13/5-2003 Side 1 af 7 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DNA2:...4 2.1.1 METODER:...4
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 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 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 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 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 mereINSTITUT FOR DATALOGI, AARHUS UNIVERSITET
STTUT FR DTG, RUS UVERSTET Science and Technology ESE ntal sider i opgavesættet (incl. forsiden): (elleve) Eksamensdag: Fredag den. juni 0, kl. 9.00-.00 Tilladte medbragte hjælpemidler: lle sædvanlige
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
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 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 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 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 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 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 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 mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 20. april, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereINSTITUT FOR DATALOGI, AARHUS UNIVERSITET
STTUT R T, RUS UVRSTT Science and Technology S lgoritmer og atastrukturer (00-ordning) ntal sider i opgavesættet (incl. forsiden): (elleve) ksamensdag: Tirsdag den. august 0, kl. 9.00-.00 Tilladte medbragte
Læs mereForelæsning Uge 6 Mandag
Forelæsning Uge 6 Mandag Tingene i denne forelæsning er ikke eksamenspensum Forelæsningen afrunder kurset, og forklarer nogle af de begreber, som I har mødt under kurset uden at få detaljeret forklaring
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11
DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void
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 mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4
DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens
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 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 mereJacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense
7 DM -. Obligatoriske Opgave Løsning af ligningssystem vha. fipunktmetoden Jacob Christiansen, 8 moffe@imada.sdu.dk Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense. Opgaven Der skal implementeres
Læs mereForelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999
sammenligninger, hvor Programmering 1999 Forelæsning 17, tirsdag 2 november 1999 Søgning efter en given værdi i en tabel Lineær søgning og binær søgning Effektivitet: maskinuafhængig vurdering af køretid
Læs mereHashing og hashtabeller
Datastrukturer & Algoritmer, Datalogi C Forelæsning 12/11-2002 Hashing og hashtabeller Teknik til at repræsentere mængder Konstant tid for finde og indsætte men ingen sortering af elementerne Specielt
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 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 Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 27. maj 2003, kl. 9.00 3.00 Opgave (25%) For konstanten π = 3.4592... gælder identiteten π 2 6 =
Læs mere