Dalam bukunya Computational Complexity , Papadimitriou mendefinisikan FNP sebagai berikut:
Misalkan adalah bahasa dalam NP . Dengan Proposisi 9.1, ada polinomial-waktu decidable, polynomially seimbang hubungan sehingga untuk semua string : Ada string dengan jika dan hanya jika . Masalah fungsi yang terkait dengan , dinotasikan , adalah masalah komputasi berikut: x y R L ( x , y ) x ∈ L L F L
Diberikan , temukan string sedemikian rupa sehingga jika string semacam itu ada; jika tidak ada string seperti itu, kembalikan "tidak".y R L ( x , y )
Kelas semua masalah fungsi yang terkait seperti di atas dengan bahasa dalam NP disebut FNP . FP adalah subkelas yang dihasilkan jika kita hanya mempertimbangkan masalah fungsi dalam FNP yang dapat diselesaikan dalam waktu polinomial.
(...)
(...), kami menyebut masalah dalam FNP total jika untuk setiap string setidaknya ada satu sedemikian rupa sehingga . Subkelas FNP yang berisi semua masalah fungsi total dilambangkan dengan TFNP . y R ( x , y )
Dalam diagram venn dalam ikhtisar bab, Papadimitriou menyiratkan bahwa FP TFNP FNP .⊆
Saya mengalami kesulitan memahami mengapa tepatnya ia berpendapat bahwa FP TFNP karena masalah dalam FP tidak harus total per se.
Untuk mendapatkan pemahaman yang lebih baik, saya telah membajak literatur untuk menemukan definisi FP , FNP dan sejenisnya yang kedap air , tanpa hasil.
Menurut pendapat saya yang sangat (rendah hati), saya pikir ada sedikit materi didaktik (benar!) Dari topik ini.
Untuk masalah keputusan, kelas adalah set bahasa (yaitu set string).
Apa sebenarnya kelas untuk masalah fungsi? Apakah mereka set hubungan, bahasa, ...? Apa definisi yang solid?
sumber
Jawaban:
Komentar Emil Jerabek adalah ringkasan yang bagus, tetapi saya ingin menunjukkan bahwa ada kelas lain dengan definisi yang lebih jelas yang menangkap konsep yang kurang lebih sama, dan untuk memperjelas hubungan antara semua hal ini.
[Peringatan: sementara saya yakin definisi saya sudah benar, beberapa hal di bawah ini mencerminkan preferensi pribadi saya - saya sudah berusaha menjelaskan tentang di mana itu.]
Dalam dunia deterministik, kelas fungsi hanyalah kumpulan fungsi (dalam arti matematis biasa dari kata "fungsi", yaitu peta ). Terkadang kami ingin mengizinkan "fungsi parsial," yang outputnya "tidak ditentukan" untuk input tertentu. (Secara ekuivalen, fungsi yang didefinisikan pada subset dari daripada semua itu.)Σ ∗Σ∗→ Σ∗ Σ∗
Sayangnya, ada dua definisi berbeda untuk melayang-layang, dan sejauh yang saya tahu mereka tidak setara (meskipun mereka "setara secara moral").F P
Dalam dunia nondeterministik, segala sesuatunya menjadi sedikit lucu. Di sana, lebih mudah untuk mengizinkan "fungsi parsial, multi-nilai." Itu wajar untuk juga menyebut hal seperti itu hubungan biner , yaitu subset dari . Tetapi dari sudut pandang kompleksitas, seringkali berguna secara filosofis dan mental untuk memikirkan hal-hal ini sebagai "fungsi nondeterministik." Saya pikir banyak dari definisi ini diklarifikasi oleh kelas-kelas berikut (yang definisinya sepenuhnya distandarisasi, jika tidak sangat terkenal):Σ∗×Σ∗
x x x { ( x , y ) : y adalah output oleh beberapa cabang perhitungan pada input x }NPMV : Kelas "fungsi parsial, multi-nilai" dihitung oleh mesin nondeterministic dalam waktu polinomial. Apa artinya ini adalah ada mesin nondeterministik poli-waktu, dan pada input , pada setiap cabang nondeterministik mungkin memilih untuk menerima dan membuat beberapa output, atau menolak dan tidak membuat output. Output "multi-nilai" pada input kemudian merupakan himpunan semua output pada semua cabang nondeterministic ketika diberikan sebagai input. Perhatikan bahwa set ini bisa kosong, jadi sebagai "fungsi multi-nilai" ini mungkin hanya sebagian. Jika kita memikirkannya dalam hubungan biner, ini berhubungan dengan hubungan .x x x {(x,y):y is output by some branch of the computation on input x}
N P M V xNPMVt : Total "fungsi" di , yaitu, pada setiap input , setidaknya satu cabang menerima (dan karenanya menghasilkan output, berdasarkan definisi)NPMV x
N P M V Σ ∗NPSV : Fungsi bernilai tunggal (berpotensi parsial) di . Namun ada beberapa fleksibilitas di sini, di mana beberapa cabang dapat menerima, tetapi jika ada cabang yang menerima, maka semua cabang yang menerima harus dijamin untuk membuat output yang sama (sehingga benar-benar bernilai tunggal). Namun, masih dimungkinkan bahwa tidak ada cabang yang menerima, jadi fungsinya hanyalah "fungsi parsial" (yaitu tidak didefinisikan pada semua ).NPMV Σ∗
N P S V Σ * → Σ * N P S V t = F P N P ∩ c o N PNPSVt : Fungsi total bernilai tunggal di . Ini benar-benar fungsi, dalam arti kata yang biasa, . Ini adalah latihan yang tidak terlalu sulit untuk melihat bahwa (menggunakan Def 1 untuk FP di atas).NPSV Σ∗→Σ∗ NPSVt=FPNP∩coNP
Ketika kita berbicara tentang fungsi yang berpotensi multi-nilai, berbicara tentang penahanan kelas kompleksitas tidak benar-benar berguna lagi: tanpa syarat hanya karena tidak mengandung "fungsi" multi-nilai apa pun, tetapi tidak. Sebaliknya, kita berbicara tentang "c-containment", dilambangkan . Fungsi (berpotensi parsial, bernilai multi) memurnikan fungsi (berpotensi parsial bernilai multi) jika: (1) untuk setiap input yang menghasilkan beberapa output, demikian juga , dan (2) output dari selalu merupakan bagian dari output dariN P S V N P M V ⊆ c f g x g f f g N P M V N P S V N P M V ⊆ c N P S VNPMV⊈NPSV NPSV NPMV ⊆c f g x g f f g . Pertanyaan selanjutnya adalah apakah setiap "memiliki . Jika demikian, kami menulis .NPMV NPSV NPMV⊆cNPSV
F N P R ⊆ Σ ∗ × Σ ∗ R f ( ∃ y ) [ R ( x , y ) ] f y f F N P R R ∈ P F N PFNP adalah kelas "masalah fungsi" (bukan kelas fungsi). Saya juga akan memanggil sebagai "kelas relasional", tetapi kata-kata apa pun yang Anda gunakan untuk menggambarkannya, Anda perlu mengklarifikasi diri sendiri setelah itu, itulah sebabnya saya tidak terlalu menyukai definisi ini. Untuk setiap hubungan biner, ada "masalah fungsi" yang terkait. Apa itu masalah fungsi? Saya tidak memiliki definisi matematika yang bersih seperti yang saya lakukan untuk bahasa / fungsi / hubungan; melainkan ditentukan oleh apa solusi yang valid: solusi yang valid untuk masalah fungsi yang terkait dengan adalah setiap fungsi (berpotensi parsial) sehingga jikaFNP R⊆Σ∗×Σ∗ R f (∃y)[R(x,y)] f mengeluarkan semua , dan jika tidak tidak menghasilkan. adalah kelas masalah fungsi yang terkait dengan hubungan sehingga (bila dianggap sebagai bahasa berpasangan) dan p-seimbang. Jadi bukan kelas fungsi, bukan kelas bahasa, tetapi kelas "masalah fungsi," di mana "masalah" di sini didefinisikan secara kasar dalam hal apa artinya menyelesaikannya.y f FNP R R∈P FNP
F N P R R x y R ( x , y )TFNP kemudian adalah kelas masalah fungsi di - didefinisikan oleh relasi seperti di atas - seperti total, dalam arti bahwa untuk setiap ada sehingga .FNP R R x y R(x,y)
Agar tidak harus menulis hal-hal seperti "Jika setiap (resp., ) masalah fungsi memiliki solusi dalam (resp., sesuai dengan di atas definisi), lalu ... "dalam konteks ini orang menggunakan Definisi 2 dari , yaitu:T F N P P F F P F PFNP TFNP PF FP FP
Inilah bagaimana berbagai definisi ini berhubungan satu sama lain, (definisi 2, yang harus Anda asumsikan karena itu dalam konteks di mana ia dibandingkan dengan ) adalah setara ke . (def 2) setara dengan (def 1).FNP⊆FP FNP NPMV⊆cPF TFNP⊆FP NPMVt⊆cFP
sumber
Selain jawaban Joshua yang luas, saya ingin menambahkan definisi berikut dari Elaine Ruch Automata, Computability, dan Complexity-nya .
Dari definisi ini jelas bahwa . Dia juga secara singkat berbicara tentang masalah di luar .F N PFP⊆TFNP⊆FNP FNP
Bagi saya, ini adalah sumber daya paling memuaskan yang terdiri dari satu halaman tunggal yang telah saya temukan sejak lama.
sumber