以编程方式获取代码的 Big-O 效率

2023-11-24

我想知道是否有任何自动方法可以(至少粗略地)确定给定函数的 Big-O 时间复杂度?

如果我绘制 O(n) 函数与 O(n lg n) 函数的图表,我想我将能够直观地确定哪个是哪个;我认为必须有一些启发式解决方案可以自动完成此操作。

有任何想法吗?

Edit:我很高兴找到一个半自动化的解决方案,只是想知道是否有某种方法可以避免进行完全手动分析。


听起来您所要求的是停止问题的扩展。我不相信这样的事情是可能的,即使在理论上也是如此。

只是回答“这行代码会运行吗?”的问题。在一般情况下,即使不是不可能,也是非常困难的。

编辑添加: 尽管一般情况很棘手,但请参阅此处获取部分解决方案:http://research.microsoft.com/apps/pubs/default.aspx?id=104919

另外,有些人指出手动进行分析是唯一的选择,但我不认为这确实是正确的看待方法。即使将人添加到系统/机器中,棘手的问题仍然难以解决。经过进一步思考,我认为 99% 的解决方案可能是可行的,甚至可能与人类一样好,甚至更好。

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

以编程方式获取代码的 Big-O 效率 的相关文章

  • Python Pandas:沿一列比较两个数据帧,并返回另一个数据帧中两个数据帧的行内容

    我正在处理两个 csv 文件并作为数据框 df1 和 df2 导入 df1 有 50000 行 df2 有 150000 行 我想将 df2 的 时间 与 df1 求时间差并返回所有列的值 对应相似的行 保存在df3中 时间同步 例如 35
  • 分而治之算法找到两个有序元素之间的最大差异

    给定一个整数数组 arr 找出任意两个元素之间的差异 使得较大的元素出现在 arr 中较小的数字之后 Max Difference Max arr x arr y x gt y 例子 如果数组是 2 3 10 6 4 8 1 7 那么返回值
  • 在任意时间范围内找到最佳日/月/年间隔的算法?

    如果您有时间表 请说 March 19 2009 July 15 2011 是否有一种算法可以将该时间范围分解为 March 19 2009 March 31 2009 complete days April 1 2009 December
  • 重写修改后的 goto 语义的算法

    我有一大堆使用旧的自行设计的脚本语言编写的遗留代码 我们将它们编译 翻译成 javascript 该语言有条件跳转 跳转到标签 与普通 goto 语句的区别在于 不可能向后跳转 该语言中没有嵌套的 if 语句或循环 由于 javascrip
  • 为什么这个算法的Big-O复杂度是O(n^2)?

    我知道这个算法的大O复杂度是O n 2 但我不明白为什么 int sum 0 int i 1 j n n while i lt j sum 即使我们设定了j n n一开始 我们在每次迭代期间递增 i 并递减 j 因此最终的迭代次数不应该比n
  • 求先递增后递减列表的最大值和最小值

    我尝试用谷歌搜索这个问题 但没有取得太大成功 我确信这个问题或类似问题有一个技术名称 但我似乎找不到答案 给定一个列表L整数 即严格递增 然后严格递减 找到该列表的最大值和最小值 例如 L可能 1 2 3 4 5 4 3 2 or 2 4
  • 贝尔曼福特算法可以有任意的边顺序吗?

    我刚刚开始学习新算法 但当我阅读 极客为极客而写的贝尔曼福特算法 时 我陷入了困境 http www geeksforgeeks org dynamic programming set 23 bellman ford algorithm h
  • 无法理解Peterson算法的正确性

    我在这里讨论彼得森算法的一个场景 flag 0 0 flag 1 0 turn P0 flag 0 1 turn 1 while flag 1 1 turn 1 busy wait
  • 在一个区域中拟合二维多边形的算法?

    这有标准吗 算法名称 说 我有 10 个不同大小的多边形 我有一个特定大小的区域 我想知道如何填充该区域中的最多多边形 以及它们是如何拟合的 笔记 多边形可以根据限制集进行旋转 一个可能的名称是包装问题 http en wikipedia
  • 当满足动态条件时退出递归函数

    使用来自的函数生成汉明距离 t 内的所有比特序列 https stackoverflow com questions 40813022 generate all sequences of bits within hamming distan
  • String.contains() 的时间复杂度

    String contains 的时间复杂度是多少 假设 n 是与另一个长度为 k 的字符串进行比较的字符串的长度 如果不知道您感兴趣的 String contains 的实际实现 就没有答案 或者你打算使用什么算法 一个完全幼稚的实现可能
  • 我如何开始玩五子棋?

    我读到Gomoku http en wikipedia org wiki Gomoku它可以使用 Minimax 和 Alpha Beta 剪枝算法来实现 所以 我阅读了这些算法 现在了解了游戏将如何解决 但是当我坐下来编写代码时 我面临着
  • 对 Java 中 *any* 类的所有实例进行全排序

    我不确定以下代码是否能确保 Comparator 的 Javadoc 中给出的所有条件 class TotalOrder
  • 实时战略战争游戏人工智能算法

    我正在设计一款实时策略战争游戏 其中 AI 将负责控制大型六边形地图上的大量单位 可能超过 1000 个 一个单位有许多行动点 可以用于移动 攻击敌方单位或各种特殊行动 例如建造新单位 例如 一辆拥有 5 个行动点的坦克可以花费 3 个行动
  • 确定一组日期的事件重复模式

    我正在寻找一种模式 算法或库 它将采用一组日期并在退出时返回重复的描述 即集合 11 01 2010 11 08 2010 11 15 2010 11 22 2010 11 29 2010 会产生类似 十一月的每个星期一 的结果 有没有人以
  • 更改计划的开始日期以优化资源

    我有很多工作需要在特定的时间间隔执行 然而 我们每天完成这项工作的资源有限 因此 我正在尝试优化开始时间日期 开始时间日期只能向前移动 不能向后移动 以便每天使用的资源与我们的预算更加不相似 这些函数在下面的示例中使用 Function t
  • 关于复杂性(如果使用基于比较的排序算法)

    众所周知 任何基于比较模型的排序算法都有nlogn的下界 即Omega nlogn 这可以用数学证明 但众所周知 荷兰国旗问题可以在 O n 时间内对 3 个不同的元素 重复使用 进行排序 它也是基于比较模型 但可以在 O n 时间内进行排
  • 如何在javascript中计算日出和日落?

    我正在使用appcelerator titan开发一个IOS应用程序 我想让我的应用程序在日出和日落时向用户发送本地通知 解决这个问题的一个好工具是使用 YQL 的雅虎天气 但是 雅虎天气仅供非商业用途 我正在尝试找到一个javascrip
  • Javascript树遍历算法

    我需要帮助以深度优先的方式遍历树结构 我无法想出一个算法来正确地做到这一点 我的输入是这样的 A B C 1 2 a b c d 输出应采用以下形式 A 1 a A 1 b A 1 c A 1 d A 2 a A 2 b A 2 c A 2
  • 最小硬币找零问题——回溯

    我正在尝试用最少数量的硬币解决硬币找零问题 采用回溯法 我实际上已经完成了它 但我想添加一些选项 按其单位打印硬币数量 而不仅仅是总数 这是我下面的Python代码 def minimum coins coin list change mi

随机推荐

  • Perl简单比较== vs eq

    关于已接受的答案Perl 中的字符串比较 eq 与 它说First eq is for comparing strings is for comparing numbers 进行数字比较 它将两个参数转换为数字 然后比较它们 eq 进行字符
  • 使用 CSS 和 HTML 的垂直树

    我正在尝试用 HTML 和 CSS 绘制一个垂直的树状结构 我已经在某种程度上做到了 Fiddle div class tree ul li a href Parent a ul li a href Child a ul li a href
  • 什么是 java.io.IOException:无效的标头字段?

    当我尝试运行以下命令时 jar cvfm myjar jar manifest txt class 我收到以下异常 java io IOException invalid header field at java util jar Attr
  • 为什么在initComponent中使用Ext.apply

    很多代码示例都使用分机申请在设置组件的属性时初始化组件 method 例子 initComponent function Ext apply this items xtype button 我的问题是 与这样做相比 这样做有什么区别 ini
  • 如何让fopen正确超时?

    我有以下 php 代码片段 if fp fopen url r stream set timeout fp 1 stream set blocking fp 0 info stream get meta data fp 我希望请求在 1 秒
  • 将 R 列表(矩阵)的每个成员彼此相乘

    我在 R 中有一个大小相等的矩阵列表 我想将它们相互相乘 我正在寻找一种方法来做 list A list B list C 无需手动输入 我的列表有几十个矩阵 Use Reduce如果你想要逐个元素相乘 gt Lists lt list m
  • C 如何正确测量时间?

    这是 算法 但是当我想测量执行时间时 它给我零 为什么 define ARRAY SIZE 10000 clock t start end start clock for i 0 i lt ARRAY SIZE i non parallel
  • 托管 Windows 窗体设计器 - 在运行时序列化设计器并生成 C# 代码

    我正在创建一个设计器界面并将控件加载到运行时 我在将控件反序列化 加载到运行时时遇到问题 我尝试过的所有方法似乎都存在某种类型的问题 面临的问题例如 控件仍然受设计时的限制 并非所有属性都与所有属性 即嵌套属性 反序列化 控件关联似乎确实得
  • CSS 中的 div 布局就像 HTML 表格中的表格单元格

    今天我又一次偶然发现了 css 布局时经常遇到的一个问题 我想在水平行中有 5 个 div 举例来说 它们的宽度应该是 1 60 像素 2 30 3 40 像素 4 5 100 像素 其中 代表 填满剩余空间 过去 这就是我们布局宽度表的方
  • 获取所选文本的父元素

    是否可以获取页面中所选文本的父元素 例如 div class someparent Selection of this text should refer to the someparent class span class spanpar
  • 是否可以在 Xcode 4.3 中使用 NSArray、NSDictionary 和 NSNumber “文字”? (LLVM 4.0)

    显然 新的 Objective C 文字已经进入了铿锵的树干 从而揭开了保密协议的神秘面纱 我的问题 我怎么能够 以上帝的名义 在 Xcode v4 3 中使用这些构造 见下文 如果没有 并且我一直在等待 XCode 4 4 OSX 10
  • 如何从两个已排序数组中的对中获取 K 个最小的乘积?

    给出了两个排序数组 我们必须从这些数组的对中找到 K 个最小的乘积 我能想到一个 mnlogk 解决方案 但即使数组未按排序顺序 此解决方案也有效 我们可以利用这个排序顺序并找到更好的解决方案吗 我尝试使用大小为 k 的最大堆来获取 mnl
  • TR的高度如何确定?

    是否可以固定表格上行 tr 的高度 当我缩小浏览器窗口时 问题就会出现 一些行开始播放 并且我无法修复行的高度 我尝试了几种方法 tr width 20 tr style height 20px td height 20 td style
  • Docker + Rspec + Capybara - 参数 [0] 未定义

    我试图让我的规格在 docker 中无头工作 它们在我的 mac 上本地运行良好 但是当我在 docker 容器内运行它们时 我收到此错误 重复多次 Selenium WebDriver Error JavascriptError argu
  • Laravel 4:对如何使用 App::make() 感到困惑

    我正在尝试遵循本文中概述的存储库模式http code tutsplus com tutorials the repository design pattern net 35804 highlighter 174798我正在尝试使用 App
  • 在 web.xml 中将 servlet 设置为默认主页[重复]

    这个问题在这里已经有答案了 我有一个 servlet 注册在web xml如下
  • PHP 中的连接 ECHO 语法

    我做了一个小功能 WordPress 使用echo Some code switch linktype case next echo p class next previous post link link prevthumbnail p
  • 在跨平台应用程序中使用 snprintf

    我正在编写一个 C 程序 预计可以使用所有主要编译器进行编译 目前我正在 Linux 机器上的 GCC 上进行开发 并在提交代码之前在 MSVC 上进行编译 为了使交叉编译变得容易 我正在编译 ansi and pedantic旗帜 这很有
  • ASP.NET Identity(使用IdentityServer4)获取外部资源oauth访问令牌

    我已经阅读了 IdentityServer4 的文档 并将其设置为使用 Microsoft Office 365 作为登录提供程序 当用户登录后 我想创建一个按钮 他可以在其中允许我的应用程序使用 graph microsoft com 的
  • 以编程方式获取代码的 Big-O 效率

    我想知道是否有任何自动方法可以 至少粗略地 确定给定函数的 Big O 时间复杂度 如果我绘制 O n 函数与 O n lg n 函数的图表 我想我将能够直观地确定哪个是哪个 我认为必须有一些启发式解决方案可以自动完成此操作 有任何想法吗