Do you have to do any research or did you just work it all out yourself.
I've designed the algorithm myself, since it is rather obvious. The algorithm is based on recursion and is a brute-force one. It means it checks all possibilities until it finds a solution. The thing starts from finding an empty field, which is most constrained by already entered numbers. Then the program tries to enter numbers from 1 to 9 into the field and checks if resulting partial solution is valid. If it is not, the algorithm steps back. If it is, the routine calls itself recursively, taking the next most constrained field.
The algorithm either finds that there are no more empty fields (which means the sudoku is solved), or steps back to its root call (which means the starting position is unresolvable).
I've found this algorithm to be very fast. Testing different sudoku, I've found that no more than 50 000 steps are needed usually. Even my poor Efika @ 400 MHz needs less than 100 miliseconds to do it.