我的算法的运行时间是多少?

2023-12-29

我正在编写一种算法,该算法首先采用各种端点的配置文件及其关联方法,如下所示:

/guest guestEndpoint
/guest/lists listEndpoint
/guest/friends guestFriendsEndpoint
/guest/X/friends guetFriendsEndpoint
/guest/X/friends/X guestFriendsEndpoint
/X/guest guestEndpoint
/X/lists listEndpoint
/options optionsEndpoint

X这里代表一个通配符,所以任何字符串都会与它匹配。 该算法将以此作为输入并构建一棵树,其中每个节点代表两个节点之间的一个标记。/的。每个叶子都是一个有效的端点。

然后当用户传递类似的内容时guest/abc/friends它会从根开始遍历树,然后寻找guest附加到根的节点,如果存在则转到节点guest, if guest在这里,客人将有一个wildcard节点,所以如果abc与任何一个都不匹配guest的节点,但有一个wildcard节点存在它将转到wildcard。然后它会看起来wildcard看看它是否有friends节点,如果有的话就去那里。那么如果friends是叶子节点就会返回相应的方法。

这个算法有意义吗?我想知道查找的运行时间是多少。我认为这将是 O(n),其中 n 是传入参数中的标记数量。

Here is an image of the graph I would build based on the input above. Each diamond represents an endpoint method. enter image description here

谢谢你的帮助!


最差查找时间将为 O(E+N),其中 E 是边数,N 是节点数。因为我们不知道每一级有多少个节点。因此,根据您的算法,您可以通过进行级别搜索来找到所需序列中的第一个节点,因为您没有任何参数可以检查是否经过所需的路径。 (我知道每次下降一级时节点数量都会减少,但在这种情况下减少多少是不确定的) 它甚至不是 n 数组。

通配符无助于降低最坏情况的时间复杂度,并且无法确定树的最佳情况。通配符检查需要恒定的时间,并且不计入运行时间。

现在算法看起来有点令人困惑,当你有两个选择时你会做什么

1)你有自然匹配的节点 2)你有通配符节点。

在同一水平线上,你会去哪里? 假设你我们按照你遇到的第一个方向前进。但是,如果这不是您在最后一个节点了解的实际路径,那么您将回溯它,该怎么办?为了避免这种情况,您将通过 BFS 标记每个级别的可用路径数量并进行搜索。 因此,如果您已经处理了所有情况,最坏情况时间复杂度将为 O(E+N)。

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

我的算法的运行时间是多少? 的相关文章

  • 比较周期性数据的快速方法

    假设我有任意类型的数据集 A B C D 并且我想将其与另一个数据集进行比较 我希望 A B C D B C D A C D A B 和 D A B C 的比较成立 但是不适用于 A C B D 或任何其他未类似排序的集合 有什么快速方法可
  • 以与版本页面上相同的方式区分两个字符串的算法是什么?

    我正在尝试按短语区分两个字符串 类似于 StackOverflow 在版本编辑页面上区分两个字符串的方式 执行此操作的算法是什么 是否有 gems 或其他标准库可以实现此目的 编辑 我见过其他比较算法 Differ http github
  • 如何修复 STL 样式容器以容纳不完整或抽象类型?

    几天前 我尝试以与 STL 容器相同的风格编写一个基本的树实现 现在我尝试在我的代码中使用它 但是有两件事似乎不起作用 但可以说std vector 即 使用不完整类型和使用抽象类型 如何修复我的树实现以获得此功能 我尝试稍微压缩一下我的代
  • 修改排列算法以防止重复打印输出的策略

    我一直在审查实践算法 目前正在研究一种我非常喜欢的排列算法 void permute char set int begin int end int range end begin if range 1 cout lt lt set lt l
  • O(mn) 比 O((m+n)^2) 更好吗?

    算法的输入是m and n 我的算法的时间复杂度是O mn 我有一个时间复杂度为的基准算法O m n 我的实现在时间复杂度方面是否优于基准 许多评论者和回答者希望只考虑以下情况 m n或者至少当它们通过一个常数因子相关时 这不是它的工作原理
  • 如何在 dijkstra 算法中以 O(log n ) 时间更新优先级队列中的键?

    过去一周我一直在研究 dijkstra 算法 我在 java 中有正确的运行代码 它使用数组来计算标准 findMin 函数 该函数为您提供距离最小的顶点 显然它是 O n 现在我希望使用优先级队列 最小堆 来实现它 我的思考过程是 whi
  • 以一定角度遍历二维数组

    通常我们按行或列遍历数组 但这里我想以角度遍历它 我会尝试解释我的意思 因此 假设角度是 45 度 那么它会搜索为 0 0 then 0 1 1 0 then 0 2 1 1 2 0 等等 抱歉 无法上传图像 因为我是新用户 不允许这样做
  • 如何使用KDTrees实现最近邻搜索?

    所以 我正在实施一个KD Tree http en wikipedia org wiki Kd tree进行最近邻搜索 我已经构建了树部分 但我认为我没有完全理解搜索部分 关于遍历树来搜索邻居 维基百科文章如下 Starting with
  • 如何设置K-means openCV c++的初始中心

    我正在尝试使用 OpenCv 和 Kmeans 对图像进行分割 我刚刚实现的代码如下 include opencv2 objdetect objdetect hpp include opencv2 highgui highgui hpp i
  • 两个非嵌套循环的大 O 表示法

    对于两个非嵌套的 for 循环 大 O 表示法是什么 Example for int i 0 i
  • 哪种数据聚类算法适合检测时间序列事件中未知数量的聚类?

    这是我的场景 考虑在不同地点和时间发生的一组事件 例如 考虑有人在高空记录暴风雨期间城市中的雷击 就我的目的而言 闪电是瞬时的 只能击中某些位置 例如高层建筑 还可以想象每次雷击都有一个唯一的 ID 以便以后可以参考该雷击 这个城市大约有1
  • 任何人都知道 JQuery 插件可以生成类似于 geni.com 上的树形菜单

    大家好 我花了几个小时寻找一个 Jquery 插件来生成像 geni com 上那样的树形菜单模块 如果有人知道 Jquery 中的这样的插件或脚本 请让我知道或指导我如何使用 Jquery 开发这样的功能 请检查我正在寻找什么http w
  • 合并字符数组中的最小重复次数

    假设我有两个数组 我想合并它们 以便合并后的数组具有最小重复次数 例如 x x 是重复 arr1 x d d m f m arr2 d d x f f m 唯一的条件是在合并数组中 元素来自arr1 and arr2必须出现在各自的订单中a
  • 从 XML 构建树结构的速度很慢

    我正在将 XML 文档解析为我自己的结构 但对于大型输入来说构建它非常慢 是否有更好的方法来做到这一点 public static DomTree
  • 将嵌套字典中的所有键从camelCase转换为snake_case

    我有一本类似这样的字典 firstName abc lastName xyz favoriteMovies Star Wars The lone ranger favoriteCountries country China capitalC
  • 如何高效地在屏幕上精确绘制N个点?

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

    Webix 与 Font Awesome 集成 http docs webix com desktop icon types html 但是如何使用 Font Awesome 图标代替树中的默认文件夹 文件图标来设置各个节点的样式呢 这是我
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • 如何从一组重叠的圆计算多边形集?

    这个问题是一些计算细节的扩展这个问题 https stackoverflow com questions 1667310 combined area of overlapping circles 假设有一组 可能重叠的 圆 并且希望计算这组
  • java数据结构模拟数据树

    我需要帮助定义使用什么方法 我有一个 SOAP 响应 给我一个 xml 文件 我需要在屏幕上显示 3 个相关列表 当您在第一个列表中选择一个项目时 相应的选择将出现在第二个列表中 依此类推 我只对从 xml 流中提取数据后如何有效地组织数据

随机推荐

  • java.lang.RuntimeException:无法实例化活动 ComponentInfo

    我试图运行示例代码 在 android 1 5 模拟器中启动应用程序时 我遇到了这些错误 有人有一些提示吗 来自 LogCat 的错误 01 13 02 28 08 392 ERROR AndroidRuntime 2888 FATAL E
  • Android JUnit 首选项测试

    一个相当正常的场景 Android 应用程序有一个首选项活动 从 ListPreference 中选择一个选项会触发代码来更改该 ListPreference 的摘要文本 即 从颜色 ListPreference 中选择 绿色 将通过以下方
  • 在 Python 3 中运行时更改 stdin / stdout 的编码

    在Python 3中 stdin and stdout是具有编码的 TextIOWrappers 因此会输出普通字符串 而不是字节 我可以更改与环境变量一起使用的编码Python编码 http docs python org py3k us
  • 无法运行已发布的 Blazor WebAssembly 应用程序

    当我在 Visual Studio 调试器中运行该应用程序时 它运行得很好 但如果我将其部署到服务器 我会在浏览器控制台中收到此错误 无法在资源 完整性 属性中找到有效的摘要http example com pwaexperiment ww
  • Azure AD - 检索本地 AD 组公用名

    我有一个应用程序需要根据其本地 AD 通用名称来过滤权限 几点注意事项 Azure AD Connect 正在 OnPrem AD 和 Azure 之间同步数据 我成功地将登录用户的组信息从 Azure Graph API 检索到 Web
  • 在 MySQL 中仅检索固定数量的行

    我正在负载下测试我的数据库设计 我只需要检索固定数量的行 5000 我可以指定 LIMIT 来实现此目的 但是查询似乎会构建所有匹配行的结果集 然后仅返回限制中指定的行数 是这样实施的吗 MySQL 是否可以读取一行 读取另一行 并在检索到
  • 如何让 Flexbox (flex-grow) 在调整大小时考虑内容?

    当两个元素都在使用时 如何让 Flexbox 停止平衡同级元素中的空间flex grow 1 这很难预先解释 因此这里是代码 后面是问题的示例屏幕截图以及所需的行为 Parent display flex flex direction co
  • 如何将 AMI 保存到 S3 存储桶?

    我已使用 Amazon AWS 控制台创建了 AMI EBS AMI 该 AMI 附加了 2 个快照 现在我想将该 AMI 备份到 S3 存储桶 这可能吗 实际上 我需要执行此操作 然后才能将该 AMI 移动到不同区域中的存储桶 并注册该
  • 在 JavaScript 中使用 RegEx 进行拆分

    假设我有一个通用字符串
  • 在关键帧之间剪切视频而不使用 ffmpeg 重新编码整个视频?

    我想在任何特定时间戳的开头剪切视频 并且需要precise 所以最近的关键帧不够好 另外 这些视频相当长 一个小时或更长时间 所以我想避免重新编码如果可能的话 将其全部重新编码 否则仅重新编码总持续时间的最小部分 因此 希望最大限度地利用
  • 反应式存储库在保存新对象时抛出异常

    我在用r2dbc r2dbc h2和实验性的spring boot starter data r2dbc implementation org springframework boot experimental spring boot st
  • iOS 7:如何通过私有API获取自己的号码?

    旧方法不再有效 way 1 void lib dlopen Symbols System Library Framework CoreTelephony framework CoreTelephony RTLD LAZY NSString
  • 如何从 Brush(例如 DrawingBrush)转换为 BitmapSource?

    我有一个带有一些矢量图形的 DrawingBrush 我想将其转换为 BitmapSource 作为将其转换为 Bitmap 的中间步骤 做到这一点的 最好 方法是什么 public static BitmapSource BitmapSo
  • Python 优化(-O 或 PYTHONOPTIMIZE)有什么作用?

    文档只说 Python 解释器执行 基本优化 但没有详细说明 显然 它依赖于实现 但是有什么方法可以了解可以优化什么类型的东西 以及它可以节省多少运行时间 使用 O 有什么缺点吗 我唯一知道的是 O 禁用assert 但大概不应该使用ass
  • 适用于 Android 的 Facebook SDK - 示例应用程序无法运行

    好吧 我已经完成了所有业务 遵循了所有步骤 但仍然无法让它发挥作用 Facebook SDK 附带的简单示例应用程序可在模拟器和 Android 1 5 设备上运行 所以我的猜测是单一登录的事情 如果我是对的 那么我应该生成一个密钥哈希 并
  • 为什么控制台中的变量声明总是返回“未定义”?

    我使用的是最新的 Firefox 4 0 1 和 Firebug 1 7 2 每当我在控制台中输入变量声明时 都会返回斜体 未定义 警告 例如 如果我输入 var x 5 那么响应是 未定义 而不是 5 之后 如果我在控制台中输入 x 则会
  • CLion 在单独的系统终端中运行程序

    我有一个ncurses我想使用 CLion 进行交互式调试的程序 问题是 当我在 CLion 中运行程序进行调试时 运行程序的内置控制台不显示ncurses正确编程 我想让程序在我的系统终端中运行 这样我就可以在使用 CLions 调试器调
  • 使用不同的参数多次运行相同的选择查询

    我有一个 Java 程序 需要迭代HashMap获取随后用于查询 MySQL 数据库的参数 代码如下 Iterator
  • Flutter:如何将数学方程包装在容器中?

    我想制作一个测验应用程序 其问题中可能包含数学方程 我检查了一些库 比如颤振数学 https pub dev packages flutter math and catex https pub dev packages catex 并且它们
  • 我的算法的运行时间是多少?

    我正在编写一种算法 该算法首先采用各种端点的配置文件及其关联方法 如下所示 guest guestEndpoint guest lists listEndpoint guest friends guestFriendsEndpoint gu