我可以使用什么算法来查找图中指定节点类型之间的最短路径?

2023-12-25

这就是问题:

我有 n 个点(p1、p2、p3、.. pn),每个点都可以以确定的成本 x 连接到任何其他点。

每个点都属于一组点类型中的一个(例如“A”“B”“C”“D”...)。

该方法的输入是我想要遵循的路径,例如“A-B-C-A-D-B”。

输出是连接我在输入中给出的类型的点的最短路径,例如“p1-p4-p32-p83-p43-p12”,其中p1是A型,p4是B型,p32是C型型,p83 为 A 型,p43 为 D 型,p12 为 B 型。

“简单”的解决方案包括计算所有可能的路径,但计算成本非常高!

有人能找到更好的算法吗?

正如我在标题中所说,我不知道它是否存在!

Update:

阻止我使用 Dijkstra 和其他类似算法的关键点是我必须根据类型链接点。

作为输入,我有一个类型数组,我必须按该顺序链接。

这是肯特·弗雷德里克(Kent Fredric)的图像(非常感谢),它描述了初始情况(红色允许链接)!

一个现实生活中的例子:

一个人想早上参观教堂,去餐馆,最后下午参观博物馆。

地图上有 6 座教堂、30 家餐厅和 4 家博物馆。

他希望教堂-休息区-博物馆的距离尽可能小。


您可以使用 Floyd–Warshall 算法。这是维基百科给出的伪代码:

/* Assume a function edgeCost(i,j) which returns the cost of the edge from i to 
   (infinity if there is none).
   Also assume that n is the number of vertices and edgeCost(i,i)=0
*/

int path[][];

/* A 2-dimensional matrix. At each step in the algorithm, path[i][j] is the shortest path
   from i to j using intermediate vertices (1..k-1).  Each path[i][j] is initialized to
   edgeCost(i,j) or infinity if there is no edge between i and j.
*/

procedure FloydWarshall ()
    for k: = 1 to n
        for each (i,j) in {1,..,n}2
            path[i][j] = min ( path[i][j], path[i][k]+path[k][j] );

我必须为同一问题的算法课程编写一个程序。这个算法很有魅力!祝你好运。

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

我可以使用什么算法来查找图中指定节点类型之间的最短路径? 的相关文章

  • Google 文档如何处理编辑冲突?

    我一直在尝试编写自己的 Javascript 编辑器 其功能类似于 Google Docs 允许多人同时使用 我不明白一件事 假设用户 A 和用户 B 直接相互连接 网络延迟为 10 毫秒 我假设编辑器使用 diff 系统 据我了解 Doc
  • 基本的 Python OpenCV 裁剪和调整大小

    有人可以帮我一些裁剪算法吗 它的 openCV 我想弄清楚这一点 我知道方法是crop image y y1 x x1 如果我有一个带有 new dimensionXxnew dimensionY 像素的图像 并且我想将其裁剪为相同的宽度
  • Excel - 确定排列的奇偶性

    我正在处理一个 Excel 工作表 需要确定大小数字的垂直数组的奇偶校验N 该数组包含来自的每个数字1 to N每一次正好一次 在这种情况下 奇偶校验被定义为将加扰数组转换为从小到大排序的数组所需的交换次数 例如 数组 3 1 2 4 具有
  • 计算字符串的所有子串中子序列的出现次数

    我想编写一个算法来计算字符串的所有子字符串中字符子序列 不相交 出现的总数 下面是一个例子 字符串 jabcohnnyjohnny 后续 约翰尼 包含子序列的子字符串 jabcohnny jabcohnnyj jabcohnnyjo jab
  • 如何在 JavaScript 中构建树模式匹配算法?

    好吧 这是一个有点复杂的问题 但是 tl dr 基本上是如何使用 模式树 解析 实际树 如何检查特定的树实例是否与特定的模式树匹配 首先 我们有我们的结构模式树 模式树通常可以包含以下类型的节点 sequence节点 匹配一系列项目 零个或
  • Math.random() 在 JavaScript 中如何工作?

    我最近想出了如何通过谷歌获取随机数 这让我思考如何Math random 工作 所以我在这里我无法弄清楚他们是如何做到 Math random 的 除非他们使用了类似时间的东西 有谁知道 JavaScript 是如何做到的吗 Math ra
  • 简单的排名算法

    我需要创建一个民意调查 按照项目的好坏顺序创建一个排名列表 我打算向每个用户展示两个项目 让他们选择一个他们认为更好的项目 然后多次重复这个过程 它有点类似于您在社交网络电影 我应该如何根据收到的答案对项目进行排名 看着那 这ELO国际象棋
  • 分而治之算法找到两个有序元素之间的最大差异

    给定一个整数数组 arr 找出任意两个元素之间的差异 使得较大的元素出现在 arr 中较小的数字之后 Max Difference Max arr x arr y x gt y 例子 如果数组是 2 3 10 6 4 8 1 7 那么返回值
  • 是否有一种算法可以在线性时间内计算数组反转?

    我知道有多少倒转 en wikipedia org wiki Inversion 28discrete mathematics 29 in an n 元素数组可以在 O n log n 操作使用增强型归并排序 http www geeksf
  • 坐标算法 - 绕中心旋转

    通过查看这张图片 我想您会很好地理解我的问题 图片已删除 网址不再有效 现在返回广告 所以基本上我想要一个函数 它接受一个对象作为参数 并根据我之前添加的对象数量为该对象提供正确的坐标 假设我将所有这些对象添加到一个数组中 objectAr
  • 如何在 MATLAB 中绘制 3D 曲面图?

    我有一个像这样的数据集 0 1 0 2 0 3 0 4 1 10 11 12 13 2 11 12 13 14 3 12 13 14 15 4 13 14 15 16 我想在 matlab 中绘制 3D 曲面图 使列标题位于 y 轴 行标题
  • 如何光栅化旋转矩形(通过 setpixel 在 2d 中)

    我有四个 2d 顶点 A B C D 的旋转矩形 我需要在像素缓冲区中 有效地 光栅化 绘制它 使用 setpixel x y 颜色 怎么做 我正在尝试使用一些代码 例如 convertilg a b c d do up down left
  • 求先递增后递减列表的最大值和最小值

    我尝试用谷歌搜索这个问题 但没有取得太大成功 我确信这个问题或类似问题有一个技术名称 但我似乎找不到答案 给定一个列表L整数 即严格递增 然后严格递减 找到该列表的最大值和最小值 例如 L可能 1 2 3 4 5 4 3 2 or 2 4
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 贝尔曼福特算法可以有任意的边顺序吗?

    我刚刚开始学习新算法 但当我阅读 极客为极客而写的贝尔曼福特算法 时 我陷入了困境 http www geeksforgeeks org dynamic programming set 23 bellman ford algorithm h
  • 在 NetworkX 中使边缘更粗

    student id 0 1 2 3 4 5 6 7 8 9 10 11 12 0 131X1319 1 14 6 16 1 10 8 15 15 17 15 18 16 1 13212YX3 1 1 4 8 11 9 14 7 0 3 0
  • 优化计算中使用的 # 个线程的算法

    我正在执行一个操作 我们将其称为CalculateSomeData CalculateSomeData 在连续的 代 中运行 编号为 1 x 整个运行中的代数由CalculateSomeData 的输入参数固定 并且是先验已知的 完成一次生
  • 我如何能够以两行显示标题,并且每行的字体大小不同?

    我正在使用 Google Chart API 创建时间线图 并希望将图的标题修改为两行 问题 我如何能够显示具有不同字体大小的两线图表标题 电流输出 理想输出 相关研究 我唯一能找到的是有人试图用饼图来做到这一点 但我尝试了但无法使其发挥作
  • 如何生成类似github的影响图?

    是否有一些程序 或者我错过的一些神奇的 git 插件 可以从 git 存储库获取影响图或类似的东西 而无需通过 github 就数据收集而言 我可以生成图表 我不确定从哪里开始编写自己的代码 我假设有一些标志我可以传递给 git log 来
  • 如何计算 3D 坐标的线性索引,反之亦然?

    如果我有一个点 x y z 如何找到该点的线性索引 i 我的编号方案是 0 0 0 是 0 1 0 0 是 1 0 1 0 是最大 x 维度 另外 如果我有一个线性坐标 i 我如何找到 x y z 我似乎无法在谷歌上找到这个 所有结果都充满

随机推荐

  • R:将文本添加到绘图区域外右下角的绘图中

    我正在 baseR 中绘制多个图表 并尝试在绘图的右下角绘制文本 我尝试使用mtext 但这并没有给我想要的结果 你会怎么做 最终的想法是生成如下图所示的东西 我怎么能这样做呢 这是我用来生成绘图的代码 xy lt data frame N
  • 在现代 JavaScript 应用程序中使用 DOM Level 0 的最佳实践

    是否有一套商定的 最佳实践 来使用DOM 0 级集合 http www quirksmode org js dom0 html在现代 JavaScript 应用程序中 document forms document images etc 在
  • Haskell的mapM不懒吗?

    UPDATE 好吧 这个问题可能会变得非常简单 q lt mapM return 1 为什么这种情况一去不复返 mapM 不会懒惰地处理无限列表吗 下面的代码挂起 但是 如果我用 B 行替换 A 行 它就不会再挂起 或者 如果我在 A 行前
  • 模拟器:不兼容的 HAX 模块版本 3 需要最低版本 4

    问题出在哪里 模拟器 不兼容的 HAX 模块版本 3 需要最低版本 4 模拟器 未找到加速器 模拟器 未能初始化 HAX 参数无效 打开 SDK Manager 并更新 HAXM 工具 gt SDK 管理器 gt SDK 工具 gt Int
  • Paperclip:与邮箱宝石集成

    我在用着邮递员 https github com ging mailboxergem 我不知道如何将它与 Paperclip 消息类 一起使用 将 Paperclip 与 User 类一起使用是 class User lt ActiveRe
  • 找不到模块:无法解析reactjs中'node_modules\react-moment\dist'中的'moment'

    我已经安装了react moment npm i react moment 它安装在node modules目录中 并在package json文件中添加依赖项 每件事都是正确的 但是当我导入时 import Moment from rea
  • 使用 WHERE 子句中的两个字段对 MySQL 中两个表的分数求和

    I have two tables in MySQL I will call them grade7 and grade8 Both tables have all these fields StudentID FirstName Last
  • Pandas 数据框使用列作为行(融化)

    我知道 这个问题已经被问过好几次了 但我没有设法根据已经问过的问题构建我的解决方案 DF 我有 id country series name 2015 2016 2017 0 saudi fertility rate 1 2 2 1 sau
  • 如何在 Android Espresso 测试中捏合和缩放(手势)图像视图? [复制]

    这个问题在这里已经有答案了 我正在研究图像编辑应用程序的自动化 并使用 Android Espresso 作为框架 请指导我如何在 Android Espresso 测试中捏合和缩放 手势 图像视图 Espresso 中没有相应的方法 但您
  • PHP图像替换?

    我现在脑子一片空白 如果有人能和我讨论这个问题并提出建议那就太好了 我正在从数据库导入 URL 例如www mysite com images image1 jpg设置为变量newimage1 这是从数据库加载并放置在页面上的 由于这是一个
  • 具有 REST API 的开源作业调度程序

    是否有任何具有 REST API 的开源作业调度程序可供商业使用 它将支持以下功能 树状作业依赖关系 保持和释放 重新运行失败的步骤 并行性 如有帮助 将不胜感激 注意 我们正在寻找开源替代方案TWS http en wikipedia o
  • 不带扩展名的文件名[重复]

    这个问题在这里已经有答案了 在PHP中是否有任何方法可以获取上传到服务器的不带扩展名的文件名 我用的是 FILES file name 但它也返回扩展名 filename pathinfo FILES file name PATHINFO
  • 惯用的 Golang goroutine

    在 Go 中 如果我们有一个类型 它的方法启动某种循环机制 轮询 A 并永远执行 B 最好将其表达为 Run does stuff you probably want to run this as a goroutine func t Ty
  • 在Python中转换多个属性中的dict属性

    我有一个带有 dict 属性的类 如下所示 class MyClass def init self self mydict var1 value1 var2 value2 当我想获取值时 我必须这样做 cls MyClass print c
  • 反映在 DOM 中的同名表单元素

    如果您有多个具有相同内容的表单元素name在表格中 条目elements表单上的集合最终成为这些字段的集合 这很方便 DOM2 HTML 规范涵盖了elements收藏 http www w3 org TR DOM Level 2 HTML
  • 如何在 Oracle SQL 中检索父行的所有递归子行?

    我有一个递归查询 它确实扩展了这个 Java 猴子的 SQL 知识的极限 现在终于到了凌晨 1 30 可能是时候开始寻求帮助了 这是谷歌为数不多的几次让我失望的事情之一 表格如下 Parent ID CHILD ID QTY 25 26 1
  • 对栅格列表列表执行循环

    需要解决方案 我们将不胜感激 在下面的代码中 我创建了三个栅格 然后我创建一个随机的number该栅格上的点位置 我收到三个矩阵的列表 其中包含这些随机位置的坐标samples 然后 我获取这些位置和样本栅格值以接收samplevalues
  • C# - 在单元测试中断言两个对象相等

    使用 Nunit 或 Microsoft VisualStudio TestTools UnitTesting 现在我的主张失败了 TestMethod public void GivenEmptyBoardExpectEmptyBoard
  • geom_text 未标记躲避的 geom_bar

    我似乎无法让 geom label 来标记躲避条形图CLASS 情节被 躲避 的因素 相反 我得到的是总数count per PROC the Y axis ggplot data df mapping aes x PROC geom ba
  • 我可以使用什么算法来查找图中指定节点类型之间的最短路径?

    这就是问题 我有 n 个点 p1 p2 p3 pn 每个点都可以以确定的成本 x 连接到任何其他点 每个点都属于一组点类型中的一个 例如 A B C D 该方法的输入是我想要遵循的路径 例如 A B C A D B 输出是连接我在输入中给出