为学校做一个项目,我们实现最近邻启发式(我已经做过),以及我们进行详尽搜索的旅行销售员问题(然后我们分析算法,它们的时间复杂度等)。我们的老师说要四处寻找用于详尽搜索部分的代码(或修改),而不是像在最近邻部分中那样对整个事物进行编程。我环顾四周,只找到了与我们被指示如何执行程序无关的内容。与使用整数的典型问题相反,我们使用点 (x, y)。我的目标是计算最短排列并能够知道该排列是什么。所以我想有一个数组数组(其中包含排列)。
如果有人可以帮助我进行详尽的搜索,那就太好了。
这是我的代码的一些摘录(成员变量、计算两点之间距离的函数以及所有点的存储位置):
private int x;
private int y;
private boolean visited;
public double dist( point pt ){
int xdist = this.getX() - pt.getX();
int ydist = this.getY() - pt.getY();
double xsr = xdist*xdist;
double ysr = ydist*ydist;
return Math.sqrt( xsr + ysr );
}
point[] points = new point[n];
任何帮助是极大的赞赏。