找到图中强制访问某些边而其他边不强制访问的最短路径

2024-01-20

我有一个无向图,约有 1000 个节点和 2000 个边、一个起始节点和一个结束节点。我必须从起始节点遍历到结束节点,穿过所有强制边(大约10条),而不必遍历所有顶点或节点。有没有一个简单的解决方案,比如对现有的图遍历算法进行一些小的改变?我该怎么做?

感谢帮助。:)

这个问题不同于查找图中访问某些节点的最短路径 https://stackoverflow.com/questions/222413/find-the-shortest-path-in-a-graph-which-visits-certain-nodes因为我的问题是关于强制边而不是顶点。

编辑:强制边可以按任何顺序遍历。


To start with a related problem, say you have a graph G = (V, E), 10 specific edges you must traverse in a given order E' = 1, ..., e10 > ∈ E, and a start and end nodes s, v ∈ V. You need to find the shortest distance from s to v using E' in the given order.

You could do this by making 10 copies of the graph. Start with a single copy (i.e., isomorphic t G = (V, E)), except that e1 moves from the first copy to the second copy. In the second copy (again isomorphic t G = (V, E)), remove e1, and have e2 move from the second copy to the third copy. Etc. In the resulting graph, run any algorithm to get from s in the first copy to e in the 10th copy.

Explanation: imagine intuitively that your graph G is drawn on a 2d sheet of paper. photocopy it so that you have 10 copies, and stack them up to a pile of 10 papers (imagine them with a bit of space between each two, though). Now change the graphs a bit so that the only way to go up to the second sheet, from the first sheet, is through an edge e1 leading from the bottom sheet to the second sheet. The only way to go up to the third sheet, from the second sheet, is through an edge e2 leading from the second sheet to the third sheet, and so on. You problem is to find the shortest path starting at the node corresponding to s on the bottom sheet, and ending at the node corresponding to e on the top sheet.

要解决原始问题,只需用所有可能的排列重复此操作E'。请注意,有 10 个! ~ 3.5e6 种可能性,这并不是那么多。

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

找到图中强制访问某些边而其他边不强制访问的最短路径 的相关文章

  • 确定解决迷宫问题的最小线段数

    我有一个问题 我需要定义一个具有最少数量的顶点的多边形 该多边形与不透明的图像中的每个像素相交或包含每个像素 令 N 为图像中的像素数 我唯一的假设是图像的边界 孔 内不能包含透明像素 并且至少有两个像素是不透明的 举个例子 假设我有以下图
  • 如何从该 Voronoi 图数据中获取单元格字典?

    使用找到的voronoi delaunay图生成库在这个节目中 http sourceforge net projects mapmanager 这是基于 财富 最初的实施他的算法 http en wikipedia org wiki Fo
  • 固定大小集以包含给定集的最大数量

    我有大约 1000 组尺寸 1 4 1 3 3 5 6 4 5 6 7 5 25 42 67 100 是否有可能找到包含最大数量的给定集合的大小为 20 的集合 检查每一个100 80 20 集 效率低下 我不太确定这是 NP 完全的 考虑
  • 如何确定算法函数的复杂度?

    您如何知道算法函数对于特定操作是否需要线性 常数 对数时间 它取决于CPU周期吗 您可以通过三种方式 至少 做到这一点 在网上查找算法 看看它是如何描述其时间复杂度的 根据输入大小 自己检查算法 查看嵌套循环和递归条件等内容 以及每个循环运
  • Flash 图表和图形的最佳解决方案是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道融合图表 http www fusioncharts com 还有其他好的解决方案或 API 用
  • 无需构建树即可预测霍夫曼压缩比

    我有一个二进制文件 我知道其中每个符号出现的次数 如果我要使用霍夫曼算法压缩它 我需要预测压缩文件的长度 我只对假设的输出长度感兴趣 而不对单个符号的代码感兴趣 因此构建霍夫曼树似乎是多余的 作为一个例子 我需要得到类似的东西 包含 4 个
  • 0-1背包算法

    以下 0 1 背包问题是否可解 浮动 正值和 浮动 权重 可以是正数或负数 背包的 浮动 容量 gt 0 我平均有 这是一个相对简单的二进制程序 我建议用蛮力进行修剪 如果任何时候你超过了允许的重量 你不需要尝试其他物品的组合 你可以丢弃整
  • 如何仅使用单个数组在 JavaScript 中模拟调用堆栈

    我正在看维基百科页面 https en wikipedia org wiki Call stack在调用堆栈上 并尝试理解这个图像 据我所知 哈哈 const memory memory 0 3 top of stack pointer m
  • 带路径压缩算法的加权 Quick-Union

    有一种 带路径压缩的加权快速联合 算法 代码 public class WeightedQU private int id private int iz public WeightedQU int N id new int N iz new
  • 生成所有多集大小为 n 的分区的算法

    我一直在试图找出一种方法来生成多重集的所有不同的大小为 n 的分区 但到目前为止却空手而归 首先让我展示一下我想要实现的目标 假设我们有一个输入向量uint32 t std vector
  • 在常数空间中创建 1..N 的随机排列

    我正在寻找枚举固定空间中数字 1 N 的随机排列 这意味着我无法将所有数字存储在列表中 原因是 N 可能非常大 超过可用内存 我仍然希望能够一次遍历这样一个数字的排列 只访问每个数字一次 我知道对于某些 N 可以这样做 许多随机数生成器随机
  • Silverlight 中的图形可视化

    我有一个表示有向图的数据结构 我正在寻找一个好的 Silverlight 可视化 以允许我从一个节点导航到另一个节点 最好带有一些漂亮的动画 有谁知道这种显示有什么好的 UI 控件或框架吗 甚至是来自另一个领域的样本 也许是社交网络 我的图
  • 使用 PHP 创建图表并导出为 PDF

    我正在寻找有关使用 PHP 创建图表的建议 我还希望能够将这些图表导出到 PDF 文档 我目前正在使用谷歌图表 但我不喜欢将我的所有信息发送到谷歌的想法 我更喜欢自己的托管解决方案 我见过很多 Flash 解决方案 但我不知道有什么方法可以
  • 迭代任意大小的子集

    我可以迭代大小为 1 的子集 for int a 0 a lt size a 或大小为 2 的子集 for int a1 0 a1 lt size a1 for int a2 a1 1 a2 lt size a2 or 3 for int
  • 在鼠标光标位置添加 cytoscape 节点

    我想在画布上的单击事件上的鼠标箭头位置添加一个 cytoscape 节点 我怎样才能做到这一点 我的方法 效果不太好 我可以通过单击创建一个节点 但无法确保创建的节点的位置位于我单击的位置 使用这样的东西 cy click function
  • Florian 的 Grisu2 算法如何工作?

    我遇到了一个关于将 double 转换为 ascii 的问题 经过搜索 我得到了 Florian 的论文 使用整数快速准确地打印浮点数 http www cs tufts edu nr cs257 archive florian loits
  • 数据聚合和缓存:如何按时间间隔快速绘制大型时间序列数据集的图表

    我有一个巨大的时间序列数据集 我想绘制图表 时间序列可以追溯到 5 年前 从后端的角度来看 以各种分辨率 间隔 显示这些数据的常用方法是什么 本质上我想绘制这样的数据图表 https bitcoinwisdom com markets bi
  • 以 O(1) 计算汉明权重 [重复]

    这个问题在这里已经有答案了 在二进制表示中 汉明权重是 1 的数量 我偶然发现了网络并找到了一个 O 1 的答案 v v v gt gt 1 0x55555555 v v 0x33333333 v gt gt 2 0x33333333 in
  • 更改 3D 图形颜色 (matplotlib)

    我使用以下代码在 matplotlib 中绘制了 3D 图形 Previously defines lists of data to plot fig plt figure ax fig add subplot 111 projection
  • n 或 nlog(n) 比常数时间或对数时间更好吗?

    在 Coursera 上的普林斯顿教程中 讲师解释了遇到的常见增长顺序函数 他说 线性和线性算术运行时间是 我们努力的目标 他的推理是 随着输入大小的增加 运行时间也会增加 我认为这是他犯了错误的地方 因为我之前听过他提到线性增长顺序对于高

随机推荐

  • VB6:名称与现有模块、项目或对象库冲突

    打开 VB6 项目时 我收到如下错误 加载期间出错 参考xyz LOG 我打开日志文件并看到以下错误 第 42 行 控件 XYZ 的类 Threed SSPanel 不是加载的控件 班级 在这种情况下 我可以看到问题是由于 Sheridan
  • IEEE 浮点标准中的 (+0)+(-0) 是什么?

    我对任何浮点数的算术运算都是由 IEEE 浮点标准明确定义的吗 如果是的话 只是出于好奇 什么是 0 0 有没有办法在实践中用 C 或其他常用的编程语言检查这些事情 有符号零的算术 IEEE 754 规则规定 0 0 0 0取决于舍入模式
  • 从 Pandas Column 中解压字典

    我有一个数据框 其中一列作为字典 我想将其解压为多列 即代码 金额是下面原始列格式中的单独列 以下代码用于使用 pandas v0 22 现在 0 23 给出索引错误 pd DataFrame from records df col nam
  • 松弛传入的 webhook 总是发布到默认频道,即使我提供了不同的频道

    我正在尝试使用传入的 webhook 将消息发送到 slack 通道 并且 webhook 是使用默认通道 channel1 创建的 但现在我想使用相同的传入 webhook 将消息发送到通道 general 我正在使用以下命令来执行此操作
  • chrome 和 firefox 之间的 SVG 图案不一致

    我有一个覆盖指定为图案的纯色 红色 的渐变
  • docker-machine:找不到命令

    我最近将 Docker Desktop for Mac 升级到版本 2 2 0 0 现在尝试运行docker machine命令我收到错误 docker machine version docker machine 找不到命令 Docker
  • 以多行而不是一长行显示 JSON 文件的内容

    在 Unity 中 我使用 JSON 文件保存游戏 当我在 Visual Studio 中打开该文件时 它会在一行中显示全部内容及其所有变量 这是我的 JSON 文件的一小部分 JSON before my copy paste trick
  • 确定 viewDidLoad 中的框架/边界

    各位程序员大家好 首先 对这么长的帖子表示歉意 我的问题相当简单 但我想确保你知道我在做什么 而且我真的不想改变我方法的基本思想 以下都是以编程方式完成的 没有故事板 没有笔尖 没有导航控制器 我有一个没有自己的视图的 RootViewCo
  • 我应该使用哪个 iPhone“Active SDK”版本?

    当我想要构建应用程序时 当前 截至 2008 年 12 月 iPhone SDK 允许我在 3 个版本之间进行选择 2 0 2 1 2 2 我将忽略下面的 2 1 我的假设 2 2比2 0有更多可用的API函数 2 2 修复了 2 0 以来
  • 如何判断对象引用是否为null?

    确定对象引用变量是否是的最佳方法是什么null 是下面这个吗 MyObject myObjVar null if myObjVar null do stuff 是的 你是对的 如果你想执行任意代码 可以使用以下代码片段 MyObject m
  • scanf("%d%d", &x, &x) 定义明确吗?

    下面的代码定义清楚吗 include
  • 以编程方式覆盖高 DPI 感知

    Windows 10 Creator s Update Edition 中为最终用户提供了一个新选项 最终用户可以在兼容性选项卡上将 EXE 的属性更改为 覆盖高 DPI 缩放行为 并将其设置为系统 增强 我测试了它 它对于一些经典的 wi
  • 是否可以更改 log4j 中包的日志级别?

    目前我有一个库将某些信息记录为错误 如果我像这样更改 log4j 设置 log4j logger com company theirpackage foo OFF 这将完全禁用库的日志记录 然而 我真正想要的是仍然看到这些信息 但将其记录在
  • 在javascript中,视频相当于“new Audio( )”

    在 Javascript 中 您可以像这样访问 HTML 5 音频对象 var audio new Audio nameOfFile mp3 但视频元素的等效语法似乎不起作用 我在 Chrome 上 var video new Video
  • 查看对子文件夹进行更改的提交

    假设一个存储库名为drivers其中包含子文件夹 例如 ath b43 p54 etc 如果没有子树 创建新的存储库 是否可以查看适用于特定子文件夹的提交 例如 查看对ath子文件夹 您应该能够指定文件夹git log http git s
  • 如何验证下拉列表项是否已被选择

    嗯 这一定很容易 但是 我的视图中有一个下拉列表 Model clients DistrictList 是 SelectList 类型 我想要做的是确保用户选择某些内容 即 选择地区 其值为 未选择 所以在控制器中我有 AcceptVerb
  • 如何对多维数组的所有关联值求和?

    如何对该关联数组的所有值求和 Array 0 gt Array user1 gt 20 1 gt Array user2 gt 30 3 gt Array user3 gt 10 预期输出 60 我试过 array sum无济于事 lsd
  • 未知:无法打开第 0 行未知中所需的“0ff”(include_path='.:/tmp:/usr/lib/php:/usr/local/lib/php')

    我今天收到以下错误 我没有对我的 PHP 程序进行任何更改 警告 未知 无法打开流 没有这样的文件或目录 第 0 行未知 警告 未知 无法打开流 没有这样的文件或目录 第 0 行未知 致命错误 未知 打开失败需要 0ff include p
  • jQuery 对话框 iframe 在 IE 中加载一次,在其他浏览器中加载两次?

    我有一个 jQuery 对话框 其内容由 iframe 定义 在显示对话框之前 此 iframe 的内容是不可见的 在 IE 中 该内容及其关联的 javascript 正在执行 因此当显示对话框时 很明显 javascript 已经完成了
  • 找到图中强制访问某些边而其他边不强制访问的最短路径

    我有一个无向图 约有 1000 个节点和 2000 个边 一个起始节点和一个结束节点 我必须从起始节点遍历到结束节点 穿过所有强制边 大约10条 而不必遍历所有顶点或节点 有没有一个简单的解决方案 比如对现有的图遍历算法进行一些小的改变 我