如何找到路径访问尽可能多的顶点
how to find a path visit as much as possible vertices?
给定一个正方形网格(无向图),有没有任何方法可以找到一条访问尽可能多顶点的路径。
每个顶点只能访问一次。这意味着这条路如果存在的话,将是汉密尔顿之旅,或者是最长的一条路。
这张图有一些墙。墙是一个没有边连接到邻居的顶点。
我有一个解决方案(在脑海中),但它非常类似于找到所有路径并选择访问了最多顶点的第一条路径。
找到一条路径将访问从给定起点顶点到终点的所有邻居(没有路可以走)。
回顾当前路径,直到起始顶点,如果有任何顶点在当前路径之外有邻居,处理如下从所找到的顶点及其新邻居开始执行步骤1。
分析并选择最长路径(具有最多顶点)。
我发现了类似的问题,无法理解@Juho的意思:
选择一个后继si到顶部(S),并尝试找到一条路径si−1⇝si避免F中的顶点。如果找到路径,请插入路径si−1上的顶点⇝si至F.
我没有足够的声誉在那里添加评论。
我想我的解决方案会遇到性能问题。有什么建议吗?
这更像是一个哈密顿路径问题。它是NP完全的,所以你需要做一个详尽的搜索。我只能建议使用线程来缓解性能问题;在可用线程中平均分配起始顶点。如果你找到一条哈密顿路径,则终止,否则最长的路径获胜。
算法本身只需要找到所有可能的路径。我可能有一种启发式方法来停止对一条似乎会得到坏结果的路径的困扰,但这意味着解决方案可能并不总是正确的。
相关文章:
- 如何循环打印顶点结构
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- D3D11-将混合权重和索引传递到顶点着色器
- 从返回的顶点缓冲区查询顶点结构
- Vulkan 中的动态顶点缓冲区格式设置
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 如何将一半传递给顶点着色器?
- 在 DirectX 11 中从 GPU 读回顶点缓冲区(并获取顶点)
- QT QOpenGLWidget:如何在不使用数据块复制的情况下修改VBO中的单个顶点值?
- 使用 OpenGL 4.5 更改所选顶点的颜色
- Direct3D 11 - HLSL - 获取顶点索引 ID
- 创建异构顶点数据数组的可移植方法
- 使用 glvertex4i 传递网格面索引时的顶点着色器错误
- 我应该尽可能避免递归吗?
- 无法从 cso 文件创建顶点着色器(从 fx 文件创建)
- 'std::wstring_convert'尽可能多地转换(从 UTF8 文件读取块)
- OpenGL 相机移动程序顶点着色器问题
- 使用 std::list 存储顶点并使用 SFML 绘制它们
- 为什么顶点数组对象会导致错误?
- 如何找到路径访问尽可能多的顶点