Algorithm to Assign Values Based on Constraints I have variables x y and z, and I have the values that they can be assigned to, I.E. x can be assigned 1,2, or 3, y can be 1, and z can be 2.  The problem is a constraint that says once a value has been taken by a variable, no other variables can have that value. 

The issue that I am running into is if I start with x, how can I efficiently tell that it's value should be 3?
The problem you are describing amounts to constraint programming and the specific constraint you are talking about is the alldifferent constraint. I'm not offering a purely algorithmic solution, but reading a bit on constraint programming could give you some ideas on how to construct a search tree where you make a decision (i.e., assign a value to a variable) at each node, and how to backtrack to a feasible node when you reach an infeasible node.