Mengukur tingkat kesulitan SAT

28

Diberikan instance dari SAT, saya ingin dapat memperkirakan seberapa sulitnya untuk menyelesaikan instance.

Salah satu caranya adalah dengan menjalankan solver yang ada, tetapi jenis itu mengalahkan tujuan memperkirakan kesulitan. Cara kedua mungkin mencari rasio klausa terhadap variabel, seperti yang dilakukan untuk transisi fase secara acak-SAT, tapi saya yakin metode yang lebih baik ada.

Diberikan contoh SAT, apakah ada heuristik cepat untuk mengukur kesulitan? Satu-satunya syarat adalah heuristik ini lebih cepat daripada menjalankan solver SAT yang ada saat ini.


Pertanyaan terkait

Masalah SAT mana yang mudah? di cstheory.SE. Pertanyaan ini menanyakan tentang set instance yang bisa ditelusuri. Ini adalah pertanyaan yang serupa, tetapi tidak persis sama. Saya benar-benar tertarik pada heuristik yang memberikan satu instance, membuat semacam dugaan semi-cerdas jika instance tersebut akan menjadi sulit untuk dipecahkan.

Artem Kaznatcheev
sumber
Bisakah Anda menguraikan mengapa fase transisi wrt "density" bukan yang Anda butuhkan?
Raphael
@ Raphael itu metode yang cukup bagus, dan saya sebutkan di pertanyaan saya. Tapi saya mendapat kesan bahwa heuristik yang lebih baik ada. Transisi fase mengganggu saya karena tampaknya sangat mudah untuk ditipu (cukup tambahkan klausa yang mudah memuaskan atau contoh untuk yang Anda coba untuk menyamarkan)
Artem Kaznatcheev
Maaf, melewatkan bagian pertanyaan Anda itu. Benar, seperti dicatat oleh komentator, transisi fase tampaknya sensitif terhadap formula non-acak.
Raphael
2
Anda dapat merepresentasikan rumus SAT (dalam CNF) sebagai grafik bipartit, dengan simpul untuk setiap rumus dan klausa dan tepi yang mewakili kejadian. Jika grafik ini mudah dipartisi, maka masalahnya dapat didekomposisi menjadi subgraf yang dipartisi. Mungkin ini bisa berfungsi sebagai ukuran yang bermanfaat? Saya tidak tahu (itulah sebabnya ini adalah komentar dan bukan jawaban).
Alex ten Brink
Anda mungkin menemukan ini berguna: ece.uwaterloo.ca/~vganesh/QPaper/paper.pdf
pengguna

Jawaban:

22

Secara umum, ini adalah pertanyaan penelitian yang sangat relevan dan menarik. "Salah satu caranya adalah menjalankan solver yang ada ..." dan apa yang akan dikatakan oleh kita sebenarnya? Kita bisa melihat secara empiris bahwa sebuah instance tampak sulit untuk solver tertentu atau algoritma / heuristik tertentu, tetapi apa yang sebenarnya dikatakannya tentang kekerasan instance tersebut?

Salah satu cara yang telah ditempuh adalah identifikasi berbagai sifat struktural dari instance yang mengarah pada algoritma yang efisien. Properti ini memang lebih disukai untuk "mudah" diidentifikasi. Contohnya adalah topologi grafik kendala yang mendasarinya, diukur menggunakan berbagai parameter lebar grafik. Sebagai contoh diketahui bahwa sebuah instance dapat dipecahkan dalam waktu polinomial jika treewidth dari grafik kendala yang mendasarinya dibatasi oleh konstanta.

Pendekatan lain difokuskan pada peran struktur tersembunyi dari instance. Salah satu contoh adalah set backdoor , yang berarti set variabel sehingga ketika mereka dipakai, masalah yang tersisa menyederhanakan ke kelas yang bisa ditelusur. Sebagai contoh, Williams et al., 2003 [1] menunjukkan bahwa bahkan ketika memperhitungkan biaya untuk mencari variabel backdoor, seseorang masih dapat memperoleh keuntungan komputasi secara keseluruhan dengan berfokus pada set backdoor, asalkan set tersebut cukup kecil. Lebih lanjut, Dilkina et al., 2007 [2] mencatat bahwa seorang pemecah masalah yang disebut Satz-Rand sangat pandai dalam menemukan jalan belakang kecil yang kuat pada berbagai domain eksperimental.

Baru-baru ini, Ansotegui et al., 2008 [3] mengusulkan penggunaan kompleksitas ruang seperti pohon sebagai ukuran untuk pemecah berbasis DPLL. Mereka membuktikan bahwa juga ruang yang dibatasi konstan menyiratkan adanya algoritma keputusan waktu polinomial dengan ruang menjadi derajat polinomial (Teorema 6 dalam makalah). Selain itu, mereka menunjukkan ruang lebih kecil dari ukuran siklus-potongan. Bahkan, berdasarkan asumsi tertentu, ruang juga lebih kecil dari ukuran backdoors.

Mereka juga memformalkan apa yang saya pikir Anda cari, yaitu:

ψΓHAI(nψ(Γ))


[1] Williams, Ryan, Carla P. Gomes, dan Bart Selman. "Kembali ke kompleksitas kasus yang khas." Konferensi Bersama Internasional tentang Kecerdasan Buatan. Vol. 18, 2003.

[2] Dilkina, Bistra, Carla Gomes, dan Ashish Sabharwal. "Pengorbanan dalam Kompleksitas Deteksi Pintu Belakang." Prinsip dan Praktek Pemrograman Kendala (CP 2007), hlm. 256-270, 2007.

[3] Ansótegui, Carlos, Maria Luisa Bonet, Jordi Levy, dan Felip Manya. "Mengukur Kekerasan Mesin Virtual SAT." Dalam Prosiding Konferensi Nasional ke 23 tentang Kecerdasan Buatan (AAAI'08), hlm. 222-228, 2008.

Juho
sumber
ψ(Γ)
@ ArtemKaznatcheev Saya pikir set backdoor mungkin satu-satunya yang benar-benar digunakan. Saat menjalankan solver, kami tidak terlalu peduli dengan kekerasan formula; contohnya harus dipecahkan. Pengukuran harus memberi kita keunggulan komputasi, atau mungkin kita dapat menggunakannya untuk memilih heuristik yang sesuai. Selain itu, saya kira langkah-langkah kekerasan masih cukup eksperimental.
Juho
1

Karena Anda tahu tentang transisi fase, izinkan saya untuk menyebutkan beberapa pemeriksaan sederhana lain yang saya ketahui (yang kemungkinan dimasukkan oleh analisis grafik kendala):

  • Beberapa generator SAT acak awal secara tidak sengaja membuat sebagian besar rumus mudah karena mereka menggunakan "kepadatan konstan", yang berarti proporsi yang hampir sama dari semua panjang klausa. Ini sebagian besar mudah karena 2-klausa dan unit menyederhanakan masalah secara signifikan, seperti yang diharapkan, dan klausa yang sangat panjang tidak menambah banyak percabangan atau memfasilitasi hiper-resolusi lebih baik. Jadi, sepertinya lebih baik untuk tetap dengan klausa panjang tetap dan memvariasikan parameter lainnya.
  • |x||¬x|x
  • v1,v2,v3{v1,v2,...},{v2,v3,...},{v1,v3,...}

[1] https://arxiv.org/pdf/1903.03592.pdf

Manusia mesin pemotong rumput
sumber
0

Di atas jawaban yang sangat baik dari Juho, berikut adalah pendekatan lain:

Ercsey-Ravasz & Toroczkai, Optimasi hardness sebagai transient chaos dalam pendekatan analog terhadap kendala constraint , Nature Physics volume 7, halaman 966-970 (2011).

Pendekatan ini adalah untuk menulis ulang masalah SAT menjadi sistem dinamis, di mana setiap penarik sistem adalah solusi untuk masalah SAT. Baskom tarik sistem lebih fraktal karena masalahnya menjadi lebih sulit, dan "kesulitan" dari contoh SAT dapat diukur dengan memeriksa seberapa kacau transien sebelum sistem bertemu.

Dalam praktiknya, ini berarti memulai sekelompok pemecah dari posisi awal yang berbeda dan memeriksa tingkat di mana pemecah lolos dari transien yang kacau sebelum mereka tiba di suatu penarik.

Tidak sulit untuk menghasilkan sistem dinamis yang "solusi" -nya adalah solusi untuk masalah SAT yang diberikan, tetapi sedikit lebih sulit untuk memastikan bahwa semua solusi adalah penarik dan bukan penolak. Solusi mereka adalah memperkenalkan variabel energi (mirip dengan pengganda Lagrange) untuk mewakili seberapa parah suatu kendala dilanggar, dan mencoba membuat sistem untuk meminimalkan energi sistem.

Menariknya, menggunakan sistem dinamis mereka, Anda dapat memecahkan masalah SAT dalam waktu polinomial pada komputer analog, yang dengan sendirinya merupakan hasil yang luar biasa. Ada tangkapan; mungkin memerlukan voltase besar secara eksponensial untuk mewakili variabel energi, jadi sayangnya Anda tidak dapat menyadarinya pada perangkat keras fisik.

Nama samaran
sumber
1
"Menggunakan sistem dinamis mereka, Anda dapat memecahkan masalah SAT dalam waktu polinomial pada komputer analog, yang dengan sendirinya merupakan hasil yang luar biasa." Saya tidak setuju bahwa ini luar biasa. Seperti yang Anda perhatikan: ini membutuhkan presisi eksponensial. Ini sebenarnya trik standar yang menghubungkan langsung ke definisi NP. Jika Anda dapat mengukur akurat secara eksponensial, Anda bisa mencoba memperkirakan jumlah jalur penerimaan (atau melihat sebagai sistem berjalan acak) & melihat apakah itu benar-benar nol atau sedikit (tentu saja, ini membutuhkan pengukuran yang akurat secara eksponensial, sama dengan sistem dinamis).
Artem Kaznatcheev
Terima kasih untuk itu. Saya tidak tahu banyak hasil teoritis tentang komputasi analog.
Nama samaran