Kelas kompleksitas yang berkaitan dengan daftar semua solusi?

15

Saya sedang membaca pertanyaan di Stack Overflow menanyakan apakah NP -hard mendaftar semua siklus sederhana dalam grafik yang berisi simpul tertentu dan terpikir oleh saya bahwa saya tidak bisa memikirkan kelas kompleksitas yang ada yang cocok untuk berbicara tentang masalah pada formulir "daftar semua solusi untuk masalah ini." NP kelas dalam beberapa hal terdiri dari masalah yang menanyakan apakah setidaknya ada satu solusi, kelas FNP meminta untuk menghasilkan solusi tunggal, dan kelas #P meminta untuk menghitung berapa banyak solusi yang ada, namun tidak satupun dari ini berurusan dengan kompleksitas secara lengkap menyebutkan semua solusi yang mungkin.

Apakah ada kelas kompleksitas untuk menggambarkan masalah yang berbentuk "diberi predikat computable polinomial-time dan string , sebutkan semua y yang P ( x , y ) benar-benar tunduk pada [masukkan beberapa batasan kompleksitas yang sesuai]? " Saya mengerti bahwa mungkin sulit untuk menjabarkan pembatasan yang diberikan bahwa jumlah solusi mungkin secara eksponensial lebih besar daripada ukuran input x , meskipun itu tampaknya tidak dapat diatasi.P(x,y)xyP(x,y)x

templatetypedef
sumber
Menarik. Mungkin dalam praktiknya terlalu banyak contoh masalah yang relevan sering kali memiliki sejumlah solusi eksponensial, jika ada. Contoh untuk SAT dan CLIQUE, secara umum, memiliki ruang solusi yang besar.
chi
3
Berikut adalah cara lain untuk memformalkan ini. Masalah ada di X E (untuk X-enumerable) jika ada X-algoritma A dengan sehingga A ( x , i ) mengembalikan solusi ke- i (yaitu I ke y dengan P ( x , y ) ) beberapa pemesanan. Perhatikan bagaimana ini mirip dengan bagaimana seseorang terkadang mendefinisikan RE. Ini menghindari ukuran ruang solusi dan berfokus pada betapa sulitnya menemukan solusi berikutnya. Total biaya tersedia dengan penjumlahan, tentu saja. PXEAA(x,i)iIyP(x,y)
Raphael
3
(Aku belum pernah melihat hal itu didefinisikan sebagai kelas , tetapi apakah Anda menyadari konsep pencacahan dengan delay polinomial ?)
@ Raphael Ini mungkin bukan yang kita cari. Sebagai contoh, jika algoritma terbaik untuk harus iterate atas semua solusi sampai telah menemukan i dari mereka dan berjalan dalam waktu Θ ( f ( | x | ) ) , maka kompleksitas kita cari adalah Θ ( f ( | x | ) ) , tetapi penjumlahan akan menyarankan kompleksitas Θ ( f ( | x | ) 2 ) . A(x,i)iΘ(f(|x|))Θ(f(|x|))Θ(f(|x|)2)
Lieuwe Vinkhuijzen
@ RickyDemer Itulah yang saya gemetar keluar dari sleave saya, bukan? Senang mengetahui bahwa ada formalisasi yang mapan.
Raphael

Jawaban:

10

Konsep yang Anda cari disebut kompleksitas enumerasi , yang merupakan studi tentang kompleksitas komputasi enumerasi (daftar) semua solusi untuk masalah (atau anggota bahasa / set). Algoritma enumerasi dapat dimodelkan sebagai proses dua langkah: langkah pra - komputasi dan fase enumerasi dengan penundaan . Kedua langkah ini memiliki kompleksitas ruang dan waktu mereka sendiri (mungkin juga entropi). Dalam semangat kerumitan yang umum, sering kali ada pertukaran antara hal-hal ini untuk dipertimbangkan.

Langkah precomputation melakukan beberapa pekerjaan yang diperlukan sebelum solusi pertama disebutkan. Ini mungkin melibatkan menemukan solusi itu sendiri atau menginisialisasi beberapa struktur data besar yang akan mengurangi keterlambatan keseluruhan antara setiap solusi.

The delay adalah biaya sumber daya yang terkait dengan perhitungan yang diperlukan di antara solusi enumerasi sewenang-wenang. Dengan kata lain, penundaan adalah ukuran ruang dan waktu yang diperlukan untuk menghasilkan solusi setelah i t h satu. Masalah yang solusinya membutuhkan waktu O ( 1 ) untuk setiap enumerasi dikatakan mengalami keterlambatan konstan. Persyaratan waktu O ( p o l y ( n ) ) dikatakan memiliki polinomial delay.i+1thithO(1)O(poly(n))

ENUMNP


Mengapa kita peduli dengan waktu dan penundaan precomputasi?

Σn{x:ϕ(x)}ϕ(x)Σhanya membutuhkan penundaan konstan karena Anda hanya bisa melalui elemen dalam beberapa urutan. Sejauh yang kami tahu, penundaan untuk menghitung solusi untuk instance 3SAT bisa menjadi eksponensial. Tugas kita sebagai ahli teori kompleksitas adalah untuk menangkap mengapa masalah yang terakhir secara fundamental lebih sulit (lebih kompleks) daripada yang sebelumnya. Delay melakukan pekerjaan yang cukup bagus dalam menampilkan perbedaan ini.

Demikian juga, kita juga perlu tahu berapa banyak perhitungan dilakukan. Kami dapat mengurangi penundaan untuk masalah enumerasi menjadi waktu dan ruang yang konstan dengan menghitung sebelumnya semua solusi dan menyimpannya dalam daftar untuk disebutkan ulang di lain waktu. Tantangannya adalah menemukan keseimbangan terbaik antara kedua sumber.

Urutan di mana Anda menghitung elemen juga dapat mempengaruhi kompleksitas. Mengharuskan hasil dikembalikan dalam urutan urutan tertentu mungkin mengharuskan kami untuk melakukan perhitungan tambahan di kedua langkah. Meskipun situasi di mana setiap pesanan cukup (selama setiap elemen yang disebutkan adalah unik) tentu juga dipelajari.

PNP


Sumber daya

Survei ini (benar-benar upaya formalisasi) akan membantu Anda memulai. Ini juga membuktikan beberapa teorema hierarki dasar.

Pencacahan: Algoritma dan Kompleksitas (Johannes Schmidt, 2009)

https://www.thi.uni-hannover.de/fileadmin/forschung/arbeiten/schmidt-da.pdf

Untuk enumerasi hasil dalam kerumitan enumerasi, lihat kompilasi ini yang dikuratori oleh Kunihiro Wasa. Karena dikategorikan berdasarkan jenis masalah, Anda dapat dengan mudah menemukan sejumlah makalah yang didedikasikan untuk menghitung siklus grafik. Seharusnya mudah untuk memodifikasi algoritma yang terlibat untuk hanya mempertimbangkan siklus dengan node yang diberikan.

http://www-ikn.ist.hokudai.ac.jp/~wasa/enumeration_complexity.html

mdxn
sumber
ΣnO(1)O(1)
1
@ j_random_hacker Saya tidak berpikir pemikiran Anda salah, meskipun jawaban sebenarnya untuk pertanyaan Anda adalah "itu tergantung". Para penulis makalah ini biasanya menunjukkan model komputasi mana (yang menggunakan tape TM vs RAM vs. Word RAM) yang mereka gunakan. Pilihan ini akan mengubah apa yang dapat dianggap sebagai operasi waktu konstan dan apa yang tidak dapat (seperti menambah angka atau menghasilkan output). Perbedaan ini dianggap menghilang segera setelah penundaan Anda menjadi polinomial karena tesis Church Turing yang diperluas.
mdxn