Python的复杂度是subset()

2023-11-24

给定两个集合 A 和 B 及其长度:a=len(A) 和 b=len(B),其中 a>=b。 Python 2.7 的 issubset() 函数(即 B.issubset(A))的复杂度是多少?我从网上找到了两个相互矛盾的答案:

1、O(a) 或 O(b)

发现自:https://wiki.python.org/moin/TimeComplexity和 bit.ly/1AWB1QU

(抱歉,我无法发布更多 http 链接,因此我必须使用缩短的 url。)

我从Python官网下载了源码,发现:

def issubset(self, other):
    """Report whether another set contains this set."""
    self._binary_sanity_check(other)
    if len(self) > len(other):  # Fast check for obvious cases
        return False
    for elt in ifilterfalse(other._data.__contains__, self):
        return False
    return True

这里只有循环。

2、O(a*b)

发现自:bit.ly/1Ac7geK

我还发现一些代码看起来像Python的源代码,来自:bit.ly/1CO9HXa,如下所示:

def issubset(self, other):
    for e in self.dict.keys():
        if e not in other:
            return False
        return True

这里有两个循环。

那么哪一个是正确的呢?有人可以给我详细的答案关于上述两种解释之间的区别吗?非常感谢。


复杂度B.issubset(A) is O(len(B)), 假如说e in A是常数时间。

这通常是一个合理的假设,但很容易被错误的哈希函数所违反。例如,如果所有元素A具有相同的哈希码,时间复杂度为B.issubset(A)会恶化到O(len(B) * len(A)).

在第二个代码片段中,复杂性与上面相同。仔细一看,只有一个循环;另一个是if陈述 (if e not in other:).

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

Python的复杂度是subset() 的相关文章

随机推荐

  • 在 go 中将切片项从一个位置移动到另一个位置

    我试图将一个项目从切片内的一个位置移动到另一个位置 去游乐场 indexToRemove 1 indexWhereToInsert 4 slice int 0 1 2 3 4 5 6 7 8 9 slice append slice ind
  • 当参数类型为开放Char数组时,是否允许使用动态Char数组?

    我在看Delphi Char 和 TCharArray 不兼容类型 数组并开始尝试 我的发现相当有趣 procedure Clear AArray array of Integer var I Integer begin for I Low
  • 如何在android中将EditText提示创建为带有图像的文本

    如何在 android 中使用文本和图像创建 EditText 提示 占位符 我这样写
  • xargs sh -c 跳过第一个参数

    我正在尝试编写一个使用 find 和 xargs 将旧文件存档在大目录中的脚本 这是该行 find tmp messages mtime 9 print0 xargs x t 0 n 1000 sh c tar rPf tmp backup
  • 如何允许覆盖 ASP.NET Core 应用程序中的 blob?

    用户可以在创建记录时上传图像 但当您编辑该记录并尝试上传新图像时 会出现 此 blob 已存在 错误 有没有办法可以在我的应用程序中启用同名 blob 的覆盖 这是我处理更新过程的代码 值得注意的是 我创建了图像的三个迭代 为了应用程序的缘
  • Alexa Top 10000 SitesTop Sites 2023 - 2023最新刚更新 全世界流量排名10000的网站

    这个问题在这里已经有答案了 我使用 PhpDocumentor2 来生成文档 我搜索了这个主题 但找不到它的具体规则 例如 我有一个名称为 AddressField 的类 我想将 addressFields 指定为 AddressField
  • Rails:验证链接 (URL) 的好方法是什么?

    我想知道如何最好地验证 Rails 中的 URL 我正在考虑使用正则表达式 但不确定这是否是最佳实践 而且 如果我要使用正则表达式 有人可以向我推荐一个吗 我对正则表达式还是新手 验证 URL 是一项棘手的工作 这也是一个非常广泛的要求 你
  • 如何在Unity中对网格进行布尔运算?

    I have Cube模型和Cylinder模型 我想在里面打个洞Cube by Cylinder 我怎样才能做到呢 我有这两个模型 我想做这个 This is 网格上的布尔运算 Use this线程以了解更多信息 这是来自的存储库GitH
  • 新项目有什么理由使用 log4j 而不是 Logback? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我知道共同意见是 Logback gt log4j 不过 log4j 有什么比 Logback 更好的地方吗 有什么理由使用 log4j 而不是 logback 事实上它只有 60 个关于
  • Google Play 应用更新 - 无法发布新的 apk

    当我尝试在 Google Play 中发布新的 APK 时 出现以下错误 禁止将之前使用M权限 目标SDK 23及以上 的设备降级为使用旧式权限 目标SDK 22及以下 的APK 从版本 2645 目标 SDK 23 到版本 2648 目标
  • 如何在 Android 中获取类似波形的声音云

    我用我的代码生成了一个简单的波形 如下图所示 但我想在每条线之间留出更多间隙 我希望它像声云波一样 如下图所示 这是我的代码 public class VisualizerView extends View private static f
  • 使用 XOR 在 JavaScript / HTML5 中绘图以删除旧的精灵

    我正在为一个小游戏构建引擎 现在我刚刚得到了一个带有两只小眼睛的红色圆圈作为主角 我有keyPress函数来检测运动 这很有效 但我想使用我很久以前在 QBASIC 中使用过的东西来删除角色并在新位置重画 XOR 基本上 在按键时会发生这种
  • Spring安全注销处理

    根据春季安全4 0 0文档 4 2 4 注销处理 logout 元素添加了对通过导航到注销的支持 特定的网址 默认注销 URL 是 logout 但你可以设置它 使用 logout url 属性进行其他操作 更多信息 其他可用的属性可以在命
  • 是否可以在卸载前弹出窗口中显示自定义消息?

    使用时window onbeforeunload or window on beforeunload 是否可以在该弹出窗口中显示自定义消息 也许是一个适用于主流浏览器的小技巧 通过查看现有的答案 我感觉这在过去使用类似的东西是可能的conf
  • 使用 Filesaver.js 保存 Base64 图像

    我收到 JPG 图像的多个 Base64 URI 我需要将它们保存为 jpg 文件 我正在尝试使用文件保存器 js 但它不适合我 我之前使用过filesaver js 当时我从aws sdk获取图像 其中数据是缓冲区形式并且它有效 但是 它
  • 在Python中重新分配变量[重复]

    这个问题在这里已经有答案了 我有以下代码和变量 我想找到变量是什么a a1 a2 b b1 and b2代码执行后参考 def do something a b a insert 0 z b z b a a b c a1 a a2 a b
  • 在 ASP.NET Core 中检测移动设备

    我有一个应用程序 它使用移动视图和桌面视图作为不同的 html 页面 现在我将其转移到 Asp Net core 由于一些技术原因 我没有考虑 Bootstrap 我必须检测请求是来自移动设备还是不在启动中才能加载相应的布局页面 我怎样才能
  • Typescript+webpack:Typescript 没有发出 index.d.ts 的输出

    我跟着本教程成功设置 typescript webpack 无反应 一切都很好 直到我将 index d ts 文件添加到我的组件文件夹中 我用它来导出所有模块 例如 export from MyClass1 export from MyC
  • Java Swing:库、工具、布局管理器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 您的 Java Swing
  • Python的复杂度是subset()

    给定两个集合 A 和 B 及其长度 a len A 和 b len B 其中 a gt b Python 2 7 的 issubset 函数 即 B issubset A 的复杂度是多少 我从网上找到了两个相互矛盾的答案 1 O a 或 O