可以多次访问顶点的 TSP

2024-03-12

我正在寻求解决一个问题,其中我有一个加权有向图,并且必须从原点开始,至少访问所有顶点一次并以尽可能最短的路径返回原点。本质上,这将是 TSP 的一个经典示例,除了我DO NOT具有每个顶点只能被访问一次的约束。在我的例子中,除了原点之外的任何顶点都可以沿着路径被访问任意次数,如果这使得路径更短的话。例如在包含顶点的图中V1, V2, V3考虑到它是最短路径,这样的路径是有效的:

ORIGIN -> V1 -> V2 -> V1 -> V3 -> V1 -> ORIGIN

因此,我有点不知道该采取什么方法来解决这个问题,因为通常用于在指数时间内解决 TSP 问题的经典动态规划算法方法并不合适。


典型的方法是创建一个距离矩阵,给出任意两个节点之间的最短路径距离。所以d(i,j)= 最短路径(沿着网络的边缘)i to j。这可以使用 Dijkstra 算法来完成。

现在只需求解具有距离的经典 TSPd(i,j)。您的 TSP 不“知道”实际遵循的路线可能涉及多次访问某个节点。同时,也会保证车辆在每个节点都停下来。

现在,至于效率:正如 @Codor 指出的,TSP 是 NP 难的,你的变体也是 NP 难的,所以你不会找到一个可证明最优的多项式时间算法。然而,对于 TSP 来说,仍然有很多很多好的算法(启发式算法和精确算法),并且其中大多数应该适合您的问题。 (一般来说,DP是notTSP 的出路。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以多次访问顶点的 TSP 的相关文章

  • 从 A[a,b] 到 A[c,d] 的不同非循环路径的计数?

    我正在编写一个推箱子求解器 用于娱乐和练习 它使用一个简单的算法 类似于 BFS 但略有不同 现在我想估计它的运行时间 O 和 omega 但需要知道如何计算网络中从一个顶点到另一个顶点的非循环路径的计数 实际上我想要一个表达式来计算 m
  • 强化学习+优化:如何做得更好?

    我正在学习如何使用强化学习进行优化 我选择的问题是最大匹配 https en wikipedia org wiki Maximum cardinality matching在二分图中 因为我可以轻松计算出真正的最优值 回想一下 图中的匹配是
  • 为什么 DFS 和 BFS 的时间复杂度取决于图的表示方式?

    The site http web eecs utk edu huangj CS302S04 notes graph searching html http web eecs utk edu huangj CS302S04 notes gr
  • 是否可以向 networkx 中的图形对象添加无向和有向边?

    我正在致力于实现一种算法来确定数据集的图形结构 数据集的变量之间可以有无向或有向边 我可以用 Python 创建自己的图形对象 但我很好奇 Networkx 是否具有此功能 据我所知 Networkx 只有一个 Graph 对象 仅无向边
  • 使用 Networkx 绘制带边的图

    我一直被一件很简单的事情所困扰 我正在尝试绘制并显示一个具有 2 个节点和 1 个边的图 但我收到这个错误 Traceback most recent call last File
  • java优先级队列与链表的比较

    我正在解决BFS问题 我使用了 PriorityQueue 但我得到了错误的答案 然后我使用了LinkedList 我猜对了并且 我无法找到它们之间的区别 这是两个代码 为什么两个答案不同 Code1 LinkedList q new Li
  • 使用 Graphs.jl 在 Julia 中创建简单的图形对象

    我开始研究图论 我计划将其用于机器学习和 或贝叶斯推理 我想在 Julia 中编码 并找到了包Graphs http julia readthedocs org en latest packages packagelist graphs g
  • 用于图形的 Java 库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 用于操作图形 特别是用于社交网络分析 的最佳 Java 库是什么 我见过荣格 但我想知道你是否知道更好的
  • 将加权有环图转换为等效无环图

    我有一个循环加权有向图 目标是消除路径中存在的循环 例如 路径如下 from to weight a gt b 0 5 a gt c 0 5 c gt e 1 b gt d 1 d gt a 0 25 d gt f 0 75 图中的循环是由
  • 可以多次访问顶点的 TSP

    我正在寻求解决一个问题 其中我有一个加权有向图 并且必须从原点开始 至少访问所有顶点一次并以尽可能最短的路径返回原点 本质上 这将是 TSP 的一个经典示例 除了我DO NOT具有每个顶点只能被访问一次的约束 在我的例子中 除了原点之外的任
  • 如何删除未加权有向图中的循环,以使边数最大化?

    令 G 为包含环的未加权有向图 我正在寻找一种算法 它可以找到 创建所有非循环图 G 由 G 中的所有顶点和 G 的边子集组成 足够小以使 G 非循环 更正式 所需的算法消耗 G 并创建一组非循环图 S 其中 S 中的每个图 G 满足以下属
  • 是否有用于平面度测试的在线算法?

    我知道平面度测试 http en wikipedia org wiki Planarity testing可以在 O v 相当于 O e 因为平面图有 O v 条边 时间内完成 我想知道是否可以在 O 1 摊销时间内在线完成 因为添加每个边
  • JavaScript 中的匹配算法

    我正在寻找 JavaScript 的 Blossom 算法的实现或类似的东西 我有一套对 A B A C B D 我需要挑选对 假设每个字母只能在输出中出现一次 在上述情况下 正确的结果是 A C B D 因为 A B C 和 D 都最终出
  • 如何在 O(n+m) 时间内找到有向图中的母顶点? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有向图 G V E 中的母顶点是顶点 v 使得所有其他顶点 顶点 G 可以通过从 v 出发的有向路径到达 给出一个 O n m 算法来
  • 在有向图中使用 DFS 进行循环检测是否绝对需要回溯?

    我遇到了这个SO post https stackoverflow com questions 2869647 why dfs and not bfs for finding cycle in graphs其中建议由于回溯 在有向图中使用
  • TSP的一种变体:限制时间,访问尽可能多的节点

    让我们再次使用推销员上下文 如果销售员不需要拜访所有客户 但有时间限制 他必须拜访尽可能多的客户 我们怎样才能找到最佳路线 一个更高级的版本是 假设每个客户都被标记为货币收益 因此我们的销售人员希望最大化他实际访问的那些客户的总货币收益 只
  • DAG 中两个节点之间的路径数

    我想找到 DAG 中两个节点之间的路径数 O V 2 和 O V E 是可以接受的 O V E 提醒我以某种方式使用 BFS 或 DFS 但我不知道如何使用 有人可以帮忙吗 对 DAG 进行拓扑排序 然后从目标向后扫描顶点到源 对于每个顶点
  • 二分图中最小顶点覆盖算法

    我正在尝试找出一种算法来查找二分图的最小顶点覆盖 我正在考虑一个解决方案 将问题减少到二分图中的最大匹配 众所周知 可以使用从 bip 创建的网络中的最大流量来找到它 图形 最大匹配 M 应确定最小匹配 顶点覆盖 C 但我无法处理选择顶点来
  • 如何将无向图转换为 DAG?

    The 维基页面 http en wikipedia org wiki Directed acyclic graph Relation to other kinds of graphs says 任何无向图都可以通过为其顶点选择总顺序并将每
  • AStar-名称解释

    我正在寻找 AStar A 算法为何被称为 AStar 的解释 所有类似的 最短路径问题 算法通常都以其开发者的名字命名 那么 AStar 代表什么 有称为 A1 和 A2 的算法 后来证明A2是最优的 实际上也是可能的最好算法 所以他给它

随机推荐

  • C :警告:赋值使指针来自整数而不进行强制转换[默认启用]

    这是我的代码 include
  • Flink TaskManager 超时?

    我正在运行 Flink 应用程序 通过 Yarn 似乎有时任务管理器会随机超时 这是错误 java util concurrent TimeoutException Heartbeat of TaskManager with id some
  • 将日期与 data.table 包一起使用

    我最近发现了 data table 包 现在想知道是否应该替换我的一些 plyr 代码 总而言之 我真的很喜欢plyr 并且我基本上实现了我想要的一切 然而 我的代码运行了一段时间 并且加快速度的前景足以让我运行一些测试 这些测试很快就结束
  • 使用 jQuery 的 Jenkins json REST api 和 CORS 请求

    我正在尝试使用 Jenkins json API 但无法使身份验证正常工作 setup 詹金斯安全 Jenkin s own user database access Matrix gebaseerde beveiliging CORS 通
  • 'Mysql:Class 的未定义方法初始化'

    我的 MySQL 服务器安装一直遇到问题 在断电后变得混乱 配置 运行 OS X 10 6 5 的 Intel i5 Mac已安装红宝石 1 9 2已安装 Rails 3 0 1MySQL 服务器 最终 安装并运行我完全重新安装了MySQL
  • 延迟加载的 React 路由器无论如何都会路由加载

    我一直在尝试使用 React lazy 和 Suspense 在 React 中延迟加载路由 但无论当前路径如何 某些组件都会加载 Feed Profile 和 Settings 请注意 我实际上并不想延迟加载像 MenuAppBar 和
  • TypeError(不可排序类型:int() <= NoneType())

    这是我第一次用 Python 编写代码 需要一些帮助 我正在使用 Python 34 根本无法理解发生了什么 def roll v x input return x v def startGame v 0 while 0 lt v erro
  • 在 Python Sphinx 生成的文档中包含动态内容

    我正在使用 Sphinx 为我的项目生成文档 并在产品安装过程中构建文档 我想在文本和 或代码块中动态包含主机名 我没有在文档中看到任何解释 也没有看到任何包含 shell 命令输出或特定文件中特定行以外的任何内容的工具 有这个功能吗 这里
  • UIStackView 比例布局仅具有内在内容大小

    我在 UIStackView 中排列子视图的布局方面遇到问题 想知道是否有人可以帮助我了解发生了什么 所以我有 UIStackView 有一些间距 例如 1 但这并不重要 和 fillProportionally 分布 我添加的排列子视图仅
  • 文件复制/删除和移动之间的区别

    有什么区别 复制文件并使用删除它File Copy and File Delete 使用移动文件File Move 执行这些操作所需的权限有什么区别吗 非常感谢任何帮助 File Move 方法可用于将文件从一个路径移动到另一路径 此方法适
  • 使用 gtag.js 在 Google Analytics 中进行事件跟踪

    我最近开始学习Google Analytics GA 我有 Angular 中的单页应用程序 应用程序中有一个登录按钮 我想跟踪有多少用户使用 GA 登录 所以我所做的就是在 GA 中创建一个属性并获取跟踪 id 然后我在索引页面后面添加了
  • Matplotlib savefig 在图外有图例

    阅读下面的文章 我设法将图例放在情节之外 如何将传说从情节中剔除 https stackoverflow com questions 4700614 how to put the legend out of the plot code im
  • 将矩阵分配给 data.table 的子集

    我想将一个矩阵分配给一个多列子集data table但矩阵最终被视为列向量 例如 dt1 lt data table a1 rnorm 5 a2 rnorm 5 a3 rnorm 5 m1 lt matrix rnorm 10 ncol 2
  • iOS:在不播放视频的情况下获取视频时长和缩略图

    我需要获取 本地 视频的持续时间 然后访问其各个帧 如下所示UIImages 到目前为止我一直在使用MPMoviePlayerController为了这 首先我注册MPMovieDurationAvailableNotification事件
  • 我如何上传视频并将其保存到 codeigniter 中的文件夹中?

    我是 codeigniter 的新手 我需要帮助上传图片和视频并将其保存到文件夹和数据库 这是我的控制器 public function upload this gt m upload gt upload this gt upload ga
  • jQuery Lightbox 或具有图像数组的等效项

    我正在尝试实现一个Lightbox http leandrovieira com projects jquery lightbox 样式库 其中单击文本链接会启动从数组加载的图像幻灯片 而不是从页面上的内联内容加载 我能找到的所有示例都使用
  • 显示没有“hitbox”的元素(不接受鼠标/触摸输入)

    我想要实现的是一种通知框 adiv元素 我想用一些不透明度来显示它 我需要这个盒子在事件中 不可见 例如 如果该框位于按钮之上 我仍然可以通过该框单击该按钮 有些人可能建议让用户可以移动它 但当前的 UI 不允许我这样做 可以通过任何方式实
  • 在 JavaFx 标签中显示变化的值

    在JavaFX中 如何使用 标签 显示随时间不断变化的值 有很多方法可以实现这一点 最方便的是使用 JavaFX 的 DataBinding 机制 assuming you have defined a StringProperty cal
  • 将图像从 Matlab 传输到 OpenCV IplImage

    我在 Matlab 中有一张图像 img imopen image jpg 它返回一个 uint8 数组高 x 宽 x 通道 3 个通道 RGB 现在我想使用 openCV 对其进行一些操作 因此我编写了一个 MEX 文件 该文件将图像作为
  • 可以多次访问顶点的 TSP

    我正在寻求解决一个问题 其中我有一个加权有向图 并且必须从原点开始 至少访问所有顶点一次并以尽可能最短的路径返回原点 本质上 这将是 TSP 的一个经典示例 除了我DO NOT具有每个顶点只能被访问一次的约束 在我的例子中 除了原点之外的任