Diberikan bilangan bulat dan himpunan kembar tiga bilangan bulat yang berbeda cari algoritma yang dapat menemukan permutasi dari set sedemikian rupa sehingga atau dengan tepat menentukan bahwa tidak ada permutasi yang ada. Kurang formal, kami ingin menyusun ulang angka 1 hingga ; setiap rangkap tiga dalam menunjukkan bahwa harus muncul sebelum dalam orde baru, tetapi tidak boleh muncul di antaraS ⊆ { ( i , j , k ) ∣ 1 ≤ i , j , k ≤ n , i ≠ j , j ≠ k , i ≠ k } , π { 1 , 2 , … , n } ( i , j , k ) ∈ S
Contoh 1
Misalkan dan . KemudianS = { ( 1 , 2 , 3 ) , ( 2 , 3 , 4 ) }
( 1 , 2 , 3 ) ∈ S π ( 1 ) > π ( 3 ) adalah tidak permutasi valid, karena , tapi .
( 1 , 2 , 3 ) ∈ S π ( 1 ) < π ( 3 ) < π ( 5 ) adalah tidak permutasi valid, karena tetapi .
adalah permutasi yang valid.
Contoh 2
Jika dan , tidak ada permutasi yang valid. Demikian pula, tidak ada permutasi yang valid jika dan ( Saya pikir, mungkin telah membuat kesalahan di sini).
Bonus: Properti menentukan apakah ada solusi yang layak?
sumber
Jawaban:
Berikut ini adalah algoritma yang naif. Ini pada akhirnya bergantung pada kekuatan kasar, tetapi kadang-kadang dapat bekerja dengan baik.
Setiap kendala terdiri dari dua konjungsi; sebut saja mereka tipe- , , dan tipe- , . Setiap batasan tipe dapat secara ekuivalen ditulis sebagai disjungsi , dengan mengandalkan fakta bahwa .(σmi,σmj,σmk)∈S⟹i<k∧¬(i<j<k) A i<k B ¬(i<j<k) B i>j∨j>k i≠j,j≠k
Pendekatan pilihan saya sebenarnya adalah untuk menyandikannya menjadi seperangkat kendala dan menggunakan pemecah kendala seperti Choco. Saya akan memperkenalkan variabel integer dalam kisaran dan mengharuskan mereka semua berbeda. Kemudian saya akan menyandikan setiap kendala di atas secara langsung sebagai kendala dan kemudian membiarkan Choco melakukan bisnisnya.x i [ 0 , n - 1 ]n xi [0,n−1]
sumber
Ini jawaban parsial:
Jika Anda menghapus kendala pada masing-masing tiga maka masalah Anda menjadi masalah Non-Betweeness yang -Lengkap dan ada tidak ada dikenal algoritma efisien untuk masalah seperti itu. Tapi dengan kendala, mungkin memaksa beberapa struktur yang bagus yang dapat dimanfaatkan untuk menemukan algoritma waktu polinomial untuk masalah Anda.N P i < ki<k NP i<k
sumber