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
- F P F N P , T F N PF P (definisi 1) adalah kelas fungsi yang dapat dihitung dalam waktu polinomial. Setiap kali Anda melihat dan tidak dalam konteks di mana orang berbicara tentang , ini adalah definisi yang saya asumsikan.FPFNP,TFNP
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 .xxx{(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)NPMVx
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⊈NPSVNPSVNPMV⊆cfgxgffg . Pertanyaan selanjutnya adalah apakah setiap "memiliki . Jika demikian, kami menulis .NPMVNPSVNPMV⊆cNPSV
- f : D → Σ ∗ D ⊆ Σ ∗ P F x ∈ D f ( x ) x ∉ DPF (sedikit kurang standar) adalah kelas fungsi (berpotensi parsial) yang dapat dihitung dalam waktu-poli. Artinya, fungsi ( ) adalah di jika ada poli-waktu mesin deterministik seperti itu, pada input yang output mesin , dan pada input mesin tidak membuat output (/ menolak / mengatakan "tidak" / namun Anda ingin mengatakannya).f:D→Σ∗D⊆Σ∗PFx∈Df(x)x∉D
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 jikaFNPR⊆Σ∗×Σ∗Rf(∃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.yfFNPRR∈PFNP
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 .FNPRRxyR(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 PFNPTFNPPFFPFP
- F N P y 0 y x y 0 y R y y 0FP (definisi 2) adalah kelas masalah fungsi di yang memiliki solusi poli-waktu. Orang dapat mengasumsikan bahwa solusi (= fungsi) di sini adalah total dengan memilih string khusus yang bukan valid untuk apa pun , dan memiliki fungsi output ketika seharusnya tidak ada valid . (Jika perlu, kita dapat memodifikasi relasi dengan menambahkan setiap dengan 1, dan kemudian menjadikan sebagai string 0; ini tidak mengubah kerumitan apapun yang terlibat).FNPy0yxy0yRyy0
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⊆FPFNPNPMV⊆cPFTFNP⊆FPNPMVt⊆cFP