Datastrukturer och algoritmer Frelsning 4 Datastrukturer och algoritmer

  • Slides: 34
Download presentation
Datastrukturer och algoritmer Föreläsning 4

Datastrukturer och algoritmer Föreläsning 4

Datastrukturer och algoritmer Innehåll u En introduktion till projektmodellen LIPS u Hashtabeller u Att

Datastrukturer och algoritmer Innehåll u En introduktion till projektmodellen LIPS u Hashtabeller u Att 2 läsa: Dessa bilder + kapitel 13. 5

Datastrukturer och algoritmer Projekt – definition 3 u En grupp av projektdeltagare utför under

Datastrukturer och algoritmer Projekt – definition 3 u En grupp av projektdeltagare utför under ledning av en projektledare en klart definierad uppgift, på en viss tid, med begränsade resurser. Ø Resurserna kan vara i form av människor, material, pengar, eller lokaler. Ø Projekt ska ha mätbara mål.

Datastrukturer och algoritmer Projekt 4 u Ett projekt är en engångsföreteelse! Ø Dokumentationen är

Datastrukturer och algoritmer Projekt 4 u Ett projekt är en engångsföreteelse! Ø Dokumentationen är mycket viktig u Fördelar med projekt: Ø Arbetsuppgifter kan utföras parallellt och därmed slutföras på kortare tid Ø Skapar engagemang genom att arbetet utförs i en eller flera grupper o Enskild medlem får insikt i bidraget till helheten Ø Projekt bemannas ofta med personer med kompletterande kunskaper

Datastrukturer och algoritmer Exempel på organisation i ett industriellt projekt Beställare Styrgrupp Projektledare M

Datastrukturer och algoritmer Exempel på organisation i ett industriellt projekt Beställare Styrgrupp Projektledare M M Referensgrupp M TL M 5 Kund M Bilden hämtad från projektplanemallen. M = projektmedlem TL= teamledare, eller delprojektledare

Datastrukturer och algoritmer Organisationen i vårt projekt 8 Beställare Projektgrupp M Referensgrupp M Beställare

Datastrukturer och algoritmer Organisationen i vårt projekt 8 Beställare Projektgrupp M Referensgrupp M Beställare = Kursansvarig Referensgrupp = Handledarna M = Medlem i projektgruppen Bilden hämtad från projektplanemallen.

Datastrukturer och algoritmer Projektplan 9 u Specifikation av hur projektet ska genomföras u Dokumenterar

Datastrukturer och algoritmer Projektplan 9 u Specifikation av hur projektet ska genomföras u Dokumenterar till exempel Ø Mål Ø Resurser Ø Tidplan Ø Avslutning

Datastrukturer och algoritmer LIPS - begrepp u Ø En signifikant mätbar händelse Ø Etappmål

Datastrukturer och algoritmer LIPS - begrepp u Ø En signifikant mätbar händelse Ø Etappmål Ø Definieras oftast av projektgruppen själv u Beslutspunkter Ø Punkter där beställaren bestämmer om projektet får fortsätta in i nästa fas. Ø Ofta resultat vid en milstolpe som ligger till grund för beslut. u Aktiviteter Ø De arbetsuppgifter som ska utföras under projektet och plan för tidsåtgången för var och en av dessa. u 10 Milstolpar Granskningar Ø Varje dokument måste granskas innan de godkänns.

Datastrukturer och algoritmer Projektstyrningsmodell u Regler och hjälpmedel för att bedriva ett projektarbete u

Datastrukturer och algoritmer Projektstyrningsmodell u Regler och hjälpmedel för att bedriva ett projektarbete u Gemensamma definitioner och beskrivningar av flöden, aktiviteter, roller, dokument, etc u Varje företag har oftast en egen projektmodell Ø Konfidentiell (konkurrensmedel!) Ø Ericsson använder en modell som heter PROPS Ø Saab använder en modell som heter PSM Ø Vi kommer att använda LIPS o 11 Lätt Interaktiv Projekt. Styrning

Datastrukturer och algoritmer LIPS 12

Datastrukturer och algoritmer LIPS 12

Datastrukturer och algoritmer Bilden hämtad från http: //www. liu. se/cul-resurser/lips/kartor/fore. htm 14

Datastrukturer och algoritmer Bilden hämtad från http: //www. liu. se/cul-resurser/lips/kartor/fore. htm 14

Datastrukturer och algoritmer Före-fasen under kursen: u Projektidé och förstudie har redan gjorts och

Datastrukturer och algoritmer Före-fasen under kursen: u Projektidé och förstudie har redan gjorts och BP 0, MS 1 och BP 1 har passerats. Ø Dokumentet ”Projektdirektiv” och ”Kravspecifikation” finns på projektsidan. u Ni får uppdraget (OU 3) att förbereda projektet inför utförandefasen. Ø Kraven studeras och man beskriver hur man ska göra i en systemskiss/funktionsspecifikation. Ø Projektplan upprättas MS 2 består av projektplan och kravspecifikation u BP 1 är rättningen av OU 3 u Ø endast U medför att projektet ej får forstätta 15

Datastrukturer och algoritmer Bilden hämtad från http: //www. liu. se/cul-resurser/lips/kartor/under. htm 17

Datastrukturer och algoritmer Bilden hämtad från http: //www. liu. se/cul-resurser/lips/kartor/under. htm 17

Datastrukturer och algoritmer Under-fasen under kursen: Testplan där man funderar på vad som ska

Datastrukturer och algoritmer Under-fasen under kursen: Testplan där man funderar på vad som ska testas och hur är viktigt för att garantera fungerande slutresultat. u Viktigt att lägga in många milstolpar och stämma av tidsplan och testplan för att se eventuella problem tidigt. u Man kan behöva revidera projektplanen. u Krav under kursen u Ø Utföra individuell tidsrapportering Ø Redovisa pågående arbete och reviderad projektplan (OU 5). o Milstolparna ni beslutar er för att ha ska synas i projektplanen Ø Vi använder endast BP 5 som är rättningen av OU 5. 18

Datastrukturer och algoritmer Bilden hämtad från http: //www. liu. se/cul-resurser/lips/kartor/efter. htm 20

Datastrukturer och algoritmer Bilden hämtad från http: //www. liu. se/cul-resurser/lips/kartor/efter. htm 20

Datastrukturer och algoritmer Efter-fasen under kursen: 21 u Här lämnar ni in sluversionen tillsammans

Datastrukturer och algoritmer Efter-fasen under kursen: 21 u Här lämnar ni in sluversionen tillsammans med dokumentation av systemet och efterstudien direkt (OU 6). Ø Handledarna utför acceptanstestet utifrån kravspecifikationen och kan komma med en restlista. . . Ø BP 6 är med andra ord rättningen av OU 6

Tillbaka till tabellerna!

Tillbaka till tabellerna!

Datastrukturer och algoritmer Hashtabell 23 u En annan form av en tabell Ø Dvs

Datastrukturer och algoritmer Hashtabell 23 u En annan form av en tabell Ø Dvs man associerar en nyckel med ett tillhörande värde. Ø Nycklarna i tabellen är siffror vilket gör att tabellen kan konstrueras som ett fält. o u Två Viktigt att nycklarna är relativt väl samlade och inte utspridda ”problem” Ø Nycklar kan behöva omvandlas till siffror Ø Heltal är allt för stor mängd. u Detta löses med hjälp av en hashfunktion.

Datastrukturer och algoritmer Hashfunktionen (h) 24 Kan omvandla en nyckel av godtycklig typ till

Datastrukturer och algoritmer Hashfunktionen (h) 24 Kan omvandla en nyckel av godtycklig typ till en siffra. u Avbildar den större indextypen A till en mindre indextyp B. u

Datastrukturer och algoritmer Hashfunktion 25 u Funktionen h(x) avbildar en stor mängd nycklar, A,

Datastrukturer och algoritmer Hashfunktion 25 u Funktionen h(x) avbildar en stor mängd nycklar, A, på en liten mängd tal, B. u Kollisioner är oundvikliga men kan hanteras med Ø Sluten hashing Ø Öppen hashing u En bra hashfunktion kännetecknas av: Ø Litet förväntat antal kollisioner Ø Jämnt spridda element Ø Bör påverkas av alla delar av nyckeln

Datastrukturer och algoritmer Sluten hashing u Använd Ø Dvs. efter det sista elementet följer

Datastrukturer och algoritmer Sluten hashing u Använd Ø Dvs. efter det sista elementet följer det första. 0 1 3 u Linjär 2 teknik för kollisioner Ø Om ett element kolliderar, sätt in det på den första lediga platsen efter den upptagna. o 26 en cirkulär vektor Ger upphov till klustring i tabellen.

Datastrukturer och algoritmer Exempel: Sluten hashing, linjär teknik 27 u Grundmängden 1, 2, …,

Datastrukturer och algoritmer Exempel: Sluten hashing, linjär teknik 27 u Grundmängden 1, 2, …, 125 ska avbildas på värdena 0, 1, . . . , 6. u Mängd = {1, 8, 27, 64, 125} Använd hashfunktionen f(x) = x % 7. 0 1 2 3 4 0 1 h(1) = 1 0 1 1 2 8 3 4 h(8) = 1 1 1 2 8 3 4 5 5 5 6 6 6 0 125 1 1 h(27) 2 8 h(64) 2 = 3 64 = 3 6 1 4 4 8 0 1 1 5 5 27 6 64 2 6 27 h(125) = 6

Datastrukturer och algoritmer Sluten hashing – linjär teknik 28 u Sökning efter ett elementvärde

Datastrukturer och algoritmer Sluten hashing – linjär teknik 28 u Sökning efter ett elementvärde Ø Börja på den plats dess hashvärde anger och fortsätt framåt. Ø Om det inte påträffats före nästa lediga plats så finns värdet inte i tabellen. u Om vi vid borttagning i tabellen bara lämnar platsen tom blir det fel vid sökning! Ø Sätt in en ”borttagen” markör i tabellen.

Datastrukturer och algoritmer Sluten hashing, linjär teknik 29 u Värstafallskomplexiteten för samtliga operationer är

Datastrukturer och algoritmer Sluten hashing, linjär teknik 29 u Värstafallskomplexiteten för samtliga operationer är O(n) där n är antalet element som finns insatta i tabellen. Ø Är dock ytterst osannolikt. Alla element måste ligga i en följd. u Under förutsättning att tabellen inte fylls mer än till en viss del får man i medeltal O(1) för operationerna.

Datastrukturer och algoritmer Hashtabeller - fyllnadsgrad 30 u En hashtabells fyllnadsgrad ( ) definieras

Datastrukturer och algoritmer Hashtabeller - fyllnadsgrad 30 u En hashtabells fyllnadsgrad ( ) definieras som där Ø n – antalet insatta element i tabellen Ø table. Size – tabellens storlek u En tom tabell har = 0 och en full = 1.

Datastrukturer och algoritmer Hashtabeller – medelantalet platser som besöks 31 u Insättning och misslyckad

Datastrukturer och algoritmer Hashtabeller – medelantalet platser som besöks 31 u Insättning och misslyckad sökning är uppåt begränsad av ( = 0. 5 ger 2. 5): u Medelantalet platser för en lyckad sökning är uppåt begränsad av: ( = 0. 5 ger 1. 5)

Datastrukturer och algoritmer Sluten hashing, kvadratisk teknik 32 u När fyllnadsgraden blir hög (>75%)

Datastrukturer och algoritmer Sluten hashing, kvadratisk teknik 32 u När fyllnadsgraden blir hög (>75%) blir operationerna för den linjära tekniken långsam. u Kvadratisk teknik kan användas istället: Ø Vid kollision tas först nästa element, sedan det fyra platser fram sedan nio fram etc, dvs H, H+1, H+4, …, H+i 2, … där H är elementets hashvärde.

Datastrukturer och algoritmer Ex: Sluten hashing, kvadratisk teknik 33 u Sätt in talen 89,

Datastrukturer och algoritmer Ex: Sluten hashing, kvadratisk teknik 33 u Sätt in talen 89, 18, 49, 58, 9 i en tabell med 10 platser. h(x) = x % 10 0 49 1 2 3 58 9 4 5 6 7 8 9 18 89 89 % 10 = 9 18 % 10 = 8 49 % 10 = 9, upptagen prova H+1 = 0 58 % 10 = 8, upptagen, H+1=9 upptagen, H+4=2 9 % 10 = 9, nästa lediga plats H+4=3

Datastrukturer och algoritmer Sluten hashing – Kvadratisk teknik 34 u Inte säkert att man

Datastrukturer och algoritmer Sluten hashing – Kvadratisk teknik 34 u Inte säkert att man hittar en ledig plats även om det finns! Exempel: Ø Man har en tabell som är 16 element stor och man använder hashfunktionen h(x) = x % 16 Ø Stoppar in elementen 0, 16, 32 och 64. Då finns det inte plats för några fler tal som hashas till 0. De enda platser som kommer prövas är de upptagna 0, 1, 4 , 9. u Men: Ø Om kvadratisk teknik används och tabellens storlek är ett primtal så kan ett nytt element alltid stoppas in om fyllnadsgraden < 0. 5. Ø Fullständig komplexitetsanalys saknas men i praktiken ger den upphov till mindre klustring än linjär hashing.

Datastrukturer och algoritmer Öppen hashing 35 Istället för cirkulär vektor används en vektor av

Datastrukturer och algoritmer Öppen hashing 35 Istället för cirkulär vektor används en vektor av lista. I lista nummer i ligger alla element med hashvärde i. u Värstafallskomplexitet: u Ø O(n) för alla operationer (Alla element i samma lista). u Medelfallskomplexitet: Ø Insättning och misslyckad sökning blir n/table. Size Ø Lyckad sökning blir (n-1)/(2*table. Size)+1 u Tumregel: Inte fler än 2*table. Size element bör sättas in.

Datastrukturer och algoritmer Förklaring: Insättning och misslyckad sökning, öppen hashing 36 Antag att det

Datastrukturer och algoritmer Förklaring: Insättning och misslyckad sökning, öppen hashing 36 Antag att det är lika sannolikt att det n: te värdet x hashas till var och en av listorna. u Eftersom den lista där x ska placeras måste genomsökas helt innan sökningen misslyckas så krävs det O(antal element i listan i) sökningar u I medelfall blir det u

Datastrukturer och algoritmer Exempel: Öppen hashing u Grundmängden 1, 2, …, 125 ska avbildas

Datastrukturer och algoritmer Exempel: Öppen hashing u Grundmängden 1, 2, …, 125 ska avbildas på värdena 0, 1, . . . , 6. u Mängd = {1, 7, 27, 64, 125} Använd hashfunktionen f(x) = x % 7. 0 1 2 1 64 27 125 3 4 5 6 37 7

Datastrukturer och algoritmer Från: http: //www. ida. liu. se/labs/logpro/ulfni/dalg/resources/f 8. pdf 38 Linear prob

Datastrukturer och algoritmer Från: http: //www. ida. liu. se/labs/logpro/ulfni/dalg/resources/f 8. pdf 38 Linear prob = Sluten hashing med linjär teknik Chaining = Öppen hashing Double hash = Sluten hashing med kvadratisk teknik

Datastrukturer och algoritmer Hashfunktionen 39 u Vi har använt h(x) = x % m

Datastrukturer och algoritmer Hashfunktionen 39 u Vi har använt h(x) = x % m i exemplen. Ø Fungerar bra om m är ett primtal. Ø Annars kan periodicitet uppstå. u Finns mer generella metoder, tex Ø h(x) = ((c 1*x + c 2) % p) % m o o o p stort primtal > m, tex 1048583 c 1 och c 2 konstant heltal > 0 och < p c 2 ofta satt till 0