Problemlösning, att ställa rätt frågor, hur man kan beskriva algoritmer och hur man skriver pseudokod.

Storlek: px
Starta visningen från sidan:

Download "Problemlösning, att ställa rätt frågor, hur man kan beskriva algoritmer och hur man skriver pseudokod."

Transkript

1 Problemlösning, att ställa rätt frågor, hur man kan beskriva algoritmer och hur man skriver pseudokod. 1 Kommer det här på tentan? Först skall vi repetera och kanske förtydliga problemlösningsprocessen. Sedan skall vi titta på en samling frågor man kan använda som bas för sitt problemlösande. Kom ihåg att problemlösning egentligen inte är bundet till datorer på något sätt men här är naturligtvis framställningen präglad av att vi söker en datoriserad lösning. Sen skall vi se hur man kan beskriva algoritmer. 1.1 PROBLEM OCH MODELLER Problem Vi har alltså ett problem vi vill lösa. Problemet måste vara lösbart (beräkningsbart) med dator eftersom det är sådana problem vi intresserar oss för här. Hurvida problem är lösbara studerar man i ämnet beräkningsbarhet (computability theory). Hurvida något är beräkningsbart har egentligen inget med datorer att göra utan handlar om hurvida det är beräkningsbart överhuvudtaget, oavsett metod. Vi måste börja med att försöka förstå problemet och kanske formulera om/förtydliga det så vi har en tydlig specifikation av vad lösningen skall prestera. Modeller Sedan måste vi hitta/skapa en (vanligen matematisk) modell så vi kan resonera om problemet, tex bevisa egenskaper hos det, och kan välja lösningsmetoder, i vårt fall algoritmer. En modell är ett försök att beskriva verkligheten (inte förklara den) på ett formaliserat sätt. En karta är tex en modell av geografin, Maxwells ekvationer beskriver elektriska och magnetiska fenomen osv. Man kan vanligen beskriva ett fenomen med flera modeller tex kan ljuset beskrivas både som elektromagnetisk vågrörelse och som partikelström. När modellerna överlappar varandra måste dom leda till samma resultat men en modell kan sällan beskriva verkligheten exakt. Man skall också vara medveten om att valet av modell delvis styr hur vi ser på världen och att vi blir styrda av modellvalet när den tex implementerats i en dator.

2 112 Problemlösning, att ställa rätt frågor, hur man kan beskriva algoritmer och hur man skriver Inom modellen representerar man vanligen problemet med en datastruktur tex en graf om man vill representera relationer mellan objekt. I många fall är datastrukturen modellen. Det är inte ovanligt så modellvalet består ofta i att välja datastruktur, sen ger sig resten. Modellen ger oss grunden för olika verktyg för att konstruera algoritmer. Den är alltså en grund för vad vi kommer att kunna göra när vi försöker lösa problemet. Algoritmdesign För att konstruera algoritmer har vi de olika vektyg som datastrukturer, färdiga algoritmer och algoritmdesignmetoder som modellen ger oss. Verktygslådan känner du förhoppningsvis till vid det här laget, den har presenterat i de föregående kapitlen. Analys av Problem och Algoritm När algoritmen är klar skall den analyseras ur olika aspekter. Att den är korrekt (och begriplig) bör redan vara avklarat, helst i form av ett formellt bevis. Sen är det algoritmens resurskrav (vanligen tid, minne) som är intressanta. Detta ger en övre gräns för hur lång tid det tar att exekvera algoritmen respektive minneskravet i värsta fall. För att avgöra om algoritmen är optimal analyserar vi sedan problemet och skapar ett bevis för hur lång tid det måste ta att lösa problemet i värsta fall Det ger oss en undre gräns. Om det finns ett gap mellan algoritmens övre gräns och problemets undre gräns så kan vi antingen försöka hitta en ny algoritm eller hitta ett nytt bevis inom den modell vi valt. Fungerar inte det måste vi byta modell och fungerar inte det så måste du försöka förändra problemet (tex generalisera, specialisera osv) för att försöka hitta en bättre algoritm. 1.2 ATT STÄLLA RÄTT FRÅGOR Mina uppgiftsformuleringar får ibland kritik för att dom är oklara eller ofullständiga. Det är ibland befogad kritik men ofta(st?) tycks elever ha inställningen att man efter att ha läst igenom ett problem omedelbart skall ha klart för sig vad man skall göra och hur det skall gå till. I formuleringen skall dessutom allt man behöver veta för att lösa problemet vara tydligt angivet. Det tror jag är en ovanlig situation för en civilingenjör som ju ofta sysslar men olika former av produktutveckling. På en högskola blir det naturligtvis många givna färdiga problem som skall lösas, och även de problem jag ger är ju till stor del givna, men man behöver. Det tycks gälla såväl er som eleverna i 2an att döma av en del kommentarerna på Il uppgifterna. Viss utveckling sker dock, ni klagar mycket mindre och ni löser oftast problemet rätt bra även om ni knorrar medan tvåorna ofta blir handfallna :-). Om man konstruerar tex batterieliminatorer och enda skillnaden är utspänningen så stämmer det naturligtvis men är det du vill göra?

3 1.2 Att ställa rätt frågor 113 också träna att utifrån en oklar och diffus fråga/uppgift försöka komma fram till vad som är problemet och hur det skall lösas vilket jag tror är mer verklighetsanpassat. Att göra det tar ofta tid. (Och det är kanske där problemet ligger för er del :-)) Skiena skriver: Problemlösning är inte en vetenskap utan delvis konst och delvis skicklighet. Konst -delen har väl med kreativitet och anlag att göra. Nyckeln till skickligheten är nog, förutom ren erfarenhet, att kunna formulera och ställa de rätta frågorna. När man sedan löser uppgiften så är det viktigt att man redovisar sina frågor och svaren samt motiverar sina slutsatser dvs alla frågor-svar har också en motivering till svaret. Det är tex vanligt att man sorterar först i en algoritm som löser binpackproblemet, inte alla förklarar varför det är bra. Det går inte att precist ange vilka frågor man skall ställa, det beror ju på problemets art och hur mycket som är givet, men man kan ge exempel på frågor, vissa generella och självklara, andra mer problemspecifika. För varje problem får man försöka svara på de frågor som passar problemet (dvs de som går att svara på). Här är en liten lista. Många frågor är fritt översatta från boken The Algorithm Design Manual av Steven Skiena. Först något om distinktionen mellan strategi och taktik Strategi handlar om den stora bilden, om hur man skall angripa problemet. Vilken modell skall användas och hur skall man modellera problemet om man valt en graf som modell? Taktik handlar om hur man löser de små problemen. Skall vi använda en efterföljarlista eller en efterföljarmatris för att representera grafen? Bägge måste man hantera men man kan inte använda taktiklösningar för strategiproblem och vice versa.

4 114 Problemlösning, att ställa rätt frågor, hur man kan beskriva algoritmer och hur man skriver 1.3 FRÅGOR 1. Förstår du problemet? Vad skall du egentligen göra dvs vad går uppgiften ut på? a) Vilken information har vi och vilken behöver vi? b) Vilken av den givna informationen är bakgrundsinformation som egentligen inte behövs för att lösa uppgiften? c) Vad består indata av? Vad skall utdata vara? Hur skall utdata levereras? d) Varför är det ett problem att lösa detta? e) Kan du konstruera ett litet mini exempel som går att lösa för hand? Vad händer när du försöker göra det? f) Hur stor är en typisk probleminstans? Är det 10, 1000, 10 6 indata? g) Hur viktigt är det att lösningen är exakt? Kan det räcka med en approximativ lösning? h) Vad är de teoretiskt minsta respektive största lösningarna? (tex antalet paket i binpackproblemet, i TSP är summan av alla bågar en övre begränsning på vägen) i) Hur viktig är hastigheten? Minnesåtgången? Måste problemet lösas på 1 sekund eller 1 timme? (Tex kan ett problem som skall beräknas en gång ju få ta lite tid på sig medan ett problem som skall lösas upprepade gånger kanske måste gå fortare. Är det en realtidslösning så kanske det måste gå riktigt fort. Är det en raket så kanske det inte finns plats för något minne osv.) j) Hur mycket tid kan du lägga på att hitta en effektiv algoritm? Måste du fixa en lösning snabbt eller kan du pröva lite olika angreppsvinklar och ta den bästa du hittar? (Vem betalar och hur mycket) k) Vilken typ av problem är det? (Exempel på olika problemtyper: graf problem, numeriska problem, sträng problem, geometriska problem osv.) Kan problemet formuleras på flera sätt dvs som olika typer av problem? Vilket sätt verkar bäst? l) Hur skall du mäta kvaliteten på en lösning? (Ibland är det ju enkelt: skall man tex sortera så skall det vara sorterat) m) Finns det något vi kan göra för att göra problemet mer hanterbart tex förenkla det eller lösa ett generellare problem? 2. Vad är känt om problemet? a) Finns det information om det på internet? Prövade du med flera sökmotorer? Är informationen trovärdig? Finns det i någon lärobok? Finns det i någon av de kataloger över problem som finns? Finns det i någon av de kataloger över svåra problem (NPC problem) som finns? Vad sägs om problemet och dess lösningar där?

5 1.3 Frågor 115 (Letade du på rätt ställe? Kollade du i index under alla tänkbara nyckelord? b) Är problemet ett känt problem med polynomisk lösning? (Tex ett sorteringsproblem eller att hitta kortaste väg i en graf) c) Är problemet ett känt problem utan känd polynomisk lösning? - Se a). Ännu viktigare här. - Se Kan du hitta en enkel heuristik för problemet? - Fungerar intelligent uttömmande sökning? - Är probleminstanserna så små att en exponentiell algoritm skulle fungera? d) Finns det en implementation man kan använda? 3. Kan du hitta en enkel heuristik för problemet? a) Kan man lösa problemet genom att använda någon enkel regel tex tag största elementet / ett slumpmässigt element / noden längst bort först? b) Om det går: på vilka data fungerar det bra/mindre bra? Hur stämmer det med problemets data? c) På vilken typ av indata fungerar det dåligt? Om du inte hittar några, kan du motivera att den fungerar bra för alla indata? d) Hur snabb är din heuristik? Finns det en enkel implementation? 4. Finns det specialfall av problem som kan lösas enkelt? a) Kan man lösa problemet effektivt om man ignorerar några indata? b) Vad händer när man sätter några indata till triviala värden som 0 eller 1? Blir det lättare att lösa? c) Kan problemet förenklas så mycket att det kan lösas enkelt? Är problemet fortfarande intressant eller trivialt nu? (tex så är cylinderuppgiften en enkel variant av TSP) d) Varför kan inte algoritmen för det förenklade problemet användas till det ursprungliga problemet? e) Är ditt problem ett specialfall av ett mer generellt problem? (SOS är tex en enklare variant av kappsäcksproblemet som i sin tur är en enklare variant av ett flerdimensionellt kappsäcksproblem.) 5. Vilka standardmetoder verkar kunna fungera? a) Förenklas uppgiften om man gör någon form av pre-computation tex först sorterar indata? b) Kan man dela problemet i två (eller flera) mindre delar? Kan man då använda binärsökning? Kan man partitionera indata i på något sätt, stora - små, vänster - höger osv? Kan mer generell divide and conquer användas? c) Har indata en naturlig vänster till höger ordning som tex en sträng, elementen i en permutation eller löven i ett träd? Beräknas samma

6 116 Problemlösning, att ställa rätt frågor, hur man kan beskriva algoritmer och hur man skriver delproblem flera gånger? Kan man då använda dynamisk programmering? d) Gör man vissa operationer upprepade gånger tex söker efter något? Kan man snabba upp det genom att välja en bra datastruktur? (tex hashtabell, binärt sökträd, prioritetskö osv) e) Kan en väl vald datastruktur rent av lösa problemet? f) Kan problemet formuleras som ett linjärt program? Som ett heltalsproblem? 6. Frågor i samband med speciella lösningmetoder. a) Tex i samband med backtrack: Fast eller variabel tuppelstorlek? Vad skall vara grenar och vad skall vara nivåer i det abstrakta sökträdet? Vad kan man tänka sig för villkor för att klippa i trädet? Vad är den förväntade komplexiteten? 7. Fortfarande ingen lösning? a) Gå tillbaka och börja om med frågorna igen. Kanske blir svaren annorlunda andra gången. b) Är du villig att hyra en expert?

7 1.4 Att beskriva Algoritmer ATT BESKRIVA ALGORITMER. En fråga som är intressant är hur man skall beskriva algoritmer för andra (och sig själv). Man vill ju att det skall vara lätt att förstå algoritmen. En algoritmbeskrivning bör bestå av en beskrivning av vilken ide algoritmen bygger på, en abstrakt algoritm i pseudokod, huvudsakligen läsbar för människor, datastrukturbeskrivningar och implementationsdetaljer, korrekthetsbevis samt komplexitetsanalys. Punkterna 1-4 nedan utgör en beskrivning av hur man kan beskriva en algoritm. Ibland måste även (delar av) punkt 5 hänföras hit, nämligen i de fall då det inte är uppenbart att det går att hitta en implementering av någon ADT eller hjälpfunktion eller då man behöver mer information för att kunna analysera algoritmens komplexitet. Punkterna 1-6 utgör en implementation av algoritmen. I en fullständig beskrivning bör man även ge en introduktion till problemet, referenser och ha ett avsnitt med egna slutsatser och reflektioner. 1. Förklara hur algoritmen fungerar. För att göra det kan du använda både text, pseudotext och figurer, det viktiga är att Idén framgår tydligt och att man får hjälp att förstå den abstrakta algoritmen i punkt 2. Ett sätt att göra detta är att göra en torrsimning på ett exempel. (Se tex. föreläsningsanteckningarna för Prims eller Kruskals algoritmer ) 2. Ge en (beskriv en) abstrakt algoritm. En abstrakt algoritm är en programspråksliknande beskrivning där du kan använda ADT s för tex grafer och listor samt satser av typen for varje nod w på EL(v) loop. Om du använder resultatet från en känd algoritm, tex. kostnadsmatrisen som fås av Dijkstras algoritm, så måste du beskriva hur det resultatet ser ut och, om det inte står annorlunda i uppgiften, även beskriva den kända algoritmen. Detta gäller i synnerlighet om du anpassat algoritmen lite för att passa ditt problem. Men var inte för abstrakt! Algoritmer måste formuleras noggrant och precist. Om du skall arbeta med ett binärt träd och tex. skriva ut kanten så är inte genomlöp trädet en bra abstraktion. Självklart skall de satser och underprogram du använder också vara implementerbara! Om det inte är uppenbart att de är det, så måste du visa hur du har tänkt dig att implementera dem. Gör i så fall det efter att du gett den abstrakta algoritmen, inte i den. De måste specificeras så väl att det är möjligt att kontrollera att algoritmen terminerar och att den är korrekt. 3. Bevisa att algoritmen fungerar. 4. Analysera algoritmens komplexitet. Observera att det inte räcker att konstatera vad komplexiteten är utan du måste motivera varför den är det du påstår att den är. Det är också viktigt att du analyserar din algoritm och inte utgår från kända fakta om problemet. 5. Beskriv de olika delarna i den abstrakta algoritmen. Tex. hur du implementerar de ADT s som du använder, hur for varje nod på EL(v) loop görs eller hur en hjälp algoritm du använt fungerar. Om det är en standard algoritm räcker det vanligen om du gör punkt 2 eller hänvisar till en källa. Naturligtvis behöver du inte beskri-

8 118 Problemlösning, att ställa rätt frågor, hur man kan beskriva algoritmer och hur man skriver va hur man implementerar tex en lista eller hur en efterföljarmatris mm. ser ut. (om du inte använt en egen ny uppfinning förstås!) Främsta anledningen till detta arbete är att kunna avgöra om den abstrakta algoritmen kan implementeras och för att kunna beräkna komplexiteten för algoritmen samt som förberedelse till nästa punkt. 6. Implementera fler detaljer. Detta sker oftast i form av stegvisa förfiningar av algoritmen. Eventuellt skall alla detaljer implementeras. (Se tex. Kruskals eller Prims algoritmer. Observera att implementationen av Prims algoritm skiljer sig markant från den abstrakta algoritmen. Det beror naturligtvis på att vi skall förstå den abstrakta algoritmen och datorn skall förstå implementationen.) Under kursen/tentan är det nästan alltid steg (+5) som skall göras där (+5) endast görs när det är lämpligt tex för att göra en komplexitetsberäkning. Undantag från detta påpekas alltid speciellt i uppgiften. För mer noggran beskrivning av steg 1 se förel.anteckningar+bok. För mer noggran beskrivning av steg 2 se nedan. För mer noggran beskrivning av steg 3 se bok och hemsidan. För mer noggran beskrivning av steg 5 se förel.anteckningar+bok. För mer noggran beskrivning av steg 6 se grundkurserna pt+ptfk.

9 1.5 Pseudokod PSEUDOKOD Låt oss exemplifiera hur det kan se ut under steg 2 i vår beskrivning ovan. Syftet med pseudokod är att ge en lättläst beskrivning, utan för mycket detaljer, av algoritmen och dess struktur. Samtidigt måste den vara tillräckligt precis för att man skall kunna analysera den och översätta den till körbar kod. Man skall alltså eftersträva en balans mellan begriplig Svenska (Engelska) och kodens precision, ofta måste man beskriva algoritmen i flera steg, på olika nivåer, så det är viktigt att abstrahera och dela upp algoritmen i delar som beskrivs var för sig. Man får inte vara för abstrakt. Exempel på för abstrakt pseudokod: Om problemet är att sortera: Sortera så att det blir sorterat. Om problemet är att beskriva mergesort: Dela problemet i två lika delar. Sätt ihop delarna så de blir sorterade. Upprepa rekursivt. Oavsett problem: Lös problemet Exempel på bra nivå: Detta är en beskrivning av Kruskals algoritm som beräknar minimala uppspännande träd från Horowitz, Sahni, Rajasekaran: Computer Algorithms 1998, sid 224 (radummer kan man ha men det är ovanligt men här vill jag kunna hänvisa till speciella rader) 1 // E är mängden av alla bågar i grafen, 2 // t är det minimala uppspännade trädet 3 t = Ø 4 while ( t has < n-1 edges and E Ø ) do 5 Chose an edge (v,w) from E of lowest cost 6 Delete (v,w) from E 7 if (v,w) does not create a cycle in t then 8 add (v,w) to t 9 else 10 discard (v,w) 11 } Här framkommer algoritmens kärna utmärkt men det är massor av saker som inte enkelt kan göras om till kod. Om vi antar att grafhantering och mängdhantering är kända (dvs tex hur man tar bort en båge ur grafen (rad 6) och hur man kollar att E Ø (rad 4)) så måste man även precisera hur man tar fram den billigaste bågen (rad 5) och hur man kollar att ingen cykel uppstår (rad 7). Lämpligast är förmodligen att behålla koden ovan och göra separata beskrivningar av det. Algoritmens kärna skall ju framgå utan för mycket detaljer. Kanske måste man också utveckla algoritmen dvs i det här fallet göra den mer kodlik, se nedan. Men beskrivningen ovan skall naturligtvis vara med i algoritmbeskrivningen även i fortsättningen. Man måste också beskriva tex hur grafen är implementerad för att kunna analysera komplexiteten. Låt oss se hur Kruskals algoritm ser ut efter att man preciserat en del av dessa saker (från samma källa):

10 120 Problemlösning, att ställa rätt frågor, hur man kan beskriva algoritmer och hur man skriver 12 algorithm Kruskal (E, cost, n, t) 13 // E is the set of edges in G, G has n vertices, 14 // cost(u,v) is the cost of edge (u,v), 15 // t is the set of edges in the minimum-cost span. tree, 16 // the final cost is returned Construct a heap out of the edge cost using Heapify; 19 for i:= 1 to n do parent[i]:=-1; 20 // Each vertex is in a different set 21 i := 0, mincost := 0.0; 22 while ((i<n-1) and (heap not empty)) do 23 Delete a minimum cost edge (u,v) from 24 the heap and reheapify using Adjust; 25 j := Find(u); k := Find(v); 26 if (j k) then 27 i := i+1; 28 t[i,1] := u; t[i,2] := v; 29 mincost := mincost + cost[u,v]; 30 Union(j,k); 31 } 32 } 33 if (i n-1) then write ( No span. tree ); 34 else return mincost; 35 } Nu är flera detaljer klara. Vissa rader ser ofärdiga ut (tex 18, 23, 24, 25) och det stämmer. Där sker olika anrop till en datastruktur som kallas för en heap. Även rad 19 är kryptisk för man ser inte ut att använda vektorn parent till något mer än att fylla den med -1 (men den hör till heapen). Allt detta måste förklaras mer noggrant om man inte anser att kunskap om en heap är allmängods, då räcker det att nämna dess komplexitet (och naturligtvis hur/ varför man använder den redan i samband med förra kodsnutten). Kvar är nu bara rad 30 vars komplexitet måste nämnas under punkt 4. Men det är fortfarande en del att göra innan det blir kod (steg 6) av detta. Fler exempel på pseudokod finns i de flesta algoritmböcker. Se tex en algoritm för att konstruera stabila matchningar från Kleinberg, Tardos: Algorithm design, 2004, sid 5

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare Prov i DAT 312: Algoritmer och datastrukturer för systemvetare Jacek Malec Datavetenskap, LU 11 april 2003 Datum 11 april 2003 Tid 14 19 Ansvarig lärare Jacek Malec (tel. 03 9890431) Hjälpmedel inga Antal

Läs mer

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00 TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 170117 kl. 14:00-19:00 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilagarna. *** OBS *** Betygsgräns:

Läs mer

Föreläsning 1. Introduktion. Vad är en algoritm?

Föreläsning 1. Introduktion. Vad är en algoritm? Några exempel på algoritmer. Föreläsning 1. Introduktion Vad är en algoritm? 1. Häll 1 dl havregryn och ett kryddmått salt i 2 1 2 dl kallt vatten. Koka upp och kocka gröten ca 3minuter. Rör om då och

Läs mer

Magnus Nielsen, IDA, Linköpings universitet

Magnus Nielsen, IDA, Linköpings universitet Föreläsning 7 Introduktion till sortering TDDC91,TDDE22,725G97: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 24 september 2018 Magnus Nielsen, IDA, Linköpings universitet 7.1 1

Läs mer

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15 OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 150609 kl. 14:15 19:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. *** OBS ***

Läs mer

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15 ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 150112 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. ***

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

Lösningar Datastrukturer TDA

Lösningar Datastrukturer TDA Lösningar Datastrukturer TDA416 2016 12 21 roblem 1. roblem 2. a) Falskt. Urvalssortering gör alltid samma mängd av jobb. b) Sant. Genom att ha en referens till sista och första elementet, kan man nå både

Läs mer

Datastrukturer och Algoritmer D0041D

Datastrukturer och Algoritmer D0041D Luleå Tekniska Universitet 19 mars 2014 Laborationsrapport Laboration 3 Datastrukturer och Algoritmer D0041D Primms Algoritm Namn E-mail Magnus Björk magbjr-3@ltu.student.se Handledare Felix Hansson Primms

Läs mer

Föreläsning 7 Datastrukturer (DAT037)

Föreläsning 7 Datastrukturer (DAT037) Föreläsning 7 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-21 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra

Läs mer

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum, tid och plats för tentamen: 2017-08-17, 8:30 12:30, M. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 9:30 och ca 11:00.

Läs mer

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-18 Idag Mer om grafer: Minsta uppspännande träd (för oriktade grafer). Prims algoritm. Kruskals algoritm. Djupet först-sökning. Cykel

Läs mer

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC (6) Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för

Läs mer

Datastrukturer. föreläsning 10. Maps 1

Datastrukturer. föreläsning 10. Maps 1 Datastrukturer föreläsning 10 Maps 1 Minsta uppspännande träd Maps 2 Minsta uppspännande träd Uppspännande träd till graf fritt delträd innehåller alla noderna Minsta uppspännande träd (MST) är det uppspännande

Läs mer

Datastrukturer. föreläsning 9. Maps 1

Datastrukturer. föreläsning 9. Maps 1 Datastrukturer föreläsning 9 Maps 1 Minsta uppspännande träd Maps 2 Minsta uppspännande träd Uppspännande träd till graf fritt delträd innehåller alla noderna Minsta uppspännande träd (MST) är det uppspännande

Läs mer

Föreläsning 13 Datastrukturer (DAT037)

Föreläsning 13 Datastrukturer (DAT037) Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-12-14 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Sammanfattning

Läs mer

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037) Föreläsning 8 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-23 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra

Läs mer

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen Datastrukturer och algoritmer Föreläsning 15 Inför tentamen 1 Innehåll Kursvärdering Vi behöver granskare! Repetition Genomgång av gammal tenta 2 Första föreläsningen: målsättningar Alla ska höja sig ett

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Datastrukturer och algoritmer Föreläsning 16 2 Innehåll Snabbrepetition Exempeltentamen Kursutvärdering Mina målsättningar Kursens mål: 3 Rolig och viktig kurs Bli en bättre programmerare och inse att

Läs mer

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer D DAT 035/INN960 Tentamen Datastrukturer D DAT 035/INN960 22 december 2006 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser,

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Datastrukturer och algoritmer Föreläsning 5 Algoritmer & Analys av Algoritmer Algoritmer Vad är det? Innehåll Mer formellt om algoritmer beräkningsbarhet Att beskriva algoritmer Analysera algoritmer Exekveringstid,

Läs mer

Föreläsning 5: Grafer Del 1

Föreläsning 5: Grafer Del 1 2D1458, Problemlösning och programmering under press Föreläsning 5: Grafer Del 1 Datum: 2006-10-02 Skribent(er): Henrik Sjögren, Patrik Glas Föreläsare: Gunnar Kreitz Den här föreläsningen var den första

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Det här är inte originaltesen. Uppgift 6 var felaktigt formulerad, och har rättats till. Datum och tid för tentamen: 2011-12-16, 8:30 12:30. Ansvarig: Nils Anders Danielsson.

Läs mer

Datastrukturer. föreläsning 9. Maps 1

Datastrukturer. föreläsning 9. Maps 1 Datastrukturer föreläsning 9 Maps 1 Grafer och grafalgoritmer Hur implementerar man grafer? Hur genomsöker (traverserar) man grafer? Hur genomsöker man viktade grafer (och hittar kortaste vägen)? Hur beräknar

Läs mer

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-20 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får

Läs mer

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-23 Idag Mer om grafer: Minsta uppspännande träd (för oriktade grafer). Djupet först-sökning. Minsta uppspännande träd Träd (utan rot)

Läs mer

Föreläsning 13 Datastrukturer (DAT037)

Föreläsning 13 Datastrukturer (DAT037) Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 11 december 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer

Föreläsningsanteckningar F6

Föreläsningsanteckningar F6 Föreläsningsanteckningar F6 Martin Andersson & Patrik Falkman Kortaste vägen mellan en nod och alla andra noder Detta problem innebär att givet en graf G = (E,V) hitta den kortaste vägen över E från en

Läs mer

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem Översikt Stegvis förfining Pseudokod Flödesdiagram Dekomposition KISS-regeln Procedurell dekomposition DRY-regeln Algoritmer Sortering och sökning Stegvis förfining Metod för att skapa ett program från

Läs mer

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15 ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 160119 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. ***

Läs mer

Datastrukturer. föreläsning 8. Lecture 6 1

Datastrukturer. föreläsning 8. Lecture 6 1 atastrukturer föreläsning 8 Lecture 6 1 jupet-först sökning (S) och bredden-först sökning (S) Två metoder att genomsöka en graf; två grafiteratorer! Kan även användas för att avgöra om två noder är sammanbundna.

Läs mer

Föreläsning 12+13: Approximationsalgoritmer

Föreläsning 12+13: Approximationsalgoritmer Föreläsning 12+13: Approximationsalgoritmer Många av de NP-fullständiga problemen är från början optimeringsproblem: TSP, Graph Coloring, Vertex Cover etc. Man tror att P NP och att det alltså inte går

Läs mer

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15 OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 140818 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna. Betygsgräns: *** OBS *** Kurs:

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 9 oktober 2015 Anton Grensjö ADK Övning 6 9 oktober 2015 1 / 23 Översikt Kursplanering Ö5: Grafalgoritmer och undre

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet

Tommy Färnqvist, IDA, Linköpings universitet Föreläsning 8 Sortering och urval TDDC70/91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 1 oktober 2013 Tommy Färnqvist, IDA, Linköpings universitet 8.1 Innehåll Innehåll 1 Sortering

Läs mer

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim Föreläsning 10 Grafer, Dijkstra och Prim Föreläsning 10 Grafer Representation av grafer Dijkstras algoritm Implementation av Dijkstras algoritm Minimium spanning tree Broarna i Königsberg, Euler, 17 Grafer

Läs mer

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim Föreläsning 10 Grafer, Dijkstra och Prim Föreläsning 10 Grafer Representation av grafer Dijkstras algoritm Implementation av Dijkstras algoritm Minimium spanning tree Läsanvisning och uppgifter Broarna

Läs mer

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim Föreläsning 10 Grafer, Dijkstra och Prim Föreläsning 10 Grafer Representation av grafer Dijkstras algoritm Implementation av Dijkstras algoritm Minimium spanning tree Läsanvisning och uppgifter Broarna

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-13 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 4 oktober 2017 1 Idag Algoritmkonstruktion (lite blandat) Redovisning och inlämning av labbteori 3 2 Uppgifter Uppgift

Läs mer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer Föreläsning 5: Giriga algoritmer Kruskals och Prims algoritmer Spännande träd: Om G är en sammanhängande graf så är ett spännande träd ett träd som innehåller alla noder i V (G). Viantarattviharkantvikterw(e)

Läs mer

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find TDDI16 Datastrukturer och algoritmer Prioritetsköer, heapar, Union/Find Prioritetsköer En vanligt förekommande situation: Väntelista (jobbhantering på skrivare, simulering av händelser) Om en resurs blir

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-25 Idag Starkt sammanhängande komponenter Duggaresultat Sökträd Starkt sammanhängande komponenter Uppspännande skog Graf, och en möjlig

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Föreläsning 5 Algoritmer Experimentell komplexitetsanalys Kapitel 2.1-2.2, Kapitel 12.1-12.4 Algoritmer Algoritm Definition: Algoritm är en noggrann plan, en metod för att stegvis utföra något

Läs mer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer Föreläsning 5: Giriga algoritmer Kruskals och Prims algoritmer Spännande träd: Om G är en sammanhängande graf så är ett spännande träd ett träd som innehåller alla noder i V (G). Viantarattviharkantvikterw(e)

Läs mer

Fredag 10 juni 2016 kl 8 12

Fredag 10 juni 2016 kl 8 12 KTH CSC, Alexander Baltatzis DD1320/1321 Lösningsförslag Fredag 10 juni 2016 kl 8 12 Hjälpmedel: En algoritmbok (ej pythonkramaren) och ditt eget formelblad. För betyg E krävs att alla E-uppgifter är godkända,

Läs mer

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen Datastrukturer (DAT036/DAT037/DIT960) Tentamen Datastrukturer (DAT036/DAT037/DIT960) Datum och tid för tentamen: 2016-04-07, 14:00 18:00. Författare: Nils Anders Danielsson. (Tack till Per Hallgren och Nick Smallbone för feedback.) Ansvarig:

Läs mer

Tentamen Datastrukturer för D2 DAT 035

Tentamen Datastrukturer för D2 DAT 035 Tentamen Datastrukturer för D2 DAT 035 17 december 2005 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser:

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Prioritetskö Heap Representation som

Läs mer

Föreläsning 11. Giriga algoritmer

Föreläsning 11. Giriga algoritmer Föreläsning 11 Giriga algoritmer Föreläsning 11 Giriga algoritmer Användning Växelproblemet Kappsäcksproblemet Schemaläggning Färgläggning Handelsresandeproblemet Giriga algoritmer (Greedy algorithms)

Läs mer

Algoritmer och datastrukturer TDA Fredrik Johansson

Algoritmer och datastrukturer TDA Fredrik Johansson Algoritmer och datastrukturer TDA143 2015-02- 18 Fredrik Johansson Algoritmer Informell beskrivning E" antal steg som beskriver hur en uppgi5 görs. A set of steps that defines how a task is performed.

Läs mer

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Föreläsning 4: Giriga algoritmer. Giriga algoritmer Föreläsning 4: Giriga algoritmer Giriga algoritmer Denna typ av algoritmer arbetar efter följande princip: Gör i varje situation det som är lokalt optimalt, d.v.s. bäst för stunden. Några exempel vi redan

Läs mer

Sökning och sortering

Sökning och sortering Sökning och sortering Programmering för språkteknologer 2 Sara Stymne 2013-09-16 Idag Sökning Analys av algoritmer komplexitet Sortering Vad är sökning? Sökning innebär att hitta ett värde i en samling

Läs mer

Tentamen Datastrukturer D DAT 036/INN960

Tentamen Datastrukturer D DAT 036/INN960 Tentamen Datastrukturer D DAT 036/INN960 18 december 2009 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 = 48 p, GU:

Läs mer

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

TDDI16 Datastrukturer och algoritmer. Algoritmanalys TDDI16 Datastrukturer och algoritmer Algoritmanalys 2017-08-28 2 Översikt Skäl för att analysera algoritmer Olika fall att tänka på Medelfall Bästa Värsta Metoder för analys 2017-08-28 3 Skäl till att

Läs mer

F11. Läsanvisning: kap 10 + dessa OH. Kruskals algoritm kortaste vägar en till alla

F11. Läsanvisning: kap 10 + dessa OH. Kruskals algoritm kortaste vägar en till alla F11 Läsanvisning: kap 10 + dessa OH Kruskals algoritm kortaste vägar en till alla Dijkstras algoritm (Den här föreläsningen är också delvis samma som en från algoritmkursen därav språkvalet.) För lab 3:

Läs mer

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T Algoritmer och datastrukturer H I 1 0 2 9 HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T Föreläsning 1 Inledande om algoritmer Rekursion Stacken vid rekursion Rekursion iteration Möjliga vägar

Läs mer

Asymptotisk komplexitetsanalys

Asymptotisk komplexitetsanalys 1 Asymptotisk komplexitetsanalys 2 Lars Larsson 3 4 VT 2007 5 Lars Larsson Asymptotisk komplexitetsanalys 1 Lars Larsson Asymptotisk komplexitetsanalys 2 et med denna föreläsning är att studenterna skall:

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp

Läs mer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4 Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa

Läs mer

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011 DD1320 Tillämpad datalogi Lösning (skiss) till tenta 20 okt 2011 1 KMP P I P P I N i 1 2 3 4 5 6 Next[i] 0 1 0 2 1 3 2 Huffmankodning: Algoritmen 1. Sortera tecknen som ska kodas i stigande förekomstordning.

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 10 Anton Grensjö grensjo@csc.kth.se 9 november 2017 1 Idag En konstruktionsreduktion Fler bevis av NP-fullständighet 2 Teori Repetition Ett problem tillhör

Läs mer

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum och tid för tentamen: 2017-01-11, 14:00 18:00. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 15:00 och ca 17:00. Godkända

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Heapar Implementering av prioritetskö med heap Klassen PriorityQueue i java.util Programexempel LPT-algoritmen

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg:

Läs mer

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-12-14 Idag Frågor? Är något oklart inför tentan? Sammanfattning Exempel från föreläsning 1 Dåligt val av datastruktur public class Bits {

Läs mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6 Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar

Läs mer

Tentamen: Programutveckling ht 2015

Tentamen: Programutveckling ht 2015 Tentamen: Programutveckling ht 2015 Datum: 2015-11-04 Tid: 09:00-13:00 Sal: Ansvarig: Resultat: Hjälpmedel: Maxpoäng: Betygsgränser: Anslås inom 3 veckor. Inga 40 p 20 p för G, 32 p för VG. Iakttag följande:

Läs mer

Datastrukturer. föreläsning 8. Maps 1

Datastrukturer. föreläsning 8. Maps 1 Datastrukturer föreläsning 8 Maps 1 Att hitta den kortaste vägen 0 8 A 4 2 8 B 7 2 C 1 D 2 5 3 9 8 E F 5 3 Lecture 6 2 Viktade grafer I en viktad graf tillordnar vi ett tal till varje båge. Detta tal kallas

Läs mer

Föreläsning 5 Innehåll

Föreläsning 5 Innehåll Föreläsning 5 Innehåll Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Datavetenskap (LTH) Föreläsning 5 VT 2019 1 / 39 Val av algoritm och datastruktur

Läs mer

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Lösningsförslag för tentamen i Datastrukturer (DAT037) från Lösningsförslag för tentamen i Datastrukturer (DAT7) från --9 Nils Anders Danielsson. Träd- och köoperationerna har alla tidskomplexiteten O(log s), där s är antalet element i trädet/kön (notera att jämförelser

Läs mer

N = {i}: noder (hörn) Graf: G = (N, B) Definitioner. Väg: Sekvens av angränsande bågar. Cykel: Väg som startar och slutar i samma nod.

N = {i}: noder (hörn) Graf: G = (N, B) Definitioner. Väg: Sekvens av angränsande bågar. Cykel: Väg som startar och slutar i samma nod. Polyeder 0 x, 0 x, 0 x, x + x + x, x + x + x Grafdefinitioner N = {i}: noder (hörn) = {(i, j)}, i N, j N: bågar (kanter) Graf: G = (N, ) efinitioner Väg: Sekvens av angränsande bågar. ykel: Väg som startar

Läs mer

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15 OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 170331 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilagarna. *** OBS ***

Läs mer

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037) Föreläsning 8 Datastrukturer (DAT037) Fredrik Lindblad 1 22 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer

Trädstrukturer och grafer

Trädstrukturer och grafer Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer

Läs mer

729G04 - Diskret matematik. Lektion 4

729G04 - Diskret matematik. Lektion 4 729G04 - Diskret matematik. Lektion 4 1 Lösningsförslag 1.1 Vägar, stigar och annat 1. Vi ges den oriktade grafen G=(V,E), V = {a, b, c, d, f, g, h, i, j}, E = {{a, b}, {b, c}, {a, c}, {f, g}, {c, d},

Läs mer

Programmering för språkteknologer II, HT2014. Rum

Programmering för språkteknologer II, HT2014. Rum Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Sökalgoritmer

Läs mer

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret 2014-2015. Lektion 1

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret 2014-2015. Lektion 1 Kattis Lektion 1 I kursen används onlinedomaren Kattis (från http://kattis.com) för att automatiskt rätta programmeringsproblem. För att få ett konto på Kattis anmäler du dig på Programmeringsolympiadens

Läs mer

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037) Föreläsning 4 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-10 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra

Läs mer

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna Föreläsning Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Implementering med lista ar Implementering av prioritetskö med heap Sortering

Läs mer

Programkonstruktion och Datastrukturer

Programkonstruktion och Datastrukturer Programkonstruktion och Datastrukturer VT 2012 Tidskomplexitet Elias Castegren elias.castegren.7381@student.uu.se Problem och algoritmer Ett problem är en uppgift som ska lösas. Beräkna n! givet n>0 Räkna

Läs mer

Tentamen Datastrukturer D DAT 036/INN960

Tentamen Datastrukturer D DAT 036/INN960 Tentamen Datastrukturer D DAT 036/INN960 18 december 2009 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 = 48 p, GU:

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 7 Anton Grensjö grensjo@csc.kth.se 14 oktober 2015 Anton Grensjö ADK Övning 7 14 oktober 2015 1 / 28 Översikt Kursplanering Ö6: Algoritmkonstruktion F19:

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2012-11-13 Idag Mer om grafer: Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. Floyd-Warshall. Topologisk sortering

Läs mer

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 09:00 14:00

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 09:00 14:00 OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 160402 kl. 09:00 14:00 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. *** OBS ***

Läs mer

Tillämpad Programmering (ID1218) :00-13:00

Tillämpad Programmering (ID1218) :00-13:00 ID1218 Johan Montelius Tillämpad Programmering (ID1218) 2014-03-13 09:00-13:00 Förnamn: Efternamn: Regler Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.

Läs mer

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning. Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer

Läs mer

Föreläsning 6 Datastrukturer (DAT037)

Föreläsning 6 Datastrukturer (DAT037) Föreläsning 6 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-17 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Exempel på problem där materialet i kursen används Hitta k största bland n element Histogramproblemet Schemaläggning PFK (Föreläsning 13) VT 2013 1 / 15 Hitta k största bland n

Läs mer

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.' Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.' Skrivtid: 08.30 13.30 Hjälpmedel: Inga Lärare: Betygsgränser DVA104' Akademin)för)innovation,)design)och)teknik) Onsdag)2014:01:15) Caroline

Läs mer

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 1! Introduktion och begrepp Kurspresentation! - Målsättning! - Kursutvärdering! - Upplägg! - Översikt! Viktiga begrepp "1 "2 Mina målsättningar Alla ska

Läs mer

Speciell användning av heltalsvariabler. Heltalsprogrammering. Antingen-eller-villkor: Exempel. Speciell användning av heltalsvariabler

Speciell användning av heltalsvariabler. Heltalsprogrammering. Antingen-eller-villkor: Exempel. Speciell användning av heltalsvariabler Heltalsprogrammering Speciell användning av heltalsvariabler max z = då c j x j j= a ij x j b i j= x j 0 x j heltal i =,..., m j =,..., n j =,..., n ofta x j u j j =,..., n Oftast c, A, b heltal. Ibland

Läs mer

Tentamen Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT037) Tentamen Datastrukturer (DAT07) Datum och tid för tentamen: 2016-01-09, 14:00 18:00. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 15:00 och ca

Läs mer

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar Föreläsning 1 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Heapar Implementering av prioritetskö med heap Sortering med hjälp av heap

Läs mer

Tildatenta Lösningsskiss

Tildatenta Lösningsskiss Tildatenta 2017-10-20 Lösningsskiss E-delen 1. KMP PAPPAPARTY next[i] = 0 1 0 2 1 0 4 3 1 1 2. Parent-pekare Utskriftfunktionen fungerar så här: 1. Om noden inte är None a. gör vi först ett rekursivt anrop

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 10 Anton Grensjö grensjo@csc.kth.se 18 november 2015 Anton Grensjö ADK Övning 10 18 november 2015 1 / 20 Översikt Kursplanering Ö9: NP-fullständighetsbevis

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 4 Anton Grensjö grensjo@csc.kth.se 25 september 215 Anton Grensjö ADK Övning 4 25 september 215 1 / 28 Översikt Kursplanering F9: Dynamisk programmering

Läs mer