FP,FNP和TFNP类到底是什么?


13

Papadimitriou 在他的《计算复杂度》一书中对FNP的定义如下:

假设NP中的一种语言。由命题9.1,存在一个多项式时间可判定的,多项式平衡关系ř 大号使得对于所有字符串X:有一个字符串ýř 大号X ÿ 当且仅当X 大号。与L相关的函数问题(表示为F L)是以下计算问题:LRLxyRL(x,y)xLLFL

给定,找到一个字符串y,使得如果存在R Lx y ;如果不存在这样的字符串,则返回“ no”。xyRL(x,y)

如上所述与NP语言相关的所有功能问题的类别称为FNP。如果我们仅考虑可以在多项式时间内解决的FNP中的函数问题,则FP是结果的子类。

(...)

(......),我们称之为一个问题FNP 如果每串X至少有一个Ÿ,使得[R X Y ^ 。包含所有总功能问题的FNP子类表示为TFNPR xyR(x,y)

在章概要的维恩图,PAPADIMITRIOU意味着FP TFNP FNP

我有一个很难理解到底为什么它认为FP TFNP因为问题FP不必是全部本身。

为了获得更好的理解,我一直在翻阅文献,以找到FPFNP和分类的防水定义,但没有成功。

以我的(不起眼的)观点,我认为这些主题的教学材料很少(正确!)。

对于决策问题,类是语言集(即字符串集)。

函数问题的类到底是什么?它们是一组关系,语言,...吗?什么是坚实的定义?


4
通用符号有些草率。首先,FP曾经被用来表示NP搜索问题之外的多项时间函数的类(因此合计),在该类中已对其进行了重新定义。其次,在多项式时间内可解决的每个搜索问题在多项式时间内都具有可解决的总扩展,因此从这个意义上讲,FP的总定义与非总定义之间并没有太大的实际区别,因此这两者都被滥用语言所混淆。
EmilJeřábek'17

Answers:


11

Emil Jerabek的评论是一个不错的总结,但我想指出的是,还有其他具有更清晰定义的类,它们或多或少地捕获了相同的概念,并阐明了所有这些东西之间的关系。

[警告:虽然我相信自己的定义正确无误,但以下某些内容反映了我的个人喜好-我试图弄清楚那是什么。

在确定性世界中,函数类只是函数的集合(通常在数学上是“函数”一词的数学意义,即映射)。有时我们希望允许“部分函数”,某些输入的输出是“未定义的”。(等效地,函数是在的子集上定义的,而不是在所有子集上定义的。)ΣΣΣ

不幸的是,对于有两种不同的定义,据我所知它们并不等效(尽管它们在“道德上”等效)。FP

  • (定义1)是可以在多项式时间内计算的函数类别。每当您看到 F P且不在人们谈论 F N PT 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=FPNPcoNP

当我们谈论潜在的多值函数,谈论复杂类的遏制是不是真的有用更多:无条件只是因为ň P 小号V中不包含任何多值“功能”,但N P M V确实如此。取而代之的是,我们谈论的“C-遏制”,表示Ç。A(潜在地局部,多值)函数˚F提炼(潜在局部多值)函数,如果:(1)对于每个输入X为哪些NPMVNPSVNPSVNPMVcfgxg产生一些输出,也是如此,并且(2)f的输出始终是g的输出的子集。那么适当的问题是,每个N P M V “功能”是否都有N P S V细化。如果是这样,我们写ñ P 中号V ç ñ P 小号VffgNPMVNPSVNPMVcNPSV

  • (少一点标准)是可以在多时间计算的(可能是部分)函数的类。也就是说,一个功能 ˚F d →交通Σ * d ⊆ Σ *)是在 P ˚F如果有聚时间确定性机器,使得在输入 X d机器输出 ˚F X ,并在输入 X d机器没什么输出(/废品/说“不” /但你要句话吧)。PFf:DΣDΣPFxDf(x)xD

  • 是一类“功能问题”(而不是一类功能)。我也将 F N P称为“关系类”,但实际上,无论用什么词来描述它,都需要在事后加以澄清,这就是为什么我不特别喜欢这个定义的原因。任何二元关系 - [R ⊆ Σ * × Σ *有一个相关的“功能问题”。什么是功能问题?我对语言/函数/关系的数学定义没有一个明确的定义;而是由有效的解决方案定义的:FNPFNPRΣ×ΣRf使得如果然后˚F输出任何这种ÿ,否则˚F品牌没有输出。˚F Ñ P是类的相关联的关系函数的问题- [R ,使得ř P(当作为对一个语言考虑),并且是对平衡。因此,F N P不是函数的类别,也不是语言的类别,而是一类“函数问题”,此处的“问题”大致是根据解决问题的方式来定义的。(y)[R(x,y)]fyfFNPRRPFNP

  • TFNPFNPRRxyR(x,y)

FNPTFNPPFFPFP

  • FPFNPy0yxy0yRyy0

FNPFPFNPNPMVcPFTFNPFPNPMVtcFP



1
FNPFPNPMVcPF

NPPTFNPNPPUPPUPPTFNP

3

除了约书亚的广泛回答之外,我还想从Elaine Ruch的自动机,可计算性和复杂性中添加以下定义。

QFPxy(x,y)Q

QFNP(x,y)(x,y)QQFNPxy(x,y)Q

FPTFNPFNPFNP

对我来说,这是最令人满意的资源,它由很长时间以来我发现的一个页面组成。


FNP

py(x,y)Qy|y|p(|x|)y
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.