2017-02-22 16 views
3

私は最短経路アルゴリズムの実装についていくつか読んでおり、Double-Bucketデータ構造を持つDijkstraのアルゴリズムを実装することは良い実装です。バケットまたはダブルバケットのデータ構造とは何ですか?

しかし、ダブルバケットの実装が実際に意味するものを見つけることはできません。その上にウィキペディアの記事は曖昧です。私が見たことから、それはハッシュテーブル/マップに似ています。これまで私のデータ構造やアルゴリズムクラスでこれまで聞いた事はありませんでした。

私が読んでいた特定の紙このた、

チェルカスキー、B. V.、ゴールドバーグ、A. V.、& Radzik、T.(1996)。最短経路アルゴリズム:理論と実験的評価。数学的プログラミング、73(2)、129-174。

+0

私はダブルバケットについて知らないが、私はそれがこれを参照していると信じている:http://www.geeksforgeeks.org/dials-algorithm-optimized-dijkstra-for-small-range-weights/またはその変形。 – IVlad

+0

http://publish.uwo.ca/~jmalczew/gida_1/Zhan/Zhan.htm#5。 Dijkstraのアルゴリズムは – FrankS101

答えて

1

バケットデータ構造は、キー値をバケットのインデックスとして使用し、同じキー値の項目を対応するバケットに格納するデータ構造です。当然、整数キー値を持つバケットデータ構造を使用することが最も理にかなっています。

Bは、バケットデータ構造であり、バケットB[x]には、キー値がxのすべてのアイテムが格納されているとします。現在知られている最短距離は、その後、それぞれ、B[3] = {u, v}B[7] = {w} 3,3及び7であるフロンティア・セット、3つのノードuvwを持っている場合、一例として、最短経路問題を使用

  • 挿入:O(1)
  • 除去:O(1)
  • 減少キー:O(1)
  • する最小検索:最短経路問題に関連するバケットデータ構造の

    時間分析O(c)、ここで、cは最大キー値です。

ダイクストラのアルゴリズムはバケットデータ構造を用いて実装されている場合このように、あなたはmは、エッジの数であるとnは、ノードの数は、あなたの総時間の複雑さのためO(m + nc)を持っています。


ダブルバケット・データ構造は、ほとんどの場合、各バケットは、バケットのデータ構造を含むバケットのデータ構造を指します。

+0

で実装されましたありがとうございました!私はちょうどあなたが答えた通知を見た、私はこの質問を忘れました。誰かがこの問題を抱えている場合は、この本の「ヒューリスティック検索:理論とアプリケーション」で詳細を確認してください。https://books.google.com/books?id=3k5MVjKzBP4C&pg=PA90# v = onepage&q&f = falseあなたの説明が本当に良かったのですがwookie919 – Carson