Like others have said, no way to get the optimal solution other than brute force, and as you know, that can take a weeeee bit longer than you'd want to wait, for a modest sized problem set. There are some solutions that are known to have a high success rate for finding 'near optimal' solutions that are much faster than O(n!), but all of them can be tricked with odd data sets, and none of them consistenly generates the near optimal solutions. They tend to rely on multiple runs to get close. Sorry I can't be more specific, but I haven't looked into this problem in years, so my recall of the attempts to improve the speed to solution is limited. I'm pretty sure one of Knuth's _Art of Computer Programming_ books has info on this (volume 3, I think). Might want to hit the local bookstore and see if you can find anything.
RagManX