タグ付けされた質問 「recursive」

6
再帰の削除-舞台裏の理論の調査
私はこのサイトに不慣れです。この質問は確かに研究レベルではありませんが、まあ。ソフトウェアエンジニアリングの背景は少しありますが、CSTheoryの背景はほとんどありませんが、魅力的です。長い話を簡単に言うと、この質問がこのサイトで受け入れられる場合は、次の詳細な回答をお願いします。 だから、私はすべての再帰プログラムに反復的な類似点があることを知っています。「システムスタック」に似たものを維持し、戻りアドレスなどの環境設定をプッシュすることによって、そのために提供される人気のある説明を理解しています。 。 もう少し具体的に、チェーンを呼び出す関数がある場合に、このステートメントをどのように証明するかを(正式に)確認したいと思います。さらに、F iがいくつかのF jを呼び出す可能性がある条件ステートメントがある場合はどうなりますか?つまり、潜在的な関数呼び出しグラフには、いくつかの強く関連するコンポーネントがあります。F0→F1…Fi→Fi+1…Fn→F0F0→F1…Fi→Fi+1…Fn→F0F_0 \rightarrow F_1 \ldots F_i \rightarrow F_{i+1} \ldots F_n \rightarrow F_0FiFiF_iFjFjF_j これらの状況を、反復から反復へのコンバーターを使ってどのように処理できるかを知りたいです。そして、私が以前に言及した手で波打った説明は、この問題にとって本当に十分ですか?つまり、場合によっては、再帰の削除が簡単な場合があるのはなぜでしょうか。特に、バイナリツリーのプレオーダートラバーサルから再帰を削除することは本当に簡単です。これは標準的なインタビューの質問ですが、ポストオーダーの場合に再帰を削除することは常に私にとって悪夢です。 私が本当に求めているのは質問です222 (1)再帰を反復に変換できるというより正式な(納得できる?)証明は本当にありますか? (2)この理論が本当にそこにあるのなら、なぜ、例えば、前注文をより簡単に、後注文を反復することがそれほど難しいと私が思うのはなぜですか?(私の限られた知性以外)

2
ランダム化された再帰アルゴリズムを分析する方法は?
次のアルゴリズムを考えます。ここで、は固定定数です。ccc void partition(A[1..m], B[1..n]) { if m=1 or n=1 return k = random(min(c,m,n)); partition A into k sublists Asub[1..k] at k-1 distinct random indices partition B into k sublists Bsub[1..k] at k-1 distinct random indices for i = 1 to k for j = 1 to k partition(Asub[i], Bsub[j]) Do …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.