[maybe OT] Sudoku: solving method or simply backtrack?



Hello,

I apologize if the subject is off topic, but since I found several sudoku solvers in Prolog, I thought you can answer this (hope not so silly) question: suppose to have a sudoku grid partly filled: once you propagated all the constraints for the empty cells, you can search for a solution using a backtrack method. My question is: is backtrack the best method or there is a backtrack-free method?

In other words, in some cases I got stuck in a situation where I had not univocal choice for empty cells and I had to proceed with backtrack attempts.
Maybe I have been not able to find the univocal choice, or maybe this is the right way to solve sudoku. If the latter, I think I'll never play sudoku again, since it seems to me a matter of probability and time rather than reasoning ;-)

TIA
Libra
.