För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph
För utveckling av verksamhet, produkter och livskvalitet. Köer med prioritet, varför? Ett behov av olika prioritesnivåer. Skrivare-kö 1-sida skrivs ut/ 100-sidor skrivs ut TCP/IP Stack ”Fast-lane” för real tid trafik (RT) Real-tid system Schemaläggning
För utveckling av verksamhet, produkter och livskvalitet. Prioritets tilldellning.Hur? Varje uppgift / objekt i kön innehåller också ett prioritet-nummer Vanligtviss positiva heltal Där största värde har minsta prioritet
För utveckling av verksamhet, produkter och livskvalitet. Mer om priority queues… Viktiga operationer Lägg till, nya objekt … med tilldelning av prioritet insert() Hitta, objektet med högst prioritet … den mista prioritet-nummer findMin() Ta bort, objektet med högst prioritet deleteMin() (put, get, remove) or (enqueue, peek, dequeue)
För utveckling av verksamhet, produkter och livskvalitet. Passande datastruktur? Snaba insert Helst konstant tid ! Snabba romove och sökning Helst konstant tid ! En kompromis datastruktur mellan kö och binära träd…..??
För utveckling av verksamhet, produkter och livskvalitet. Ordnad länkad-lista insert() konstant tid! findMin() Linjär tid… H H T T
För utveckling av verksamhet, produkter och livskvalitet. Sorterad länkad-lista insert() Linjär tid… findMin() Konstant tid! H H T T
För utveckling av verksamhet, produkter och livskvalitet. Binära sökträd insert() log N findMin() log N
För utveckling av verksamhet, produkter och livskvalitet. Binära sökträd insert() log N findMin() log N
För utveckling av verksamhet, produkter och livskvalitet. Balancerade binära träd insert() log N findMin() log N Kräver ”hårt” arbete för balancering
För utveckling av verksamhet, produkter och livskvalitet. Kompromis – Binary Heap Kombination av två egenskaper Strukturell egenskap Representeras inplicit Order egenskap Heap-order
För utveckling av verksamhet, produkter och livskvalitet. Structurell egenskap Implicit representation Representeras som ett komplett binär träd med array För ett objekt på array-position x: Left child på array-position 2x Rigth child på array-position 2x + 1 Parent at array-position x/ Root
För utveckling av verksamhet, produkter och livskvalitet. Order egenskap Heap-order För ett objekt X som har parent P gäller: X’s priority key has to be greater than P’s priority key Objektet med den minsta prioritets- nummer ( högst prioritet) finns alltid i rooten. Konstant tid for findMin()!
För utveckling av verksamhet, produkter och livskvalitet. Exempel – insert() Percolate up
För utveckling av verksamhet, produkter och livskvalitet. Exempel – Remove() Percolate down
För utveckling av verksamhet, produkter och livskvalitet. … Hur bra är den? insert() log N -- Worstcase Konstant tid -- Average deleteMin() log N – Worstcase AND as an average
För utveckling av verksamhet, produkter och livskvalitet. Prioritets kö för sortering – Heapsort Använder a max heap Heapsort 1.(Strukturerar data ) 2.Bygger heap 3.Använder deleteMax för att ta bort data O(N log N) (worst-case)
För utveckling av verksamhet, produkter och livskvalitet. Graph och graph-algoritmer Data Structures & Problem Solving using Java -- Kapitel 14
För utveckling av verksamhet, produkter och livskvalitet. Några enkla graf teorier Hur IP trafik hittar destinationen i Internät ? GPS-system ? Hur hittas om det finns ett förbindelae mellan A->B? Hur man beräknar den kortaste vägen mellan dator A och B ?
För utveckling av verksamhet, produkter och livskvalitet. Terminology Vertices & edges ( Noder och förbindelse) Paths (väg) Viktad Oviktad Riktad graph Visa förbindelse är enbart envägs Vikten för en förbindelse behövs inte vara dessama i båda riktningarna ( om båda finns) Halmstad Varberg Göteborg Borås Jönköping Växjö Halmstad Varberg Göteborg Borås Jönköping Växjö
För utveckling av verksamhet, produkter och livskvalitet. Mer terminology Path length Oviktad path length – antalet förbindelse mellan två nod Viktad path length- summan av vikter mellan två nod Halmstad Varberg Göteborg Borås Jönköping Växjö Halmstad Varberg Göteborg Borås Jönköping Växjö
För utveckling av verksamhet, produkter och livskvalitet. Mer terminology Simple paths ( Enkla vägar) Innehåller en nod enbart en gång Cyclic paths Startar och slutar i samma nod. Halmstad Varberg Göteborg Borås Jönköping Växjö
För utveckling av verksamhet, produkter och livskvalitet. Ännu mer terminology Graph täthet Refererar till antalet förbindelse i grafen gles graph tät graph ( ~~ N 2 förbindelse ) Node 5Node 4 Node 1Node 2 Node 3Node 6 Node 5Node 4 Node 1Node 2 Node 3Node 6
För utveckling av verksamhet, produkter och livskvalitet. Graph representation Adjacent list Varje node håller en länkad lista som innehåller information om grann- noder och vikt. Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node (2) 4 (1) (10) 4 (3) 1 (4) 6 (5) 5 (2) 7 (4) 6 (8) 3 (2) 7 (6) 6 (1)
För utveckling av verksamhet, produkter och livskvalitet. Graph representation Adjacent matrix En kvadratisk matris där raderna och kolumnerna är representerade av noder och elementen i matrisen av förbindelser. För viktad graph innehåller elemnenten i matrisen just vikten Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node
För utveckling av verksamhet, produkter och livskvalitet. Vad är en nod (vertex) ? protected class Vertex { String name; List adjacents; Vertex(String n) { name = n; adjacents = new LinkedList(); }
För utveckling av verksamhet, produkter och livskvalitet. Vad är en förbindelse? public class Edge { public Vertex dest; public double cost; public Edge( Vertex d, double c) { dest=d; cost=c; } }
För utveckling av verksamhet, produkter och livskvalitet....och Graph klassen public class Graph { public static final double INFINITY = Double.MAX_VALUE; private Map vertexMap = new HashMap ( ); public void addEdge( String sourceName, String destName, double cost ) { Vertex v = getVertex( sourceName ); Vertex w = getVertex( destName ); v.adj.add( new Edge( w, cost ) ); } private Vertex getVertex( String vertexName ) { Vertex v = vertexMap.get( vertexName ); if( v == null ) { v = new Vertex( vertexName ); vertexMap.put( vertexName, v ); } return v; } }
För utveckling av verksamhet, produkter och livskvalitet. Viktiga frågor … Den kortaste vägen mellan node A och B Breadth First Algorithm, oviktad graph Dijkstra’s Algorithm, viktad graph
För utveckling av verksamhet, produkter och livskvalitet. Breadth First Algorithm För oviktade graphs Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node Node 3 Node 1 Node 6 Node 2 Node 4 Node 5 Node
För utveckling av verksamhet, produkter och livskvalitet. Dijkstra’s Algorithm For viktade graphs! Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From
För utveckling av verksamhet, produkter och livskvalitet. Dijkstra’s Algorithm För viktade grapher! Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From 0- Node 1 (4) Node 6 (5) INF Node 2 (6)Node 4 (5)
För utveckling av verksamhet, produkter och livskvalitet. Dijkstra’s Algorithm For viktade grapher! Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From 0- Node 6 (5) INF Node 2 (6) Node 4 (5) Node 5 (8) Node 7 (9)
För utveckling av verksamhet, produkter och livskvalitet. Dijkstra’s Algorithm För viktade grapher! Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From Node 2 (6) Node 5 (8) Node 7 (9) Node 5 (7) 8 5
För utveckling av verksamhet, produkter och livskvalitet. Dijkstra’s Algorithm För viktade grapher! Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node