Presentation laddar. Vänta.

Presentation laddar. Vänta.

För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.

Liknande presentationer


En presentation över ämnet: "För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf."— Presentationens avskrift:

1 För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf

2 För utveckling av verksamhet, produkter och livskvalitet. Hash Tabell Fråga: Varför en annan datastruktur? Svar: Konstant tid för både insert () - och find() - operationer

3 För utveckling av verksamhet, produkter och livskvalitet. Hash? Insert ”Daniel” =18 Find

4 För utveckling av verksamhet, produkter och livskvalitet. Hashfunktioner! Hash functioner använder associerade “key” ( som kan vara data i sig ) för att få fram datan. Hash funktionerna är olika för olika sorts data. Integers Images Strings Etc…

5 För utveckling av verksamhet, produkter och livskvalitet. Hashing integers? Tänk 16bit int => 0 – 65 535 Skapa int[] vec = new int[65536]; Add i => vec[i]++; Sök value j => Is vec[j] > 0? Ta bort value k => vec[k]--; Men för en... Java int : 32bit 4 miljoner platser => opraktisk!

6 För utveckling av verksamhet, produkter och livskvalitet. Exempel av hash funktion D D a a n n i i e e l l ”Daniel” 6897110105101108 +++++= 589

7 För utveckling av verksamhet, produkter och livskvalitet. Men... Hur unik är hash fuktionen? hashfunc(”Daniel”) → 589 hashfunc(”leinaD”) → 589 Bättre lösning bättre hashfunc som skapar mer unika värde hash(”Daniel”) → 129310392 Wrapp värdet till ett visst intervall 129310392 % array.lenght ( tebellens storlek)

8 För utveckling av verksamhet, produkter och livskvalitet. En bättre hash funktion Ett bättre sätt att beräkna hash värdet Om vi har en text sträng av längd n+1 och alla tecken har index A n, A n-1,...,A 0 gör s = A n X n + A n-1 X n-1 +...+ A 0 X 0 = = ((A n )X + A n-1 )X +...+ A 0 Använd hashValue = s % array.length

9 För utveckling av verksamhet, produkter och livskvalitet. Och då...... Till exempel: ”Danne” (((’D’)128 + ’a’)128 + ’n’)128 + ’n’)128 + ’e’ = (((68)128 + 97)128 + 110)128 + 110)128 + 101 = 18 458 851 173 hashValue = 18 458 851 173 % array.length om length = 7919 (prim nummer) => hashValue = 18 458 851 173 % 7919 = 2690

10 För utveckling av verksamhet, produkter och livskvalitet. Hur löser man kollision? Oavsett hur unika nyckel en hash- funktionen räknar fram, kollision alltid inträffas. Terminology Load factor

11 För utveckling av verksamhet, produkter och livskvalitet. Lösningar Linear probing ( linjer undersöknings teknik) Quadratic probing (kvadratisk undersöknings teknik Separate chaining ( öppna tabeller)

12 För utveckling av verksamhet, produkter och livskvalitet. Linjär undersöknings teknik Sök fram till näst lediga platsen. hashfunc ( ) 10 18 X=18X+1,X+2,X+3,X+4,X+5,...

13 För utveckling av verksamhet, produkter och livskvalitet. Linear probing Fenomen kallat: Primary clusters ( primär kluster)

14 För utveckling av verksamhet, produkter och livskvalitet. Linjär undersöknings teknik Bygger upp kluster Påverkar exekveringstiden för insert () och find() ! Måste använda “lazy deletion” vid remove (). Dvs, elementen i tabbelen måste vara “activ or deleted”

15 För utveckling av verksamhet, produkter och livskvalitet. Quadratic probing Försök undvika “primary clusters “ Snabare en linjär Kvadratisk inkrementation av undersökning avståndet X=18X+1 2,X+2 2,X+3 2,X+4 2,X+5 2,...

16 För utveckling av verksamhet, produkter och livskvalitet. Quadratic probing Garantera att hitta fria platser om de finns 1 2 = 12 2 = 43 2 = 9

17 För utveckling av verksamhet, produkter och livskvalitet. Separate chaining (separat länkning ) Varje hash position har en länkad lista. Påverkar inte andra värde, probing görs bara i listan. Varje element I tabellen är en länkad lista.

18 För utveckling av verksamhet, produkter och livskvalitet. Separate chaining H H H H H H H H H H H H H H H H H H Insert

19 För utveckling av verksamhet, produkter och livskvalitet. Jämförelse Linear probing Enkel Kan resultera i linjär söktid Quadratic probing Kräver Load factor < 0.5 annars rehashing ?? Kräver prim tal för array storleken Separate chaining LF < 1 Ingen dubblering, länkade listor är dinamiska ! Kan leda till linjär sökning men I verklighetet ganska kort Double hash probing Eliminerar kluster

20 För utveckling av verksamhet, produkter och livskvalitet. Graph och graph-algoritmer

21 För utveckling av verksamhet, produkter och livskvalitet. Några enkla graf teorier Hur IP trafik hittar destinationen i Internät ? GPS- system ? Sociala nätverk. Vanligaste frågeställningar: Hur hittar man från A->B? Hur man beräknar den kortaste vägen mellan dator A och B ?

22 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ö 40 70 100 200 120 60 Halmstad Varberg Göteborg Borås Jönköping Växjö 40 70 100 200 120 60

23 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ö 40 70 100 200 120 60 Halmstad Varberg Göteborg Borås Jönköping Växjö 40 70 100 200 120 60

24 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 ( cykliska vägar) Startar och slutar i samma nod. Halmstad Varberg Göteborg Borås Jönköping Växjö 40 70 100 200 120 60

25 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

26 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 4 2 1 2 2 6 10 3 1 4 54 8 1 1 2 2 3 3 4 4 5 5 6 6 2 (2) 4 (1) 7 7 5 (10) 4 (3) 1 (4) 6 (5) 5 (2) 7 (4) 6 (8) 3 (2) 7 (6) 6 (1)

27 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 4 2 1 2 2 6 10 3 1 4 54 8 1 1 2 2 3 3 4 4 5 5 6 6 7 7 1 1 2 2 3 3 4 4 5 5 6 6 7 7 21 310 45 2284 6 1

28 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; } }

29 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(); } }

30 För utveckling av verksamhet, produkter och livskvalitet. Viktiga frågor … Den kortaste vägen mellan node A och B BreadthFirst Algorithm, oviktad graph Dijkstra’s Algorithm, viktad graph

31 För utveckling av verksamhet, produkter och livskvalitet. Breadth First Algorithm För oviktade grafer Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node 4 0 12 3 3 2 1 Node 3 Node 1 Node 6 Node 2 Node 4 Node 5 Node 7 0 1 1 2 2 3 3

32 För utveckling av verksamhet, produkter och livskvalitet. Dijkstra’s Algorithm For viktade grafer Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node 4 2 1 2 3 1 1 3 1 4 54 8 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From

33 För utveckling av verksamhet, produkter och livskvalitet. Dijkstra’s Algorithm För viktade grfer Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node 4 2 1 2 3 1 1 3 1 4 54 8 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From 0- Node 1 (4) Node 6 (5) INF 4 5 3 3 Node 2 (6)Node 4 (5) 5 1 6 1

34 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 4 2 1 2 3 1 1 3 1 4 54 8 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From 0- Node 6 (5) INF 4 5 3 3 Node 2 (6) Node 4 (5) 5 1 6 1 Node 5 (8) Node 7 (9) 8 4 9 4

35 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 4 2 1 2 3 1 1 3 1 4 54 8 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From 0- 4 5 3 3 Node 2 (6) 5 1 6 1 Node 5 (8) Node 7 (9) 8 4 9 4 7 2 Node 5 (7) 8 5

36 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 4 2 1 2 3 1 1 3 1 4 54 8 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From 0- 4 5 3 3 5 1 6 1 7 2 8 5 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 3 3 1 1 3 3 1 1 3 3 2 2 1 1 3 3 3 3 5 5 2 2 1 1 3 3

37 För utveckling av verksamhet, produkter och livskvalitet. Dijkstra’s algorithm in Java int[][] table = new int[locations.length][2]; for(int i = 0; i < table.length; i++) { table[i][0] = Integer.MAX_VALUE; table[i][1] = -1; } table[fromIndex][0] = 0; // start node PriorityQueue queue = new PriorityQueue(); queue.enqueue(new Distance(fromIndex, 0)); while(!queue.isEmpty()) { Distance d = (Distance)queue.dequeue(); int currentNode = d.getNode(); int currentDistance = d.getDistance(); for(int toNode = 0; toNode < distanceTable.length; toNode++) { int distance = distanceTable[currentNode][toNode]; if(distance > 0) { if((currentDistance + distance) < table[toNode][0]) { table[toNode][0] = currentDistance + distance; table[toNode][1] = currentNode; queue.enqueue(new Distance(toNode, currentDistance + distance)); }}}} System.out.println("Distance: " + table[toIndex][0]);


Ladda ner ppt "För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf."

Liknande presentationer


Google-annonser