この関数が


10

私の教科書は言う:「我々は、関数定義f:NN次のように及び注意を与えていること、我々時間でがと間に挟まれるような数を簡単に見つけることができます。 "f(1)=2f(i+1)=2f(i)1.2nO(n1.5)inf(i)f(i+1)

実際に簡単に時間でを見つけることができると自分に納得させるにはどうすればよいですか?再帰的に定義され、私たちは計算にあると思うまでの。これらの計算にかかる時間を見つけるには、依存する適切な上限を見つける必要があると思います。また、関数の実行時間の上限を見つける必要があります。。最後に、うまくいけば引用された命題を示すことができます。残念ながら、どちらも見えません。iO(n1.5)ff(1),f(2),f(3)f(j)f(j)ninx2x1.2

私が言及するのを忘れていました:私たちは非決定的なコンテキストにいることに注意してください。したがって、はで非決定性チューリングマシンによって計算可能であると主張されています。fO(n1.5)


かなりの数の人がすでにこの質問を読んでおり、一部の人もそれが有用で興味深いと感じていますが、今のところ誰も回答していないので、私はコンテキストについていくつかの情報を提供したいと思います:引用された主張は証拠の不可欠な部分です非決定論的な時間階層定理。証明(主張付き)は、たとえばAroraとBarakの本にありますが、同じ証明を提供するWeb上の他のリソースもかなりたくさん見つかりました。それらのそれぞれは、クレームを簡単または些細なものと呼んでおり、を見つける方法については詳しく説明していませんi時間で。したがって、これらすべてのリソースがAroraとBarakからコピーされたか、その主張は実際にはそれほど難しくありません。O(n1.5)


1
これは、Arora&Barakの非決定論的な時間階層定理の証明のように見えますか?もしそうなら、私は非決定論がここで役割を果たすと思います。
G.バッハ

あなたが正しい。そのため申し訳ありませんが、私は非決定論的なコンテキストに言及する必要がありました。非決定性がO(n ^ 1.5)の限界を示すのにどのように役立つかを詳しく説明していただけませんか?
user1494080 2014

回答:


4

表す x | 番号の長さxは、すなわちログ2 X + 1(のためのx > 0)。演算2をxは時間が必要O Xの RAMモデルにおいて、および計算にFをI + 1 からF 私は時間かかりO F I 1.2= Oを| F|x|xlog2x+1x>02xO(x)f(i+1)f(i)。以来、F 私は速く幾何学よりも成長して、計算するには、全体の時間 fはI + 1 である O | F I + 1 |。あなたが指摘するように、あなたがするまで、そうする必要があり、F I + 1 nは、その手段その F I < N。したがって、総実行時間はO(f(i)1.2)=O(|f(i+1)|)f(i)f(i+1)O(|f(i+1)|)f(i+1)nf(i)<nO(|f(i+1)|)=O(f(i)1.2)=O(n1.2)

単一テープのチューリングマシンモデルでは、計算には時間O x log x がかかるため、合計実行時間はO n 1.2 log n = O n 1.5)になります。計算するためのアルゴリズム2つのx置き換えを[ X ]によって1 [ [ X ] ](ここで[ X ]は、のバイナリ表現であり、X、および[ [2xO(xlogx)O(n1.2logn)=O(n1.5)2x[x]1[[x]][x]x異なる桁使用してバイナリ表現である 0 '1 ')、次に、繰り返し変換を実行し、[ [ X ] ] 0 [ [ X - 1 ] ]、時刻とる Oを| X |= O ログx [[x]]0,1[[x]]0[[x1]]O(|x|)=O(logx)


パーフェクト、ありがとう!もう1つ質問:| f(i)|について議論する必要はありませんか?f(i)が幾何学的に速く成長するのではなく、幾何学的に速く成長する?
user1494080 2014

以来、それは同じことですが、あなたは正しいです。私たちが本当に欲しいのですΣのJ I | f j | = O | f i ||f(i+1)|=f(i)1.2ji|f(j)|=O(|f(i)|)
Yuval Filmus、2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.