私はA*アルゴリズムを実装していますが、次の擬似コードで立ち往生しています。
if neighbor not in openset or tentative_g_score <= g_score[neighbor]
came_from[neighbor] := current
g_score[neighbor] := tentative_g_score
f_score[neighbor] := g_score[neighbor] + heuristic_cost_estimate(neighbor, goal)
if neighbor not in openset
add neighbor to openset
1回のアルゴリズムパスでノードが2回オープンセットされているかどうかをチェックしないように、オープンセットチェックを最適化したいと思います。
私はbashに次のようなものがあることを知っています:
if(( false == openedList_.ContainsNodeXY(n.X, n.Y)) &&
InOpenSet = false ){ .... }
これにより、ノードがオープンセットに含まれるかどうかに関する情報が得られます。
C#でこれを行うにはどうすればよいですか?
EDIT
openList_
はリストです(ソートする必要があります)ので、にすることはできませんHashSet
。