1

接続ノードグラフ用に作業しているゲームで、より高速なパスファインディングメカニズムを導入しようとしています。ノードは、「ネットワーク」と「ルーター」の2つのタイプに分類されます。


この図では、青い円はルーターと灰色の長方形のネットワークを表しています。

各ネットワークは、接続されているルーターのリストを保持し、その逆も同様です。ルーターは他のルーターに直接接続できず、ネットワークは他のネットワークに直接接続できません。


ネットワークは、接続されているルーターを一覧表示しますルーター



は同じことをします

送信元と宛先が同じネットワークであるパスを除く、可能な送信元と宛先のネットワークごとに、交差するネットワークの数で測定されるパスをマップするアルゴリズムを取得する必要があります。私は今1つ持っていますが、パスをマップするのに約2秒かかるため、接続されているすべてのプレーヤーにとって非常に目立ちます。

現在のアルゴリズムは、深さ優先のブルートフォース検索(パスキャッシングを機能させるために約1時間でまとめられたもの)であり、通過した順序でネットワークの配列を返します。これが、非常に遅い理由を説明しています。より効率的なアルゴリズムはありますか?

ちなみに、これらの例のグラフには4つのネットワークがありますが、実際のグラフには55のネットワークと約20のルーターが使用されています。不可能なパスも発生する可能性があり、ネットワーク/ルーターのグラフの地形が変化する可能性があるため、パスキャッシュを再構築する必要があります。

このタイプのグラフに最適な結果を提供する可能性のあるアプローチ/アルゴリズムはどれですか?

4

2 に答える 2

1

ダイクストラの最短経路アルゴリズムは古典的ですが、静的グラフ用にのみ設計されています。

あなたは動的な最短の過去のアルゴリズムをウェブで検索してみることができます。

関連性があると思われる論文が1つあります:http ://www.utdallas.edu/~edsha/papers/bin/Globecom04_SPT.pdf (そして他のリードを与えるかもしれません)。

このホワイトペーパーでは、各ルーターが独自の最短パステーブルを維持するルーターのネットワークについて説明します。おそらくあなたは似たようなことをすることができます。

最短経路をとると常に混雑などが発生する可能性があるため、ルーティングアルゴリズム全般も検討することをお勧めします(16チームのHaloを考えています!)。また、負荷分散などを組み込むこともできます。

それが役に立てば幸い。

于 2010-06-02T01:50:14.093 に答える
0

従来のネットワークドメインを調べたいと思うかもしれません。これは正確な答えではありませんが、「ブルートフォースよりも優れた」アルゴリズムの出発点となるはずです。

http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

于 2010-06-01T05:55:37.467 に答える