私が書いている作図ソフトウェアで発生した問題を (効率的に) 解決するためのアルゴリズムが必要です。
N と M の 2 つのノードのセットがあります。N の各ノード n0 には、M の一意の (n0 の) ノードへの 0 から M の接続があります。これらのノードのセットは、N 個のノードを持つ 2 本の平行な水平線上に配置されます。 M ノードの上の行にあります。接続は、N から M への直線として描画されます。
私がする必要があるのは、交差を最小限に抑えるために、水平線内で N ノードと M ノードを再配置することです。O(N!* M!)であるすべての可能な配置を単純に列挙するよりも効率的なこれを行う方法はありますか?(実際には、各接続も交差をチェックする必要があるため、それよりもかなり悪いです)。
関連する文献への参照も歓迎しますが、その関連性が望まれる理由についての説明が必要です。
指摘したように、一般的なケースでは、これは 2 部グラフ (セット N および M) の平面化アルゴリズムと見なすことができます。ただし、この特定の問題はそれよりもかなり制限されており (高速化できることを願っています)、次のように追加情報を生成する必要があります (低速化する可能性があります)。
ダイアグラムの制限は、接続が N から M への直線として描かれなければならないことです。グラフ理論では、これは事実上、接続がN または M のノードの後ろに行くことはできず、それらの間のみに行くことを意味します。したがって、4 つのコネクタを持つ 2x2 のケースは、一般的な 2 部グラフのケースでは平坦化できますが、私の図の場合は平坦化できません。
追加情報は、平面化できない場合でも、最小交差ソリューション (またはそれに近いソリューション) が必要であるということです。一般に、最小交差アルゴリズムは、平面化のみのアルゴリズムとは大きく異なります。