我有兩組n個節點。現在我想將一個集合中的每個節點與另一個集合中的另一個節點連接起來。結果圖應該沒有交點。連接偶數個無節點的節點
我知道的幾種掃描線算法(Bentley-Ottmann-Algorithm以檢查交叉口發生,但我無法找到一個算法來解決這些路口,除了蠻力的方法。
從一組每個節點都可以被連接到任何其它節點的另一組內
任何指針(一種有效的)算法,解決了這個問題沒有所需的實施
EDIT1:?
這裏是一個解決問題的方法爲n=7
:
中的黑點是一組節點和所述紅色寵愛是一組。每個黑色節點必須連接到一個紅色節點,以便連接它們的線路不會交叉。
EDIT2:
爲了進一步闡明:所有節點的位置是固定的,所得到的曲線圖將具有n條邊。 我也沒有證據表明存在解決方案,但我無法創建一個沒有解決方案的例子。我確信有一個證據表明,創建這樣的平面圖總是可能的。 此外,只有一個解決方案是必要的,並非所有可能的解決方案。
這是一個沒有解決方案的問題實例:繪製任何長度爲4的線段。在左端(或底端)放置一個紅點,並在另一個紅點沿着這條線向右(或向上)1單位。在右邊(或頂部)放一個黑點,然後從那裏向左(或向下)放一個黑點1單位。即該圖看起來像「R R B B」。所有可能的黑紅線對在長度爲1的整個線段中相交。 –
您是否認爲它是一個優化問題?我的意思是你想找到最優化的一組邊,遞歸地檢查每一個可能的邊有沒有邊的集的正確性。如果你認爲這是一個好方向,我可以引導你更多。 –
如果點是固定的,解決方案總是存在並不是真的。最容易的反例是如果您想象所有節點在同一行上,中間是「黑色」節點,兩側是紅色節點 –