Tag: 复杂性理论

Drupal的一些缺点是什么?

Drupal是一个“Do Everything”CMS。 有几个模块可以让你添加几乎所有的function,这非常棒。 然而,感觉像许多function(v5和v6)似乎分散在四周,对用户来说是不直观的。 作为一名开发人员,我留下了使用泡泡糖和绳子一起修补网站的感觉。 例如,要将文本添加到默认search框(单击时消失),则必须添加一些jQuery代码或覆盖主题。 我也发现菜单系统比它应该更复杂。 我是唯一一个有这个意见的人吗? 什么东西(如果有的话),你会改变关于Drupal的核心?

为什么访问一个数组中的元素需要一段时间?

可以说我有一个数组为: int a [] = {4,5,7,10,2,3,6} 当我访问一个元素时,例如[3],它在场景后面究竟发生了什么? 为什么许多algorithm书(如Cormen书…)说,它需要一个不变的时间? (我只是低级编程的一个小菜鸟,所以我想向你们学习更多)

什么是Python列表函数的运行时复杂性?

我正在写一个看起来像这样的Python函数 def foo(some_list): for i in range(0, len(some_list)): bar(some_list[i], i) 所以它被称为 x = [0, 1, 2, 3, … ] foo(x) 我曾经假定列表的索引访问是O(1) ,但是很惊讶的发现,对于大型列表,这比我预期的要慢得多。 那么我的问题是如何实现python列表,以下是运行时复杂性 索引: list[x] 从最后popup: list.pop() 从头开始: list.pop(0) 扩展列表: list.append(x) 额外的信用,拼接或任意popup。

JavaScript中unshift()和push()的时间复杂度

我知道Javascript中的unshift()和push()方法有什么区别,但是我想知道时间复杂度有什么区别? 我想push()方法是O(1),因为你只是添加一个项目到数组的末尾,但我不确定unshift()方法,因为,我想你必须“移动”所有其他现有的元素转发,我想这是O(log n)或O(n)?

游戏是最复杂/令人印象深刻的应用?

我今天在想什么可能是有史以来最复杂/令人印象深刻的应用程序。 于是我开始思考我对日常使用的数据库感到舒适。 然后,我进入了未知的领域(对我们大多数人来说), 政府 。 我只能想象NASA应用程序的复杂性,使它们能够与火星上的漫游者进行通信。 但是后来我开始考虑自从我还是小孩以来每天都在使用的东西, 游戏 。 不是一个游戏开发者,这给我的想象带来了大量关于AI和计算复杂性的问题,这个问题超出了我所能想到的。 游戏是最复杂/令人印象深刻的应用?

为什么背包问题是伪多项式?

我知道Knapsack是NP-complete,DP可以解决。 他们说DP解决scheme是pseudo-polynomial ,因为它是“input长度”(即input编码所需的位数)的指数。 不幸的是我没有得到它。 有人可以慢慢地向我解释这个pseudo-polynomial东西吗?

怎么了O(1)?

在讨论涉及散列和searchtypes的algorithm时,我一直注意到O(1)的一些非常奇怪的用法,通常是在使用由语言系统提供的字典types的情况下,或者使用使用数组的字典或散列数组types指数表示法 基本上,O(1)是指以一个固定的时间和(通常)固定的空间为界。 一些相当基本的操作是O(1),虽然使用中间语言和特殊的虚拟机往往扭曲在这里思考的人(例如,如何摊销垃圾收集器和其他dynamic的过程,否则会O(1)活动)。 但是忽略了延迟的分期,垃圾收集等等,我还是不明白,除非是在非常特殊的条件下,假设某些涉及某种search的技术可以是O(1)。 虽然我之前已经注意到了这个问题,但是在Pandincus问题中出现了一个例子,“在C#.NET中使用O(1)时间获取项目的'正确'集合? 。 正如我在那里提到的那样,我所知道的唯一的集合提供了O(1)访问作为保证边界,它是一个固定边界数组,具有整数索引值。 假定数组是通过映射到使用O(1)操作来定位具有该索引的单元的随机存取存储器来实现的。 对于涉及某种search以确定不同types索引(或具有整数索引的稀疏数组)的匹配单元的位置的集合,生活并不那么容易。 特别是,如果有碰撞和拥塞是可能的,访问不完全是O(1)。 如果集合是灵活的,则必须认识并分摊扩展拥塞缓解(例如,高的碰撞发生率或树不平衡)的基础结构(例如树或散列表)的成本。 我永远不会想到把这些灵活和dynamic的结构说成是O(1)。 然而,我认为他们提出的O(1)解决scheme没有任何必须保持​​的条件,以确保(1)访问得到保证(以及有恒定的可以忽略的小)。 问题:所有这些准备工作都是一个问题。 O(1)的休闲是什么?为什么盲目接受? 即使接近于常数,即使O(1)可能会不理想地大,是否认识到呢? 或者是(1)简单地将计算复杂性概念挪用于非正式使用? 我感到困惑。 更新:答案和评论指出了我自己定义O(1)的地方,而且我已经修复了这个问题。 我仍然在寻找好的答案,有些评论线索比他们的答案更有趣,在一些情况下。

在C + +的哈希表?

每当我需要存储与特定types的值(键值 – 例如string或其他对象)相关联的数据时,我通常使用C ++ stdlib映射。 stdlib映射实现基于树提供比标准数组或stdlib向量更好的性能(O(log n))。 我的问题是,你知道任何提供更好的性能(O(1))的C ++“标准”散列表实现吗? 类似于Java API中的Hashtable类中可用的内容。

多重集合,地图和哈希映射的复杂性

我想知道在STL multiset,map和hash map类的Big O符号中的复杂性: 插入条目 访问条目 检索条目 比较条目

B树与哈希表

在MySQL中,索引types是b树,访问b树中的元素是处于对数分摊时间O(log(n)) 。 另一方面,访问哈希表中的元素在O(1) 。 为什么不使用散列表而不是b-tree来访问数据库中的数据?