現在、私は最小コリドー長アルゴリズムに取り組んでおり、セットアップの一部には、問題内のすべての隣接ポイントのリストを作成することが含まれます。現在、2 つの配列があります。1 つは x 座標上の隣接する点でソートされ、もう 1 つは y 座標上の点でソートされています。また、2 つのリストを指定して近くのポイントを調べるだけで隣接関係を見つけています。ポイントの y が同じである場合 (隣接する x で並べ替えられたリスト上)、それらは同じ行にあります。同様に、それらが同じ x (y リスト上) を持っている場合、同じ行に嘘をつきます。
たとえば、次の部屋があるとします。
次に、x隣接点のリストには、次の順序で点が含まれます: {v1, v2, v3, v4, v5, ... v21, v22} (それらはラベル付けされた順序と同じ順序のままです) また、リスト{v22, v16, v14, v9, v4, v13, v8, v3, v21, ... v5, v1} (基本的には y=x 上のグラフの反映)
前述のように、リスト上の近くのポイントを見て、隣接するポイントを見つけます。これはほとんどの点で問題なく機能しますが、次のエッジ ケースでは失敗します。
x隣接リストには{v1、v2、... v6、v7 ... v11、v12}が含まれ、私のアルゴリズムはv6とv7を隣接点として検出します。これらの 2 点の間に部屋があることをどのように検出できますか? 長方形と頂点の点のセットも利用できることに注意してください。前もって感謝します。