Seberapa besar perbedaan kompleksitas yang ada antara menemukan solusi untuk teka-teki Sudoku dan MENYEDIAKAN bahwa solusinya adalah solusi yang unik?

14

Jadi biasanya Sudoku adalah , tetapi pertanyaan ini meluas hingga teka-teki dengan juga. Ada banyak aturan pengurangan waktu polinomial yang dapat membuat kemajuan dalam menemukan solusi untuk teka-teki Sudoku. Namun terkadang nilai dugaan dan rantai kesimpulan berikut mungkin diperlukan untuk menghilangkan nilai sel atau kombinasi nilai sel. Namun, setelah solusi yang valid ditemukan, ini tidak menjamin bahwa solusi tersebut UNIK. Teka-teki Sudoku yang valid seharusnya hanya memiliki satu solusi yang valid, tetapi ketika membuat teka-teki acak, ini mungkin membutuhkan perhitungan ekstra untuk memverifikasi.9×9n2×n2n>3

Jadi, pertanyaan saya adalah, jika kita mengizinkan sekumpulan aturan pengurangan waktu polinomial tertentu (katakanlah, himpunan paling umum yang dijelaskan dalam strategi Sudoku), bersama dengan nilai tebakan dan mengikuti kesimpulan, maka seberapa sulitkah untuk menentukan ada solusi unik untuk puzzle yang diberikan, versus menemukan hanya satu solusi, dalam hal jumlah solusi non-unik? Apakah ada perbedaan asimptotik untuk kelas teka-teki tertentu?

pengguna2566092
sumber

Jawaban:

14

Yato dan Seta menunjukkan bahwa untuk setiap konstan , diberikan solusi untuk teka-teki Sudoku, itu NP-lengkap untuk menentukan apakah ada solusi lain. Mereka menunjukkan bahwa properti yang sama dipenuhi oleh teka-teki lain juga.mm

Yuval Filmus
sumber
Terima kasih, saya tidak yakin apakah saya merumuskan pertanyaan saya dengan cukup akurat, tetapi ini menyentuh kepala saya. Jadi, bahkan jika kita menemukan satu solusi, maka itu NP-lengkap untuk mengetahui apakah ada solusi lain. Bersih dan rapi! Terima kasih, +1
user2566092
1

Jika saya mengerti Anda dengan benar, Anda mencoba untuk memeriksa teka-teki Sudoku yang telah dihasilkan perangkat lunak Anda untuk melihat apakah mereka valid.

Jika hanya "valid" yang menarik, Yuval Filmus telah menunjukkan kepada Anda bahwa itu adalah NP lengkap.

Namun jika tujuannya untuk menemukan teka-teki Sudoku baru yang akan dinikmati seseorang untuk diselesaikan, masalahnya tidak sesulit itu. (Harus menebak banyak nilai, karena puzzle tidak dapat dipecahkan menggunakan "logika" tidak menyenangkan!) Oleh karena itu secara pribadi saya akan membatasi jumlah tebakan paling banyak 4 dan menolak setiap puzzle yang tidak dapat dibuktikan memiliki solusi unik dalam batasan apa yang Anda anggap wajar.

Melakukan hal di atas, menggunakan pelacakan kembali standar untuk mengunjungi semua dugaan yang mungkin (dalam batas Anda), dan menunjukkan bahwa hanya ada satu solusi yang jauh lebih mudah daripada NP selesai.

Selain itu, Anda dapat menilai seberapa sulit teka-teki didasarkan pada kompleksitas aturan pengurangan yang dibutuhkan dan jumlah tebakan yang diperlukan.

Ian Ringrose
sumber
0

Untuk membuktikan bahwa sebuah teka-teki itu unik, sel mana pun di mana tebakan harus dibuat harus bercabang. Ketika melakukan pencarian untuk hanya menemukan jawaban, ini umumnya dilakukan dengan backtracking, di mana solusinya adalah jalur pertama di pohon keputusan yang mengarah ke papan yang lengkap. Untuk membuktikan keunikan, Anda harus menunjukkan bahwa hanya satu jalur yang mengarah ke solusi yang valid. Di sinilah hal-hal menjadi sangat sulit untuk didefinisikan dalam hal waktu berjalan. Kompleksitasnya sangat terkait dengan masalah aktual yang dihadapi. Jika Anda melihat skenario kasus terburuk murni, yang sangat tidak mungkin terjadi, maka mereka dapat dianggap sebagai kompleksitas yang sama.

Dalam skenario kasus terburuk, ketika melakukan penyelesaian, solusinya adalah dalam cabang pohon kemungkinan akhir yang dapat dicari. Seluruh pohon harus dicari untuk menemukannya, sementara pencarian keunikan juga akan membutuhkan pencarian yang sama, melewati jalur yang sama persis.

Namun secara realistis hal ini tidak terjadi, dan dengan hampir semua kasus yang melibatkan pencarian desain kombinatorial, mencari satu solusi selalu lebih cepat daripada mencari semua solusi.

Secara umum kedua masalah ini tertanam kuat dalam run-times eksponensial, jika tidak lebih buruk.

lTanam
sumber