質問

次のことは、Cormenによって動的表の紹介から来ています。 et。 al。


次の疑似コードでは、 $ t $ がテーブルを表すオブジェクトです。フィールド $ table [t] $ は、テーブルを表すストレージのブロックへのポインタを含みます。フィールド $ num [t] $ は、テーブル内の項目数と、フィールド $ size [t] $です。 は、テーブル内のスロットの総数です。最初は、テーブルは空です。 $ num [t]= size [t]= 0 $

$ \ text {table-insert(t、x)} $

$ 1 \ quad \ text {if $ size [t]= 0} $

$ 2 \ quad \ quad \ text {それから$ 1 $ slotを持つ$ table [t] $} $

$ 3 \ quad \ quad size [t] \ leftarrow 1 $

$ 4 \ quad \ text {if} num [t]=サイズ[t] $

$ 5 \ quad \ quad \ text {それから$ new {\ text { - }} table $ $ 2 \ cdot size [t] $ slots} $

$ 6 \ quad \ quad \ quad \ text {$ table [t] $のすべての項目を挿入$ new {\ text { - }}}表}} $} $

$ 7 \ quad \ quad \ quad \ text {free $ table [t]} $

$ 8 \ quad \ quad \ quad table [t] \ leftarrow new {\ text { - }}表$

$ 9 \ quad \ quad \ quad size [t] \ leftarrow 2 \ cdot size [t] $

$ 10 \ quad \ text {$ x $への$ table [t] $} $

$ 11 \ quad num [t] \ leftarrow num [t] + 1 $

$ n $ $ \ text {table-insert} $ 選択した潜在的な機能は次のとおりです、

$$ \ phi(t)= 2.num [t] -size [t] $$

$ i $ の償却原価を分析する $ \ text {table-insert} $ 操作、 $ num_i $ $ i $ の後に表に格納されている項目の数を表します。 $ size_i $ は、 $ i $ 操作後のテーブルの合計サイズを表します。 $ \ phi_i $ $ i $ の後の演算の後の電位を表します。

最初は、 $ num_0= 0、size_0= 0 $ 、および $ \ \φ0= 0 $

$ i $ th table-insert操作が拡張をトリガーしない場合は、 $ size_i= size_ {II} $ $ num_i= num_ {i-1} + 1 $ 、操作の償却費は $ \ widehat {c_i} $ は償却原価と $ c_i $ は総コストです。

$$ \ widehat {c_i}= c_i + \ \ phi_i_i- \ phi_ {i-1}= 3 \ text {(詳細は示さず)} $$ < / P>

$ i $ が拡張をトリガーした場合は、 $ size_i= 2です。 size_ {i-1} $ $ size_ {i-1}= num_ {i-1}= num_i -1 $ 、もう一度、< / P>

$$ \ widehat {c_i}= c_i + \ \ phi_i_i- \ phi_ {i-1}= 3 \ text {(詳細は示さず)} $$ < / P>


この問題は、 $ \ widehat {c_1} $ の計算を行わないことです。テーブル内の要素(コードの1,2,3,10,11は実行されます)。

その状況では、コスト $ c_1= 1 $ $ \φ0= 0 $ $ num_1= size_1= 1 \ phi_1= 2.1-1= 1 $

$ \φ_1= 1 \タグ1 $

so、 $$ \ widwhat {c_1}= c_1 + \ phi_1- \ phi_0= 2 $$

しかし、償却原価は $ 3 $ であると言っています、(私は彼らが償却費用が最大 $ 3 $ 、私が理解できるものから)

さらに下のプロットでは、

 Plot

テキストは、 $ \φ_1= 2 $ を表す

"" $(1)$ ですが、 $ \ phi_1= 2 $ を考慮した場合、 $ \ widehat {c_i}= 3、\ forall i $

私は誤っているところではあまり入手しません。

役に立ちましたか?

解決

その名前の人気のテキストブックでは、私たちがもう一度言及していないという人気のある教科書のインスタンスを捕まえました。

繰り返し、「コスト $ c_1= 1 $ $ \φ0= 0 $ < / span> "、" $ num_1= size_1= 1 $ $ \は$ $ \ PHI_1= 2 \ CDOT1-1= 1 $ "および " $ \ hat {c_1}= $ $ C_1 + \ PHI_1- \ PHI_0 $ $= 2 $ "。 $ \ widehat c_i= 3 $ に述べるのは正しくありません。

最初の $ \ text {t} \ scriptsize {\ text {able}}} \ small \ text {i} \ scriptsize \ text {nsert} $ 操作は確かに非常に特別です。拡張とは見なされません。「行5-9の実行されている」と定義されているイベント。ただし、 $ size_i= size_ {i-1} $ を維持しません。だから $ \ widehat {c_i} $ \ widehat {c_i} $ の計算は $ \ widehat {c_1} $

その誤差は、詳細と正確さに多くの注意が払われている例示的な教科書を完全に信頼する傾向があると考えられています。

その誤差は、それほど重要ではないので、「償却費は最大3」であることを保持している。

ところで、質問の最後に位置を調べると、最初の $ \ text {t} \ scriptsizeの末尾の電位が表示されます。 \ text {able}} \ small \ text {i} \ scriptsize \ text {nsert} $ 操作、 $ \ hi_1= 1 $ 、正しい値

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top