如何在图中找到精确长度的路径

2023-12-11

我想在无向图中找到固定长度的路径(运行程序时给出)。我正在使用我的图的邻接矩阵。
我尝试使用一些算法,如 DFS 或 A*,但它们只返回最短路径。

节点无法再次访问。

假设我的图有 9 个节点,最短路径是由 4 个节点构建的。
我想要有额外的变量来“告诉”算法我想要找到有 7 个节点的路径(例如),并且它将返回包含在我的预期路径 {1,2,4,5,6, 7,8}。
当然,如果没有我想要的路径的解决方案,它将不会返回任何内容(或者它将返回接近我的期望的路径,假设是 19 而不是 20)。

有人告诉我关于回溯的DFS,但我对此一无所知。
有人可以解释如何使用带有回溯的 DFS 或推荐一些其他算法来解决该问题吗?


回溯确实似乎是一个合理的解决方案。这个想法是递归地找到所需长度的路径。

伪代码:

DFS(depth,v,path):
  if (depth == 0 && v is target): //stop clause for successful branch
       print path
       return
  if (depth == 0): //stop clause for non successful branch
       return
  for each vertex u such that (v,u) is an edge:
       path.append(v) //add the current vertex to the path
       DFS(depth-1,u,path) //recursively check all paths for of shorter depth
       path.removeLast() // clean up environment

上述算法将生成all所需深度的路径。
调用与DFS(depth,source,[]) (where []是一个空列表)。

Note:

  • 该算法将生成可能并不简单的路径。如果您只需要简单的路径 - 您还需要维护visited设置,并在将其附加到找到的路径时添加每个顶点,并在从路径中删除它时删除它。
  • 如果您只想找到一个这样的路径 - 您应该从函数返回值(如果找到这样的路径则返回 true),并在返回值为 true 时中断循环(并返回 true)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在图中找到精确长度的路径 的相关文章

  • 融合元组以查找等价类

    假设我们有一个包含 k 个元素的有限域 D d1 dk 我们认为 S 是 D n 的子集 即一组 形式的元组 其中 ai 在 D 中 我们希望使用 S 2 D n 的子集 即一组 形式的元组 其中 Ai 是 D 的子集 来 紧凑地 表示它
  • 将数字的各个数字部分相加/求和的最快方法

    不久前 我在数学论坛上看到一个问题 其中一个人正在讨论一遍又一遍地将数字中的数字相加 直到达到个位数 即 362 将变成 3 6 2 这将变成 11 然后 11 将变成 1 1 将变成 2 因此 362 将返回2 我写了一些很好的代码来得到
  • 数字求和的算法?

    我正在寻找一种数字求和的算法 让我概述一下基本原则 假设你有一个号码 18268 1 8 2 6 8 25 2 5 7 7 是我们的最终数字 它基本上是将整个数字中的每个数字相加 直到我们得到一个 也称为 核心 数字 它经常被命理学家使用
  • A* 在 HTML5 Canvas 中开始寻路

    我正在尝试在我的游戏中实现 A Start 路径查找 用 JavaScript HTML5 Canvas 编写 A Start 的图书馆发现了这个 http 46dogs blogspot com 2009 10 star pathrout
  • 分组符号最大长度平衡子序列

    将 B 视为分组符号 和 的序列 如果 B 的长度为 0 或 B 具有以下形式之一 则称 B 为平衡序列 X Y 或 X Y 或 X Y 其中 X 和 Y 本身是平衡的 平衡示例 现在的问题是找到一种有效的算法来找到给定输入的最大长度平衡子
  • 为什么Python中pop()的大O与pop(0)不同[重复]

    这个问题在这里已经有答案了 他们不应该都是O 1 因为从 Python 列表中的任何位置弹出一个元素涉及销毁该列表并在新的内存位置创建一个元素 蟒蛇的list实现使用动态调整大小的 Carray在引擎盖下 删除元素usually要求您移动后
  • 将数字 n 拆分为 k 个不同数字的总和

    我有一个数字 n 我必须将它分成 k 个数字 使得所有 k 个数字都是不同的 k 个数字的总和等于 n 并且 k 最大 例如 如果 n 为 9 则答案应为 1 2 6 如果 n 为 15 则答案应为 1 2 3 4 5 这就是我尝试过的 v
  • 算法:找到圆中的峰值

    Given n排列成圆圈的整数显示了一种可以找到一个峰值的有效算法 峰值是不小于它旁边的两个数字的数字 一种方法是遍历所有整数并检查每个整数以查看它是否是峰值 这产生O n 时间 似乎应该有某种方法来分而治之 以提高效率 EDIT 好吧 基
  • java中的Anagram算法

    我想做字谜算法但是 这段代码不起作用 我的错在哪里 例如 des 和 sed 是字谜 但输出不是字谜 同时我必须使用字符串方法 不是数组 public static boolean isAnagram String s1 String s2
  • 查找两个大小为 n 的数组中第 n 大数的算法

    我有这个问题 给定两个大小为 n 的排序列表 存储在数组中 找到 O log n 计算并集中第 n 大元素的算法 两个列表 我可以看到这里可能有一个技巧 因为它需要第 n 个最大的元素 并且数组的大小也是 n 但我不知道它是什么 我在想我可
  • 打印从 1 到 100 的质数

    此 C 代码打印出以下素数 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 但我不认为这就是我的书所希望的写作方式 它提到了一些关于数字的平方根的内容
  • 计算总和等于 k ​​的子集数量

    给定一个数组 我们需要找出总和恰好等于给定整数 k 的子集的数量 请针对这个问题提出一个最佳算法 这里不需要实际的子集 只需计数即可 该数组由整数组成 可以是负数也可以是非负数 例子 数组 gt 1 4 1 10 5 绝对值总和 gt 9
  • CSR 矩阵 - 矩阵乘法

    我有两个方阵A and B 我必须转换B to CSR Format并确定产品C A B csr C 我在网上找到了很多关于CSR 矩阵 向量乘法 http www mathcs emory edu cheung Courses 561 S
  • 找到将一个数字转换为另一个数字的最小移动次数的算法

    假设我们有两个正整数 a 和 b 每次移动我们都可以将 a 除以 2 但前提是 a 是偶数 将 a 乘以 2 或者将 a 加 1 将a变为b需要多少步 找到一个直接公式或一种有效的算法 即以对数时间运行的算法 我取得的一些进展 我们可以把它
  • 找到一个恰好出现了 N/2 次的数字

    这是我的面试问题之一 给定一个包含 N 个元素的数组以及元素出现的位置正好 N 2次 其余 N 2 个元素是unique 您如何找到运行时间更好的元素 请记住 元素未排序 您可以假设 N 是偶数 例如 input array 10 2 3
  • std::__gcd 和 std::gcd 有什么区别?

    Many https www geeksforgeeks org stdgcd c inbuilt function finding gcd websites https codeforces com submissions Madiyar
  • 单词预测算法

    我确信有一篇关于此问题的帖子 但我找不到提出这个确切问题的帖子 考虑以下 我们有字典可供使用 我们收到了许多单词段落 我希望能够根据此输入预测句子中的下一个单词 假设我们有几个句子 例如 你好 我的名字是汤姆 他的名字是杰瑞 他去了没有水的
  • 具有最小刻度的图表的漂亮标签算法

    我需要手动计算图表的刻度标签和刻度范围 我知道漂亮刻度的 标准 算法 参见 我也知道这个Java实现 http erison blogspot nl 2011 07 algorithm for optimal scaling on char
  • 如何发现“贪婪”算法?

    我正在读一本关于 贪婪 算法 但我很难发现它们解决真正的 顶级程序员 问题 If I know给定的问题可以用 贪婪 算法来解决 因此编写解决方案非常容易 然而 如果我没有被告知这个问题是 贪婪的 我就无法发现它 用 贪婪 算法解决的问题有
  • 数字总和直到作为输入给出的数字

    如果给出一个数字作为输入 则找到该数字之前所有数字的总和 例如输入 11 则答案为 1 2 9 1 0 1 1 蛮力方法是计算所有小于某个数字的数字的数字之和 我已经实现了该方法 我想知道是否有其他方法可以在不实际计算每个数字的数字之和的情

随机推荐

  • 如何使用C在Linux中获取已安装驱动器的卷名?

    我目前正在编写程序 该程序必须显示有关已安装闪存驱动器的信息 我想显示完整空间 可用空间 文件系统类型和卷名称 但问题是 我找不到任何可以获取卷名称 卷标签 的 API 有没有任何api可以做到这一点 附注我正在通过的完整空间 可用空间和文
  • Redis PubSub 订阅机制是如何工作的?

    我想创建一个发布 订阅基础设施 其中每个订阅者都将收听多个 例如 100k 频道 我认为使用 Redis PubSub 来实现此目的 但我不确定订阅数千个频道是否是最佳实践 为了回答这个问题 我想知道 Redis 中的订阅机制如何在后台工作
  • docker-compose - 重启策略 - 不保留图像中的更改

    让我们考虑以下示例 version 3 services some service build restart unless stopped This docker compose工作正常 但是在重新启动期间 它会保留先前运行 重新启动之前
  • 如何从排序列表中选择小于给定整数的元素?

    我有一系列素数 例如0 到 1000 之间的整数 primes 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 1
  • 具有 URL 值的 HTML 标记属性的完整列表?

    除了以下属性之外 是否还有以 URL 作为值的 HTML 标记属性 href标签上的属性 a area src标签上的属性 img a
  • 将字符串转换为日期时间 vb.net

    我需要将字符串转换为日期格式 要求是如果选择当前月份 则日期应为 getdate 如果选择任何其他月份 则应选择该月的第一个月 输入的数据是 2010 年 1 月 2010 年 2 月 等 但它应该作为 01 01 10 或 02 01 1
  • JQuery - on()-方法/动态处理程序

    我有一份等候名单和一份参与者名单 管理员可以通过单击等待列表中用户名旁边的 div 将用户添加到参与者列表中 单击 div 将某人添加到参与者列表后 将调用 ajax 请求 gt 该请求会更新数据库中用户的状态 并且 如果 ajax 请求成
  • WebPack TypeError:无法读取未定义的属性“请求”

    我继承了一个现有的 Angular2 项目 当我跑步时NPM start我收到一个很长的错误 开头是 Html Webpack 插件 类型错误 无法读取未定义的属性 请求 完整的错误输出 http textuploader com d5n2
  • Android CoreLocation 标题

    我目前正在研究一种算法 需要准确估计移动设备的航向 对于iOS中的开发 我不必估计用户标题 因为框架已经提供了以下值trueHeading通过 CoreLocation 框架 所以我不必实现我自己的融合算法 这的美丽trueHeading是
  • Android 中的 Websocket 和 cookie

    我正在开发一个 Android 应用程序 我需要一个 Websockets 框架 该框架允许我在 Websocket 的第一个连接中发送 cookie 而不是在每条消息中 我试过了Autobahn and Java WebSocket但他们
  • facebook graph api 图片

    如何使用 graph api 检索朋友的图片 我已经设法使用这个来获取我朋友的个人资料图片 https graph facebook com user id 但是 我想获取我朋友发布的照片 我能够得到这个数据 link http www f
  • PHP 从 Javascript 加密流文件

    我正在开发一个用于大文件的文件上传器 从 HTML 脚本上传并使用 ArrayBuffer 和 Unit8Array 从 Javascript 按字节发送到 PHP PHP 脚本将流式传输文件并将其保存到文件夹中 这是我的 Javascri
  • 使用来自多个表的信息来记录交付的通用或特定 DAO?

    我正在创建一个 Web 应用程序 让用户使用 spring 和 hibernate 通过 GUI 存储和检索数据库中的信息 在创建 DAO 和服务层时我陷入了困境 我想创建一个可以添加新交付的方法 在我的交货表中我有产品编号 and 客户I
  • Prolific PL2303 串行端口至 250000bps

    我需要使用 c 以 250kbps 的速度运行我的 dev ttyUSB0 多产的 pl2303 USB RS232 转换器 我到处查看 每个人都说最接近的可达到的速度是 230400 bps http lxr linux no linux
  • 通用量化和统一,一个例子

    给出运行 monad 的以下签名ST runST forall s ST s a gt a 和功能 newVar a gt ST s MutVar s a readVar MutVar s a gt ST s a 那么Haskell编译器将
  • Facebook API for Android:如何获取有关用户好友的扩展信息?

    我正在开发小型 Android 应用程序 试图添加 Facebook 支持 主要问题 我只能获取有关用户朋友的基本信息 ID 姓名 应用程序权限列表 offline access仅用于测试 很快就会被删除 String sPermissio
  • 我如何使用 ruby​​ 迭代这个 json 文档?

    我有一个ruby代码块 如下 require elasticsearch require json search term big data city Hong Kong client Elasticsearch Client new lo
  • 使用 Maven 集成 Activiti Modeler

    如何将 Activiti Modeler 集成到自己的 Web 应用程序中并保留 Maven 建议的所有优点 问题是Maven中的Activiti Modeler是Activiti Explorer的一部分 网上有一些问题来自那些想要开发自
  • 如何在 Array.map 中获得正确的“this”?

    我假设有一些应用call or apply在这里 但我不确定如何实现它 http codepen io anon pen oXmmzo a foo bar things 1 2 3 showFooForEach function this
  • 如何在图中找到精确长度的路径

    我想在无向图中找到固定长度的路径 运行程序时给出 我正在使用我的图的邻接矩阵 我尝试使用一些算法 如 DFS 或 A 但它们只返回最短路径 节点无法再次访问 假设我的图有 9 个节点 最短路径是由 4 个节点构建的 我想要有额外的变量来 告