hvilke problemer kan programmer have med at løse sudokuer?
Hei vi er ved at lave et projekt med et program til sudokuløsning, og i den forbindelse vil vi gerne vide hvad der gør at et program har problemer med at løse visse sudokuer? det har naturligvis noget at gøre med hvordan programmet er opbygget, men kan man sige noget gennerelt om f.eks. størrelsen af sudokuen, antal tal placeret ved start, hvor de er placeret ved start og lignende?
Jeg kan desværre ikke henvise til nogen kilder, men Sudoku-problemet er et såkaldt NP-komplet problem. Det betyder, at for at finde det bedste resultat, skal programmet løse samtlige tal-kombinationer. Det man så gør med NP-komplette problemer er, at man anvender en heuristisk tilgang.
Det er dette NP-komplette problem der er det centrale problem for løsning af en Sudoku.
Der er ikke nogen definerbare mønstre som giver problemer.
Hovedsagen er at sudokuer er kombinatoriske problemer, dvs. at de som udgangspunkt kan løses ved at afprøve samtlige forskellige kombinationer.
Der er blot alt for mange forskellige muligheder til at det er muligt indenfor en rimelig tid at afprøve dem alle. Derfor må et sudokuløsningsprogram ligesom et menneske trinvist finde dele af svaret ved hjælp af diverse udelukkelsesmetoder. Hvis ingen af de givne metoder giver et svar må programmet gætte og derudfra arbejde sig videre og prøve om den kombination kan lade sig gøre, hvis ikke må programmet så gå tilbage og afprøve en anden mulighed. Jo flere steder programmet laver sådanne gæt, jo flere forgreninger bliver der i programflowet, og jo længere tid tager det. Tiden det tager stiger omtrentligt eksponentielt med antallet af forgreninger, så der må ikke forekomme for mange forgreninger hvis det skal blive færdigt indenfor en rimelig tid.
Det er vigtigt at programmet ikke blot placerer et tal så snart det har udelukket de 8 andre, men også tjekker om det kan udelukke det 9. og således bevise at den gren det arbejder på er umulig.
Hvis programmet er sat til at finde samtlige mulige løsninger i stedet for blot en løsning så kommer sudokuer med mange løsninger også til at tage lang tid.
Ja, jeg skulle måske lige præcisere: På det forum jeg refererede til arbejdes der primært med programmer, der søger løsninger ved reæsonnement. Altså uden at gætte, og gøre det således at man (i hvert fald i teorien) kan eftergøre det i hånden. Altså modsat erik's "Bruteforce" løser.
Det er ikke brute force - det er backtracking. Placeringer der ikke giver meningen udforskes ikke yderligere. Man kan optimere lidt på hvor man starter, men det gør min simple version ikke.
Tak for svarene. Der kom ikke noget så konkret som jeg havde håbet på, men der kom nogle stikord og begreber jeg vil søge videre på. tak fordi i lånte mig lidt af jeres tid
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.