Questions tagged «landau-notation»

有关渐近表示法(例如Big-O,Omega等)的问题


2
雷诺和泰曼的增长顺序定义
我正在阅读卡尔·雷诺兹(Carl Reynolds)和保罗·泰曼(Paul Tymann)撰写的一本名为《计算机科学原理》的书(由Schaum的提纲出版)。 第二章以顺序搜索示例介绍算法,该搜索简单地循环访问名称列表,如果在列表中找到给定名称,则返回TRUE。 作者继续说(第17页): 我们说顺序搜索算法的“增长顺序”是n。表示为T(n)。我们还说,增长顺序在T(n)的某个恒定因子之内的算法具有NLsay的theta。“顺序搜索的n为n。” 问题的大小为n,即要搜索的列表的长度。 我发现这确实很难遵循。这本书到处都是错误,所以我不确定是我遗漏了什么还是上面的段落中有错字。一般来说,我很少看到以“ ... say”结尾的句子。 我很困扰。 T代表什么?这本书没有解释。是时间还是Theta? 如果“ NL的theta”表示“顺序搜索的n为n”。L代表什么?“线性”还是“长度”? 我已写信给出版商,要求解释。他们说他们会将我的信息转发给作者。他们没有回答。我也尝试过查看其他资源,但仍然感到the惑,觉得我误会了一些东西,因此,在我对本段进行解码之前,请不要放松。 如果有人拥有该书的副本,并且已经理解该段落。然后,如果您能让我知道该段是否正确或用其他方式解释,将不胜感激。谢谢。

10
O(·)不是一个函数,那么一个函数如何等于它呢?
我完全理解大ØOO符号的含义。我的问题是,当我们说Ť(n )= O (f(n ))T(n)=O(f(n))T(n)=O(f(n)),其中Ť(n )T(n)T(n)是大小为ñnn输入上算法的运行时间。 我了解它的语义。但是Ť(n )T(n)T(n)和Ø (˚F(n ))O(f(n))O(f(n))是两回事。 Ť(n )T(n)T(n)是一个精确的数字,但是Ø (˚F(n ))O(f(n))O(f(n))不是一个产生数字的函数,因此从技术上讲我们不能说Ť(n )T(n)T(n) 等于 Ø (˚F(n ))O(f(n))O(f(n))。您 O (f (n ()))的值是多少,答案是什么?没有答案。Ø (˚F(n ))O(f(n))O(f(n))

2
是什么意思?
这是一个基本问题,但是我认为与,因为在我们趋于无穷大时,较大的项应该起主导作用?同样,这将不同于O(\ min(m,n))。那正确吗?我一直看到这种表示法,尤其是在讨论图形算法时。例如,您通常会看到:O(| V | + | E |)(例如,参见此处)。O(m+n)O(m+n)O(m+n)O(max(m,n))O(max(m,n))O(\max(m,n))O(min(m,n))O(min(m,n))O(\min(m,n))O(|V|+|E|)O(|V|+|E|)O(|V| + |E|)

6
按渐近增长对函数进行排序
假设我有一个功能列表,例如 nloglog(n),2n,n!,n3,nlnn,…nlog⁡log⁡(n),2n,n!,n3,nln⁡n,…\qquad n^{\log \log(n)}, 2^n, n!, n^3, n \ln n, \dots 如何渐近地对它们进行排序,即在由 f≤Og⟺f∈O(g)f≤Og⟺f∈O(g)\qquad f \leq_O g \iff f \in O(g), 假设它们确实是成对可比的(另请参见此处)?使用的定义似乎很尴尬,并且通常很难证明合适的常数和的存在。Ç Ñ 0OOOcccn0n0n_0 这是关于复杂度的量度,因此我们对渐进行为感兴趣,并且我们假定所有函数仅采用非负值()。∀ Ñ ,˚F (Ñ )≥ 0n→+∞n→+∞n \to +\infty∀n,f(n)≥0∀n,f(n)≥0\forall n, f(n) \ge 0

4
O和Ω与最坏情况和最佳情况有何关系?
今天,我们在一次讲座中讨论了一种非常简单的算法,该算法可使用二进制搜索在排序数组中查找元素。我们被要求确定元素数组的渐近复杂度。nnn 我的想法是,显然,或更具体,因为\ log_2 n是最坏情况下的操作数。但是我可以做得更好,例如,如果我第一次点击搜索到的元素-那么下界是\ Omega(1)。O(logn)O(log⁡n)O(\log n)O(log2n)O(log2⁡n)O(\log_2 n)log2nlog2⁡n\log_2 nΩ(1)Ω(1)\Omega(1) 讲师将解决方案表示为Θ(logn)Θ(log⁡n)\Theta(\log n)因为我们通常只考虑算法的最坏情况输入。 但是,仅考虑最坏的情况时,如果给定问题的所有最坏情况具有相同的复杂度(\ Theta是我们所需要的,对吗?),用OOO和ΩΩ\Omega意义何在?ΘΘ\Theta 我在这里想念什么?

2
为什么C的void类型不同于Empty / Bottom类型?
维基百科以及我发现的其他来源都将C的void类型列为单位类型,而不是空类型。我觉得这很混乱,因为在我看来,它void更适合于空/底类型的定义。 void据我所知,没有价值观存在。 返回类型为void的函数指定该函数不返回任何内容,因此只能执行某些副作用。 类型的指针void*是所有其他指针类型的子类型。同样,void*在C中进行来回转换是隐式的。 我不确定最后一点是否可以作为void空类型的参数,void*或多或少是与无关的特例void。 另一方面,void它本身不是所有其他类型的子类型,据我所知,这是将类型作为底部类型的要求。
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

5
O(mn)被认为是“线性”或“二次”增长吗?
如果我有一个函数,其时间复杂度为O(mn),其中m和n是其两个输入的大小,我们将其时间复杂度称为“线性”(因为在m和n中均为线性)或“二次”(因为它是两种尺寸的产品)?或者是其他东西? 我觉得称它为“线性”是令人困惑的,因为O(m + n)也是线性的,但速度要快得多,但是我觉得称其为“二次数”也是很奇怪的,因为它在每个变量中都是线性的。

2
更改递归关系中的变量
此问题是从理论计算机科学堆栈交换迁移而来的,因为可以在计算机科学堆栈交换上回答。 迁移 7年前。 目前,我正在研究算法简介(CLRS),书中概述了一种解决递归关系的特定方法。 此示例可以说明以下方法。假设我们有复发 Ť(n )= 2 吨(n--√)+ 日志ñT(n)=2T(n)+log⁡nT(n) = 2T(\sqrt n) + \log n 最初,他们进行替换m = lg(n),然后将其重新插入递归并获得: Ť(2米)= 2 吨(2米2)+ 米T(2m)=2T(2m2)+mT(2^m) = 2T(2^{\frac{m}{2}}) + m 到目前为止,我完全理解。下一步是使我感到困惑的步骤。 他们现在“重命名”递归并令,这显然会产生S (m )= T (2 m)小号(米)S(m)S(m)小号(米)= T(2米)S(m)=T(2m)S(m) = T(2^m) 小号(m )= 2 秒(米/ 2 )+ 米S(m)=2S(m/2)+mS(m) = 2S(m/2) + m 出于某种原因,我不清楚这种重命名为何起作用,而且似乎只是作弊。谁能更好地解释这一点?


2
构造两个满足
构造两个函数满足:F,g ^:R+→ R+f,g:R+→R+ f,g: R^+ → R^+ 是连续的;F,g ^f,gf, g 单调增加;F,g ^f,gf, g 和 g ≠ O (f )。F≠ O (g)f≠O(g)f \ne O(g)G≠ O (f)g≠O(f)g \ne O(f)

4
什么
什么意思吗?log O (1 ) nlogO(1)n\log^{O(1)}n 我知道big-O表示法,但是这种表示法对我来说毫无意义。我也找不到任何东西,因为搜索引擎也无法正确解释。 在上下文中,我发现它的句子为“ [...],如果它使用空间并且最多使用则我们将其称为[efficiency]函数每件。”O (log n )log O (1 ) nO(logn)O(\log n)logO(1)n\log^{O(1)}n

2
为什么主定理中存在规则性条件?
我一直在阅读Cormen等人的算法简介。并且我正在阅读从第73页开始的Master定理的陈述。在情况3中,使用定理还需要满足一个正则条件: ... 3.如果 F(n )= Ω (n日志ba + ε)F(ñ)=Ω(ñ日志b⁡一种+ε)\qquad \displaystyle f(n) = \Omega(n^{\log_b a + \varepsilon}) 对于一些恒定,如果ε &gt; 0ε&gt;0\varepsilon > 0 一个˚F(Ñ / b )≤ Ç ˚F(n )一种F(ñ/b)≤CF(ñ)\qquad \displaystyle af(n/b) \leq cf(n) [ 这是规律性条件 ] 对于某些常数以及对于所有足够大的,则..Ñc &lt; 1C&lt;1c < 1ññn 有人可以告诉我为什么需要规律性条件吗?如果不满足条件,定理将如何失败?

6
在一个间隔中找到两个数字的最大异或:我们能做得比二次更好吗?
lllrrrmax(i⊕j)max(i⊕j)\max{(i\oplus j)}l≤i,j≤rl≤i,j≤rl\le i,\,j\le r 天真的算法只检查所有可能的对。例如在红宝石中,我们有: def max_xor(l, r) max = 0 (l..r).each do |i| (i..r).each do |j| if (i ^ j &gt; max) max = i ^ j end end end max end 我感觉到,我们可以做得比二次。是否有针对此问题的更好算法?

3
Landau的总和出了什么问题?
我写 ∑i=1n1i=∑i=1nO(1)=O(n)∑i=1n1i=∑i=1nO(1)=O(n)\qquad \displaystyle \sum\limits_{i=1}^n \frac{1}{i} = \sum\limits_{i=1}^n \cal{O}(1) = \cal{O}(n) 但是我的朋友说这是错误的。从TCS备忘单中,我知道总和也称为,其对数增长。所以我的界限不是很敏锐,但足以满足我需要的分析需求。HnHnH_nnnn 我做错了什么? 编辑:我的朋友说,以同样的理由,我们可以证明 ∑i=1ni=∑i=1nO(1)=O(n)∑i=1ni=∑i=1nO(1)=O(n)\qquad \displaystyle \sum\limits_{i=1}^n i = \sum\limits_{i=1}^n \cal{O}(1) = \cal{O}(n) 现在,这显然是错误的!这里发生了什么?

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.