経路探索ライブラリを実施しています。オープン グラフ ライブラリである QuickGraph は、私のすべての要件に適合しますが、1 つの問題に遭遇しました。現在移動中のエージェントが通過できないエッジをスキップするための最短経路アルゴリズムが必要です。私が欲しいのは次のようなものです:
Func<SEquatableEdge<VectorD3>, double> cityDistances = delegate(SEquatableEdge<VectorD3> edge)
{
if(edge.IsPassableBy(agent))
return edgeWeight; // Edge is passable, return its weight
else
return -1; // Edge is impassable, return -1, which means, that path finder should skip it
};
Func<VectorD3, double> heuristic = ...;
TryFunc<VectorD3, IEnumerable<SEquatableEdge<VectorD3>>> tryGetPath = graph2.ShortestPathsAStar(cityDistances, heuristic, sourceCity);
グラフのコピーを作成し、通過できないエッジを削除することでこの問題を解決することは想像できますが、それはコンピューターのリソースの不必要な浪費です。この問題を解決する方法を教えてください。それとも解決策がなく、ソースを更新する必要がありますか?