0

私は個人的なプロジェクトの画像に取り組んでおり、ある段階で立ち往生しています(さらに、比較的簡単な段階です)ところで、私の質問は画像とは関係ありません。

画像の各ピクセルの int 値を計算しています。そして、ピクセル(ノード)間の最小コストのパスを見つけたいと思います。実際、私は A* アルゴリズムの実用的な実装を持っています。しかし、通過できるノードまたは通過できないノードだけで「マップ」を制限したくないので、それを使用したくありません。各ノードを通過できるようにしたいのですが、コストがかかります。通過するのに非常にコストがかかるノードもあれば、そうでないノードもあります。しかし、通過できないノードはありません。

プロジェクトの非常に孤立した部分であるため、コードを提供する必要はないと思います。だから私は誰も操作したくありません。しかし、基本的には、ノードのリストを持つマップ オブジェクトがあります。ノードには、id、x、y の位置があります。コスト、隣人 (上、下、左、右のピクセル) と、ここに来た場所を知るためのノード参照など。

ダイクストラの最短経路アルゴリズムとの違いを表現できれば幸いです。それに応じてどのように変更できますか?または、これを行う別の方法を誰かが推奨できますか?

4

1 に答える 1

2

私は問題を理解していると思います..「通過するのに非常にコストがかかるノードもあれば、そうでないノードもあります。」これはアルゴリズムが実際にどのように機能するかではなく、問題をノード (コストなし) とエッジ (コストあり) に変換する必要があります。そうすれば、A*、Dijkstra、またはその他のパス検索アルゴリズムを簡単に使用できるはずです。

あなたの場合、すべてのピクセルはノード/頂点です。すべてのピクセルには 4 つのエッジがあります (境界のエッジを除く)。エッジのコストは、宛先ピクセルの int 値になります。

また、ノードにノード参照を保持するべきではありません。それがどこから来たのかを追跡するのはアルゴリズムの仕事です。

お役に立てれば。

于 2012-04-18T20:57:56.720 に答える