Programmering II (ID1019) :00-12:00
|
|
- Hanna Bergman
- för 6 år sedan
- Visningar:
Transkript
1 ID1019 Johan Montelius Programmering II (ID1019) :00-12:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren skall lämnas på dessa sidor, använd det utrymme som nns under varje uppgift för att skriva ner ditt svar. Svar skall skrivas på svenska. Du skall lämna in hela denna tentamen. Inga ytterligare sidor skall lämnas in. Betyg Tentamen har ett antal uppgifter där några är lite svårare än andra. De svårare uppgifterna är markerade med en stjärna, poäng*, och ger poäng för de högre betygen. Vi delar alltså upp tentamen in grundpoäng och högre poäng. Se först och främst till att klara de normala poängen innan du ger dig i kast med de högre poängen. Notera att det av de 24 grundpoängen räknas bara som högst 20 och, att högre poäng inte kompenserar för avsaknad av grundpoäng. Gränserna för betyg är enligt nedan. 1
2 E: 14 grundpoäng D: 18 grundpoäng C: 20 grundpoäng B: 20 grundpoäng och 8 högre poäng A: 20 grundpoäng och 12 högre poäng Gränserna kan komma att justeras nedåt men inte uppåt. Kursens slutbetyg kan blir högre om man ligger nära en gräns och har skrivit mycket bra rapporter. Erhållna poäng Skriv inte här, detta är för rättningen. Uppgift Σ Max G/H 4/- 10/2 2/6 4/2 4/4 24/14 G/H Totalt antal poäng: Betyg: 2
3 1 Datastrukturer och mönstermatchning 1.1 vad är Y [2 poäng] Vad är bindningen för Y i följande mönstermatchningar (var för sig), i de fall där matchningen lyckas: [X Y] = [1,2,3] [X,Y] = [1,2,3] [X,Z Y] = [1,2,3] X = {f, 42}, {G, Y} = X H = head, T = tail, Y = [H T] Y = [2,3] misslyckas Y = [3] Y = 42 Y = [head tail] (inte [head, tail], som många skrev) 1.2 tal, lista, sträng eller tuple [2 poäng] Man kan välja att representerar information med tal, listor, strängar eller tupler mm, lite beroende på hur informationen skall användas. För varje exempel nedan skriv ner hur du skulle representera informationen (du behöver inte använda type-notationen utan kan skriva exempel): ett spelkort, t.ex. spader sju: {card, spade, 7} en student med namn och kth-id: {student, Ola Salo, osalo} en mindre grupp studenter: en lista av studenter alla studenter registrerade på en större kurs där vi snabbt vill kunna söka efter studenter givet ett kth-id: Ett ordnat (efter kth-id) träd av studenter, att använda en lista ger oss inte en snabb sökning. 3
4 2 Funktionell programmering 2.1 rövarspråket [4 poäng] När jag var liten kunde man tala så att ingen utom de invigda förstod vad man sa: hoheloltot obobegogroripoploligogtot Reglerna för det så kallade rövarspråket är enkla. Varje konsonant i ett ord byts ut mot: konsonanten, ett o och samma konsonant igen. Vokalena i ett ord lämnas som de är. Ordet hej blir hohejoj och kanelbulle skulle alltså kodas som "kokanonelolbobulollole". Jag har dessvärre förlorat förmågan att prata rövarspråket men du kanske kan skriva ett litet program som översätter en mening till rövarspråket. Antag att: strängar representeras som vanligt av en lista av ascii-värden meningar representerade som strängar, skrivna med gemener och utan punkt eller komma mellanslag nns i meningen och representeras av ascii-värdet 32 bokastaven o kan skrivas $o eller med ascii-värdet 111 vi har en funktion sound/1 som returnerar cons eller vowel beroende på om en bokstav är en konsonant eller vokal Din uppgift är att skriva en funktion rovare/1 som tar en mening och returnerar meningen skriven på rövarspråket. rovare([]) -> []; rovare([32 Text]) -> [32 rovare(text)]; rovare([char Text]) -> cons -> case sound(char) of [Char, $o, Char rovare(text)]; vowel -> [Char rovare(text)] end. 4
5 2.2 en hög [2 poäng] En hög (heap) kallas ett träd där alla del-träd (inklusive trädet själv) har sitt största element överst. Det betyder att man har direkt åtkomst åt högens största element men att det blir lite knepigare att ta bort det största elementet eller lägga till ett nytt. Algoritmen för att ta bort det största elementet (eller rättare sagt skapa en ny hög som innehåller alla element utom just det största) är som följer: Om trädet har en tom höger- eller västergren så är det rätt så enkelt, om inte så får vi ta och titta lite på de två grenarna. Antag att högergrenen är den gren som har det största värdet i sin rot. Skapa ett nytt träd som har en rot med elementet taget från roten från den högra grenen Det nya trädets vänstergren är identisk med det ursprungliga trädets vänstergren. Det nya trädets högergren är det träd man får om man tar bort roten från den ursprungliga högergrenen. Man gör naturligtvis på samma sätt om det är den vänstra grenen som har det största värdet. Om man tillämpar dessa regler rekursivt så kommer det skapade trädet ha egenskaperna av en hög. Beskriv hur trädet är representerat och deniera en funktion pop/1 som givet en hög returnerar en tupel {Elemen, Rest}, där Element är det största elementet och Rest den hög som ges om vi tar bort elementet, eller false om det inte nns något element (trädet är tomt). pop(nil) -> false; pop({node, E, nil, RH}) -> {E, RH}; pop({node, E, LH, nil}) -> {E, LH}; pop({node, E, LH, RH}) -> {node, L, _, _}=LH, {node, R, _, _}=RH, if L > R -> {L, Poped} = pop(lh), {E, {node, L, Poped, RH}}; true -> 5
6 end. {R, Poped} = pop(rh), {E, {node, R, LH, Poped}} 2.3 lägg till ett element [2 poäng] Om vi skall lägga till ett element i högen så kan vi göra det enkelt för oss. Om det nya elementet är mindre än trädets rot så lägger vi till det i trädets vänstra gren. Om det är större en dess nuvarande rot så skapar vi ett nytt träd med det nya elementet som rot och lägger sedan den gamla roten i dess vänstra träd. Metoden har sina nackdelar men vi förbiser dem för tillfället. Deniera en funktion insert/2 som tar ett element och en hög, och returnerar en ny hög där elementet har blivit tillagt. insert(n, nil) -> {node, N, nil, nil}; insert(nn, {node, E, LH, RH}) when N > E -> {node, N, insert(e, LH), RH}; insert(n, {node, E, LH, RH}) -> {node, E, insert(n, LH), RH}. 2.4 lite väl vänstervridet [2 poäng] Metoden ovan har ju problemet med att trädet kommer att vara ruskigt obalanserat, vi lägger ju aldrig till någonting i högergrenen. Gör en liten förändring som medför att vi kommer att lägga till element i omväxlande den vänstra och den högra grenen. n insert(n, nil) -> {node, N, nil, nil}; insert(n, {node, E, LH, RH}) when N > E -> {node, N, RH, insert(e, LH)}; insert(n, {node, E, LH, RH}) -> {node, E, RH, insert(n, LH)}. 2.5 lite mer eftertanke [2poäng*] Metoden ovan är väl inte helt optimal, även om det fungerar bra givet den lilla insats vi behövde göra. Om vi pop:ar några element från högen så kanske det hela tiden plockas upp element från dess vänstra gren, trädet skulle då bli lite obalanserat - något som vi inte kompenserar för när vi sen lägger till nya element. Om vi istället skall bemöda oss att försöka balansera trädet när vi lägger till nya element så måste vi hålla rätt på lite mer information. 6
7 Antag att varje nod innehåller inte bara ett element och de två delträden utan även en räknare som anger hur många element trädet har totalt. När vi skall lägga till ett nytt element så kan vi då välja att gå ner i den högra eller vänstra grenen beroende på vilken som är minst. Implementera insert/2 där du håller rätt på grenarnas storlekar och försöker hålla högen balanserad. insert(n, nil) -> {node, N, 1, nil, nil}; insert(n, {node, E, K, LH, RH}) -> LK = size_heap(lh), RK = size_heap(rh), if end. (N > E) and (LK < RK) -> {node, N, K+1, insert(e, LH), RH}; (N > E) -> {node, N, K+1, LH, insert(e, RH)}; (LK < RK) -> true -> {node, E, K+1, insert(n, LH), RH}; {node, E, K+1, LH, insert(n, RH)} size_heap(nil) -> 0; size_heap({node, _, K, _, _}) -> K. 3 Evaluering av uttryck Vi har under kursen arbetat med att beskriva hur ett språk kan denieras genom att formellt beskriva vilka termer, uttryck och datastrukturer vi har och hur vi med hjälp av regler kan beskriva vad som skall hända när vi evaluerar uttryck. De följande frågorna antar att vi har denierat ett litet funktionellt språk enligt de riktlinjer vi gått igenom. 3.1 evaluera ett uttryck [2 poäng] Evaluera följande uttryck, antag att σ = {X/{a, b}, Y/c}. Eσ(c) c Eσ(X) {a, b} Eσ({X, Y }) {{a, b}, c} 7
8 3.2 eq [2 poäng*] Det vore väl rätt så bra om vi i språket kunde ha en inbyggd funktion som kunde avgöra om två termer vara lika. Vi vill kunna skriva sekvenser som: X = a, Y = b, eq([x,b],[a,y]) Detta skall evalueras till datastrukturen true (och om de inte var lika till false). Det betyder att vi utökar mängden datastrukturer med två värden: true och false, men vi måste även utöka mänden uttryck (expressions) och ha en regel som beskriver vad som skall göras när vi stöter på vår nya konstruktion. Våra uttryck kan vi utöka genom att lägga till följande regler: eq ::= 'eq(' expression ',' expression ')' expression ::=... eq Vi måste även ha en regel som beskriver vad som skall göras när vi skall evaluera ett eq-uttryck. Vi tar för givet att vi kan avgöra om två datastrukturer är lika i.e. s t är antingen sant eller falskt. Hur skall vi skriva en regel för evalueringsfunktionen E? Eσ(eq(e 1, e 2 ) true om s 1 s 2 eller Eσ(eq(e 1, e 2 ) false om s 1 s 2 där Eσ(e i ) s i 3.3 if then else [4 poäng*] Antag att vi har löst uppgiften ovan (uttryck kan evalueras till true eller false) men att vi nu vill utöka språket till att kunna hantera if-then-else. Vi vill kunna skriva sekvenser som: X = b, if eq(x, a) then b else [X,c] Hur skall vi utöka mängden av uttryck i språket så att det inkluderar dessa? Beskriv med hjälp av BNF-notation de utökningar som vi måste göra för uttryck. if-then-else ::= 'if' expression 'then' expression 'else' expression expression ::=... if-then-else 8
9 Nu till den knepigare delen, hur skall vi utöka evalueringsfunktionen så att vi kan hantera våra nya uttryck? Eσ(if e 1 then e 2 else e 3 ) Eσ(e 2 ) om s 1 true eller Eσ(if e 1 then e 2 else e 3 ) Eσ(e 3 ) om s 1 false där Eσ(e 1 ) s 1 4 Komplexitet 4.1 pop ur en hög [2 poäng] Eftersom vi börjat med högar så kan vi väl fortsätta - vad är den asymptotiska tidkomplexiteten för funktionen pop/1 som vi denierade förut? Funktionen har tidskomplexitet O(lg(n)) där n är antalet element i högen. Varje operation måste, förutom att plocka bort översta elementet, låta element från en gren propagera uppåt. Längden på grenarna är naturligtvis O(lg(n)). 4.2 insert i en hög [2 poäng] Vad är den asymptotiska tidskomplexiteten för funktionen insert/2 som vi denierade förut? Även insert/2 har tidskomplexitet O(lg(n)) där n är antalet element i högen. Vi går ner i en gren för att hitta en plats att lägga till elementet men förstätter sen att uppdatera grenen till dess slut i.e. O(lg(n)) steg. (, - ok, om vi tittar på vår naiva insert/2 så kommer ju trädet att vara en lista och varje operation då ha en komplexitet på O(n).) 4.3 är detta vettigt [2 poäng*] Varför skall vi bemöda oss med att implementera en hög, vi skulle ju lika bra kunna lösa problemet med en ordnad lista. Det största elementet ligger först och skall vi lägga till ett så får vi väl jobba lite. Vad är den asymptotiska tidskomplexiteten för funktionerna pop/1 och insert/2 om vi använder en ordnad lista för att representera en hög? Är det vettigt att använda en trädrepresentation, vinner vi egentligen någonting? Om vi använder en lista så skulle pop/1 ha tidskomplexitet O(1) och insert/2 O(n) - det vi vinner på gungorna förlorar vi på karusellerna. Eftersom vi inte kan göra er pop-operationer än vi har gjort insert-operationer (varje element som vi pop:ar har vi någon gång lagt till) så är komplexiteten för att lägga till, och senare ta bort, ett element O(n). I fallet där vi har en trädstruktur så är motsvarande operationer O(lg(n)) i.e. betydligt bättre. 9
10 5 Concurrency 5.1 ätande losofer [2 poäng] De klassiska problemet med de ätande losoferna visar hur lätt vi kan hamna i en dead-lock. Nedan är ett exempel på hur vi skull kunna starta upp fem losofer; proceduren chop:start/0 startar en process som hanterar en pinne, proceduren filosopher:start/3 startar en process om givet två pinnar försöker äta sig mätt. Alla losofer implementerar samma algoritm: vakna, ta högra pinnen, ta vänstra pinnen, ät, lägg tillbaks pinnarna, losofera. dinner() -> A = chop:start(), B = chop:start(), C = chop:start(), D = chop:start(), E = chop:start(), filospher:start(sokrates, A, B), filospher:start(plato, B, C), filospher:start(aristotoles, C, D), filospher:start(euklides, D, E), filospher:start(hippias, E, A). Varför kommer dessa losofer troligtvis att förr eller senare hamna i ett deadlock? Gör en liten ändring i programmet ovan så att vi undviker problemet. Hur lyder en regel som man ibland kan följa för att undvika dead-lock? Vi får en dead-lock om alla losoferna vaknar och tar sin högra pinne. Vi kan undvika problemet genom att låta till exempel Hippias startas filospher:start(hippias, A, E) dvs han lyfter sin vänstra pinne först. Den generella regeln är att om alla tar låsen i samma ordning så undviker vi en situation där processer väntar på varandra. Det är inte alltid vi vet vilka lås som skall tas i förväg men väldigt ofta så fungerar denna enkla strategi. 5.2 parallell map [2 poäng] Antag att vi har en lista med element och att vi skall göra två saker; dels skall vi tillämpa en funktion på varje element (map) och sedan skall vi samla ihop alla resultaten (reduce). Båda operationerna är tunga och vi skulle tjäna på att parallellisera beräkningarna. Vi kan parallellisera map-fasen med följande implementation - där allt är givet utom funktionen collect/3. Argumentet Map är funktionen som skall tillämpa på varje element, Red är funktionen som skall reducera svaret, Acc är 10
11 den initiala ackumulatorn och Data den lista av element som vi skall arbetet med. pmap(map, Red, Acc, Data) -> Self = self(), F = fun(d) -> Ref = make_ref(), spawn(fun() -> Self! {res, Ref, Map(D)} end), Ref end, Refs = lists:map(f, Data), collect(refs, Red, Acc). Hur skulle du deniera funktionen collect/3 om den skall samla in alla svaren och sedan reducera dem (vänster till höger) med hjälp av funktionen Red som tar två argument: ett resultat och det ackumulerade värdet. collect([], _, Acc) -> Acc; collect([ref Refs], Red, Acc) -> receive {res, Ref, Res} -> end. collect(refs, Red, Red(Res, Acc)) 5.3 parallell reduce [4 poäng*] Lösning ovan har nackdelen att alla reduceringar kommer att göras sekvensiellt. Vi kanske inte har så mycket val om reduceringarna måste göras i den specicerade ordningen men om reduktionsoperationen var associativ så skulle vi kunna utföra operationerna parallellt (associativitet ger att ((A + B) + C) + D kan utföras (A + B) + (C + D) ). Det kräver kanske att vi jobbar lite mer när vi sparkar igång map-processerna men vi antar att själva beräkningarna är så tunga att det inte gör så mycket om vi lägger lite extra jobb på att få strukturen rätt. Deniera ppmap/4 där vi plockat bort den initiala operatorn i.e. att reducera ett element är elementet självt. Det tredje argumentet är istället en processid till vilken vi skall skicka resultatet av vår beräkningen (map och reduce). Vi struntar i fallet där listan av element är tom. Nedan är skelettkod som kan lösa problemet, fortsätt på den eller skriv en egen och antar att vi kan dela en lista på mitten med hjälp av lists:split/1. ppmap(map, _Red, Ctrl, [Elem]) -> 11
12 ppmap(map, Red, Ctrl, Data) -> : {Data1, Data2} = lists:split(data), : receive {res, Res1} -> receive {res, Res2} -> end. end ppmap(map, _Red, Ctrl, [Elem]) -> Ctrl! {res, Map(Elem)}; ppmap(map, Red, Ctrl, Data) -> Self = self(), {Data1, Data2} = lists:split(data), spawn(fun() -> ppmap(map, Red, Self, Data1) end), spawn(fun() -> ppmap(map, Red, Self, Data2) end), receive {res, Res1} -> receive {res, Res2} -> Ctrl! {res, Red(Res1, Res2)} end end. 12
Programmering II (ID1019) :00-12:00
ID1019 Johan Montelius Programmering II (ID1019) 2015-03-13 09:00-12:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren
Programmering II (ID1019) :00-11:00
ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren
Programmering II (ID1019) :00-11:00
ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren
Programmering II (ID1019) :00-12:00
ID1019 Johan Montelius Programmering II (ID1019) 2014-01-16 09:00-12:00 Förnamn: Efternamn: Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Programmering II (ID1019) :00-17:00
ID1019 Johan Montelius Programmering II (ID1019) 2014-03-10 14:00-17:00 Förnamn: Efternamn: Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Programmering II (ID1019) :00-12:00
ID1019 Johan Montelius Programmering II (ID1019) 2018-03-13 08:00-12:00 Instruktioner Betyg Svaren skall lämnas på dessa sidor, använd det utrymme som nns under varje uppgift för att skriva ner ditt svar.
Programmering II (ID1019) :00-12:00
ID1019 Johan Montelius Programmering II (ID1019) 2014-01-16 09:00-12:00 Förnamn: Efternamn: Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
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.
Programmering II (ID1019)
ID1019 Johan Montelius Instruktioner Betyg Programmering II (ID1019) 2019-03-08 Svaren skall lämnas på dessa sidor, använd det utrymme som nns under varje uppgift för att skriva ner ditt svar (inte på
Programmering II (ID1019) :00-13: hp
ID1019 Johan Montelius Programmering II (ID1019) 2016-03-19 09:00-13:00 7.5 hp Instruktioner Betyg Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Programmering II (ID1019) :00-12:00
ID1019 Johan Montelius Programmering II (ID1019) 2017-03-13 08:00-12:00 Instruktioner Betyg Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Omtentamen: Tillämpad Programmering (ID1218) :00-13:00
ID1218 Johan Montelius Omtentamen: Tillämpad Programmering (ID1218) 2012-06-12 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
Programmering II (ID1019) :00-13: hp
ID1019 Johan Montelius Programmering II (ID1019) 2016-03-19 09:00-13:00 7.5 hp Instruktioner Betyg Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00
Operativsystem ID2200 Tentamen TEN1 3.8 hp 2018-04-03 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Svaren skall lämnas på dessa
Operativsystem ID2206 Tentamen TEN1 4.5 hp :00-18:00
Operativsystem ID2206 Tentamen TEN1 4.5 hp 2018-04-03 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Svaren skall lämnas på dessa
Programmering II (ID1019) :00-13: hp
ID1019 Johan Montelius Programmering II (ID1019) 2016-06-10 09:00-13:00 7.5 hp Instruktioner Betyg Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Funktionell programmering DD1361
Funktionell programmering DD1361 Tupler Två eller fler (men ändligt) antal element. Elementen kan vara av olika typer. Ex: (1,2) :: (Integer, Integer) (( 2, hejsan ), True) ::? Tupel med två element ->
Föreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT07) Fredrik Lindblad 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat07 1 Innehåll
TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18
TDDC74 Programmering: Abstraktion och modellering Datortenta - 017-10-7, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis
Föreläsning 9 Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT07) Fredrik Lindblad 27 november 207 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/20/course/dat07 Innehåll 2
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
TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18
TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.
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
Rekursiva algoritmer sortering sökning mönstermatchning
Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 6-7 Rekursiva strukturer rekursiva definitioner rekursiva funktioner rekursiva bevis: induktion - rekursion strukturell
Tentamen Datastrukturer (DAT036)
Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2013-12-16, 14:00 18:00. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 15:00 och
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:
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
Programkonstruktion och. Datastrukturer
Programkonstruktion och Datastrukturer Repetitionskurs, sommaren 2011 Datastrukturer (Listor, Träd, Sökträd och AVL-träd) Elias Castegren elias.castegren.7381@student.uu.se Datastrukturer Vad är en datastruktur?
Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)
Programmönster: # Listan som sekvens, Rekursiv process Enkel genomgång av sekvens (element på toppnivån i en lista)) TDDC60 Programmering: abstraktion och modellering Föreläsning 5 Rekursiva och iterativa
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,
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
Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel
Data- och Programstrukturer Provmoment: Ladokkod: Tentamen ges för: Omtentamen NDP011 Systemarkitektprogrammet 7,5 högskolepoäng Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum:
Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2
Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.) - Iteratorer
Dagens föreläsning Programmering i Lisp Fö 5
Anders Haraldsson 1 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.3) - Iteratorer - Egenskaper
Abstrakta datatyper Laboration 2 GruDat, DD1344
Abstrakta datatyper Laboration 2 GruDat, DD1344 Örjan Ekeberg (fritt från en idé av Henrik Eriksson) 27 oktober 2008 Målsättning Målet med denna laboration är att ge en inblick i hur man kan använda abstrakta
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2 Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok,
TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014
TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt. Använd
Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)
Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201) Lars-Henrik Eriksson Fredag 5 april 2013, kl 14:00 17:00, i Polacksbackens skrivsal Hjälpmedel: Inga. Inte heller elektronisk
Operativsystem (IS1350) :00-12:00
Operativsystem (IS1350) 2017-03-15 08:00-12:00 Namn: Instruktioner Betyg Du får endast ha med dig skrivmateriel. Mobiler etc skall lämnas till tentamensvakterna. Svaren skall lämnas på dessa sidor, använd
Dugga Datastrukturer (DAT036)
Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre
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:
Tentamen Datastrukturer (DAT036)
Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2014-04-25, 14:00 18:00. Författare: Nils Anders Danielsson. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,
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.
Programkonstruktion och. Datastrukturer
Programkonstruktion och Datastrukturer Repetitionskurs, sommaren 2011 Datastrukturer (hash-tabeller och heapar) Elias Castegren elias.castegren.7381@student.uu.se Arrayer igen En array är en linjär datastruktur
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.
TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015
TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt. Använd
BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X
Algoritmer och Datastrukturer Kary FRÄMLING/Göran PULKKIS (v23) Kap. 7, Sid 1 BINÄRA TRÄD Träd används för att representera olika slags hierarkier som ordnats på något sätt. Den mest använda trädstrukturen
Tentamen Datastrukturer (DAT036)
Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2012-08-24, 8:30 12:30. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 9:30 och ca
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:
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
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
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
Tillämpad Programmering (ID1218) :00-13:00
ID1218 Johan Montelius Tillämpad Programmering (ID1218) 2013-06-04 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.
Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd
Innehåll Föreläsning 12 Sökträd Sökning Sökning och Sökträd 383 384 Binärt sökträd Används för sökning i linjära samlingar av dataobjekt, specifikt för att konstruera tabeller och lexikon. Organisation:
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
TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer
Tentamen i... TDDC30/725G63 Objektorienterad programmering i Java, datastrukturer och algoritmer Datum 2011-12-19 Tid 14-18 Provkod DAT1 Institution Institutionen för Datavetenskap (IDA) Jour Johan Janzén
Tentamen TEN1 HI
Tentamen TEN1 HI1029 2015-03-17 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
public boolean containskey(string key) { return search(key, head)!= null; }
Tentamen Programmeringsteknik II 2009-05-26 med lösningar Skrivtid: 0900-1200 Uppgifter 1. Programbilagan ListMap.java innehåller en klass som implementerar en avbildning mellan mängden strängar och mängden
Tentamen Datastrukturer D DAT 035/INN960
Tentamen Datastrukturer D DAT 035/INN960 21 december 2007 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,
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.
Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016
Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016 Algoritmanalys Inledning Exempel 1: x n När vi talade om rekursion presenterade vi två olika sätt att beräkna x n, ett iterativt: x n =
Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00
Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen 2019-04-16 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Anteckningarna lämnas
Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)
Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python) Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken
n Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?
Tidigare TDDC74 Programming: Abstraktion och modellering Föreläsning 4 Symboler, Par, Listor Representation av par, Grafisk notation för par Representation av listor mha par Typiska listhanteringsprocedurer
Dekomposition och dynamisk programmering
Algoritmer, datastrukturer och komplexitet, hösten 2016 Uppgifter till övning 3 Dekomposition och dynamisk programmering Max och min med dekomposition I vektorn v[1..n] ligger n tal. Konstruera en dekompositionsalgoritm
Hur man programmerar. Exempel på problemlösning i Python
Hur man programmerar Exempel på problemlösning i Python Problemet Som vokaler i engelska språket räknar vi i denna uppgift bokstäverna aeuio, och som konsonanter alla andra bokstäver utom y (y fungerar
Programmering II (ID1019) :00-12:00
ID1019 Johan Montelius Programmering II (ID1019) 2018-06-07 08:00-12:00 Instruktioner Betyg Svaren skall lämnas på dessa sidor, använd det utrymme som nns under varje uppgift för att skriva ner ditt svar.
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
Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5
Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5? FORTSÄTTNING TRÄD RECAP (förra föreläsningen) RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta
6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:
6 Rekursion 6.1 Rekursionens fyra principer Problem löses genom: 1. förenkling med hjälp av "sig själv". 2. att varje rekursionssteg löser ett identiskt men mindre problem. 3. att det finns ett speciellt
Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd
Programmeringsmetodik DV1 Programkonstruktion 1 Moment 8 Om abstrakta datatyper och binära sökträd PK1&PM1 HT-06 moment 8 Sida 1 Uppdaterad 2005-09-22 Tabeller En viktig tillämpning är tabellen att ifrån
JavaScript del 3 If, Operatorer och Confirm
JavaScript del 3 If, Operatorer och Confirm Under förra uppgiften så kollade vi på hur användaren kan ge oss information via promt(), vi använde den informationen både för att skriva ut den och för att
Kungliga Tekniska Högskolan Ämneskod 2D1370 Tentamensdag 2001-maj-31 Tentamen i Funktionell Programmering Skrivtid 4 h
Kungliga Tekniska Högskolan Ämneskod 2D1370 Nada Tentamensdag 2001-maj-31 Tentamen i Funktionell Programmering Skrivtid 4 h Antalet uppgifter : 4 ( 8p +10p + 10p +12p = 40 p) Lärare, jourhavande lärare
TDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2011-06-10 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Fredag 10 juni
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:
TDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2012-01-10 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Tisdag 10 januari
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. ***
13 Prioritetsköer, heapar
Prioritetsköer, heapar 31 13 Prioritetsköer, heapar U 101. En prioritetskö är en samling element där varje element har en prioritet (som används för att jämföra elementen med). Elementen plockas ut i prioritetsordning
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,
Föreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-27 Idag Balanserade sökträd Splayträd Skipplistor AVL-träd AVL-träd Sökträd Invariant (för varje nod): Vänster och höger delträd har samma
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,
Tentamen i Algoritmer & Datastrukturer i Java
Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2010-03-16 Skrivtid: 4 timmar Kontaktperson: Nicolina Månsson Poäng / Betyg: Max 44 poäng
DAI2 (TIDAL) + I2 (TKIEK)
TNTMN KURSNMN PROGRM: KURSTKNING XMINTOR lgoritmer och datastrukturer I2 (TIL) + I2 (TKIK) 2017/2018, lp 4 LT75 Uno Holmer TI ÖR TNTMN redagen den 1/8 2018, 08.0-12.0 HJÄLPML NSVRIG LÄRR atastrukturer
Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2
Självbalanserande träd AVL-träd Koffman & Wolfgang kapitel 9, avsnitt 1 2 1 Balanserade träd Nodbalanserat träd: skillnaden i antalet noder mellan vänster och höger delträd är högst 1 Höjdbalanserat träd:
Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö
Datastrukturer och algoritmer Föreläsning 4 Test, Stack och Kö 1 Innehåll Test Datatyperna Stack och kö Specifikation och Gränssnitt Konstruktion Tillämpning 2 Testa VIKTIGT! Test går att göra under många
Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen
Programkonstruktion Moment 8 Om abstrakta datatyper och binära sökträd Tabeller En viktig tillämpning är tabellen att ifrån en nyckel kunna ta fram ett tabellvärde. Ett typiskt exempel är en telefonkatalog:
Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två
Binära träd Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två gånger, talar man om binära träd. Sådana
TDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2011-01-11 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Tisdag 11 januari
Föreläsning 5 Datastrukturer (DAT037)
Föreläsning 5 Datastrukturer (DAT037) Nils Anders Danielsson, Fredrik Lindblad 2016-11-14 Förra gången: Cirkulära arrayer Prioritetskö Binära heapar Leftistheapar merge Det verkar inte gå att slå ihop
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
i=1 c i = B och c i = a i eller c i = b i för 1 i n. Beskriv och analysera en algoritm som löser detta problem med hjälp av dynamisk programmering.
Algoritmer och Komplexitet ht 8 Övning 3+4 Giriga algoritmer och Dynamisk programmering Längsta gemensamma delsträng Strängarna ALGORITM och PLÅGORIS har den gemensamma delsträngen GORI Denlängsta gemensamma
Exempel: Förel Rekursion III Nr 14. Uno Holmer, Chalmers,
Exempel: Kappsäcksproblemet Backtracking Dynamisk programmering Föreläsning (Weiss kap..-) Kan man ur en grupp föremål F,,F N med vikterna V,,V N välja ut en delgrupp som väger exakt M kilo? Exempel: föremål
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
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Träd Traversering Insättning, borttagning
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
TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12
TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.
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