Sudokulösare: Jämförelse av körtider för backtracking och mänskliga strategier
|
|
- Rune Åström
- för 7 år sedan
- Visningar:
Transkript
1 DEGREE PROJECT, IN COMPUTER SCIENCE, SECOND LEVEL STOCKHOLM, SWEDEN 2015 Sudokulösare: Jämförelse av körtider för backtracking och mänskliga strategier SAMIUL A, MARK W KTH ROYAL INSTITUTE OF TECHNOLOGY CSC SCHOOL
2 Sudokulösare: Jämförelse av körtider för backtracking och mänskliga strategier SAMIUL ALAM MARK WONG Degree Project in Computer Science, DD143X Handledare: Jens Lagergren Examinator: Örjan Ekeberg CSC, KTH,
3 Sammanfattning Sudokulösare av alla typer är vida undersökta inom forskningsvärlden. Denna rapport undersöker skillnader i körtid och tidskomplexitet mellan backtracking strategin och mänskliga strategier för Sudokupussel indelade i klasser med ledtrådar. Backtracking jämförs med vår egen implementation av mänskliga strategier med testdata som innehåller 99 Sudokupussel för varje klass. Studien visar att både körtid och tidskomplexitet är mindre för mänskliga strategier än backtracking för varje klass. Slutsatsen visar att det alltid är lönsamt att implementera de mänskliga strategier som rapporten har undersökt. 2
4 Abstract Sudoku solvers are a widely researched topic among mathematicians and computer scientists. This report investigates the differences in execution time and time complexity between backtracking and human strategies for classes with clues. Backtracking is compared to our implementation of human strategies with test data that contains 99 Sudoku puzzles for each class. The study shows that the execution time and time complexity is improved for human strategies compared to backtracking for each class. The conclusion shows that it is always favorable to implement the human strategies investigated in the report. 3
5 Innehåll 1 Terminologi 5 2 Introduktion 6 3 Bakgrund Tidigare forskning Backtracking Villkorsprogrammering Mänskliga strategier Syfte Problemformulering Avgränsningar Metod Programmeringsspråk Sudokulösare med backtracking Sudokulösare med mänskliga strategier och backtracking Testdata Resultat Backtracking Mänskliga strategier Jämförelse av körtid Analys & Diskussion Metodkritik Slutsats 18 4
6 1 Terminologi Nyckelord som används i uppsatsen: rutnät - Spelplanen som består av 9x9 celler. zon - En kvadratisk enhet som består av 3x3 celler. Zonerna är fördelade så att det finns tre zoner på varje rad. cell - En kvadratisk ruta som kan innehålla inget eller en siffra mellan 1-9. ledtråd - Antalet ifyllda celler i ett rutnät vid en given probleminstans. latinsk kvadrat - En matris där elementen är ordnade så att varje rad och varje kolumn innehåller element av olika typ. kandidat - tillåtet värde i en cell. 5
7 2 Introduktion Sudoku är ett pussel som går ut på att fylla ett rutnät med siffror. Rutnätet för ett standard Sudoku är 9x9 rutor stort och indelat i nio zoner på 3x3 rutor var. Varje probleminstans består av ett rutnät med ett antal från början kända siffror sådant att det finns en unik lösning. Det är problemlösarens uppgift att från detta utgångsläge färdigställa probleminstansen genom att fylla i resten av cellerna. En giltig lösning har hittats då varje rad, kolumn samt zon innehåller siffrorna 1-9 endast en gång. Detta är alltså precis som konstruktionen av en latinsk kvadrat. Figur 1: Probleminstans med giltig lösning. 6
8 3 Bakgrund 3.1 Tidigare forskning Sudoku är ett väl undersökt ämne inom forskningsvärlden mycket på grund av dess popularitet och matematiska egenskaper. McGuire et al. (2013) har visat att det finns olika Sudoku. Vidare bevisade McGuire att det inte finns någon giltig Sudoku som innehåller färre än 17 ledtrådar. Kovacs (2012) har beskrivit olika typer av brute-force algoritmer och skillnaderna mellan dessa. Dessa algoritmer behöver i värsta fall testa alla möjliga lösningar tills en giltig lösning är funnen. Crook (2009) har undersökt en algoritm som är inspirerad av mänskliga strategier. Denna algoritm skiljer sig avsevärt från brute-force algoritmen eftersom den är kapabel till att göra smartare insättningar genom att utesluta otillåtna insättningar. Ett exempel är en probleminstans där en zon endast saknar en siffra. Brute-force algoritmen testar i värsta fall alla siffror från 1-9 medan denna algoritm utesluter de siffror som redan finns i zonen Backtracking En av brute-force algoritmerna som Kovacs har beskrivit går systematiskt igenom alla tomma celler från vänster till höger och uppifrån ned. I den första tomma cellen sätter algoritmen in en etta. Om insättningen inte strider mot spelreglerna går algoritmen vidare till nästa tomma cell och sätter in en etta. Om detta leder till en konflikt ökar vi siffran för den senaste insättningen. Vid fallet då alla möjliga siffror leder till en konflikt backar algoritmen till den senaste fungerande insättningen och ökar dess värde med ett. Algoritmen fortsätter tills en lösning är hittad. Denna algoritm kallas för backtracking. Till skillnad från en totalsökningsalgoritm utvärderar inte denna alla möjliga, inklusive felaktiga, lösningsförslag utan letar sig sakta men säkert till den korrekta. Algoritmens värsta-falls-komplexitet är O(n m ) där n är antal alternativ för en cell och m är antalet tomma celler i probleminstansen. Mer specifikt blir tidskomplexiteten för ett standard Sudokupussel i värsta fallet O(9 m ). Detta eftersom varje tom cell innebär nio alternativ till lösningsförslag. I och med att en given ledtråd i en probleminstans innebär en tom cell mindre att fylla i växer körtiden för denna algoritm exponentiellt när antalet ledtrådar minskar Villkorsprogrammering Villkorsprogrammering är ett programmeringsparadigm i vilket ett antal variabler med givna domäner skall tilldelas värden i enlighet med ett antal villkor. Sudoku kan angripas med villkorsprogrammering där villkor dessutom liknar mänskliga strategier. Simonis (2005) har undersökt och redogjort för denna strategi. 7
9 3.1.3 Mänskliga strategier Davis (2012) har beskrivit strategier som människor använder när de löser Sudoku. Dessa strategier är grundade i människans förmåga att se mönster och utesluta alternativ. Vidare har Davis rangordnat dessa strategier efter hur svåra de är att applicera för en människa. Nedan följer de första fyra av Davis mänskliga strategier. Unik frånvarande kandidat: I fallet då en rad, kolumn eller zon innehåller åtta siffror återstår endast en möjlig kandidat och placeras därmed i den enda tomma cellen. Naken singel: I fallet då en specifik kandidat enbart kan placeras i en cell tillhörande en rad, kolumn eller zon placeras den i den cellen. Gömd singel: En gömd singel uppstår när en siffra endast finns som kandidat för en cell i en rad, kolumn eller zon. Det som skiljer en gömd singel från en naken singel är att cellen med den gömda singeln kan inneha flera kandidater. Låst kandidat: Det kan hända att det finns en zon i vilken en kandidat endast kan placeras i celler som faller inom en av de tre möjliga raderna eller kolumnerna. I och med att kandidaten måste finnas just i denna zon kan den uteslutas som kandidat från resten av raden eller kolumnen. I värsta fallet har en probleminstans från början varken någon unik frånvarande singel, naken singel, gömd singel eller låst kandidat. Om man då väljer att från detta stadie lösa probleminstansen med backtracking blir värsta-falls-komplexiteten även för denna algoritm O(9 m ). 3.2 Syfte Uppsatsen undersöker skillnader mellan två olika typer av Sudokulösare. Mer specifikt jämför uppsatsen förändringar i körtiden för dessa Sudokulösare med avseende på antalet ledtrådar i probleminstansen. Den första algoritmen tillämpar endast backtracking. Den andra algoritmen inleder med mänskliga strategier. När algoritmen inte kan gå vidare med mänskliga strategier använder den backtracking för att komplettera probleminstansen. Det finns inga belägg för att svårighetsgraden på en probleminstans ökar för människor när antalet ledtrådar minskar. Däremot tar det längre tid för backtracking algoritmen att lösa en probleminstans med färre ledtrådar eftersom det finns fler tomma celler att behandla. Uppsatsen undersöker därför om mänskliga strategier underlättar för en dator när antalet ledtrådar minskar. Denna insikt 8
10 skapar förutsättningar för att framtida problemlösare ska göra strategiska val när de skapar sin egen Sudokulösare. 3.3 Problemformulering Hur jämför sig körtiden för backtracking algoritmen mot körtiden för backtracking med mänskliga strategier i Sudokuproblemet med avseende på antalet ledtrådar? Avgränsningar Vi kommer endast implementera tre av de beskrivna mänskliga strategierna. 1. Unik frånvarande singel 2. Naken singel 3. Gömd singel Probleminstanserna delas upp i 5 klasser där varje klass innehåller 99 probleminstanser. Testklasserna innehåller 17, 18, 19, 20 och 21 ledtrådar. 9
11 4 Metod 4.1 Programmeringsspråk Vi har valt att implementera algortimerna i Java som är ett objektorienterat högnivåsspråk. Även om Java inte presterar lika bra som ett kompilerat lågnivåsspråk som C eller C++ med avseende på körtid ger båda språken samma insikt eftersom det är förhållandet mellan körtiderna för de olika algoritmerna vi vill undersöka. Vidare är Java plattformsoberoende vilket underlättar replikation av vår undersökning. Vidare beräknas den genomsnittliga körtiden för respektive algoritm och resultaten sammanställs för analys. För att beräkna körtid används Javas inbyggda metod System.nanoTime(). Enligt Java-dokumentationen (2015) ger detta den mest precisa tidsmätningen. 4.2 Sudokulösare med backtracking 1 SudokuSolver(Matrix m): 2 Börja i det övre vänstra hörnet.; 3 foreach tom cell c i M do 4 for i 1:9 do 5 if i är en tillåten insättning then 6 c i 7 if SudokuSolver(M) is true then 8 return true; 9 else 10 c 0; 11 end 12 end 13 end 14 return false; 15 end 16 return true; Figur 2: Pseudokod för backtracking algoritmen Backtracking algoritmen för Sudokuproblem har gjorts och publicerats tidigare (Stanford, 2008). Eftersom teorin bakom backtracking är trivial kan vi med fördel återanvända en befintlig implementation och därmed undvika att återuppfinna hjulet. Se pseudokoden från Stanford i figur 2. Backtracking algoritmen börjar i det övre vänstra hörnet och identifierar den första tomma cellen. Algoritmen undersöker här om en etta är en tillåten insättning. I fallet då insättningen inte är tillåten provar den istället nästa tal upp till 10
12 och med nio tills det går. I en probleminstans kan det finnas flera tillåtna insättningar i en tom cell. Givet en giltig probleminstans kommer ett av dessa tal garanterat vara en korrekt insättning. I fallet då insättningen i en tom cell är tillåten går algoritmen vidare och itererar samma process i nästa tomma cell. Här är det inte garanterat att någon av de nio siffrorna är korrekta eftersom den föregående insättningen kan vara tillåten men inte korrekt. I det fallet backar algoritmen till den föregående insättningen och inkrementerar den. Algoritmen fortsätter tills den har fyllt alla tomma celler med den korrekta insättningen. Denna algoritm är den som anses vara den mest primitiva algoritmen efter totalsökningsalgoritmen. Det är därför lämpligt att använda backtracking algoritmens körtid och komplexitet som referensvärde vid utvärdering av mänskliga strategier. 4.3 Sudokulösare med mänskliga strategier och backtracking 1 HumanWithBacktracking(Matrix m): 2 Skapa en kandidatlista för varje tom cell; 3 while Det finns celler med endast en kandidat i kandidatlistan do 4 Insättning av kandidat i cellen; 5 Borttagning av kandidat från kandidatlistorna i cellerna på raden; 6 Borttagning av kandidat från kandidatlistorna i cellerna på kolumnen; 7 Borttagning av kandidat från kandidatlistorna i cellerna på zonen; 8 end 9 Börja i det övre vänstra hörnet; 10 foreach tom cell c i M do 11 for i in kandidatlista do 12 if i är en tillåten insättning then 13 c i 14 if SudokuSolver(M) is true then 15 return true; 16 else 17 c 0; 18 end 19 end 20 end 21 return false; 22 end 23 return true; Figur 3: Pseudokod för mänskliga strategier med backtracking 11
13 Algoritmen med mänskliga strategier implementerar tre av Davis (2012) strategier: unik frånvarande singel, naken singel och gömd singel. Algoritmen skapar en kandidatlista för varje tom cell i probleminstansen. Sedan söker den efter de tomma celler vars kandidatlistor endast innehåller en kandidat. Den kandidaten sätts in i cellen. Sedan tas detta värde bort från kandidatlistorna för de tomma cellerna i samma rad, kolumn och zon. Som konsekvens kan detta leda till att fler celler härefter endast har en kandidat. Dessa fylls i på samma sätt. Denna process itereras tills inga fler celler har endast en kandidat. Därefter löses resten av probleminstansen med backtracking. Dessa strategier är de mest grundläggande ur ett implementationsperspektiv. Att undersöka dessa ger en inblick i hur mänskliga strategier påverkar körtiden. 4.4 Testdata För att besvara frågeställningen körs båda algoritmerna med samma testfall. För att ta hänsyn till anomalier bland probleminstanser behövs en stor mängd testdata för respektive grupp av pussel. Eftersom det inte finns probleminstanser med färre än 17 ledtrådar innehåller första klassen probleminstanser med 17 ledtrådar. För att se hur körtiderna förändras i takt med att antalet ledtrådar ökar undersöks även körtider för probleminstanser med 18 till 21 ledtrådar. Båda algoritmerna kräver en giltig probleminstans för att returnera en unik lösning. Alla testfall genereras därför med hjälp av Ericsons (2015) Sudokugenerator som beskriver en probleminstans med hjälp av siffror. Symbolerna - och! används som avskiljare för radslut och zonslut. Ericsons (2015) probleminstanser konverteras sedan till 2D vektorer i Java enligt formatet i figur 4. Figur 4: Indata för ett Sudokupussel med 17 ledtrådar. 12
14 5 Resultat 5.1 Backtracking Figur 5 visar den genomsnittliga körtiden för backtracking i nanosekunder för en probleminstans i respektive probleminstansklass. Ledtrådar Körtid ( ns) Figur 5: Genomsnittlig körtid per probleminstans för Sudokulösare med mänskliga strategier. 5.2 Mänskliga strategier Figur 6 visar den genomsnittliga körtiden för mänskliga strategier i nanosekunder för en probleminstans i respektive probleminstansklass. Figur 7 visar det högsta antalet singlar i en probleminstans och det genomsnittliga antalet singlar per probleminstans för varje klass. Figur 8 visar det genomsnittliga antalet kandidater som varje tom cell innehöll efter initialiseringen av probeminstansens kanddiatlistor. Ledtrådar Körtid ( ns) Figur 6: Genomsnittlig körtid per probleminstans för Sudokulösare med backtracking. Ledtrådar Högsta antalet singlar Singlar per probleminstans Figur 7: Genomsnittlig fördelning av singlar över 99 probleminstanser för varje klass. 13
15 Ledtrådar Kandidater per ruta Figur 8: Genomsnittligt antal kandidater per tom ruta efter mänskliga strategier. 5.3 Jämförelse av körtid Figur 9 visar förhållandet mellan de genomsnittliga körtiderna för backtracking och mänskliga strategier. De blå staplarna visar körtider för backtracking. De gula staplarna visar körtider för mänskliga strategier. Figur 10 visar den procentuella minskningen av körtid för mänskliga strategier jämfört med backtracking. Figur 9: Körtider backtracking (blå) jämfört med mänskliga strategier (gul) 14
16 Figur 10: Procentuell minskning av körtid med mänskliga strategier. 15
17 6 Analys & Diskussion Körtiderna för båda algoritmerna minskar när antalet ledtrådar ökar. Detta beror på att båda algoritmerna har färre tomma celler att behandla. I figur 9 och 10 ser vi att mänskliga strategier ger en förbättrad körtid för varje probleminstansklass. Detta innebär att vår implementation av Davis (2012) första tre mänskliga strategier har varit gynnsamma. I figur 8 ser vi att det genomsnittliga antalet kandidater per ruta minskar när antalet ledtrådar ökar. Mer intressant är att antalet kandidater per ruta halveras när mänskliga strategier har eliminerat de alternativ som leder till konflikt. Antalet kandidater per ruta för samtliga probleminstansklasser ligger inom intervallet (4,5). Mänskliga strategier algoritmen går därefter vidare med backtracking och har då i snitt 4-5 kandidater att prova. Detta ger en genomsnittlig tidskomplexitet på nära O(4 m ) för probleminstanser med 21 ledtrådar och en genomsnittlig tidskomplexitet på närmare O(5 m ) när antalet ledtrådar går mot 17. Det är en av orsakerna till den förbättring av körtid som uppstår när mänskliga strategier används jämfört med backtracking som alltid har en tidskomplexitet på O(9 m ). Den markanta skillnaden mellan algoritmernas tidskomplexitet översätts dock inte direkt till exponentiellt bättre körtid. Det tar tid för algoritmen med mänskliga strategier att förminska antalet tomma celler i indatat innan den påbörjar backtracking. Se hur algoritmen itererar över alla celler i probleminstansen och skapar en kandidatlista i kodavsnittet nedan. Den modifierade backtracking som algoritmen med mänskliga strategier använder är dessutom långsammare än enbart backtracking. Detta beror på att algoritmen itererar över alla tomma celler i probleminstansen och söker efter celler som endast har en kandidat. När den kandidaten fylls i itererar algoritmen över alla tomma celler i samma rad, kolumn och zon som den ifyllda cellen och tar bort den ifyllda siffran ifall den finns i de andra cellenrnas kandidatlista. Se även detta i kodavsnittet nedan. Det är många operationer som backtracking algoritmen inte gör. Däremot behöver algoritmen med mänskliga strategier endast iterera över kandidater för varje tom cell jämfört med backtracking algoritmen som itererar över alla tal från ett till nio. Som konsekvens blir körtiden bättre med mänskliga strategier. 1 /** 2 * Creates a candidatelist for every empty cell in the grid. 3 * Then calls removecandidates to remove conflicting 4 * candidates. 5 */ 6 public void initcandidates(int[][] grid) { 7 for(int j = 0; j<9; j++) { 8 for(int i = 0; i<9; i++) { 9 if(grid[i][j] == 0) { 10 cmatrix[i][j] = new Candidates(); 11 removecandidates(grid,i,j); 16
18 } /** 16 * Finds cells with only one candidate and fills them in. 17 * Consequently removes conflicting canidates in other cells. 18 */ 19 public void findhiddensingles(int[][] grid) { 20 for (int row = 0; row < grid.length; row++) { 21 for (int col = 0; col < grid.length; col++) { 22 if (grid[row][col] == 0) { 23 if(cmatrix[row][col].candidatelist.size() == 1) { 24 int num = cmatrix[row][col].candidatelist.get(0); 25 grid[row][col] = num; 26 removeinsertedcandidate(grid, row, col, num); } I figur 9 och 10 ser vi att körtidstrenden för båda algoritmerna går mot kortare körtider. Störst förbättring mellan algoritmerna sker vid problemsinstanser med 19 ledtrådar. Mänskliga algoritmer ger där en körtid som är 49% bättre än backtracking. Det kan bero på att vår testdata innehåller olika jämn spridning av ledtrådar i de olika testklasserna eller innehåller olika många probleminstanser som går att lösa snabbt. För att få svar på varför skillnaden är störst vid probleminstanser med 19 ledtrådar rekommenderar vi en undersökning av hur spridningen av ledtrådar påverkar körtiden för båda algoritmerna. Alternativt kan fler testfall användas för att jämna ut skillnaden mellan enskilda probleminstanser och därmed minska variansen. 6.1 Metodkritik För att potentiellt förbättra körtiden kan fler av Davis mänskliga strategier implementeras. Det är dock viktigt att väga tidskostnaderna för de nya strategierna mot resultatet. En ineffektiv implementation kan leda till högre tidskomplexitet och därmed försämrad körtid. Metoden kan också utvidgas till att undersöka probleminstansklasser med fler ledtrådar. Det är nödvändigt att undersöka om körtidstrenden fortsätter när antalet ledtrådar ökar eller om det finns en punkt då tidsvinsten är försumbar. I det senare fallet vore det till exempel mer ekonomiskt med avseende på minne att använda backtracking algoritmen. I denna undersökning används enbart 99 testfall för varje probleminstansklass. Det är en liten andel av antalet probleminstanser som existerar för Sudokuproblemet. För att öka trovärdigheten i resultaten bör därför fler testfall användas när Sudokulösare undersöks. 17
19 7 Slutsats Körtiden för mänskliga strategier är avsevärt bättre än backtracking för alla probleminstansklasser som rapporten undersökt. Detta beror på att tidskomplexiteten för mänskliga strategier blir mindre än för backtracking. Störst skillnad mellan algoritmerna uppstår vid probleminstanser med 19 ledtrådar. För probleminstanser med 20 och 21 ledtrådar blir den absoluta tidsskillnaden mindre men den procentuella förbättringen är fortfarande betydande. Undersökningen har därmed visat att det lönar sig att implementera de mänskliga strategier som rapporten undersökt mot att endast använda backtracking vid konstruktion av en Sudokulösare. 18
20 Referenser [1] JF Crook. A pencil-and-paper algorithm for solving sudoku puzzles. Notices of the AMS, 56(4): , [2] Tom Davis. The mathematics of sudoku, [3] Kjell Ericson. Generate and solve sudoku [4] Tim Kovacs. Artificial intelligence through search: Solving sudoku puzzles [5] Gary McGuire, Bastian Tugemann, and Gilles Civario. There is no 16- clue sudoku: Solving the sudoku minimum number of clues problem. arxiv preprint arxiv: , [6] Helmut Simonis. Sudoku as a constraint problem. In CP Workshop on modeling and reformulating Constraint Satisfaction Problems, volume 12, pages Citeseer, [7] Julie Zelenski. Lecture 11: Programming abstractions. University Lecture, Stanford University,
21
Handledare: Mikael Goldmann
2012-02- 23 Jacob Rydh Robert Hedin Sudoku Solver Projektspecifikation Handledare: Mikael Goldmann Introduktion Vi ska studera och utforma olika algoritmer för att lösa Sudoku puzzel. Vi kommer testa olika
Läs merLösning av Sudoku med mänskliga strategier
Lösning av Sudoku med mänskliga strategier DD143X, Examensarbete i datalogi om 15 högskolepoäng vid Programmet för datateknik 300 högskolepoäng JOHAN BRODIN, JBRODI@KTH.SE JONATHAN PELLBY, JONATHP@KTH.SE
Läs merDatastrukturer. föreläsning 3. Stacks 1
Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer
Läs merTentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: 2:a september 200, klockan 8:30-12:30. Plats: V Ansvarig lärare: Katarina Blom, tel 772 10 0. Läraren besöker tentamen kl 9:30
Läs merLösningsförslag tentamen FYTA11 Java
Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Lösningsförslag tentamen FYTA11 Java Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade
Läs merDugga 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
Läs merKompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Läs merTentamen, EDA501/EDAA20 Programmering M MD W BK L
LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, EDA501/EDAA20 Programmering M MD W BK L 2017 05 31, 8.00 13.00 Anvisningar: Preliminärt ger uppgifterna 9 + 12 + 10 + 9 = 40 poäng.
Läs merAlgoritm för Sudokulösning med mänskliga strategier. ROBERT HEDIN och JACOB RYDH
Algoritm för Sudokulösning med mänskliga strategier ROBERT HEDIN och JACOB RYDH Examensarbete Stockholm, Sverige 2012 Algoritm för Sudokulösning med mänskliga strategier ROBERT HEDIN och JACOB RYDH DD143X,
Läs merFöreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.
Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera
Läs merLösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004
Lösningsförslag Programmeringsmetodik, KV: Java och OOP 17 januari 2004 Examinator: Johan Karlsson Skrivtid: 9-15 Hjälpmedel: En av följande böcker: Barnes & Kölling: Objects First With Java a practical
Läs merAlgoritmer, 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 merFöreläsning 4: Kombinatorisk sökning
DD2458, Problemlösning och programmering under press Föreläsning 4: Kombinatorisk sökning Datum: 2009-09-25 Skribent(er): Kristina Nylander, Dennis Ekblom, Marcus Öman Föreläsare: Fredrik Niemelä 1 Introduktion
Läs merAlgoritm för Sudokulösning med mänskliga strategier
Kungliga Tekniska Högskolan Algoritm för Sudokulösning med mänskliga strategier Jacob Rydh Hornsgatan 98 118 21 Stockholm 076-309 43 10 jacobry@kth.se Robert Hedin Sandhamnsgatan 58 115 28 Stockholm 076-107
Läs merTDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av
Läs merTentamen 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 merAlgoritmer, 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 merAvbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4
Avbildningar och hashtabeller Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4 1 2 Mängder i Java 3 Mängd-gränssnittet Set vs. List Mängder får endast innehålla unika element: Metoden.add(E) returnerar
Läs merGrundläggande datalogi - Övning 4
Grundläggande datalogi - Övning 4 Björn Terelius November 21, 2008 Definitioner Olika mått på komplexitet Definition En funktion f sägs vara O(g) om det existerar konstanter c, N så att f (n) < cg(n) för
Läs merFö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 merTentamen 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 merObjektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
Läs merSö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 merFöreläsning 8: Exempel och problemlösning
TDA 545: Objektorienterad programmering Föreläsning 8: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 De tre senaste föreläsningarna Läsanvisning: kap 2 & 13 meddelanden och
Läs merProgrammering 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 merAlgoritmer, 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 merProgrammering 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 merBakgrund 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 merProgrammering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
Läs merEn studie om styrkor och svagheter hos sudokulösande algoritmer
En studie om styrkor och svagheter hos sudokulösande algoritmer Emanuel Yifter Lindgren Emanuel Yifter Lindgren VT 2014 Examensarbete, 15 hp Handledare: Marie Nordström Examinator: Pedher Johansson Kandidatprogrammet
Läs merGrafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4
Grafer, traversering Koffman & Wolfgang kapitel 1, avsnitt 4 1 Traversering av grafer De flesta grafalgoritmer innebär att besöka varje nod i någon systematisk ordning precis som med träd så finns det
Läs merAlgoritmer, 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 merAnmä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
Läs merLösningsförslag till tentamen i EDA011, lördagen den 16 december 2006
Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006 Detta lösningsförslag är skrivet i stor hast, så det är möjligt att det innehåller en del slarvfel jag ber i så fall om ursäkt för
Läs merTDDI16 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 merDatastrukturer 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 merDet finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 202-0-25 Skrivtid: 400-700 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Läs merTentamen 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
Läs merDeklarativ programmering
Kursens mål Deklarativ programmering Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap Linköpings universitet 2008-02-26 redogöra för och använda reguljära uttryck använda XML för att definera
Läs merTentamen TEN1 HI1029 2014-05-22
Tentamen TEN1 HI1029 2014-05-22 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
Läs merOBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2
Institutionen för Data- och informationsteknik JSk TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Övningstentamen 2 TID: 4 timmar Ansvarig: Betygsgränser: Hjälpmedel: Jan Skansholm Sammanlagt maximalt
Läs merI Skuggan av Spotify
DEGREE PROJECT, IN MEDIA TECHNOLOGY, FIRST LEVEL STOCKHOLM, SWEDEN 2015 I Skuggan av Spotify HAR STREAMING AV MUSIK FÖRÄNDRAT SYNEN PÅ ARTISTEN? BEATRICE HALLMARK, DAVID NYLANDER KTH ROYAL INSTITUTE OF
Läs merTDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Algoritmanalys Tidskomplexitet, Rumskomplexitet
Läs merBlockkedjor. en introduktion för datavetare. Rikard Hjort, 24 maj 2019
Blockkedjor en introduktion för datavetare Vem är jag? Varför ska ni lära er om blockkedjor? Alla ska gå härifrån och kunna... förklara Bitcoin är uppbyggt bygga en egen blockkedja läsa på själva om blockkedjeprojekt
Läs merGraphs (chapter 14) 1
Graphs (chapter ) Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges) en båge är ett par (a, b) av två noder en båge kan vara cyklisk peka på sig själv
Läs merFöreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 1 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 merExempeltenta GruDat 2002/2003
Exempeltenta GruDat 2002/2003 Endast ett svarsalternativ på varje fråga är korrekt. Felaktigt svar eller felaktigt antal ikryssade svarsalternativ ger noll poäng på uppgiften. Obs: Den riktiga tentan kommer
Läs merProgrammeringsuppgift Game of Life
CTH/GU STUDIO TMV06a - 0/0 Matematiska vetenskaper Programmeringsuppgift Game of Life Analys och Linär Algebra, del A, K/Kf/Bt Inledning En cellulär automat är en dynamisk metod som beskriver hur komplicerade
Läs merUtvärdering av sudokulösare baserade på mänskliga lösningstekniker
Utvärdering av sudokulösare baserade på mänskliga lösningstekniker En jämförelse med Dancing links som referensalgoritm ERICA BRONGE JAKOB SUNDH Kandidatexamensrapport vid CSC, DD143X Handledare: Alexander
Läs merDatastrukturer 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 merFö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
Läs merLösningsförslag till exempeltenta 1
Lösningsförslag till exempeltenta 1 1 1. Beskriv hur binärsökning fungerar. Beskriv dess pseudokod och förklara så klart som möjligt hur den fungerar. 2 Uppgift 1 - Lösning Huvudidé: - Titta på datan i
Läs mer1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)
UMEÅ UNIVERSITY Department of Mathematics and Mathematical Statistics Pre-exam in mathematics Linear algebra 2012-02-07 1. Compute the following matrix: (2 p 3 1 2 3 2 2 7 ( 4 3 5 2 2. Compute the determinant
Läs merFöreläsning 8 Innehåll
Föreläsning 8 Innehåll Orientering om samarbete om Eclipse-projekt med git Orientering om konstruktion av användargränssnitt i Android Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering
Läs merTentamen, EDAA10 Programmering i Java
LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, EDAA10 Programmering i Java 2017 04 20, 14.00 19.00 Anvisningar: Preliminärt ger uppgifterna 4 + 6 + 13 + 7 + 15 = 45 poäng. För godkänt
Läs mer13 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
Läs merF4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Läs merSemantic and Physical Modeling and Simulation of Multi-Domain Energy Systems: Gas Turbines and Electrical Power Networks
DEGREE PROJECT IN ELECTRICAL ENGINEERING, SECOND CYCLE, 30 CREDITS STOCKHOLM, SWEDEN 2017 Semantic and Physical Modeling and Simulation of Multi-Domain Energy Systems: Gas Turbines and Electrical Power
Läs mer8 < x 1 + x 2 x 3 = 1, x 1 +2x 2 + x 4 = 0, x 1 +2x 3 + x 4 = 2. x 1 2x 12 1A är inverterbar, och bestäm i så fall dess invers.
MÄLARDALENS HÖGSKOLA Akademin för utbildning, kultur och kommunikation Avdelningen för tillämpad matematik Examinator: Erik Darpö TENTAMEN I MATEMATIK MAA150 Vektoralgebra TEN1 Datum: 9januari2015 Skrivtid:
Läs merOBJEKTORIENTERAD PROGRAMVARUUTVECKLING
Institutionen för Data- och informationsteknik TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer. Denna tentamen gäller
Läs merTentamen 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 merDatastrukturer, 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 merFöreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.
Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera
Läs merDatastrukturer 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 merTentamen 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 merTentamen på kursen DA7351, Programmering 1. 051102, kl 08.15-12.15. Malmö högskola Teknik och samhälle. DA7351, Programmering 1 1 051102
Tentamen på kursen DA7351, Programmering 1 051102, kl 08.15-12.15 Tillåtna hjälpmedel: Valfri bok om Java. Vid bedömning av lösningarna tas hänsyn till om dessa uppfyller de krav på programkvalitet (strukturering,
Läs merKonvexa höljet Laboration 6 GruDat, DD1344
Konvexa höljet Laboration 6 GruDat, DD1344 Örjan Ekeberg 10 december 2008 Målsättning Denna laboration ska ge dig övning i att implementera en algoritm utgående från en beskrivning av algoritmen. Du ska
Läs merpublic static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }
Rekursion 25 7 Rekursion Tema: Rekursiva algoritmer. Litteratur: Avsnitt 5.1 5.5 (7.1 7.5 i gamla upplagan) samt i bilderna från föreläsning 6. U 59. Man kan definiera potensfunktionen x n (n heltal 0)
Läs merFö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 merTentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!
Tentamen Programmeringsteknik II 2014-01-09 Skrivtid: 0800-1300 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja
Läs merFö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 merTenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00
1 ( 7) Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker/kompendier (ej anteckningar,
Läs merAtt lösa Sudoku. Metoden Solve (börjar nedtill på sid 3)
Att lösa Sudoku Problem av matematisk natur kan ofta snabbt lösas med dator och lite programmering. Därför har sällan matematiska pussel som Sudoku lockat att lösa för hand, men jag har länge tänkt att
Läs merTentamen 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
Läs merFöreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
Läs merTentamen , Introduktion till Java, dtaa98, dtea53
Mittuniversitetet 2007-09-01 Institutionen för informationsteknologi och medier Sid:1(3) dtaa98, dtea53 Martin Kjellqvist; Linda Karlsson, Ulf Reiman Lösningsansatser Tentamen 2007-09-01, Introduktion
Läs merTENTAMEN 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 merAbstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.
-Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och
Läs merDatastrukturer. 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 merFöreläsning 7: Syntaxanalys
DD2458, Problemlösning och programmering under press Föreläsning 7: Syntaxanalys Datum: 2007-10-30 Skribent(er): Erik Hammar, Jesper Särnesjö Föreläsare: Mikael Goldmann Denna föreläsning behandlade syntaxanalys.
Läs merTentamen Programmeringsteknik II Inledning. Anmälningskod:
Tentamen Programmeringsteknik II 2016-01-11 Inledning I bilagan finns ett antal mer eller mindre ofullständiga klasser. Några ingår i en hierarki: List, SortedList, SplayList och ListSet enligt vidstående
Läs merFöreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
Läs merTentamen FYTA11 Javaprogrammering
Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Tentamen FYTA11 Javaprogrammering Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade
Läs merDatastrukturer 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
Läs merLaboration: Whitebox- och blackboxtesting
Tilda11 höstterminen 2011 Laboration: Whitebox- och blackboxtesting Mål med laborationen Du ska lära dig begreppen white-box testing och black-box testing Du ska öva dig på att konstruera testfall Du ska
Läs merLö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 merFö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 merLösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19 1. a) En samling element där insättning och borttagning
Läs merLösningsförslag till omtentamen för TDA540 Objektorienterad Programmering
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-6, TDA540 Dag: 207-0-24, Tid: 4.00-.00 Uppgift a) En abstrakt klass kan inte instansieras,
Läs merTentamen 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,
Läs merLösningsförslag till tentamen Datastrukturer, DAT037,
Lösningsförslag till tentamen Datastrukturer, DAT037, 2018-01-10 1. Båda looparna upprepas n gånger. s.pop() tar O(1), eventuellt amorterat. t.add() tar O(log i) för i:te iterationen av första loopen.
Läs merFöreläsning 7. Träd och binära sökträd
Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Läsanvisningar och
Läs merOMTENTAMEN 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 merFöreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-02 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Tidskomplexitet
Läs merTentamen ID1004 Objektorienterad programmering October 29, 2013
Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.
Läs merUppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer
F6 Observera att när man utvecklar program så är inte alla lösningar på vägen korrekta. Speciellt den här gången så finns många OH med program som inte fungerar eftersom det är just det vi skall se på
Läs merFöreläsning 5. Rekursion
Föreläsning 5 Rekursion Föreläsning 5 Algoritm Rekursion Rekursionsträd Funktionsanrop på stacken Binär sökning Problemlösning (möjliga vägar) Algoritm En algoritm är ett begränsat antal instruktioner/steg
Läs merDeklarativ programmering
Deklarativ programmering TDP007 Konstruktion av datorspråk Föreläsning 7 Peter Dalenius Institutionen för datavetenskap 2014-03-03 Deklarativ programmering Program skrivet i ett deklarativt språk logikspråk,
Läs merRekursion. Koffman & Wolfgang kapitel 5
Rekursion Koffman & Wolfgang kapitel 5 1 Rekursivt tänkande Rekursion reducerar ett problem till en eller flera enklare versioner av samma problem. med enklare menas att underproblemen måste vara mindre,
Läs merFöreläsning 1 Datastrukturer (DAT037)
Föreläsning 1 Datastrukturer (DAT037) Fredrik Lindblad 1 30 oktober 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