Jump to content
  • Advertisement
Sign in to follow this  
widggman

solving sudoku

This topic is 4354 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, I just have an idea to solve the Sudoku puzzle. I think this problem can be converted to a "coloring graph" problem. But in that case, you already have node with color. The color in that case are the number 1 to 9 (or 1 to 4 in a simpler version). And in that case, you start to solve with a node wich have the most adjacent colored node... an so on... Do you think that solution can be a good one... I know coloring a graph is a NP-Complet problem. And on your side, have you think of a solution to solve this. Personnally, it is the first solution I work on (only in my head, nothing on paper or computer). I will wait for you opinion on that...

Share this post


Link to post
Share on other sites
Advertisement
FD prolog can describe the solution to a Su Doku problem fairly easily. You could also convert a Su Doku board to a propositional logic expression and solve it. It's also possible to store all possible values for a given square, and choose a value arbitrarily for the square with fewest possibilities recursively (backtrack when no solutions are possible). Or, as you said, you could use a graph algorithm to set up the colors.

Share this post


Link to post
Share on other sites
Thanx...

Maybe one day I will check to code my solution for fun... If I have the time :)

Thanx for mentionning the other solution.

Share this post


Link to post
Share on other sites
A quick wikipedia search on graph coloring actually mentions sudoku:
Quote:
from:http://en.wikipedia.org/wiki/Graph_coloring

Graph coloring enjoys many practical applications as well as theoretical challenges. Beside the classical types of problems, different limitations can also be set on the graph, or on the way a color is assigned, or even on the color itself. It has even reached popularity with the general public in the form of the popular number puzzle Sudoku. Graph coloring is still a very active field of research.

So, I'm inclined to say your idea could work, though I wouldn't know how to go about doing it.


I wrote a sudoku solver about 3 months ago. It's possible to do most by pure logic steps(you can find online if you search "solving sudoku"), but it's much much easier to implement about half the logic steps and then brute force it. http://www.angusj.com/sudoku/hints.php
I pretty much used the basics on that page. Then, when those steps are complete if the board is not full, take the first empty square and create boards filled with all possibilities for that square and then run the solver again and repeat until you arrive at a solution. It's actually quite fast because the search tree is so small. Easy puzzles don't usually even make it to the brute force step and the hardest puzzles rarely have more then a depth of 5. My program runs in about a second on a 2gh .

Share this post


Link to post
Share on other sites
Solving Sudoku puzzles is an example of constraint optimisation, which describes a very wide class of problem. There are many varied approaches to solving such problems, although they tend to be tuned to the particular problem instance one is solving. That does mean though, that you could take a solution methodology for one brach of CO problems and apply it to another. How successful/efficient it is will depend on the problem structural similarities.

Cheers,

Timkin

Share this post


Link to post
Share on other sites
Mathematically, Sudoku is not just a graph coloring problem, though it can be formulated as one. It is rather a Latin Square, or a variation to the latin square. The extra rule with the 3x3 satifying a specific requirement is what makes it slightly different, but the solution itself is still a latin square. The numbers that appear visible for each problem is a determining set (if I'm not remembering wrong). The open question right now is how to prove the minimum determining set.

Solving it with "logic" is probably the best way as there are specific strategies used to fill in numbers. If you do enough, you'll figure them out too. A backtracking method is another approach, which has been used to generate latin squares too.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!