Presentation laddar. Vänta.

Presentation laddar. Vänta.

© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 16.

Liknande presentationer


En presentation över ämnet: "© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 16."— Presentationens avskrift:

1 © Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 16

2 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 2 Innehåll  Snabbrepetition  Exempeltentamen  Kursutvärdering

3 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 3 Mina målsättningar  Rolig och viktig kurs  Bli en bättre programmerare och inse att man blivit det  Känna till kända lösningar på typiska problem  Konstruera robusta och korrekta program  Konstruera och beskriva algoritmer och datatyper  Planera sitt arbete så att projekt blir klar i tid  Förstå komplexitetsbegreppet  Tid och rum  Bli bättre på att kommunicera resultat skriftligt

4 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 4 Kursens mål:  Kursdeltagarna ska förvärva förtrogenhet med grundläggande element och konstruk- tioner/tekniker för att organisera data och lösa problem. Detta inbegriper  formell och informell beskrivning av grundläggande abstrakta datatyper,  grundläggande algoritmer och effektivitetsanalys  paradigmer/tekniker för algoritmkonstruktion.

5 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 5 Kursens mål FSR:  Efter avslutad kurs ska studenten kunna:  känna till grundläggande begrepp relaterade till datastrukturer och algoritmer  känna till grundläggande abstrakta datatyper såsom lista, stack, kö, träd, mängd, graf och tabell  välja datatyper för ett givet problem  välja implementation av datatyper  känna till grundläggande algoritmer, deras komplexitet och karakteristiska egenskaper för typiska problem  analysera algoritmer praktiskt och teoretiskt med avseende på prestanda  använda sig av grundläggande problemlösningsstrategier, som till exempel divide and conquer, brute force, greedy, dynamisk programmering, på nya problem  tillämpa den objektorienteringsparadigmen på ett större programmeringsprojekt  strukturerat dokumentera algoritmer och datatyper

6 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 6 Innehållsöversikt  Algoritmer  Tids- och rumsfrågor  Designprinciper  Abstrakta datatyper  Sökning  Sortering

7 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 7 Innehållsöversikt – Algoritmer  Tids och rumsfrågor  Exekvering, implementering, underhåll  Tid vs rumskomplexitet  Analys av exekveringstider oOlika sätt, vad de står för och +/- –Experimentell –Asymptotisk oT(n) för en alg => O(n) –Primitiva operationer –Okulärbesiktning oAtt beskriva algoritmer

8 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 8 Innehållsöversikt – Algoritmer  Designprinciper  Idéer till 4 olika algoritmtyper oBrute force, D&C, Greedy och dynamisk programmering oExempel på varje o+/- oTypiska användningar

9 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 9 Innehållsöversikt – Abstrakta Datatyper (ADT)  Stack, Kö, Listor, Träd, Graf, Prioritetskö, Heap, Tabell, Sträng, Mängd, Sökträd, Tries, mm  Beskrivningssätt  Organisation, Modell, Gränsytan (formell, informell)  Grundbegrepp  Vad är en organisation, sorterad ADT, mm  Primär vs. sekundär struktur  Absolut vs. relativ komplexitet  Sätt att implementera  +/-, när var hur  Komplexitet för de viktigaste operationerna  Vart hittar vi ADT typiskt  Hur olika ADT hänger ihop med varandra  Algoritmer på ADT

10 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 10 Innehållsöversikt – Sökning (traversering)  Vad är traversering  Olika metoder för sökning i sekvenser  Linjär & Binär  +/-  Ställer de några krav på implementationen av ADTn?

11 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 11 Innehållsöversikt – Sortering  Varför sorterar vi?  Sorterad ADT vs sortering av data  Sökningen blir snabbare…ibland  Hur kan vi sortera (olika former)  +/-  När passar dom?  Stabil sortering  5-6 olika algoritmer, analys

12 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 12 Tentan  Ska kontrollera att de förväntade studieresultaten uppfyllts.  Definitionsfrågor  Begrepp  Definiera, beskriv, ge exempel,...  Förståelsefrågor  Visa hur en algoritm fungerar  Vilken datatyp passar bäst för detta problem, varför?  Jämför, analysera, förklara,...  Resultaten kommer att skickas via mail (@cs.umu.se)

13 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 13 Exempeltenta 030321  Enbart skissartade svar  dessa svar skulle inte ge full poäng på en tentamen!  Tanken är att man ska få en hum vad som krävs och se hur vi tänkte när vi rättade.  Utöver kriterierna för varje uppgift gör man som rättare alltid en helhetsbedömning (av varje enskild uppgift och tentan i stort).

14 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 14 Uppgift 1. (20 p) (0.5 p/ begrepp) Förklara 40 stycken av följande begrepp med avseende på kursinnehållet. Använd bifogad tabell (sist i tentan), (fler än 40 förklaringar räknas som gardering och de första 40 kommer att rättas). (Det krävs att man har minst 15 poäng på denna uppgift för att kunna bli godkänd på tentan).

15 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 15 Uppgift 1. (20 p) (0.5 p/ begrepp)  Typisk definitions/fakta fråga  Ges/gavs inga lösningsförslag på detta.  Varje definition kunde få upp till 4/8 p  Kommer INTE att vara med på årets tentor  Däremot kan naturligtvis frågor om enstaka begrepp finnas med.

16 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 16 Uppgift 2 - 13p (4+6+1+2) Du arbetar på ett företag som skall konstruera ett system på uppdrag av SMHI. SMHI samlar dagligen in fakta från alla världens väderstationer till en stor databas som innehåller följande: namn (på väderstationen), temperatur, luftfuktighet och vindstyrka samt longitud och latitud (för platsen). Meteorologerna vill kunna sortera datat på godtyckligt fält i databasen. Det är extremt viktigt att programmet är snabbt för att man ska kunna göra en tillförlitlig prognos. Samtidigt är applikationen tänkt att köras på handdatorer därför är minnesutrymmet begränsat.

17 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 17 Uppgift 2 - 13p (4+6+1+2) a) Föreslå en lämplig sorteringsalgoritm som klarar av kraven på bästa sätt, motivera och redovisa ditt val. (Om du måste ge avkall på något av kraven för att kunna leverera systemet i tid så motivera varför). b) Föreslå en lämplig standarddatatyp, beskriv datatypen med modell, organisation, informell gränsyta samt implementation. c) Motivera ditt val av implementation. d) Skriv en algoritmbeskrivning (pseudokod) för den valda sorteringen, där du utnyttjar gränsyteoperationerna.

18 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 18 a) Föreslå sorteringsalgoritm  Denna del får poäng efter hur mycket man har med i sin beskrivning:  Nämna en algoritm överhuvutaget  Nämna rätt algoritm (i detta fall in-place quicksort eller ev. radix exchange sort)  Diskutera minnesåtgång för vald algoritm  Diskutera snabbhet för vald algoritm  Nämna minst en annan algoritm som jämförelse och nämna dess minnesåtgång och snabbhet

19 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 19 b) Föreslå och beskriv en datatyp  Även här ges poäng efter vad och vilka saker man tar upp  Modell  Organisation  Implementation  Gränsytan oKorrekta metoder oKorrekta parametrar oBeskrivning av metoderna  De vanligaste (och bästa) valen är lista eller fält.  Väljer man tabell får man avdrag eftersom man inte kan sortera en tabell.  I gränsytan behöver man inte ange exakt rätt namn på metoderna  Blandar man ihop metoder och tar tabellmetoder i listan eller tvärtom så ger det avdrag.  Likaså om man inte har med alla parametrar eller inte beskriver vad metoden ska göra.  Med implementation avses hur man väljer att realisera sin datatyp.  Tex Lista kan man välja att implementera som array eller länkad lista.

20 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 20 c) Motivera val av implementation  Här ska man motivera sitt val av implementation och förklara varför man tex valt en array och inte en lista.  Om man i a) har sagt att databasen varierar i storlek bör man motivera en dynamisk datatyp här.

21 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 21 d) Ge en algoritmbeskrivning  Här finns det två tydliga krav:  algoritmen ska skrivas i pseudokod  man ska använda sig av gränsyteoperationerna från b)

22 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 22 Uppgift 3 - 9p (3+1+5) I ett kassasystem vill vi kunna ge tillbaka växel till en kund. Mynten vi har att tillgå är på 1, 5, 10 respektive 25 enheter. Problemet är nu att för ett godtyckligt växelbelopp välja ett antal mynt av de olika valörerna så att:  myntens sammanlagda värde exakt uppgår till det eftersökta växelbeloppet  ett så litet antal mynt som möjligt används. Vi antar att det finns tillräckligt många mynt av varje valör.

23 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 23 Uppgift 3 - 9p (3+1+5) a) Använd pseudokod för att ge en utförlig beskrivning av en girig algoritm som löser ovanstående problem. b) Antag att vi förutom valörerna ovan också har mynt som är värda 12 enheter. På vilket sätt påverkar det din giriga lösning från a)? c) Har vi situationen som beskrivs i b) är det bättre att försöka lösa växlingsproblemet m.h.a. söndra och härska (divide- and-conquer). Använd pseudokod för att ge en utförlig beskrivning av en algoritm som löser växlingsproblemet med denna teknik. Ledning: Tänk rekursivt! Antingen så kan vi växla hela beloppet med endast ett mynt eller så kan vi (på något lämpligt sätt) dela upp växelbeloppet, växla delbeloppen med minimalt antal mynt rekursivt och sedan konstruera en fullständig lösning från dellösningarna.

24 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 24 a)Girig algoritm i pseudokod (Finns många varianter!!) Algoritm Greedy(v, amount) amount beloppet som ska ges tillbaka med minimalt antal mynt. v = [cn,cn-1,...,c0] vektor med de olika myntslagen i vårt fall v = [25,10,5,1] rest = amount for i = 0 to length(v) do begin // hur många mynt av valör(i) ryms i // beloppet? change[i] = rest div v[i] // hur mycket finns kvar sen? rest = rest mod v[i] end return change

25 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 25 b) Vad händer om myntet 12 läggs till?  Algoritmen blir inte längre optimal!  Om man lägger till myntet 12 och sedan försöker växla 15 kronor så ger algoritmen i a) svaret 1 st 12-krona och 3 st 1-kronor, dvs totalt 4 mynt medan en optimal lösning skulle vara 1 tia och 1 femma.

26 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 26 c) Lös växlingsproblemet m.h.a. söndra och härska.  Många trodde att det räckte att skriva om a) rekursivt...  Förslag på algoritm 1. Om vi kan växla beloppet med exakt ett mynt så gör vi det. 2. Annars delar vi upp problemet i två delproblem som löses var för sig och vars resultat sedan kombineras ihop till en fullständig lösning:  För något i beräknar vi det minsta antal växelmynt som behövs för att växla i respektive amount - i och summerar sedan de två delresultaten.  För att få en minimal lösning måste vi upprepa detta för varje värde på i och välja det i som minimerar summan.  Till ovanstående strategi måste vi lägga en strategi för att generera tänkbara uppdelningar. Enklast är att pröva alla i från 1 till k/2. Här följer en beskrivning av en sådan lösning:

27 // v = [cn, cn-1,..., c0] är en vektor med de olika myntslagen // från största, cn, till minsta, c0. Antag att c0 = 1. makeChange(v, amount) // STEG 1 change = [] // Titta efter en exakt lösning med ett enda mynt. i = 0 while (i <= n) if (v[i] equals amount) return v[i] i = i + 1 // STEG 2 Ingen exakt lösning, lös rekursivt. min = amount //Sämsta fallet är lika många mynt som amount j = 1 while (j <= (amount / 2)) c1 = makeChange(v, j) c2 = makeChange(v, amount - j) if ((length of c1 + length of c2) < min) change = append c2 to the end of c1 min = length of change j = j + 1 return change

28 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 28 Uppgift 4 – 8p (4+1+3) Nu har du (förhoppningsvis) gjort färdigt sorteringsmodulen i uppgift 2, så företaget du jobbar åt har fått ett nytt uppdrag där ni skall skriva en modul som skall användas för att konstruera ett nytt datornät där våra byar i glesbygden skall kopplas upp med hjälp av ett fibernät. Kraven är att alla byar som är med i projektet skall kunna nås från vilken annan by som är med i projektet direkt eller indirekt via någon annan by. Givetvis så är det en kostnad förknippad med att dra fiber mellan två byar som beror dels på avståndet men också på markförhållandena, etc. Beställarna (staten) vill ha den billigaste lösningen för fiberdragningen.

29 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 29 a) och b) a) Beskriv en algoritm som löser detta problem.  Prims eller Kruskals algoritm b) Går det att härleda problemet till något känt typproblem?  Minimalt uppspännande träd

30 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 30 c) Visa hur din algoritm från a) fungerar på nedanstående nätverk. (Obs! Även om din algoritm i a) skulle råka vara fel så kan du få poäng på denna om du visar hur den funkar.)

31 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 31 Uppgift 5 - 7p (4+2+1) Sätt in följande tal (i given ordning) i en hashtabell: 3, 4, 29, 16, 42, 6, 55, 0, 13, 2, 26, 130, och 19. a) Använd hashfunktionen h(x)= x mod y, välj ett lämpligt y. Gör detta både för öppen hashing och sluten hashing. För sluten hashing, använd linjär teknik (linear probing) för att hantera kollisioner. Redogör på ett tydligt sätt för alla kollisioner som uppkommer. b) Motivera valet av y i hashfunktionen! c) Hur kan man gå till väga om det var namn på personer (anders, bo, aron, arne, östen, sune, bertil, david, åsa, nisse, karin, berit, ada) som skulle lagras i hashtabellen? Förklara principen, dvs du behöver inte skapa hashtabellen?

32 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 32 Sluten hashing:  Fyllnadsgraden ska inte överstiga 75 % och y ska vara ett primtal för att få bättre spridning.  Ett lämpligt y kan då i detta fall vara 17.  Vid sluten hashing är hashtabellen en cirkulär vektor och när man använder linjär probing vid kollisioner sätter man in elementet på första lediga plats.  3%17 = 3, 4%17 = 4, 29%17 = 12, 16%17 = 16, 42%27 = 8, 6%17 = 6, 55%17 = 4, 0%17 = 0, 13%17 = 13, 2%17 = 2, 26%17 = 9, 130%17 = 11, 19%17 = 2

33 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 33 Öppen hashing:  Tabellen är en vektor av lista  Hashtabellen ska ha max fyllnadsgrad 2*y, där y är storleken på hashtabellen.  I detta fall räcker det med y = 7.

34 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 34 Uppgift 6 – 3 p  Under kursen har vi stött på flera olika typer av sökträd: Binärt sökträd, AVL, flervägssökträd (m-tree) och B-träd (2-4 träd). Ge en tumregel till en implementatör som tar hänsyn till för- och nackdelar samt likheter och skillnader mellan de olika typerna av sökträd.

35 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 35 Uppgift 6  Här måste man formulera sitt svar som en tumregel annars blir det avdrag. Viktiga saker att nämna:  AVL är den balanserade formen av Binära sökträd och B-träd är den balanserade formen av flervägssökträd.  Binära träd har ett värde i varje nod (0-2 barn) och flervägssökträd har flera etiketter i varje nod och kan ha/brukar ha mer än 2 barn.  Det tar längre tid inuti noderna i ett flervägssökträd.

36 DoA VT -07 © Anders Broberg, Lena Kallin Westin, 2007 36 Kursutvärdering


Ladda ner ppt "© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 16."

Liknande presentationer


Google-annonser