如何解决最近邻启发式
How to solve the nearest neighbor heuristic
我正在尝试在一个小例子中解决 tsp 的最近邻启发式问题,该示例具有 2d 数组C++。这是我现在的代码。我想创建起点节点从 0 到 6 的游览,以便我可以在之后比较它们(哪个节点的距离最小)。但是,调试后我有点知道我的问题在哪里,但我不明白为什么它不起作用。我visited[i+1]
不是在下一个索引上保存最小的索引。
void getNearestNeighbor(float distanceMatrix[][6], int startNode, int visited[6]){
bool unvisited[6]{ 1,1,1,1,1,1 };
visited[0] = { startNode };
unvisited[startNode] = false;
for (int i = 0; i < 5; i++)
{
float smallestDistance = 100.0;
int smallestIndex =visited[i];
for (int j = 0; j < 6; j++)
{
if (visited[i] != j && unvisited[j] == true)
{
if (smallestDistance > distanceMatrix[visited[i]][j])
{
smallestDistance = distanceMatrix[visited[i]][j];
smallestIndex = j;
}
}
}
visited[i+1] = smallestIndex;
unvisited[smallestIndex] = false;
//cout << visited[i] << endl;
}
}
int main()
{
int visited[6];
float distanceMatrix[6][6]{
{ 0, 17, 11, 5.39, 10.8, 8.6 },
{ 17, 0, 10.2, 12.5, 19.1, 25.6 },
{ 11, 10.2, 0, 9.85, 18.8, 19 },
{ 5.39, 12.5, 9.85, 0, 8.94, 13.5 },
{ 10.8, 19.1, 18.8, 8.94, 0, 14 },
{ 8.6, 25.6, 19, 13.5, 14, 0 } };
for (int srtNode = 0; srtNode < 6; srtNode++)
{
getNearestNeighbor(distanceMatrix, srtNode, visited);
cout << visited[srtNode];
//calcDistance(distanceMatrix, visited);
}
system("pause");
return EXIT_SUCCESS;
}
你的代码有语法错误。
visited[0] = { startNode };
只有一个元素不需要{},你应该
visited[0] = startNode;
而这个
bool unvisited[6]{ 1,1,1,1,1,1 };
初始赋值需要"=",你应该
bool unvisited[6] = { 1,1,1,1,1,1 };
并访问需要初始或分配。
相关文章:
- 查找最近配对时的OpenMP竞赛条件
- 如何获取pcl迭代最近点(ICP)的迭代点数?
- 如何使用 OpenMP 并行化最近邻搜索
- 如何找到给定点的最近平方
- 将前向声明的结构替换为最近定义的结构
- CMakeList 中应包含哪些模块.txt以进行近似最近邻搜索?
- 应该如何编写用于计算最近点距离的C++函数?
- 最近的邻居用nanoflann搜索
- GCC:--静态链接到pthread的整个存档配方在最近的GCC版本中停止工作
- 向下四舍五入到五个c++的最近倍数
- 在 3D 点云、GPU 中查找最近的邻居
- 我最近更改了编译器路径以运行 c++ 代码,但现在我无法运行任何 python 代码。我该如何解决这个问题?
- 在RHEL6上使用最近的gcc进行编译:如何分发软件?
- 最近最少使用的 (LRU) 缓存
- 我最近正在阅读opencv源代码。有没有更好的方法来在opencv库中查找类定义?
- c++ Valgrind:地址0x0不是堆叠的、恶意的或(最近)释放的
- 如何在无限轴上找到 N 个点,以便从 M 点到其最近的 N 的距离总和最小
- 地址0x20ec8348e5894855不是堆叠的、恶意的或(最近)释放的
- 在 OpenCV 和 C++ 中查找距轮廓中心最近的黑色像素
- 'new'关键字如何工作?我最近才知道新关键字