使用深度优先搜索查找所有简单路径的复杂性?

2023-12-03

感谢大家回复想法和替代解决方案。更有效的解决问题的方法总是受欢迎的,也欢迎质疑我的假设。也就是说,我希望你暂时忽略我试图用算法解决的问题,而只是帮助我分析我编写的算法的复杂性——所有简单的路径在图中使用描述的深度有限搜索here,并实施了here。谢谢!

编辑:这是作业,但我已经提交了这份作业,我只是想知道我的答案是否正确。当涉及递归时,我对 Big-O 复杂性感到有点困惑。


原问题如下:

我试图找出全路径搜索的复杂性,如下所示this算法。 给定两个顶点,我使用深度优先搜索找到它们之间的所有简单路径。

我知道DFS的时间复杂度是O(V+E),空间复杂度是O(V),我的直觉是全路径搜索的复杂度会不止于此,但我无法确定它会是什么。

相关问题here and here.

更新(回应下面的评论):

我正在尝试解决凯文·培根的六度问题。这通常需要找到一对演员之间的最低分离度,但我必须找到所有分离度(目前小于 6,但这可以改变)。


最坏的情况是(我认为)完整的图表n顶点。该图有n!简单的路径,对于每个路径,你的算法至少执行n^2 计算步骤——对于路径中与最后一个相邻的每个顶点,它对先前访问过的节点的链表进行线性扫描。 (这还没有计算搜索的所有中间阶段。)所以复杂度至少为 O(n^2 * n!),可能更糟。

您想要解决的更大问题是什么?

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

使用深度优先搜索查找所有简单路径的复杂性? 的相关文章

  • 什么是确定性快速排序?

    我一直在阅读有关快速排序的内容 发现有时它被称为 确定性快速排序 这是普通快速排序的替代版本吗 普通快速排序和确定性快速排序有什么区别 普通 确定性 快速排序在特定数据集上的行为可能非常差 例如 选择第一个未排序元素的实现在已排序数据上的时
  • 如何返回 Solidity 中的结构数组?

    我正在为以太坊智能合约设计一个解决方案bidding 用例包括保留名称 例如 myName 并分配给一个地址 然后 人们可以竞标该名称 在本例中为 myName 可以有多个名称发生多次此类出价 struct Bid address bidO
  • 将整数列表划分为总和相等的 K 个子列表

    类似的问题还有1 https stackoverflow com questions 27322804 partition of a set into k disjoint subsets with equal sum and 2 http
  • 求 Petersen 子图中的哈密顿路径

    我开始使用 IDE Jupyter Python 3 6 并出现了一个问题 我必须通过IDE绘制Petersen子图中的哈密顿路径 但我不知道该怎么做 我显示有关该图的信息 彼得森图 https en wikipedia org wiki
  • 关于大O和大Omega的问题

    我认为这可能是一个关于大 O 表示法的初学者问题 举例来说 我有一个算法 可以递归地分解整个列表 O n 然后将其重新组合在一起 O n 我假设这意味着效率为 O n O n 这是否可以简化为 2O n O 2n 或 O n 根据我对这种表
  • 识别鼠标移动的算法

    我想知道是否有任何研究 算法可以指定鼠标在识别 等字符时的偏差量使用鼠标绘制 某种光学字符识别 但可能是一个更简单的版本 是否有某种算法可以让我说用户绘制的问号确实是一个问号 而不是其他具有一定准确性的东西 就像 Windows 平板电脑软
  • 对矩阵进行舍入,保留行和列总计

    想要 以保留行和列总计的方式对矩阵进行舍入的 伪 代码 问题从向量开始 X and Y of 非负整数 with Sum X Sum Y 想要圆X Y Sum X 同时保留行和列总计 这是婚姻问题的一种 Xa需要进行一定次数的握手 拨打该号
  • 为什么《破解编码面试》这个例子的时间复杂度是O(k c^k)?

    该问题来自 破解编码面试 第 6 版 问题 V1 11 以下代码打印长度为 k 的所有字符串 其中字符 是按排序顺序排列的 它通过生成所有长度的字符串来做到这一点 k 然后检查每个是否已排序 什么是运行时间 package QVI 11 P
  • 图像算法上的物体计数

    我又接到学校任务了 这次 我的老师给我的任务是创建算法来计算图片上有多少只鸭子 该图与此类似 我想我应该使用模式识别来搜索上面有多少只鸭子 但我不知道每只鸭子适合哪种图案 我认为你可以通过分割鸭嘴并计算鸭嘴的数量来解决这个问题连接的组件 h
  • Google 文档如何处理编辑冲突?

    我一直在尝试编写自己的 Javascript 编辑器 其功能类似于 Google Docs 允许多人同时使用 我不明白一件事 假设用户 A 和用户 B 直接相互连接 网络延迟为 10 毫秒 我假设编辑器使用 diff 系统 据我了解 Doc
  • 素数生成器算法

    我一直在尝试解决素数生成算法的SPOJ问题 这是问题 彼得想为他的密码系统生成一些素数 帮助 他 你的任务是生成两个给定之间的所有素数 数字 Input 输入以单行中测试用例的数量 t 开始 t Output 对于每个测试用例 打印所有素数
  • 自动跟踪算法

    我正在尝试写一个simple跟踪例程来跟踪电影中的某些点 本质上我有一系列 100 帧长的电影 在黑暗背景上显示一些亮点 我每帧有大约 100 150 个点 它们在电影的过程中移动 我想跟踪它们 所以我正在寻找一些有效的 但可能不会过度实施
  • 分而治之算法找到两个有序元素之间的最大差异

    给定一个整数数组 arr 找出任意两个元素之间的差异 使得较大的元素出现在 arr 中较小的数字之后 Max Difference Max arr x arr y x gt y 例子 如果数组是 2 3 10 6 4 8 1 7 那么返回值
  • 如何为多边形创建内部螺旋?

    对于任何形状 我如何在其内部创建类似形状的螺旋 这与边界 使用 Minkowski 和 类似 尽管它会是相同形状的螺旋 而不是在形状内部创建相同的形状 我找到了这个 http www cis upenn edu cis110 13su le
  • 如何将多边形放入另一个多边形内[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有两个多边形 如下图所示 左边是 粗多边形 右边是 最终多边形 现在 我正在寻找算法来将 最终多边形 拟合到 粗糙多边形 内 并具有
  • 是否有一种算法可以在线性时间内计算数组反转?

    我知道有多少倒转 en wikipedia org wiki Inversion 28discrete mathematics 29 in an n 元素数组可以在 O n log n 操作使用增强型归并排序 http www geeksf
  • 如何在 C# 中以编程方式创建柔和的颜色?

    根据所需的颜色数量均匀分布地生成它们 如果指定的计数为 8 则看起来像这样 List
  • 绘制点之间的所有线

    我有以下 R 代码 x lt c 0 01848598 0 08052353 0 06741172 0 11652034 y lt c 0 4177541 0 4042247 0 3964025 0 4074685 d lt data fr
  • 重写修改后的 goto 语义的算法

    我有一大堆使用旧的自行设计的脚本语言编写的遗留代码 我们将它们编译 翻译成 javascript 该语言有条件跳转 跳转到标签 与普通 goto 语句的区别在于 不可能向后跳转 该语言中没有嵌套的 if 语句或循环 由于 javascrip
  • 我应该对算法使用递归还是记忆化?

    如果我可以选择使用递归或记忆来解决问题 我应该使用哪一个 换句话说 如果它们都是可行的解决方案 因为它们提供了正确的输出并且可以在我正在使用的代码中合理地表达 那么我什么时候会使用其中一个而不是另一个 它们并不相互排斥 您可以同时使用它们

随机推荐

  • ACR122U NFC读写器频繁断线

    当我将 SIII Android 4 3 放在 ACR122U NFC 读卡器上时 LED 持续闪烁绿色 当我将 Samsung S4 Android 4 3 放入读卡器时 LED 会变绿直到手机位于读卡器上 在这两种情况下 NFC 均已打
  • Python OOP 和列表

    我是 Python 新手 它是 OOP 的东西 无法让它工作 这是我的代码 class Tree root None data def init self equation self root equation def appendLeft
  • 设置触发器以在每月的最后一个小时运行函数

    在谷歌脚本中 我知道有按日期运行的触发器 但我认为这不会起作用 因为每月的天数不同 所以我想知道是否有办法设置触发器在每月最后一个晚上 11 点运行 无论是 30 还是 31 Thanks 首先从项目创建一个触发器编辑 gt 当前项目的触发
  • 是否可以从管道步骤动态设置 Jenkins 作业参数?

    我有以下 简化的 Jenkins 管道代码 jobParams groovy List get Object paramVars def params params choice choices branch tag name RELEAS
  • WCFTestClient HTTP 请求未经客户端身份验证方案“匿名”的授权

    我创建了一项 WCF 服务并将其部署在服务器上 当我浏览此服务时 它会通过 wsdl URL 给出积极响应 现在我正在尝试通过 WCF 测试客户端测试该服务 它显示了正确的元数据 但是 当我尝试从服务中调用任何方法时 它会显示一个异常 这是
  • 使用 NSCoder 保存自己的类

    我正在尝试将一些自定义类 数据存储到我的 iPhone iPad 应用程序中的文件中 我有一个 RSHighscoreList 类 interface RSHighscoreList NSObject NSMutableArray list
  • 从看板中过滤史诗

    首先我想说我已经读过集会看板 隐藏史诗故事但我在根据估算板应用程序的过滤过程实现过滤器时仍然遇到麻烦 目前 我正在尝试将项目过滤器添加到我的纸板的查询对象中 查询对象调用 this getItems 以返回要从中进行筛选的项目数组 据我所知
  • 电子邮件验证器

    我的电子邮件验证码出现问题 我不断收到我的函数未定义的错误 我为java代码制作了一个javascript文件 然后我在html中使用了onchange来触发该函数
  • XML 解析错误:找不到元素位置:http://localhost:8081/web-app/pages/login.xhtml 第 1 行,第 1 列:^

    My login xhtml以 开始 我正在使用 Java 8 JSF Primefaces Maven Tomcat8 我认为我的配置有问题 例如小服务程序和web xml XML 解析错误 未找到元素位置 行号 1 列 1 就这一点而言
  • “wc”命令的行为是什么?

    例如 myCleanVar wc l lt myFile myDirtVar wc l myFile echo myCleanVar 9 echo myDirtVar 9 myFile 为什么在 myCleanVar 中我从 wc 命令中获
  • git:对“非快进”错误的基本误解

    当我自己工作时 不了解 git 的基础知识还可以 但是现在我正在与另一个人一起工作 并且我们每个人都提交拉取请求以让对方合并它们 这开始成为一个问题 工作流程 我在我的 作者 分支中编写 当准备好进行审查时 我提交一个拉取请求 然后我的编辑
  • pyttsx3初始化错误,无法使用pyttsx3

    我在 pyttsx3 中使用 getproperty voices 属性时遇到一些问题 所以我决定卸载它 然后使用 PIP 重新安装它 看看是否可以解决问题 当我遇到 getproperty voices 错误时的上一个链接 当我尝试访问语
  • VB6 - 使用指针声明和调用 C DLL

    我有一个旧的 C DLL 用来从 Ruby 调用 但现在我需要从 VB6 调用它 但我不知道正确的方法 这是我需要的函数的标题 int Decrunch const BYTE src BYTE dest DWORD src length s
  • 如何传递对象id?

    我有两个模型之间的关系 类别型号 class Category lt ActiveRecord Base belongs to product end 产品型号 class Product lt ActiveRecord Base has
  • 如何使用 Torque/MOAB 调度程序设置 doSNOW 和 SOCK 集群?

    继续这个问题 https stackoverflow com questions 17222942 allow foreach workers to register and distribute sub tasks to other wo
  • 如何使用 Visual Studio 2010 在 Windows 上使用 Open MPI 构建 boost::mpi 库

    我安装了 Open MPI 1 5 4 64 位 并尝试使用 bjam 重建 boost 库 1 48 我更改了 user config jam 文件 添加了 using mpi 行和显式编译器路径 尽管 mpic 已经在 PATH 环境变
  • PHP mysqli_result:将 Traversable 接口与 fetch_object 结合使用

    PHP mysqli result 类实现 Traversable 接口已经有一段时间了 这提供了一些有趣的可能性 例如下面的代码
  • 如何使用 OpenCV 从图像中删除特定标签/贴纸/对象?

    我有数百张珠宝产品的图片 其中一些带有 畅销书 标签 标签的位置因图像而异 我想迭代所有图像 如果图像具有此标签 则将其删除 生成的图像将在已删除对象的像素上渲染背景 带有标签 贴纸 对象的图像示例 要删除的标签 贴纸 物体 import
  • 返回随机结果(按 rand() 排序)

    我记得在某处读到过使用 order by rand 是不好的 我刚刚启动它并找到了一篇文章证明了这一点 对于大型数据库 通过 rand 进行排序可能会非常慢 建议的解决方案是在 php 中生成随机数并根据它进行选择 问题是我需要验证其他字段
  • 使用深度优先搜索查找所有简单路径的复杂性?

    感谢大家回复想法和替代解决方案 更有效的解决问题的方法总是受欢迎的 也欢迎质疑我的假设 也就是说 我希望你暂时忽略我试图用算法解决的问题 而只是帮助我分析我编写的算法的复杂性 所有简单的路径在图中使用描述的深度有限搜索here 并实施了he