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

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(使用前将#替换为@)

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

  • 有向图的并查/不交集数据结构

    我正在寻找一个高效的联查 aka 不相交集 https en wikipedia org wiki Disjoint set data structure 我的数据结构有向图 https en wikipedia org wiki Dire
  • 检查数独字段的很酷的算法?

    有谁知道一个简单的算法来检查数独配置是否有效 我想出的最简单的算法是 对于大小为 n 的板 伪代码 for each row for each number k in 1 n if k is not in the row using ano
  • 为无向无权图实现推重标签算法 s-t 最小割边

    我正在寻找一个好的解决方案来在无向和未加权图中找到 s t 最小切割边 我想使用推送重新标记算法 但我不确定如何实现它以在无向和未加权图上找到最小割 在每对顶点之间有两条反向边 并在所有边上赋予相同的权重 并应用推送重新标记算法 我可以用这
  • 如何在 dijkstra 算法中以 O(log n ) 时间更新优先级队列中的键?

    过去一周我一直在研究 dijkstra 算法 我在 java 中有正确的运行代码 它使用数组来计算标准 findMin 函数 该函数为您提供距离最小的顶点 显然它是 O n 现在我希望使用优先级队列 最小堆 来实现它 我的思考过程是 whi
  • 交换两个向量之间的值,使两个向量的 max_element 之和最小

    这是 Codechef 的问题 但请耐心等待 https www codechef com ZCOPRAC problems ZCO16001 https www codechef com ZCOPRAC problems ZCO16001
  • 两个非嵌套循环的大 O 表示法

    对于两个非嵌套的 for 循环 大 O 表示法是什么 Example for int i 0 i
  • 加密成本高,解密成本低

    我希望该用户 攻击者加密数据并发送给服务器 现在我想要一种与标准算法完全相反的算法 使用快 难以解密 即很难使用服务器发送的密钥来加密密码等数据 以防止随机攻击 但很容易解密这样服务器在验证用户时消耗的时间非常少 但是对于攻击者来说 每次使
  • 基于时间的算法评分

    我们希望创建一种评分算法 在更短的时间内获得更高的分数 在更长的时间内获得更少的分数 需要注意的是 没有实际范围 因此时间范围可以从 100 毫秒到长达 10 分钟或更长时间 点范围为 0 到 50 谢谢你的帮助 你可以简单地把它变成一个线
  • 用 Java 创建迷宫求解算法

    我被分配了用 Java 创建迷宫求解器的任务 这是任务 Write an application that finds a path through a maze The maze should be read from a file A
  • 使到 n 个点的集合的欧氏距离之和最小的点

    我有一组点W x1 y1 x2 y2 xn yn 在 2D 平面上 你能找到一种算法 将这些点作为输入并返回一个点 x y 在 2D 平面上 距以下点的距离之和最小W 换句话说 如果 di Euclidean distance x y xi
  • 使用FFT算法计算

    给定在平面上的点 1 0 2 0 n 0 上发现的一组 n 个粒子电荷载流子 在 i 0 点发现的粒子电荷记为 Qi 作用在粒子上的力由以下公式给出 C is a Coulomb s constant 给出一个算法来计算 Fi 对于总复杂度
  • 如何在给定目标索引数组的情况下对数组进行就地排序?

    你如何对给定的数组进行排序arr in place给定目标索引数组ind 例如 var arr A B C D E F var ind 4 0 5 2 1 3 rearrange arr ind console log arr gt B E
  • 如何求解:T(n) = T(n - 1) + n

    我已经解决了以下问题 T n T n 1 n O n 2 现在 当我解决这个问题时 我发现界限非常松散 我是否做错了什么 或者只是这样 您还需要一个递归关系的基本情况 T 1 c T n T n 1 n 为了解决这个问题 您可以首先猜测一个
  • 在 O(n) 时间内找到 n x n 矩阵中的局部最小值

    所以 这不是我的家庭作业问题 而是取自 coursera 算法和数据结构课程的未评分作业 现已完成 You are given an n by n grid of distinct numbers A number is a local m
  • 编程 Pearls - 随机选择算法

    Programming Pearls 第一版第 120 页介绍了从 N 个整数总体中选择 M 个等概率随机元素的算法 InitToEmpty Size 0 While Size lt M do T RandInt 1 N if not Me
  • 如何高效地在屏幕上精确绘制N个点?

    这听起来是一个简单的问题 但我发现要获得良好的性能是非常棘手的 我提出的第一个算法是随机绘制点 从一组中检查是否已绘制 否则绘制 如果我们只绘制几个点 那么这种方法效果很好 但当我们接近填满屏幕时 速度会灾难性地减慢 我想出的最好的方法是构
  • 快速求解子集和

    考虑这种解决子集和问题的方法 def subset summing to zero activities subsets 0 for activity cost in activities iteritems old subsets sub
  • 图中的后边

    I m having a hard time understanding Tarjan s algorithm for articulation points I m currently following this tutorial he
  • 固定大小集以包含给定集的最大数量

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

    我正在尝试用 c 实现 Karasuba 乘法算法 但现在我只是想让它在 python 中工作 这是我的代码 def mult x y b m if max x y lt b return x y bm pow b m x0 x bm x1

随机推荐

  • 如何使用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 个节点构建的 我想要有额外的变量来 告