我正在尝试开发一个旅行推销员类型的程序(用Java),并试图找出某个部分的逻辑,一个蛮力的方法来计算一组节点(城市)之间的最有效路线节点只被触摸一次。
我已经使用x / y co-ords定义了一个City类,并且有一个City实例数组和一个用于绘制网格的网格类。 城市在网格上可见,城市数组中的索引编号为0-i(在示例网格中定义了4个城市):
· · · · · · · · · · · · · · · ·
· · · · · · · · · 1 · · · · · ·
· · 0 · · · · · · · · · · · · ·
· · · · · · · · · · · 3 · · · ·
· · · · · · 2 · · · · · · · · ·
· · · · · · · · · · · · · · · ·
· · · · · · · · · · · · · · · ·
已经有很多路线可见(我相信4!= 24):
是否有一个简单的迭代/递归方法来获取每个可能的路径,给定一组城市及其坐标,我可以用它来确定距离并列出最有效的路径?
答案 0 :(得分:1)
Faculty(n)/2
如果你的距离是无向的,或Faculty(n)
如果你的连接是指向的(意思是:距离a - > b不同于b - > a)。它被称为Permutation
不要忘记13! = 6227020800和超过Integer.max_value,甚至13! / 2更多!