私は宿題に少し機能を追加したいという問題に遭遇しましたが、私にとって圧倒的なものでした(文脈のない質問のために大胆な文章を読んでください)。チェス盤外の隣接グラフの作成(ダイクストラ用)
私のプログラムには、約35項目のリストがあり、そこには私が扱うはずの地図に関する情報が入っています。 、ダイクストラでコード(X、Y)との重量100
- 「ウォール」:これは、次の要素を持つことができます重量3
私は100枚のタイル、および35の項目を意味チェス盤、同じようにレイアウト10x10のマップを持っています。リスト内の「何もない」とは、ダイクストラのウェイト1を意味します(通常のルートを意味します)。
ダイクストラを機能させ、2つのタイル間の最短経路を見つけるには、隣接グラフを作成する必要があります。 ここに私の問題は、どのように私はすべてのリストがある場合、現在のタイルの "周り"タイルを定義する方法ですか? 「+」の形をした
のみ隣接するタイルは、それら間のグラフのエッジを持っているが、それに何かがある場合、私はリストをチェックするたびに実行する必要がありますか?
コードサンプルでソースを指し示すことができれば、問題の鉛は大いにありがたく思います。私はそれを解決するために、多くの "if-elseif-elseif ..."で本当に面倒なコードしか見ません。
ありがとうございました!
編集:@kraskevichの提案方法を使用して終了しましたが、それは優れていますが、すべての回答と提案は本当に便利でした。皆さんありがとう!
これは誤解に基づいているようですが、必要はありませんo *実際にDijkstraのグラフを作成すると、暗黙のうちにグラフが「存在する」ようにするのはまあまあです。 – harold
@haroldグラフなしでdijkstraを構築できる擬似コードか、どこかの説明しかありませんか?私はそれが大好きです! – Dragonturtle
擬似コードはまったく同じですが、とにかくグラフを記述することさえありません。奇妙な低レベルの擬似コードを見ていない限り。 – harold