Efficient array for solving sudoku problem

In Knuth’s example of Dancing Links and Algorithm X (DLX), pointers were used to connect the neighbors with each other. This has caused problems when DLX is used for parallelisation and to solve this some workaround is needed. One solution is to store the pointers as indicesin an array instead. The...

Full description

Bibliographic Details
Main Author: Foroutan Rad, Aria
Format: Others
Language:English
Published: Umeå universitet, Institutionen för datavetenskap 2018
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:umu:diva-155407
id ndltd-UPSALLA1-oai-DiVA.org-umu-155407
record_format oai_dc
spelling ndltd-UPSALLA1-oai-DiVA.org-umu-1554072019-01-16T05:58:10ZEfficient array for solving sudoku problemengEffektiv array för att lösa sudoku problem Spara grannar i Dancing Links utan pekareForoutan Rad, AriaUmeå universitet, Institutionen för datavetenskap2018Engineering and TechnologyTeknik och teknologierIn Knuth’s example of Dancing Links and Algorithm X (DLX), pointers were used to connect the neighbors with each other. This has caused problems when DLX is used for parallelisation and to solve this some workaround is needed. One solution is to store the pointers as indicesin an array instead. The purpose of this thesis is therefore answer how a solution based on indices compares time wise to a solution with pointers. A comparison was made by implementing two versions of DLX, one with pointers and one with indices. Each version was then used to solve sudoku puzzles and the time taken was measured. The result of this was that the representations had similar complexity but the representation with indices fell behind since each recursion took longer time compared to the representation with pointers. Therefore parallelisation is needed to put the representation with indices up to par with the represnetation with pointers. I Knuths exempel av Dancing Links och Algorithm X (DLX) användes pekare för att koppla ihop grannar med varandra. Problemet med denna lösning är att när DLX ska parallelliseras är det inte möjligt att använda sig av samma pekare. Istället måste en alternativ lösning hittas för detta problem och en lösning är att använda index i en array. Denna rapport kommer därmed ge ett svar på hur snabb en lösning med index är jämförtmed en representation med pekare genom att implementera två versioner av DLX, en med pekare och den andra med index. Resultatet av detta var att representationerna hade liknande komplexitet men array representationen tog längre tid än representationen med pekare eftersom att varje rekursion tog längre tid. Parallellisering behövs därav för att göra array representationen lika snabb som representationen med pekare. Student thesisinfo:eu-repo/semantics/bachelorThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:umu:diva-155407UMNAD ; 1173application/pdfinfo:eu-repo/semantics/openAccess
collection NDLTD
language English
format Others
sources NDLTD
topic Engineering and Technology
Teknik och teknologier
spellingShingle Engineering and Technology
Teknik och teknologier
Foroutan Rad, Aria
Efficient array for solving sudoku problem
description In Knuth’s example of Dancing Links and Algorithm X (DLX), pointers were used to connect the neighbors with each other. This has caused problems when DLX is used for parallelisation and to solve this some workaround is needed. One solution is to store the pointers as indicesin an array instead. The purpose of this thesis is therefore answer how a solution based on indices compares time wise to a solution with pointers. A comparison was made by implementing two versions of DLX, one with pointers and one with indices. Each version was then used to solve sudoku puzzles and the time taken was measured. The result of this was that the representations had similar complexity but the representation with indices fell behind since each recursion took longer time compared to the representation with pointers. Therefore parallelisation is needed to put the representation with indices up to par with the represnetation with pointers. === I Knuths exempel av Dancing Links och Algorithm X (DLX) användes pekare för att koppla ihop grannar med varandra. Problemet med denna lösning är att när DLX ska parallelliseras är det inte möjligt att använda sig av samma pekare. Istället måste en alternativ lösning hittas för detta problem och en lösning är att använda index i en array. Denna rapport kommer därmed ge ett svar på hur snabb en lösning med index är jämförtmed en representation med pekare genom att implementera två versioner av DLX, en med pekare och den andra med index. Resultatet av detta var att representationerna hade liknande komplexitet men array representationen tog längre tid än representationen med pekare eftersom att varje rekursion tog längre tid. Parallellisering behövs därav för att göra array representationen lika snabb som representationen med pekare.
author Foroutan Rad, Aria
author_facet Foroutan Rad, Aria
author_sort Foroutan Rad, Aria
title Efficient array for solving sudoku problem
title_short Efficient array for solving sudoku problem
title_full Efficient array for solving sudoku problem
title_fullStr Efficient array for solving sudoku problem
title_full_unstemmed Efficient array for solving sudoku problem
title_sort efficient array for solving sudoku problem
publisher Umeå universitet, Institutionen för datavetenskap
publishDate 2018
url http://urn.kb.se/resolve?urn=urn:nbn:se:umu:diva-155407
work_keys_str_mv AT foroutanradaria efficientarrayforsolvingsudokuproblem
AT foroutanradaria effektivarrayforattlosasudokuproblemsparagrannaridancinglinksutanpekare
_version_ 1718814132390592512