Katakanlah bahwa dua pasang dan p 2 = ( a 2 , b 2 ) yang tidak-swap kompatibel jika mereka dapat ditempatkan dalam rangka baik dalam daftar diurutkan tanpa swapping salah satu. Ini benar jika salah satu ( a 1 ≤ a 2 ∧ b 1 ≥ b 2 ) atau ( a 2 ≤ a 1 ∧ b 2 ≥ bp1=(a1,b1)p2=(a2,b2)(a1≤a2∧b1≥b2) . Perhatikan bahwa p 1 dan p 2 ada-swap kompatibel jika dan hanya jika merekadua-swap kompatibel(karena urutan parsial memenuhi didefinisikan p 1 ⪯ p 2 ≡ p * 2 ⪯ p * 1 , di mana * menunjukkan operasi swap) . Akhirnya, p 1 dan p 2 adalahsalah satu-swap kompatibeljika mereka dapat ditempatkan dalam rangka baik dalam daftar diurutkan dengan tepat satu dari mereka bertukar. Ini benar jika p ∗ 1 dan(a2≤a1∧b2≥b1)p1p2p1⪯p2≡p∗2⪯p∗1∗p1p2p∗1 tidak kompatibel dengan swap Dalam kasus yang tersisa, p 1 dan p 2 sama sekali tidak kompatibel: mereka tidak dapat memenuhi kondisi pesanan terlepas dari keadaan swap mereka.p2p1p2
Masalahnya sekarang dapat dipecahkan sebagai berikut. Uji setiap pasang pasangan. Jika ada pasangan yang tidak kompatibel, tidak ada solusi, dan kami bisa melempar pengecualian. Kalau tidak, perhatikan grafik dengan node yang sesuai dengan pasangan asli, dan tepi antara pasangan node yang tidak kompatibel satu-swap. Setiap pasangan node harus memiliki status swap yang sama dalam daftar yang diurutkan dengan benar, dan oleh karena itu semua node di setiap komponen yang terhubung dari grafik harus memiliki status swap yang sama. Kita perlu menentukan apakah status swap seluruh komponen ini dapat ditetapkan secara konsisten. Uji semua pasangan node dalam setiap komponen yang terhubung. Jika ada pasangan yang tidak kompatibel dengan swap, tidak ada solusi, dan kami dapat memberikan pengecualian. Sekarang uji semua pasangan komponen yang terhubung (yaitu, untuk komponen C1dan , uji semua pasangan node p 1 ∈ C 1 dan p 2 ∈ C 2 ). Kita tahu bahwa setiap pasangan komponen setidaknya satu-swap yang kompatibel, tetapi beberapa pasangan mungkin juga tidak-swap yang kompatibel (karena setiap pasangan node yang tidak terhubung dengan tepi setidaknya satu-swap yang kompatibel, dan mungkin juga tidak ada- swap kompatibel). Pertimbangkan grafik tereduksi dengan node yang sesuai dengan komponen yang terhubung, dan tepi antara dua node jika komponen yang sesuai tidak kompatibel dengan swap. Ada solusi untuk masalah awal jika dan hanya jika grafik ini 2 -warna. Jika tidak ada 2C2p1∈C1p2∈C222-warna, tidak ada solusi, dan kita bisa melempar pengecualian. Jika ada, maka tukar semua node di semua komponen dalam satu warna. Kami sekarang dijamin bahwa dua node mana pun tidak kompatibel dengan swap, sehingga kami dapat mengurutkan daftar pasangan menggunakan urutan parsial yang ditentukan.
Setiap langkah dalam algoritma, dan karenanya seluruh algoritma, dapat dilakukan dalam waktu .O(N2)
UPDATE: Konstruksi yang jauh lebih elegan adalah sebagai berikut. Jika sepasang pasangan tidak kompatibel dengan swap, sambungkan node yang sesuai dengan tepi (memaksa mereka untuk menjadi warna yang berbeda dalam 2 warna). Jika sepasang pasangan tidak kompatibel satu-swap, sambungkan node yang sesuai dengan rantai panjang 2 (memaksa mereka menjadi warna yang sama dalam setiap 2-pewarnaan). Ada solusi jika dan hanya jika grafik yang dihasilkan 2-colorable. Untuk membuat solusi dari pewarnaan grafik biru-merah, tukar pasangan-pasangan yang simpulnya berwarna biru, lalu urutkan daftar yang dihasilkan.