För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.

Slides:



Advertisements
Liknande presentationer
Föreläsning 6 Slumptal Testa slumptal Slumptal för olika fördelningar
Advertisements

Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Klasser och objekt.
Algoritmer och data strukturer -Länkade listor
Fortsättningskurs i Programmering lektion 6
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Binära Sökträd, kapitel 19
Arv.
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
Träd och tillämpningar Data Structures & Problem Solving using Java -- Kapitel 19, 12.
Algoritm analys och rekursiva metoder kap 5,7
i olika programmeringsspråk
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Föreläsning 11 Arrayer.
Programmering i C# 3. Klasser.
PROCESSPROGRAMMERING
Pathfinding. –Vad är det? –Sökning från A till B.
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
4. Arv och dynamisk bindning
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Algoritmer och datastrukturer
Programmeringsteknik för Media1 & K1
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
Riktade listor i C och Java Lösning till gruppövning 1.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Datastrukturer och algoritmer
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Datastrukturer och algoritmer
OOP F14:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 14 Repetition Tips inför inlämningsuppgift 2.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Sökträd, naiva och balancerade lösningar -HashTable -- Kapitel.
Graph och graph-algoritmer. Några enkla graph teorier Hur IP trafik hittar destinationen i Internät ? GPS-system ? Sociala nätverk. Vanligaste frågeställningar:
Länkade listor Binära träd
Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sorterings algoritmer.
TILLÄMPAD DATALOGI (TILDA) Övning 4
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 9 Grafalgoritmer.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
1 Objektorienterad programmering för ingenjörer, VT04 Kort repetition av C-programmering och nyttiga verktyg. Tomas Larsson B439.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Programmeringsteknik för K och Media
Datastrukturer och algoritmer
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8 Relationer, prioritetsköer och grafer.
Malmö högskola Rolf Axelsson 2003/2004 DA7235, 4 poäng Fält som returvärde Sortera fält Söka i fält Tvådimensionella fält Fält och spelplan Föreläsning.
DA7351 Programmering 1 Fält och objekt Tvådimensionella fält Sortera fält Föreläsning 13.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sökning, Symbol tabeller Binära sökträd.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

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