実装の詳細とは? わかりやすく解説

実装の詳細

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/05/12 19:08 UTC 版)

スキップリスト」の記事における「実装の詳細」の解説

スキップリスト用いられる要素1つ上のポインタを含む可能性があるが、それは、1つ上のリスト属している可能性があるからである。 挿入削除は、連結リスト対応する操作同様の実装になるが、"背の高い"要素2つ上の連結リストに対して挿入及び削除する必要があるまた、全てのノード昇順訪れるような O ( n ) {\displaystyle {\mathcal {O}}(n)} の操作において、裏でスキップリストレベル構造ランダム性取り除き探索時間が O ( log ⁡ n ) {\displaystyle {\mathcal {O}}(\log n)} である最適な構造変えてもよい。(i番目のノードの高さをi=m*2^n(mは奇数)とした場合のnに1加えたものにする。また、i=0 は最大の高さとする。)しかし、この方法では誰かが何処に高い要素があるかを知ってそれをリストから削除することができる。 その代わりに、次のように高さを擬似的ランダマイズすることができる。最初に全てのノードの高さを1にする。次に各i番目のノードについて、奇数ならば高さを2にするかどうかランダムに決める。偶数ならば直前ノードの高さが2になっていないときのみ高さを2にする。高くなったノードの数が2以上なら高さを上げてこれを繰り返すランダム性削除同様に、この擬似的ランダマイズノード全て訪れ場合にのみ実行する擬似的ランダマイズを行う利点は、ランダム性の無い場合違い敵意のあるユーザーに高さに関する情報漏らさないことである。悪意あるユーザが高さに関する情報知っていると、レベルの高いノード削除するだけで性能悪化させことができるため、この性質は望ましい。(これに対し、BetheaとReiterは、悪意あるユーザ性能劣化起こすために、確率的タイミング方法使用できる主張している。)検索時間については、ランダム性の無い場合と同様、対数時間であることが保証されている。 以下の「最適化」を考えてみよう。「次に, 各i番目のノードに対して・・・」の部分で、各奇数偶数ペア対すコイン投げをするのをやめ、その替わりコイン1回だけ振って全てのペアに対して偶数番目のノードの高さを上げるか、あるいは奇数の方の高さを上げるかを決める。これで、コイン投げ回数は、 O ( n log ⁡ n ) {\displaystyle {\mathcal {O}}(n\log n)} でなく O ( log ⁡ n ) {\displaystyle {\mathcal {O}}(\log n)} に削減できるこの方法では、悪意持ったユーザが、ある1つノードの高さを正しく推測できる確率は非常に低いにも関わらず、「全ての偶数番目のノードは高さが1より大きいだろう」という推測50%確率当たってしまう。 スキップリストは、より伝統的な平衡木と同じ最悪時のパフォーマンス保証しない。なぜなら、(確率はとても低いが)バランスの悪い構造になる場合が常にあるからである。しかし実際にはよく動作しランダム化されたバランスとりの仕組み平衡二分探索木決定論的なバランスとりの仕組みより実装が容易であることが示されている。スキップリスト並列計算においても有用で、挿入スキップリストいくつかの部分並列実施でき、全体リバランス不要である。この並列化は、アドホック無線ネットワークでのリソース探索において特に有用となりうる。なぜなら、ランダム性のあるスキップリスト単一ノード損失に対して堅牢にすることができるからである。

※この「実装の詳細」の解説は、「スキップリスト」の解説の一部です。
「実装の詳細」を含む「スキップリスト」の記事については、「スキップリスト」の概要を参照ください。


実装の詳細

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/01/14 03:52 UTC 版)

ランタイム (プログラムライフサイクルフェーズ)」の記事における「実装の詳細」の解説

プログラム実行する場合ローダ最初に必要なメモリセットアップを実行しプログラム必要なダイナミックリンクライブラリリンクする次にプログラムエントリーポイントから実行開始する場合によっては、言語または実装では、代わりに言語ランタイムによってこれらのタスク実行されるが、これは一般的なコンシューマーオペレーティングシステムの主流言語では珍しいことである。 一部プログラムデバッグは、実行時にのみ実行できる(または、実行するとより効率的または正確になる)。論理エラー配列境界チェックひとつの例である。このため、高度なコンパイルチェックとプレリリーステストにもかかわらずプログラム実際のデータ使用して実稼働環境テストされるまで、一部のプログラミングバグは発見されない。この場合エンドユーザーは「ランタイムエラーメッセージ受け取可能性がある。

※この「実装の詳細」の解説は、「ランタイム (プログラムライフサイクルフェーズ)」の解説の一部です。
「実装の詳細」を含む「ランタイム (プログラムライフサイクルフェーズ)」の記事については、「ランタイム (プログラムライフサイクルフェーズ)」の概要を参照ください。

ウィキペディア小見出し辞書の「実装の詳細」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「実装の詳細」の関連用語

実装の詳細のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



実装の詳細のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのスキップリスト (改訂履歴)、ランタイム (プログラムライフサイクルフェーズ) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS