Questions tagged «space-complexity»

运行算法所需空间的渐近分析。

2
缺少元素问题的时空权衡
这是一个众所周知的问题。 给定正整数数组A[1…n]A[1…n]A[1\dots n],输出不在数组中的最小正整数。 该问题可以在空间和时间中解决:读取数组,在空间中跟踪是否发生,扫描最小的元素。O(n)O(n)O(n)O(n)O(n)O(n)1,2,…,n+11,2,…,n+11,2,\dots,n+1 我注意到您可以为时间交换空间。如果仅具有内存,则可以进行轮操作,并获得时间。在特殊情况下,显然存在恒定空间二次时间算法。O(nk)O(nk)O(\frac{n}{k})kkkO(kn)O(kn)O(k n) 我的问题是: 这是最佳的折衷方案,即吗?一般来说,如何证明这种界限?time⋅space=Ω(n2)time⋅space=Ω(n2)\operatorname{time} \cdot \operatorname{space} = \Omega(n^2) 假设RAM模型具有有限算法,并且可以随机访问O(1)中的数组。 这个问题的启示:在单带模型中回文的时空折衷(例如,请参见此处)。

1
我们知道Immerman–Szelepcsényi定理由性位于,并且由于是因此,性可以简化为的一个对数空间。但是,是否存在中没有通过图灵机配置图的直接/组合简化?N Lst-non-connectivityst-non-connectivityst\text{-}non\text{-}connectivityNLNL\mathsf{NL}Ñ 大号- ħ 一个[R d小号吨- ñ ö ñ - Ç ö Ñ Ñ Ê Ç 吨我v 我Ť ý 小号吨- Ç ö Ñ Ñ Ë Ç Ť 我v 我吨ÿ ñ 大号st-connectivityst-connectivityst\text{-}connectivityNL-hardNL-hard\mathsf{NL\text{-}hard}st-non-connectivityst-non-connectivityst\text{-}non\text{-}connectivityst-connectivityst-connectivityst\text{-}connectivityNLNL\mathsf{NL} stConnectivitystConnectivity\mathsf{stConnectivity}(又称):stPATHstPATHstPATH 给定有向图以及顶点和,GGGsssttt 是否存在从顶点sss到顶点的定向路径ttt? 说明: 您可以假定图是由其邻接矩阵给出的(但是,这并不是必需的,因为图的标准表示形式可以在日志空间之间相互转换。) 是可能的解压的证明的岬小号吨- Ç ö Ñ Ñ Ê Ç 吨我v 我Ť ÿ并将其移动到证明,以便证明不使用它该定理为引理。然而,这本质上仍然是相同的构造。我要寻找的不是这个,我要从概念上直接减少。让我比照N P案。我们可以减少各种N P - c …



1
约束空间的选择算法?
有一种众所周知的最坏情况选择算法,可以找到整数数组中的第k个最大元素。它使用中位数中位数方法找到足够好的枢轴,将输入数组划分为适当的位置,然后递归继续搜索第k个最大元素。O (n )O(n)O(n) ķkkķkk 如果不允许我们触摸输入数组,那么要找到O (n )时间中的第个最大元素,需要多少额外空间呢?我们能否在O (1 )的额外空间中找到第k个最大元素,并且仍然保持运行时O (n )?例如,查找最大或最小元素需要O (n )时间和O (1 )空间。 ķkkO (n )O(n)O(n)ķkkO (1 )O(1)O(1)O (n )O(n)O(n)O (n )O(n)O(n)O (1 )O(1)O(1) 凭直觉,我无法想象我们可以做得比空间更好,但是有证据吗?O (n )O(n)O(n) 可有人点到基准或拿出一个说法,为什么 “个元素将需要Ø (ñ )空间中找到Ø (ñ )的时间?⌊ Ñ / 2 ⌋⌊n/2⌋\lfloor n/2 \rfloorO (n )O(n)O(n)O(n)O(n)O(n)

1
推断优化类型
在工作中,我的任务是推断一些有关动态语言的类型信息。我将语句序列重写为嵌套let表达式,如下所示: return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 由于我从一般类型信息开始,并试图推断出更具体的类型,因此自然的选择是精简类型。例如,条件运算符返回其真假分支类型的并集。在简单的情况下,它效果很好。 但是,在尝试推断以下类型时遇到了障碍: function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

1
表示集合分区的紧凑方式是什么?
存在用于表示集合分区的有效数据结构。这些数据结构对诸如Union和Find这样的操作具有良好的时间复杂性,但是它们并不是特别节省空间。 一种节省空间的方式来表示集合的分区是什么? 这是一个可能的起点: 我知道 具有元素的集合的分区数是,即第个贝尔数。因此,表示具有元素的集合分区的最佳空间复杂度是 位。为了找到这样的表示,我们可以寻找(一组元素的分区集合)与(一组从到的整数)之间的一对一映射。NNNBNBNB_NNNNNNNlog2(BN)log2⁡(BN)\log_2(B_N)NNN111BNBNB_N 有没有这样的映射可以有效地计算?我所说的“高效”是指我想将此紧凑表示形式转换为或时间多项式中的/易于操作的表示形式(例如列表列表。NNNlog2(BN)log2⁡(BN)\log_2(B_N)

1
亚线性空间对图灵机意味着什么?
已经证明确定输入是否为回文的问题在图灵机上需要空间。但是,即使存储输入也要占用空间 这是否意味着所有图灵机都需要空间?Ω (对数n )Ω(日志⁡ñ)\Omega(\log n)ññnΩ (n )Ω(ñ)\Omega(n) 当然,这里没有矛盾,因为任何使用至少线性空间的函数也至少使用对数空间。但是写确实表明图灵机使用的空间可能少于线性空间–毕竟,如果那是一回事,为什么人们会花所有时间证明什么似乎是的琐碎约束?那么,图灵机使用少于线性空间意味着什么?Ω (对数n )Ω(日志⁡ñ)\Omega(\log n)Ω (对数n )Ω(日志⁡ñ)\Omega(\log n)Ω (n )Ω(ñ)\Omega(n)

3
识别Watson-Crick回文的空间复杂性
我有以下算法问题: 确定识别作为Watson-Crick回文的DNA字符串的空间图灵复杂性。 Watson-Crick回文是指其原始字符串反向排列的字符串。的补体被定义信明智的,通过DNA启发:A是T的补体和C是G.一个简单的例子的用于WC-回文的补ACGT。 我提出了两种解决方法。 一个需要空间。O(n)O(n)\mathcal{O}(n) 一旦机器完成读取输入。输入磁带必须以相反的顺序复制到工作磁带上。 然后,机器将从左侧读取输入和工作带,并比较每个条目,以验证工作带中的单元格是输入单元格的补充。这需要空间。O(n)O(n)\mathcal{O}(n) 另一个需要空间。O(logn)O(log⁡n)\mathcal{O}(\log n) 在读取输入时。计算输入磁带上的条目数。 输入磁带读完后 将信件的补语复制到工作带上 将字母L复制到工作带的末尾 (循环点)如果计数器= 0,请清除工作带并输入是,然后暂停 如果输入磁带显示L 将输入头向左移动计数器指示的次数(需要第二个计数器) 如果输入磁带显示R 将输入头向右移动计数器指示的次数(需要第二个计数器) 如果保存在工作带上的值的单元格与输入磁带上的当前单元格匹配 将计数器减2 向左或向右移动一个,分别取决于R或L在工作带上 将L或R的补语复制到工作带以代替当前的L或R 继续循环 如果值不匹配,请清除工作带并输入否,然后暂停 这大约占空间,用于存储两个计数器,当前补码和值L或R。2logn+22log⁡n+22\log n+2 我的问题 第一个需要线性时间和空间。第二个需要时间和空间。我从报价中得到了问题,并提出了这两种方法,但是我不知道该选择哪种方法。我只需要说明问题的空间复杂性。n22n22\frac{n^2}{2}lognlog⁡n\log n 我感到困惑的原因 我倾向于说第二个是最好的选择,因为它在时间上比较好,但是答案仅来自我很幸运并想出一种算法。看起来,如果我想给某些东西添加空间复杂性,那么不需要运气就可以得出正确的算法。我想念什么吗?我是否应该甚至提出解决问题的方法来解决空间的复杂性?

4
NSPACE(O(n))中的一种语言,很可能不是DSPACE(O(n))中的一种语言
实际上,我发现上下文相关语言集CSLCSL\mathbf{CSL}(接受的语言)没有像(常规语言)或(无上下文语言)。而且,开放式问题不如“类似”问题那么著名:“ “。=NSPACE(O(n))=LBA=NSPACE(O(n))=LBA\mathbf{=NSPACE(O(n)) = LBA}REGREG\mathbf{REG}CFLCFL\mathbf{CFL}DSPACE(O(n))=?NSPACE(O(n))DSPACE(O(n))=?NSPACE(O(n))\mathbf{DSPACE(O(n))} =^{?} \mathbf{NSPACE(O(n))}P=?NPP=?NP\mathbf{P} =^{?} \mathbf{NP} 好吧,真的有这样的类比吗? 是否有一种语言无法证明为 (例如完整语言)?D S P A C E (O (n ))N PCSLCSL\mathbf{CSL}DSPACE(O(n))DSPACE(O(n))\mathbf{DSPACE(O(n))}NPNP\mathbf{NP} 此外:是否有一种语言在以下意义上是“完整的”:如果我们可以证明在我们得到吗?C S L L D S P A C E (O (n ))D S P A C E (O (n ))= N S P A C E (O (n ))LLLCSLCSL\mathbf{CSL}LLLDSPACE(O(n))DSPACE(O(n))\mathbf{DSPACE(O(n))}DSPACE(O(n))=NSPACE(O(n))DSPACE(O(n))=NSPACE(O(n))\mathbf{DSPACE(O(n)) …

2
Spearman等级相关系数计算的复杂度是多少?
我一直在研究Spearman的等级相关系数 ρ = ∑一世(x一世− x¯)(y一世- ÿ¯)∑一世(x一世− x¯)2∑一世(y一世- ÿ¯)2-------------------√ρ=∑一世(X一世-X¯)(ÿ一世-ÿ¯)∑一世(X一世-X¯)2∑一世(ÿ一世-ÿ¯)2\qquad \displaystyle \rho = \frac{\sum_i(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_i (x_i-\bar{x})^2 \sum_i(y_i-\bar{y})^2}}。 对于两个列表和。该算法的复杂性是什么?y 1,... ,y nX1个,… ,xñX1个,…,Xñx_1, \dots, x_nÿ1个,… ,yñÿ1个,…,ÿñy_1, \dots, y_n 由于该算法应仅计算减法,因此可能为吗?O (n )ññnO (n )Ø(ñ)O(n)

2
寻找具有较小内存占用的固定实现
我正在寻找设置数据类型的实现。也就是说,我们必须 维持一个动态子集(的大小从宇宙)U = \ {0,1,2,3,\点中,u - 1 \}大小的ü与Ñ Ù = { 0 ,1 ,2 ,3 ,... ,ù - 1 } üSSSnnnU={0,1,2,3,…,u–1}U={0,1,2,3,…,u–1}U = \{0, 1, 2, 3, \dots , u – 1\}uuu 操作insert(x)(将元素添加x到SSS)和find(x)(检查元素是否x为S的成员SSS)。 我不在乎其他操作。对于定向,在我正在使用的应用程序中,我们有u≈1010u≈1010u \approx 10^{10}。 我知道在O(1)时间内同时提供这两种操作的实现O(1)O(1)O(1),所以我主要担心数据结构的大小。我希望有数十亿个条目,但希望避免交换。 如果有必要,我愿意牺牲运行时间。我可以接受O(\ log n)的摊销运行时间O(logn)O(log⁡n)O(\log n);不允许使用预期的运行时或ω(logn)ω(log⁡n)\omega(\log n)中的运行时。 我的一个想法是,如果SSS可以表示为范围的并集[xmin, xmax],那么我们将能够以一些性能下降的代价节省存储空间。同样,其他一些数据模式也是可能的,例如[0, 2, 4, 6]。 您能否指出我可以执行类似操作的数据结构?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.