まず第一に、A *、ダイクストラなどのアルゴリズムは必要ありません。このアルゴリズムは最良かつ最短の方法を計算するからです。JPanelには2つのポイントがあり、ポイントの配列であるケーブルでそれらを接続する必要があります。許可される方向は、上、下、左、右のみであり、ケーブルの方向変更の数は最小限である必要があります。これは最も重要な要件であり、もちろんアルゴリズムは最短経路を計算しません。どうすればいいですか?これに似たアルゴリズムはありますか?
ありがとう!
従来の最短経路アルゴリズムをもう一度見直す必要があると思います。エッジに関連付けられたウェイトは、物理的な距離とはまったく関係ありません。
潜在的なコーナーを頂点として、頂点間の各直線接続のエッジを持ち、各エッジに1つの重みを付けるグラフを作成します。必要なパスは、そのグラフを通る「最短」パスです。
「アルゴリズム」という言葉は、この単純な問題にはあまりにも派手ではありませんか?間の最短経路はA(X1,Y1) and B(X2,Y2)
どちらかC(X1,Y2) or D(X2,Y1)
を通り、距離はどちらの方法でも同じX1 != X2 && Y1 != Y2
ですが、どちらかの座標が2点間で同じである場合、それは途切れのない直線になります。パスの長さはですabs(X2-X1)+abs(Y2-Y1)
。