Algorithm 什么是合适的算法? 我正在尝试C++程序,我正在尝试做一些有点的问题。现在我需要找到穿过所有点的路径。这实际上不是TSP,因为根据我在TSP方面的知识,可以从所有点移动到其他点。但是在我的例子中,点之间的路径网络是固定的,我只需要找到合适的路径,通过所有的点,前提是所有的点可能没有连接到每个其他点。那么我应该遵循什么算法呢

Algorithm 什么是合适的算法? 我正在尝试C++程序,我正在尝试做一些有点的问题。现在我需要找到穿过所有点的路径。这实际上不是TSP,因为根据我在TSP方面的知识,可以从所有点移动到其他点。但是在我的例子中,点之间的路径网络是固定的,我只需要找到合适的路径,通过所有的点,前提是所有的点可能没有连接到每个其他点。那么我应该遵循什么算法呢,algorithm,graph,hamiltonian-cycle,Algorithm,Graph,Hamiltonian Cycle,您似乎在寻找遍历图形的方法?如果是这样的话,您是否尝试过广度优先搜索或深度优先搜索来遍历图形。您想为图形查找一个 在图论的数学领域中,哈密顿路径(或 可追踪路径)是无向图中访问每个路径的路径 顶点正好一次。哈密顿循环(或哈密顿回路)是 哈密顿路径是一个循环。确定这些路径和 图中存在的圈是哈密顿路径问题 NP完全 存在的一些问题: 有n个!可能是哈密顿量的不同顶点序列 给定n顶点图中的路径(和,在完整图中),因此 测试所有可能序列的暴力搜索算法将 慢一点。有几种更快的方法。搜查程序 Frank R

您似乎在寻找遍历图形的方法?如果是这样的话,您是否尝试过广度优先搜索或深度优先搜索来遍历图形。

您想为图形查找一个

在图论的数学领域中,哈密顿路径(或 可追踪路径)是无向图中访问每个路径的路径 顶点正好一次。哈密顿循环(或哈密顿回路)是 哈密顿路径是一个循环。确定这些路径和 图中存在的圈是哈密顿路径问题 NP完全

存在的一些问题:

有n个!可能是哈密顿量的不同顶点序列 给定n顶点图中的路径(和,在完整图中),因此 测试所有可能序列的暴力搜索算法将 慢一点。有几种更快的方法。搜查程序 Frank Rubin将图的边分为三类: 那些必须在路径中的,那些不能在路径中的,以及 犹豫不决。随着搜索的进行,一组决策规则进行分类 显示未确定的边,并确定是停止还是继续 搜索。该算法将图形划分为可编辑的组件 分别解决。另外,Bellman的动态规划算法, 保持,Karp可用于在时间O(n2 2n)内解决问题。在里面 这种方法可以为每个顶点集和每个 S中的顶点v,是否存在完全覆盖 S中的顶点和v处的端点。对于S和v的每个选择,都存在一条路径 对于(S,v)当且仅当v有一个邻居w使得路径存在 为了− v、 w),可以从已计算的 动态程序中的信息

Andreas Björklund使用 包含-排除原则,以减少计算 简单计数问题的哈密顿圈数 计数周期覆盖,可通过计算某个矩阵来求解 决定因素。使用这种方法,他展示了如何解决这个问题 用蒙特卡罗方法研究任意n顶点图的哈密顿圈问题 时间O(1.657n)的Carlo算法;对于二部图,该算法 可以进一步改进为时间O(1.414n)

对于最大度为3的图,可以进行仔细的回溯搜索 在时间O(1.251n)中找到一个哈密顿循环(如果存在)


TSP仍然相关。即使您不能重新访问节点,它仍然是(非度量的)TSP。而且,
C++
不是这个问题的好标签。根据询问者的措辞尝试
算法
,可能就是这样+1网络是否必须由哈密顿路径组成?