可以多次访问顶点的 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 的相关文章

  • python 中的图谱聚类

    我想使用谱聚类在 python 中对图进行聚类 谱聚类是一种更通用的技术 不仅可以应用于图形 还可以应用于图像或任何类型的数据 但是 它被认为是一种特殊的技术graph聚类技术 遗憾的是 我无法在线找到 python 中的谱聚类图的示例 S
  • 用于图形的 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 图中的循环是由
  • 如果添加新边,图的强连通分量的数量会如何变化

    练习 22 5 1 CLRS如果一个新的图的强连通分量的数量如何改变 添加了边缘 某处 http student csuci edu douglas holmes253 Assignment6 html给出的答案是如果添加新边缘 则可能会发
  • 图论。如何处理此类问题?我想知道解决这个问题时的逻辑和思考方式。

    求笛卡尔平面上从 0 0 到 n n 的路径数 该路径永远不会高于 y x 线 可以沿着路径进行三种类型的移动 move up i e from i j to i j 1 move to the right i e from i j to
  • 检测图中的所有圆圈

    我有一个存储在 Map 数据结构中的有向图 其中键是节点的 ID value 是key节点所指向的节点的nodeId数组 Map
  • 对强连通图的最小添加

    我有一组节点和它们之间的一组有向边 边缘没有重量 如何找到必须添加的最小数量的边以使图强连接 即应该有一条从每个节点到所有其他节点的路径 这个问题有名字吗 这是一个非常经典的图问题 运行类似 Tarjan SCC 算法的算法来查找所有 SC
  • 如何在 O(n+m) 时间内找到有向图中的母顶点? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有向图 G V E 中的母顶点是顶点 v 使得所有其他顶点 顶点 G 可以通过从 v 出发的有向路径到达 给出一个 O n m 算法来
  • 有效地构建具有给定汉明距离的单词图

    我想从单词列表中构建一个图表汉明距离 https en wikipedia org wiki Hamming distance 比如说 1 或者换句话说 如果两个单词仅与一个字母不同 lol 假设您将字典存储在set 以便查找是O 1 平均
  • 强连通分量有什么用?

    我发现了几种可以解释的算法how在有向图中找到强连通分量 但没有解释why你会想要这样做 强连通分量有哪些应用 您应该查看 Coursera 上 Tim Roughgarden 的算法简介课程 对于他所讨论的每一种算法 他都会解释其一些应用
  • 在 Mathematica 中创建具有不同颜色边的图形

    我想创建一个图 图论 其中某些边具有与其他边不同的颜色 这将用于突出显示图中从一个顶点到另一个顶点的路径 以下是一些具有不同颜色边缘的示例http demonstrations wolfram com AGraphTheoryInterpr
  • 删除networkx有向图中入度和出度等于1的所有节点

    假设我在 NetworkX 中制作了一个有向图 import networkx as nx G nx DiGraph n A B C D E F H I J K L X Y Z e A Z Z B B Y Y C C G G H G I I
  • 有向图的并查/不交集数据结构

    我正在寻找一个高效的联查 aka 不相交集 https en wikipedia org wiki Disjoint set data structure 我的数据结构有向图 https en wikipedia org wiki Dire
  • 将非方邻接矩阵导入 Networkx python

    我在下面有一些 pandas 数据框形式的数据 其中列代表离散技能 行代表离散工作 仅当工作需要该技能时才存在 1 否则为 0 skill 1 skill 2 job 1 1 0 job 2 0 0 job 3 1 1 我想使用 netwo
  • 如何用PHP进行有向图绘制?

    我正在寻找一种在 PHP 中绘制有向图的方法 如http upload wikimedia org wikipedia commons 0 08 Directed acirclic graph png http upload wikimed
  • 在径向(树)网络x图中查找末端节点(叶节点)

    给定下图 是否有一种方便的方法来仅获取末端节点 我所说的端节点是指那些具有一个连接边的到节点 我认为这些有时被称为叶节点 G nx DiGraph fromnodes 0 1 1 1 1 1 2 3 4 5 5 5 7 8 9 10 ton
  • 为什么在我的遗传算法中添加交叉会给我带来更糟糕的结果?

    我已经实现了遗传算法来解决旅行商问题 TSP 当我仅使用突变时 我找到了比添加交叉更好的解决方案 我知道普通的交叉方法不适用于 TSP 所以我实现了有序交叉 http www permutationcity co uk projects m
  • 单源最短路径,包含每条边的距离和权重

    假设有一个无向图 连接任意两个节点的每条边都有两个权重 即距离和成本 我想要获得最短路径 但也要确保不超出一定的成本 我尝试过实现 Djikstra 如果超出成本 则简单地回溯 由于缺乏更好的术语 直到遍历整个图表 但是 我正在寻找比这更快
  • 在哪里可以了解有关“蚁群”优化的更多信息?

    我已经阅读了一段时间关于使用 蚁群 模型作为优化各种类型算法的启发式方法的内容 然而 我还没有找到一篇文章或书籍以介绍性的方式甚至详细地讨论蚁群优化 谁能给我指出一些资源 让我可以更多地了解这个想法 如果你懂德语 是的 抱歉 我和一个朋友写
  • 如何在 Clojure 中创建循环(且不可变)数据结构而不需要额外的间接?

    我需要在 Clojure 中表示有向图 我想将图中的每个节点表示为一个对象 可能是一条记录 其中包含一个名为 edges这是从当前节点直接可达的节点的集合 希望这是不言而喻的 但我希望这些图表是不可变的 我可以构造有向acyclic只要我进

随机推荐

  • 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具有每个顶点只能被访问一次的约束 在我的例子中 除了原点之外的任