タグ付けされた質問 「recurrence-relation」

後の要素が前の要素の関数として表現されるシーケンスの定義。

11
数列の再帰関係の解決または近似
コンピューターサイエンスでは、再帰関係を解決する必要があります。これは、再帰的に定義された一連の数値の閉じた形式を見つけることです。ランタイムを検討する際、主にシーケンスの漸近的成長に主に興味があります。 例は 本体が時間f (n )を要するnから000まで下にステップする末尾再帰関数のランタイム:nnnf(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} n個の括弧ペアを持つ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 …

2
Cのvoid型がempty / bottom型と類似していないのはなぜですか?
ウィキペディアと私が見つけた他のソースはvoid、空のタイプではなくユニットタイプとしてリストCのタイプを見つけました。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 

2
再帰関係の変数の変更
この質問は、コンピューターサイエンススタック交換で回答できるため、理論的コンピューターサイエンススタック交換から移行されました。 7年前に移行され ました。 現在、私はアルゴリズムの自己学習(CLRS)を行っており、再発関係を解決するために本で概説している特定の方法が1つあります。 この例では、次の方法を説明できます。再発があるとします T(n )= 2 T(n−−√)+ ログnT(n)=2T(n)+log⁡nT(n) = 2T(\sqrt n) + \log n 最初に、m = lg(n)の置換を行い、それを繰り返しに差し込んで取得します: T(2m)= 2 T(2m2)+ mT(2m)=2T(2m2)+mT(2^m) = 2T(2^{\frac{m}{2}}) + m ここまでは完全に理解しています。この次のステップは、私を混乱させるものです。 彼らは現在、再発を「名前変更」し、S (m )= T (2 m)とし、明らかにS(m )S(m)S(m)S(m )= T(2m)S(m)=T(2m)S(m) = T(2^m) S(m )= 2 S(m / 2 )+ mS(m)=2S(m/2)+mS(m) = 2S(m/2) + …

1
マスター定理を使用する場合の仮定
マスター定理は、特定の種類の再発を解決するための美しいツールです。しかし、私たちはそれを適用するとき、しばしば不可欠な部分に光沢をつけます。たとえば、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 )= 2 T′(n2) +f(n )T′(n)=2T′(n2)+f(n)\qquad T'(n) = 2 T'\left(\frac{n}{2}\right) + f(n) のみを考慮します。Tは「うまく」動作するので、このステップが有効であること、つまりことを保証します。一般に、bを共通分母としてn = b kと仮定します。n = 2kn=2kn=2^kT∈ Θ (T′)T∈Θ(T′)T \in \Theta(T')TTTn=bkn=bkn=b^kbbb 悪質なを使用すると、この単純化を許可しない繰り返しを簡単に作成できfffます。たとえば、上記のTの繰り返しTTT\,/T′T′\,T'と f(n)={1n,n=2k,elsef(n)={1、n=2kn、他に\qquad f(n) = \begin{cases} 1 &, n=2^k \\ n &, \text{else} \end{cases} マスター定理を通常の方法で使用してを生成しΘ(n)Θ(n)\Theta(n)ますが、明らかにように成長するサブシーケンスがありますΘ(nlogn)Θ(nログ⁡n)\Theta(n …

1
split-ratioが
フォームの再発を解決する一般的な方法はありますか: 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法は、分割が分数の場合にのみ適用されます。痛烈な参照は評価されます。

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番目のプライム再発の(in)tractabilityの証明
前の質問から次のように、私はレクリエーション数学の問題としてリーマン仮説で遊んでいます。その過程で、私はかなり興味深い再発に至りました。そして、その名前、その縮約、素数間のギャップの可解性に対する扱いやすさについて興味があります。 簡潔に言えば、各素数間のギャップを、先行する素数候補の繰り返しとして定義できます。たとえば、ベースが場合、次の素数は次のようになります。p0=2p0=2p_0 = 2 p1=min{x&gt;p0∣−cos(2π(x+1)/p0)+1=0)}p1=min{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。 順方向に繰り返される各素数候補を評価することにより、nnn素数に対してプロセスを繰り返すことができます。次の素数p_2を取得するとしますp2p2p_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 > p_1 \mid f_{p_1}(x) + (&(-\cos(2\pi(x+1)/p_1) + 1) \\ \cdot &(-\cos(2\pi(x+2)/p_1) + 1)) = 0\} \end{align} どこ: fp1(x)=−cos(2π(x+1)/p0)+1fp1(x)=−cos⁡(2π(x+1)/p0)+1\qquad \displaystyle …

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 以下のための、いくつかの正の定数を有する、および。c T (2 )= 1n &gt; 2n&gt;2n \gt 2cccT(2 )= 1T(2)=1T(2) = 1 再発を解決するためのマスター定理は知っていますが、それを使用してこの関係をどのように解決できるかはわかりません。平方根パラメーターにどのようにアプローチしますか?

3
2つの再帰呼び出しを含む再帰方程式を解く
次の再帰方程式のバウンドを見つけようとしています。ΘΘ\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 マスター定理は、副問題と分割の量が異なるため不適切であると考えています。また、またはがないため、再帰ツリーは機能しません。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 フィボナッチ数番目はまた、計算することができる[ φ N / √nnn。ただし、これにはnが比較的小さい場合でも丸めの問題があります。おそらくこれを回避する方法はありますが、私はそれをやめたいです。[φn/5–√][φn/5]\left[\varphi^n / \sqrt{5}\right]nnn 浮動小数点演算に依存しないn番目のフィボナッチ数を計算するための効率的な(値以上の対数)アルゴリズムはありますか?整数演算(+、−、×、/)を一定の時間で実行できると仮定します。nnnnnn+++−−-××\times///

3
ガソリンスタンドの問題のアルゴリズムを理解する
ガスステーションの問題我々が与えられているの都市とそれらの間の道路。各道路には長さがあり、各都市には燃料の価格が定義されています。道路の1つの単位は燃料の1つの単位を要します。私たちの目標は、できるだけ安価な方法でソースから目的地に行くことです。私たちのタンクはいくつかの値によって制限されています。{ 0 、… 、n − 1 }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 - …

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. 次に、最初の2つのケースである\ varepsilon&gt; 0をチェックしますε&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)。 2つのケースは満足されていません。したがって、3番目のケースをチェックする必要があります。つまり、 nlogn∈Ω(n1+ε)nlog⁡n∈Ω(n1+ε)n\log n \in \Omega(n^{1+\varepsilon})。 3つ目の条件も満たされていないと思います。しかし、なぜ?そして、なぜこの場合にマスター定理が適用できないのかについての良い説明は何でしょうか?

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. ある定数。が多項式、おそらく2次式であると仮定します。ほとんどの場合、はで指数関数になります。0&lt;δ&lt;10&lt;δ&lt;10 < \delta < 1gggnnnfffnnn ランタイムを分析するにはどうすればよいでしょうか(はすばらしいでしょう)?マスター定理と、より一般的なAkra-Bazziメソッドは適用されないようです。ΘΘ\Theta

3
漸近表記の使用におけるエラー
次の再発の証拠で何が問題なのかを理解しようとしています T(N)≤2(C⌊NT(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
2つの再帰呼び出しによる再帰関係の解決
私はそれは決してしないだろうという条件の下でクイックソートの最悪のランタイムを勉強して、非常の定義を変更するためのアンバランスパーティションを非常に。 これを行うために、私は自分自身に、ランタイム何質問をクイックソート常にそうになりますが、いくつかの画分にパーティションに起こるよう要素は左側のパーティションにあり、は右側のパーティションにあります(要素、ピボット、中央に残ります)。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) ここで行き詰まっています。私は周りを検索してみましたが、分割統治アルゴリズムについて理解できるすべての文献は、文字通り「分割」を行い、パーティションのサイズが常に等しいという事実を使用して分析を「だまし」、用語を1回にマージしました。絶え間ない。 2つの再帰呼び出しを処理する方法がわかりません。丸めを削除しても安全かどうかはわかりません。これは分析的に解決することは可能ですか?はいの場合、どのように? PS:私は漸近論には興味がありません(定数に対してを示すのは簡単です)。が小さくなるにつれて、クイックソートがどのくらい遅くなるかに興味があります。たとえば、の比率に興味があります。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サイトほど見下されているかどうかはわかりませんが、これは宿題ではなく個人的な関心事であることに注意します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.