最小距离哈密顿路径Javascript

2023-11-22

我知道这是一个相当常见的问题(一般而言),但我已经被它难住了一段时间了。我正在寻找给定一组 x,y 坐标的最小距离哈密顿路径。起点和终点完全是任意的,但它不能循环,所以标准 tsp 已经消失(尽管据说在与所有其他节点的距离为 0 处添加一个虚拟点,然后稍后将其删除,但我不知道该怎么做)。

有很多数学论文和类似讨论解决类似问题的算法的链接,但我更愿意使用代码而不是复杂的方程,而且我真的不想重新发明轮子。

当然,在主要语言 java、c#、c++、ruby、javascript、php 等中有一个相当简单的实现,可以解决我的问题的约 20 个节点版本。

Edit:我也在寻找尽可能准确的,显然不可能完全准确到20!是很多排列,但等于或优于人类在几分钟内可以完成的事情将是完美的。

Edit2:另外为了澄清,我正在未加权的图表上使用标准二维坐标。距离 A->B == B->A

Edit3:为了消除混淆,这里有一个直观的示例,其中仅包含几点来展示 tsp 如何不是最优的(这种情况很容易修复,但节点越多,情况可能会更加极端)。

TSP 减去最长线段(红线)

TSP Minus Longest Segment (red line)

所需输出

Desired Output


您可以解决双调欧几里得旅行商问题。 tsp 的简化版本可以通过动态规划求解O(n^2): http://en.wikipedia.org/wiki/Bitonic_tour

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

最小距离哈密顿路径Javascript 的相关文章

  • 这段代码有什么问题。如果用户选择或不选择复选框,为什么它仍然显示 MsgBox? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 无论我是否选择复选框 它仍然会给出
  • 在 iPad 上调试 Javascript

    我想知道人们是否找到了任何有用的工具来在未越狱的 iPad 上调试 javascript 这是一款用于工作的 iPad 因此无法越狱 通过一些繁琐的步骤 我已经在 iPad 上运行了 firebug lite 但是我的 javascript
  • 使用 Gmail 上下文小工具访问附件

    我想将电子邮件及其附件从 Gmail Google Apps 保存到另一个数据库以实现类似 CRM 的功能 然而 根据docs http code google com apis gmail gadgets contextual 提取器无法
  • 检测对给定 JavaScript 事件的支持?

    我有兴趣使用 JavaScript hashchange 事件来监视 URL 片段标识符的更改 我知道非常简单的历史 http code google com p reallysimplehistory 以及用于此目的的 jQuery 插件
  • 如何精确缩放已翻译的d3地图

    我有一张已翻译的地图 以使其正确适合画布 我正在尝试实现一种缩放它的方法 它确实有效 但是当您放大时它会远离中心 而不是以鼠标甚至画布为中心 这是我的代码 function map data total views var xy d3 ge
  • 单词预测算法

    我确信有一篇关于此问题的帖子 但我找不到提出这个确切问题的帖子 考虑以下 我们有字典可供使用 我们收到了许多单词段落 我希望能够根据此输入预测句子中的下一个单词 假设我们有几个句子 例如 你好 我的名字是汤姆 他的名字是杰瑞 他去了没有水的
  • 如何针对 IE 进行优化?

    我有一个 JS 密集型应用程序 它在 IE 中运行缓慢 我将花费大约一周的时间来优化 IE 并且我想要一些关于尝试的方向 我发现这个线程引用Drip https ieleak svn sourceforge net svnroot iele
  • 我可以用一个简单的函数制作一个迭代器吗? (没有生成器或 Symbol.iterator)

    我一直在尝试使用普通函数创建一个迭代器 而不使用生成器或使用Symbol iterator用于学术目的的协议 为此 我创建了一个函数 它返回一个带有next参数 但尝试将其作为iterable的论证for of循环会产生不需要的结果 这是到
  • 从 ES6 模块导入函数表达式或函数声明有什么区别?

    据我了解 参见第 16 3 2 1 节 http exploringjs com es6 ch modules html ES6 允许函数 类导出操作数使用不同的语法 区别在于导出的函数是否需要在导入时解释为函数声明 在这种情况下 您可以编
  • 处理时区转换的 JavaScript 库

    是否有一个 JavaScript 库可以处理时区转换 并考虑 DST 规则和此类内容 我知道有类似的问题 但我见过的问题似乎都没有真正适合我的问题的答案 我想在时区 A 创建一个日期并能够对其进行操作 添加天数 小时等 然后将其转换为另一个
  • 如何检查侧边栏视图是否已经在主干中渲染?

    通常 用户通过主页进入网站 然后我在那里渲染侧边栏视图 接下来 用户单击链接 路由器呈现另一个视图并替换原始内容视图 侧边栏视图不会重新渲染 当用户在子页面上单击刷新时 侧边栏不会呈现 如何检查视图是否存在并且已渲染 划分责任并坚持下去 不
  • UpdatePanel 启动脚本未执行

    我正在编写一个在 SharePoint 网站中使用的 ASP NET Web 部件 并尝试使用 UpdatePanel 来呈现查询结果 我想使用 JQuery 插件来修改从异步回发返回的表 但我无法让启动脚本在异步更新上执行 我发现这个帖子
  • Flask 和 Reactjs 抛出 JSX 转换错误

    我已经开始将 ReactJS 与 Python Flask 后端结合使用 通过 Flask 渲染模板时 我在 Chrome 控制台中收到以下客户端错误 错误 找不到模块 jstransform visitors es6 templates
  • Ajax 函数在重定向后不保存滚动位置

    正如标题所述 我编写了一个 ajax 函数 该函数应该滚动到用户在重定向之前所在的位置 我写了一个alert对于测试场景 它确实触发了 但滚动不断回到顶部 我在这里做错了什么 JavaScript ajax type GET url Adm
  • jQuery 模板插件:如何创建双向绑定?

    我开始使用 jQuery 模板插件 微软创建的 但现在我面临这个问题 模板用于绑定到对象数组的一堆表单 当我更改其中一个表单上的某些内容时 我希望更新绑定的对象 但我不知道如何自动执行该操作 这是一个简单的例子 现实生活中的模板和对象要复杂
  • Jquery Ajax 调用返回 403 状态

    我有一个 jquery Ajax 调用来实现会话的 keepalive 这个 keepAlive 方法将每 20 分钟调用一次 function keepAlive ajax type POST url KeepAliveDummy asp
  • redux - 如何存储和更新键/值对

    我正在使用 redux 和 React js 我想存储简单的键 值对 但无法获得正确的减速器语法 在这种情况下 每个键 值对将保持与外部系统的连接 这是正确的做法吗 我刚开始使用 redux 所以这有点神秘 export default s
  • 引导网格中的绘图图周围有巨大的空白

    我有一个 Net 应用程序 我试图在其中使用创建一个图表bootstrap js and plotly js 当我创建响应式图表时 我遇到网格中存在巨大空白的问题 我发现问题的一部分是plotly svg container的大小默认高度为
  • 如何使用 Chart.js 版本 3.2.1 在圆环图中添加文本

    我正在使用 Canvas 在 HTML 中使用 如何使用在圆环图中添加文本 这是我的 javascript 代码和 HTML 代码 我使用了图表js版本3 2 1 所以请给出相同版本 3 的解决方案 var overallStatsCanv
  • 尽管 getBoundingClientRect() 是假的,但如何将事件坐标转换为 SVG 坐标?

    我正在尝试根据鼠标的位置在 SVG 元素上动态绘制内容 不幸的是 我很难将 mousemove 事件中的鼠标坐标转换为 SVG 元素的坐标空间 这是我一直在测试的一个有缺陷的函数 CylinderDemo prototype handleM

随机推荐

  • SpriteKit 捏合缩放相机

    我似乎无法在任何地方找到如何实现相机捏合来放大 SpriteKit 在我的 GameScene 中 我似乎无法使用以下命令在相机上运行缩放操作 let cameraNode SKCameraNode cameraNode position
  • Neo4j 匹配路径排除具有特定标签的节点

    我在检索 Neo4j 中的路径排除某些标签时遇到问题 例如 我有 gt h gt j a gt b gt c gt d gt i gt f gt g with h节点有一个Deleted label 我有疑问 MATCH path n gt
  • 尝试在 ggplot 中的直方图上应用颜色渐变

    我在 ggplot 中纠结于颜色 我正在尝试根据下面的排名列应用颜色渐变 我很确定这是颜色和填充或离散变量和连续变量之间的差异 我想要颜色如下面的 c 和 d 中的比例所示 但我最接近的尝试是 e 和 f 其中点是彩色的 但不是按渐变着色的
  • 捕获表单之外的鼠标/键盘事件(应用程序在后台运行)

    我有一个在后台运行的应用程序 最小化 任务托盘 我需要能够检测鼠标活动 点击 移动 以及键盘活动 考虑到我的窗口没有 聚焦 的限制 最好的方法是什么 看看这个图书馆全局鼠标键钩 它是 100 托管的 C 代码 用于安装全局鼠标和键盘挂钩 它
  • 将图像添加到 Pyinstaller 中的 .spec 文件

    有谁知道如何修改 spec使用创建的文件Makespec pyPyinstaller 的其中包含图像数据 MEIPASS2临时目录 我希望能够向我的 exe 添加图标 我已经完成了所写的here 但我只是不知道如何在其中添加我的数据 spe
  • 查找 HTML Canvas 上下文路径上的当前点?

    如果我有一个 HTML Canvas 上下文并且执行以下操作 ctx beginPath ctx moveTo 10 10 ctx lineTo 20 30 ctx closePath ctx stroke 在 10 10 和 20 30
  • rdtscp 的“半栅栏”行为是怎么回事?

    多年来 x86 CPU 支持rdtsc指令 读取当前CPU的 时间戳计数器 该计数器的确切定义随着时间的推移而发生变化 但在最近的 CPU 上 它是一个相对于挂钟时间以固定频率递增的计数器 因此它作为快速 准确的时钟的构建块或测量时间非常有
  • 限制分号来防止SQL注入?

    我发现 SQL 注入字符串通常是这样构造的 DROP DATABASE db 因此 如果我不允许在应用程序的输入中使用分号 这是否可以 100 防止任何 SQL 注入攻击 不 它不能防止 SQL 注入攻击 任何时候您在客户端或使用存储过程中
  • Postgresql - 与 string_agg 相反

    我正在寻找一个 postgresql 函数 它会做相反的事情string agg 我有一个电影表 其中标签列包含诸如 Action Adventure Drama Horror Sci Fi Action Horror Sci Fi 例如
  • 结合参考使用 Union

    在工作中 我一直使用 Linux 以及 C 11 和 C 14 的 GCC 编译器 在一些工作代码中 我使用联合来存储引用和指针 如下所示 仅简化为重要部分 struct MyStruct Stuff union double x doub
  • .NET Web API 2 OWIN Bearer Token Authentication 直接调用

    我的 Web Api 项目有问题 我的数据库中存储了文件 并希望在新窗口中直接调用它们来查看 保存 URL 如 api Files 5 5 是 FileId 我使用 Bearer Token 来处理我的一般 AJAX 请求 使用 Angul
  • 如何否定正则表达式中的特定单词? [复制]

    这个问题在这里已经有答案了 我知道我可以否定字符组 如 bar 但我需要一个正则表达式 其中否定适用于特定单词 所以在我的示例中如何否定实际的bar 而不是 酒吧中的任何字符 一个很好的方法是使用负前瞻 bar 负向先行结构是一对括号 左括
  • Mongoose/mongoDB 查询连接..但我来自 sql 背景

    我来自 sql 背景 所以在连接表的 sql 中编写查询非常简单 但我想我在 mongoose mongodb 中缺少它 基本上我知道 Subscriber ID 它映射到用户集合中的文档 我想拉出项目组 以及用户所属的所有项目 所以如果我
  • WPF 使用 ResizeGrip 调整控件大小

    我希望用户可以通过拖动右下边框上的调整大小夹点来调整控件的大小 随着ResizeGrip似乎存在实现此目的的完美控制 但我不知道使用此控制的计划是什么 它并非源自 Thumb 但是在msdn被写为它是它的 实现 并且也不支持以下的路由事件T
  • 如何在 Android TabLayout 中设置选项卡的高度?

    我在 Android 中有这个 TabLayout 并且想让选项卡比默认值 48dp 高一点
  • 如何从数组中删除一定范围的值?

    If array 1 2 3 4 5 6 7 8 9 我想从数组中删除一系列元素 例如 我想删除索引在范围内的所有元素2 5从该数组中 结果应该是 1 2 7 8 9 提前致谢 Use slice 删除由 范围给出的元素 array 1 2
  • 在日历应用程序中使用特定事件 ID 打开“事件详细信息”

    我正在尝试打开包含特定事件的日历 我已以编程方式添加了事件 并且这些事件的所有 ID 都是持久的 这就是我添加事件的方式 IBAction addEvent id sender EKEventStore store EKEventStore
  • 哪个 Facebook SDK 与 PHP 5.3 一起使用?

    不幸的是我已经走进了一个死胡同 由于各种遗留问题和其他原因 我无法将系统升级到 PHP 5 4 和根据脸书 我需要5 4才能运行最新的SDK 我愿意接受较低的 SDK 但是 如果我使用旧版 SDK 可以吗 我应该使用哪个 SDK 奖金问题
  • 分层实体的接口设计

    我必须为分层实体设计一个接口 interface HierarchicalEntity
  • 最小距离哈密顿路径Javascript

    我知道这是一个相当常见的问题 一般而言 但我已经被它难住了一段时间了 我正在寻找给定一组 x y 坐标的最小距离哈密顿路径 起点和终点完全是任意的 但它不能循环 所以标准 tsp 已经消失 尽管据说在与所有其他节点的距离为 0 处添加一个虚