Questions tagged «recurrence-relation»

序列的定义,其中后面的元素表示为前面的元素的函数。

11
求解或近似数字序列的递归关系
在计算机科学中,我们经常必须解决递归关系,即为递归定义的数字序列找到闭合形式。在考虑运行时时,我们通常主要对序列的渐近增长感兴趣。 例子是 尾递归函数的运行时间从向下逐步降为,的身体花费时间:000nnnf(n)f(n)f(n) T(0)T(n+1)=0=T(n)+f(n)T(0)=0T(n+1)=T(n)+f(n)\qquad \begin{align} T(0) &= 0 \\ T(n+1) &= T(n) + f(n) \end{align} 的斐波那契序列: F0F1Fn+2=0=1=Fn+Fn+1F0=0F1=1Fn+2=Fn+Fn+1\qquad \begin{align} F_0 &= 0 \\ F_1 &= 1 \\ F_{n+2} &= F_n + F_{n+1} \end{align} 具有括号对的Dyck单词数:nnn C0Cn+1=1=∑i=0nCiCn−iC0=1Cn+1=∑i=0nCiCn−i\qquad\begin{align} C_0 &= 1 \\ C_{n+1}&=\sum_{i=0}^{n}C_i\,C_{n-i} \end{align} mergesort运行时重复出现在长度为列表上:nnn T(1)T(n)=T(0)=0=T(⌊n/2⌋)+T(⌈n/2⌉)+n−1T(1)=T(0)=0T(n)=T(⌊n/2⌋)+T(⌈n/2⌉)+n−1\qquad \begin{align} T(1) &= T(0) = 0 \\ T(n) …

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 

1
使用主定理时对假设
Master定理是解决某些递归问题的漂亮工具。但是,在应用时,我们经常会掩盖一个不可或缺的部分。例如,在对Mergesort进行分析时,我们很高兴地从 T(n)=T(⌊n2⌋)+T(⌈n2⌉)+f(n)T(n)=T(⌊n2⌋)+T(⌈n2⌉)+f(n)\qquad T(n) = T\left(\left\lfloor \frac{n}{2} \right\rfloor\right) + T\left(\left\lceil \frac{n}{2} \right\rceil\right) + f(n) 至 T′(n)=2T′(n2)+f(n)T′(n)=2T′(n2)+f(n)\qquad T'(n) = 2 T'\left(\frac{n}{2}\right) + f(n) 仅考虑n=2kn=2kn=2^k。我们保证ourselved,这一步是有效的-那就是T∈Θ(T′)T∈Θ(T′)T \in \Theta(T') -因为TTT表现“很好”。通常,我们假设n=bkn=bkn=b^k对于bbb是公分母。 通过使用恶性,很容易构造不允许这种简化的重复fff。例如,以上针对T的重复TTT\,/T′T′\,T'与 f(n)={1n,n=2k,elsef(n)={1,n=2kn,else\qquad f(n) = \begin{cases} 1 &, n=2^k \\ n &, \text{else} \end{cases} 可以通过通常的方法使用Master定理得出Θ(n)Θ(n)\Theta(n),但是显然有一个子序列会像一样增长Θ(nlogn)Θ(nlog⁡n)\Theta(n \log n)。参见此处,了解另一个更人为的示例。 我们怎样才能做到“严谨”呢?我很确定单调性就足够了,但是即使简单的Mergesort递归也不是单调的。有一个周期分量(渐近地占主导)。研究是否足够fff,并且在fff有什么必要和充分条件来确保Master定理有效?

1
如果分割比率取决于则求解分治法
有没有一般的方法可以解决表格的重复性: T(n)=T(n−nc)+T(nc)+f(n)T(n)=T(n−nc)+T(nc)+f(n)T(n) = T(n-n^c) + T(n^c) + f(n) 对于或更普遍c&lt;1c&lt;1c < 1 T(n)=T(n−g(n))+T(r(n))+f(n)T(n)=T(n−g(n))+T(r(n))+f(n)T(n) = T(n-g(n)) + T(r(n)) + f(n) 其中是一些子线性函数。g(n),r(n)g(n),r(n)g(n),r(n)nnn 更新:我浏览了下面提供的链接,并筛选了Jeff Erickson笔记中的所有重复关系。这种复发形式在任何地方都没有讨论。Akkra-Bazi方法仅在分割为分数时适用。任何令人发指的参考文献将不胜感激。

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 出于某种原因,我不清楚这种重命名为何起作用,而且似乎只是作弊。谁能更好地解释这一点?

5
Collat​​z递归运行多长时间?
我有以下Python代码。 def collatz(n): if n &lt;= 1: return True elif (n%2==0): return collatz(n/2) else: return collatz(3*n+1) 该算法的运行时间是多少? 尝试: 如果表示函数的运行时间。然后,我想我有 T(n)T(n)T(n)collatz(n)⎧⎩⎨T(n)=1 for n≤1T(n)=T(n/2) for n evenT(n)=T(3n+1) for n odd{T(n)=1 for n≤1T(n)=T(n/2) for n evenT(n)=T(3n+1) for n odd\begin{cases} T(n)=1 \text{ for } n\le 1\\ T(n)=T(n/2) \text{ for } n\text{ even}\\ T(n)=T(3n+1) \text{ …

1
证明第N次素数复发的(难)度
正如上一个问题所得出的那样,我一直在把里曼假设作为休闲数学问题。在此过程中,我进行了一次非常有趣的重现,并且对它的名称,它的减少以及它对于质数之间的可解性的可处理性感到好奇。 简而言之,我们可以将每个素数之间的间隔定义为先前候选素数的重复出现。例如,对于我们的基数p0= 2p0=2p_0 = 2,下一个质数将是: p1个= 最小{ x &gt; p0∣ − cos(2 π(X + 1 )/ p0)+ 1 = 0 )}p1个=分{X&gt;p0∣-cos⁡(2π(X+1个)/p0)+1个=0)}\qquad \displaystyle p_1 = \min \{ x > p_0 \mid -\cos(2\pi(x+1)/p_0) + 1 = 0) \} 或者,正如我们通过绘制此图所看到的:p1个= 3p1个=3p_1 = 3。 我们可以通过评估向前重复的每个候选素数来对素数重复该过程。假设我们要获得下一个质数。我们的候选函数变为:p 2ññnp2p2p_2 p2=min{x&gt;p1∣fp1(x)+(⋅(−cos(2π(x+1)/p1)+1)(−cos(2π(x+2)/p1)+1))=0}p2=min{x&gt;p1∣fp1(x)+((−cos⁡(2π(x+1)/p1)+1)⋅(−cos⁡(2π(x+2)/p1)+1))=0}\qquad \displaystyle \begin{align} p_2 = \min\{ x > …

5
以√n为参数求解递归关系
考虑复发 T(n)=n−−√⋅T(n−−√)+cnT(n)=n⋅T(n)+cn\qquad\displaystyle T(n) = \sqrt{n} \cdot T\bigl(\sqrt{n}\bigr) + c\,n 对于n&gt;2n&gt;2n \gt 2且具有一些正常数,并且。T (2 )= 1cccT(2)=1T(2)=1T(2) = 1 我知道用于解决递归的Master定理,但是我不确定如何使用它来解决这种关系。您如何计算平方根参数?

3
求解包含两个递归调用的递归方程
我试图为以下递归方程找到一个约束:ΘΘ\Theta T(n)=2T(n/2)+T(n/3)+2n2+5n+42T(n)=2T(n/2)+T(n/3)+2n2+5n+42 T(n) = 2 T(n/2) + T(n/3) + 2n^2+ 5n + 42 我认为,由于子问题和除法数量的不同,Master Theorem是不合适的。由于没有或T(0),因此递归树也不起作用。T (0 )T(1)T(1)T(1)T(0)T(0)T(0)

3
计算第个斐波那契数的高效算法
可以使用以下递归在线性时间中计算第个斐波那契数:nnn def fib(n): i, j = 1, 1 for k in {1...n-1}: i, j = j, i+j return i 第个斐波那契数也可以计算为。但是,这对于甚至较小的都有舍入问题。可能有一些解决方法,但我宁愿不这样做。[ φ Ñ / √nnnn[φn/5–√][φn/5]\left[\varphi^n / \sqrt{5}\right]nnn 是否有一种有效的算法(值为或更好的对数)来计算不依赖浮点算术的第个斐波那契数?假定整数运算(,,,)可在恒定的时间来执行。n + - × /nnnnnn+++−−-××\times///

3
了解加油站问题的算法
在加油站问题中,我们给了个城市以及它们之间的道路。每条道路都有长度,每个城市都定义了燃料价格。一单位的道路需要一单位的燃料。我们的目标是以最便宜的方式从货源到目的地。我们的战车受到一些价值的限制。nnn{0,…,n−1}{0,…,n−1}\{ 0, \ldots, n-1 \} 我试图理解算法,所以我手动写下了计算解决方案的步骤。不幸的是,我被卡住了-在某些时候没有考虑的余地,我不知道为什么,也许我错过了一些东西。 示例: 道路: 0 ----------- 1 ------------ 2 -------------- 3 (不一定要这么简单,可以是任何图形,即0-&gt; 2、0-&gt; 3、1-&gt; 3之间的道路等) 来源:0,目的地:3,坦克:10单位 燃油价格:0:10单位,1:10单位,2:20单位,3:12单位 长度:0-&gt; 1:9单位,1-&gt; 2:1单位,2-&gt; 3:7单位 最佳解决方案:以0填充9个单位,以1填充8个单位,则总成本为170个单位(9 * 10 + 8 * 10)。 因此,我尝试按此处所示进行计算(第2.2段) GV[u] is defined as: GV[u] = { TankCapacity - length[w][u] | w in Cities and fuelPrice[w] &lt; …

2
大师定理不适用?
给定以下递归方程 我们要应用主定理并注意T(n)=2T(n2)+nlognT(n)=2T(n2)+nlog⁡n T(n) = 2T\left(\frac{n}{2}\right)+n\log n nlog2(2)=n.nlog2⁡(2)=n. n^{\log_2(2)} = n. 现在我们检查的前两种情况,即是否ε&gt;0ε&gt;0\varepsilon > 0 或nlogn∈O(n1−ε)nlog⁡n∈O(n1−ε)n\log n \in O(n^{1-\varepsilon}) 。nlogn∈Θ(n)nlog⁡n∈Θ(n)n\log n \in \Theta(n) 这两种情况都不令人满意。因此,我们必须检查第三种情况,即是否 。nlogn∈Ω(n1+ε)nlog⁡n∈Ω(n1+ε)n\log n \in \Omega(n^{1+\varepsilon}) 我认为第三个条件也不满足。但为什么?对于为什么不能在这种情况下应用Master定理,有什么好的解释?

1
递归关系的渐近逼近(Akra-Bazzi似乎不适用)
假设算法具有运行时重复关系: T(n)={g(n)+T(n−1)+T(⌊δn⌋)f(n):n≥n0:n&lt;n0T(n)={g(n)+T(n−1)+T(⌊δn⌋):n≥n0f(n):n&lt;n0 T(n) = \left\{ \begin{array}{lr} g(n)+T(n-1) + T(\lfloor\delta n\rfloor ) & : n \ge n_0\\ f(n) & : n < n_0 \end{array} \right. 对于一些常数。假设是多项式,也许是二次的。最有可能在为指数。g n f n0&lt;δ&lt;10&lt;δ&lt;10 < \delta < 1gggnnnfffnnn 如何分析运行时(很好)?主定理和更一般的Akra-Bazzi方法似乎并不适用。ΘΘ\Theta

3
使用渐近符号时出错
我试图了解以下重复发生的以下证明有什么问题 T(n)=2T(⌊n2⌋)+nT(n)=2T(⌊n2⌋)+n T(n) = 2\,T\!\left(\left\lfloor\frac{n}{2}\right\rfloor\right)+n T(n)≤2(c⌊n2⌋)+n≤cn+n=n(c+1)=O(n)T(n)≤2(c⌊n2⌋)+n≤cn+n=n(c+1)=O(n) T(n) \leq 2\left(c\left\lfloor\frac{n}{2}\right\rfloor\right)+n \leq cn+n = n(c+1) =O(n) 文档说,因为归纳假设它的错误是 T(n)≤cnT(n)≤cn T(n) \leq cn 我在想什么?

1
用两个递归调用解决递归关系
我正在研究quicksort的最坏情况下的运行时,条件是它不会为very的各种定义进行非常不平衡的分区。 为了做到这一点,我问自己一个问题如果快速排序总是发生在分区的情况下那么运行时间将是什么,使得元素在左分区中,而在右分区中(在中间保留元素,即枢轴)。T(n,p)T(n,p)T(n, p)0&lt;p≤120&lt;p≤120 < p \leq {1\over 2}⌊p(n−1)⌋⌊p(n−1)⌋\lfloor{p(n-1)}\rfloor⌈(1−p)(n−1)⌉⌈(1−p)(n−1)⌉\lceil(1 - p)(n - 1)\rceil111 不难看出,为最坏的情况给出了上限,在最坏的情况下,是允许的最大不平衡分区,因为任何分数分区都将更加平衡,运行时更短,并且不允许任何分数。T(n,p)T(n,p)T(n, p)ppp&gt;p&gt;p> p&lt;p&lt;p<p 很明显,在快速排序中是最好的情况,而是最差的情况。两者都具有在任何教育资源中都能找到的容易复发的关系。但是我不知道一般如何学习。明显的关系是:T(n,12)T(n,12)T(n, {1 \over 2})T(n,0)T(n,0)T(n, 0)T(n,p)T(n,p)T(n, p) T(n,p)=n+T(⌊p(n−1)⌋,p)+T(⌈(1−p)(n−1)⌉,p)T(n,p)=n+T(⌊p(n−1)⌋,p)+T(⌈(1−p)(n−1)⌉,p)T(n, p) = n + T(\lfloor{p(n-1)}\rfloor, p) + T(\lceil(1 - p)(n - 1)\rceil, p) 在这里我被卡住了。我尝试过搜索,但是我能理解的有关分而治之算法的所有文献都按字面意义进行了“除法”,并利用分区总是相等的事实“欺骗”了分析,将术语合并为一个不变。 我不知道如何处理两个递归调用,也不知道删除舍入是否安全。这可以解析地解决吗?如果可以,怎么解决? PS:我对渐近不感兴趣(对于任何常数,它很容易显示)。我对随着变小而使quicksort变慢多少感兴趣,例如,我对的比率感兴趣。p p T (n ,0.25 )Θ(nlogn)Θ(nlog⁡n)\Theta(n \log n)ppppppT(n,0.25)T(n,0.5)T(n,0.25)T(n,0.5)T(n, 0.25) \over T(n, 0.5) PPS:作为一名本科生,如果我发现明显的事情过于冗长或无法解释的琐事,我深表歉意。而且,尽管我不知道是否像其他SE网站一样受到人们的关注,但我会注意到这是个人兴趣,而不是作业。

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.