Emil Jerabek的评论是一个不错的总结,但我想指出的是,还有其他具有更清晰定义的类,它们或多或少地捕获了相同的概念,并阐明了所有这些东西之间的关系。
[警告:虽然我相信自己的定义正确无误,但以下某些内容反映了我的个人喜好-我试图弄清楚那是什么。
在确定性世界中,函数类只是函数的集合(通常在数学上是“函数”一词的数学意义,即映射)。有时我们希望允许“部分函数”,某些输入的输出是“未定义的”。(等效地,函数是在∑ ∗的子集上定义的,而不是在所有子集上定义的。)Σ∗→Σ∗Σ∗
不幸的是,对于有两种不同的定义,据我所知它们并不等效(尽管它们在“道德上”等效)。FP
- (定义1)是可以在多项式时间内计算的函数类别。每当您看到 F P且不在人们谈论 F N P,T F N P的上下文中看到 F P时,这就是我所假定的定义。FPFPFNP,TFNP
在不确定性世界中,事情变得有些有趣。在那里,允许“部分,多值函数”很方便。也自然将这种事情称为二元关系,即的子集。但是从复杂性的角度来看,将这些事物视为“不确定函数”通常在哲学和心理上都是有用的。我认为这些定义中的许多定义可以通过以下类来阐明(这些定义是完全标准化的,如果不是非常知名的话):Σ∗×Σ∗
:可由多项式时间内的不确定机器计算的“偏多值函数”类。这意味着有一个多时不确定性机器,在输入 x上,在每个不确定性分支上,它可以选择接受并产生某些输出,或者拒绝并不产生输出。输入 x上的“多值”输出然后是给定 x作为输入时所有不确定性分支上所有输出的集合。请注意,此集合可以为空,因此作为“多值函数”,它可能仅是部分的。如果我们用二元关系来考虑,则对应于关系 { (x ,y ):yNPMVxxx的计算的某个分支输出 。{(x,y):y is output by some branch of the computation on input x}
:合计“函数”在 Ñ P 中号V,即,是对每一个输入X,至少一个分支接收(并因此使一个输出,由定义)NPMVtNPMVx
: N P M V中的单值(可能部分)函数。但是,这里有一定的灵活性,因为可以接受多个分支,但是如果有任何分支接受,则必须保证所有接受的分支产生相同的输出(这样它才是单值的)。但是,仍然有可能没有分支接受,因此该功能仅是“部分功能”(即未在所有 ∑ ∗上定义)。NPSVNPMVΣ∗
:单值函数总在 Ñ P 小号V。在单词 Σ ∗ → Σ ∗的通常意义上,这些实际上是函数。它是一种不太硬锻炼看出 Ñ P 小号V吨 = ˚F P Ñ P ∩ Ç ø Ñ P(使用默认值1 FP上文)。NPSVtNPSVΣ∗→Σ∗NPSVt=FPNP∩coNP
当我们谈论潜在的多值函数,谈论复杂类的遏制是不是真的有用更多:无条件只是因为ň P 小号V中不包含任何多值“功能”,但N P M V确实如此。取而代之的是,我们谈论的“C-遏制”,表示⊆ Ç。A(潜在地局部,多值)函数˚F提炼(潜在局部多值)函数克,如果:(1)对于每个输入X为哪些克NPMV⊈NPSVNPSVNPMV⊆cfgxg产生一些输出,也是如此,并且(2)f的输出始终是g的输出的子集。那么适当的问题是,每个N P M V “功能”是否都有N P S V细化。如果是这样,我们写ñ P 中号V ⊆ ç ñ P 小号V。ffgNPMVNPSVNPMV⊆cNPSV
- (少一点标准)是可以在多时间计算的(可能是部分)函数的类。也就是说,一个功能 ˚F :d →交通Σ *( d ⊆ Σ *)是在 P ˚F如果有聚时间确定性机器,使得在输入 X ∈ d机器输出 ˚F (X ),并在输入 X ∉ d机器没什么输出(/废品/说“不” /但你要句话吧)。PFf:D→Σ∗D⊆Σ∗PFx∈Df(x)x∉D
是一类“功能问题”(而不是一类功能)。我也将 F N P称为“关系类”,但实际上,无论用什么词来描述它,都需要在事后加以澄清,这就是为什么我不特别喜欢这个定义的原因。任何二元关系 - [R ⊆ Σ * × Σ *有一个相关的“功能问题”。什么是功能问题?我对语言/函数/关系的数学定义没有一个明确的定义;而是由有效的解决方案定义的:FNPFNPR⊆Σ∗×Σ∗Rf使得如果然后˚F输出任何这种ÿ,否则˚F品牌没有输出。˚F Ñ P是类的相关联的关系函数的问题- [R ,使得ř ∈ P(当作为对一个语言考虑),并且是对平衡。因此,F N P不是函数的类别,也不是语言的类别,而是一类“函数问题”,此处的“问题”大致是根据解决问题的方式来定义的。(∃y)[R(x,y)]fyfFNPRR∈PFNP
TFNPFNPRRxyR(x,y)
FNPTFNPPFFPFP
- FPFNPy0yxy0yRyy0
FNP⊆FPFNPNPMV⊆cPFTFNP⊆FPNPMVt⊆cFP