両方のポイントが同じ平面上にない(化合物の異なるフロア/レベルにある-化合物の異なるフロア/レベルにある-ポイントAからポイントBへのパスを見つけるという特定の問題を解決するためにどのアルゴリズムまたはアプローチを検討するかについてこの問題があります-そうではないかもしれません同じ建物にあります)。
A*とダイクストラの両方のアルゴリズムを検討しています。しかし、このアルゴリズムに基づくのはこれだけです(私が間違っている場合は訂正してください)。単一のマッププロットにのみ焦点を当てます。(多くのフロアと多くの建物のために)異なるマッププロットを持つことは、前述のアルゴリズムの両方に対して異なるストーリーを持つ可能性があります。
難しさに合わせて、データの一貫性を保つために、すべてのマップの形式を考案しました。各マップには、建物名、フロア番号、および各フロアが持つ可能性のあるセクションとフロアプラン(2次元の単一文字配列に変換)のデータがあります。例(両方のマップは異なるファイルにあります):
//MainFloor1 //MainFloor2
Main Main
1st 2nd
1:Wall 1:Wall
2:Door 2:Door
3:Elevator 3:Elevator
# 4:Room1
1111441111 5:Room2
1 1 #
1 1 1111441111
1 1 1552 2441
1111221111 1551 1441
# 1551 1441
//End-MainFloor1 1111221111
#
//End-MainFloor2
与えられたマップから、ポイントA(MainFloor1の一番下から最初の「2」の下)からポイントB(MainFloor2の左上から最初の「4」)に移動することを検討したい場合は、結果が返されます。
// X is the path from Point A to Point B
1111X41111 1111X41111
1 X 1 1552XXXB41
1 X 1 1551 1441
1 X 1 1551 1441
1111A21111 1111221111
与えられたマップ入力からそのような結果を生成するために、どのようなアプローチを検討または採用しますか?
ありがとう