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 – 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” = 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”) → Wrapp värdet till ett visst intervall % 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 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) ) ) ) = hashValue = % array.length om length = 7919 (prim nummer) => hashValue = % 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 ( ) 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ö Halmstad Varberg Göteborg Borås Jönköping Växjö

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ö Halmstad Varberg Göteborg Borås Jönköping Växjö

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ö

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 (2) 4 (1) (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

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 Node 3 Node 1 Node 6 Node 2 Node 4 Node 5 Node

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 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 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)

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 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)

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 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

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 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

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