si bien sûr il y en a.
Le plus courant est d´utiliser un certain nombre d´heuristiques pour trouver des contraintes sur ce que tu doit faire.
En gros, si dans une ligne ou colonne (ou carré) il y a tout les chiffres sauf 1 dans la case libre tu mets celui là.
Mais l´astuce consiste ensuite à croiser les info sur les lignes et les colonne pour avoir le plus de contrainte possible.
An mettant bout à bout toutes les contrainte, tu peut résoudre même les grilles "impossibles" des journaux avec une profondeur de récursion de 2 ou 3 seulement (c´est le nombre d´hypothèses que tu doit faire).
Si tu connais un peu, j´ai un programme en Caml qui fait ça :
http://wall.sectionpc.info/Caml/sudoku.ml
(les grille 16*16 sont résolu en moins d´une seconde).
Par contre il y a une très grosse amélioration possible (pa dans mon programme), pour la gestion de la récursion qui est d´utiliser la structure "dancing links" très efficace dans ce cas-ci.
Plus d´info là :
http://en.wikipedia.org/wiki/Dancing_Links ou le papier de D. Knuth (qui a inventé l´algo en question) :
http://xxx.lanl.gov/PS_ca_cache/cs/pdf/0011/0011047.pdf
Pour information je connais un programme de 15 lignes qui résoud les grille de sudoku. Qui fait mieux ? (écrit en prolog, par mon prof de physique, malheureusement je n´ais pas le code source)