Quelles sont exactement les classes FP, FNP et TFNP?

13

Dans son livre Computational Complexity , Papadimitriou définit le FNP comme suit:

Supposons que est un langage dans NP . Par la proposition 9.1, il y a un décidable polynomial, relation polynomiale équilibré R L tel que pour toutes les chaînes x : Il y a une chaîne y avec R L ( x , y ) si et seulement si x L . Le problème de fonction associé à L , noté F L , est le problème de calcul suivant:LRLxyRL(x,y)xLLFL

Étant donné x , trouver une chaîne y telle que RL(x,y) si une telle chaîne existe; si une telle chaîne n'existe pas, retournez "non".

La classe de tous les problèmes de fonction associés comme ci-dessus au langage dans NP est appelée FNP . FP est la sous-classe résultante si l'on ne considère que les problèmes de fonction dans FNP qui peuvent être résolus en temps polynomial.

(...)

(...), on appelle un problème R dans FNP total si pour chaque chaîne x il y a au moins un y tel que R(x,y) . La sous-classe de FNP contenant tous les problèmes de fonction totale est notée TFNP .

Dans un diagramme venn dans l'aperçu du chapitre, Papadimitriou implique que FP TFNP FNP .

J'ai du mal à comprendre pourquoi il est exact que FP TFNP car les problèmes de PF ne doivent pas être totaux en soi.

Pour mieux comprendre, j'ai parcouru la littérature pour trouver une définition étanche de FP , FNP et sortes, sans succès.

À mon avis très (humble), je pense qu'il y a peu (correct!) De matériel didactique sur ces sujets.

Pour les problèmes de décision, les classes sont des ensembles de langages (c'est-à-dire des ensembles de chaînes).

Quelles sont exactement les classes pour les problèmes de fonction? S'agit-il d'ensembles de relations, de langues, ...? Qu'est-ce qu'une définition solide?

Auberon
la source
4
La notation commune est quelque peu bâclée. Tout d' abord, FP a été et est utilisé pour désigner la classe de poly-temps fonctions (donc au total) en dehors du contexte des problèmes de recherche NP, où il a été redéfini. Deuxièmement, chaque problème de recherche résoluble en temps polynomial a une extension totale résoluble en temps polynomial, donc dans ce sens, il n'y a pas beaucoup de différence réelle entre une définition totale et non totale de la PF, donc les deux sont confondus par abus de langage.
Emil Jeřábek

Réponses:

11

Le commentaire d'Emil Jerabek est un bon résumé, mais je voulais souligner qu'il existe d'autres classes avec des définitions plus claires qui captent plus ou moins le même concept, et clarifier la relation entre toutes ces choses.

[Avertissement: même si je pense avoir bien compris les définitions, certaines des choses ci-dessous reflètent mes préférences personnelles - j'ai essayé de préciser où c'était.]

Dans le monde déterministe, une classe de fonctions n'est qu'une collection de fonctions (au sens mathématique habituel du mot "fonction", c'est-à-dire une carte ). Parfois, nous voulons autoriser des "fonctions partielles", dont la sortie est "non définie" pour certaines entrées. (De manière équivalente, les fonctions qui sont définies sur un sous-ensemble de Σ plutôt que sur la totalité.)ΣΣΣ

Malheureusement, il existe deux définitions différentes de flottant, et pour autant que je sache, elles ne sont pas équivalentes (bien qu'elles soient équivalentes "moralement").FP

  • (définition 1) est la classe de fonctions qui peut être calculée en temps polynomial. Chaque fois que vous voyez F P et ce n'est pas dans un contexte où les gens parlent de F N P , T F N P , c'est la définition que je suppose.FPFPFNP,TFNP

Dans le monde non déterministe, les choses deviennent un peu drôles. Là, il est commode d’autoriser des «fonctions partielles à valeurs multiples». Il serait naturel d'appeler également une telle chose une relation binaire , c'est-à-dire un sous-ensemble de . Mais du point de vue de la complexité, il est souvent philosophiquement et mentalement utile de considérer ces choses comme des «fonctions non déterministes». Je pense que beaucoup de ces définitions sont clarifiées par les classes suivantes (dont les définitions sont complètement standardisées, sinon très bien connues):Σ×Σ

  • NPMVxxx{(x,y):y is output by some branch of the computation on input x}

  • NPMVtNPMVx

  • NPSVNPMVΣ

  • NPSVtNPSVΣΣNPSVt=FPNPcoNP

NPMVNPSVNPSVNPMVcfgxgffsont toujours un sous-ensemble des sorties de . La bonne question est alors de savoir si chaque "fonction" a un raffinement . Si c'est le cas, nous écrivons .gNPMVNPSVNPMVcNPSV

  • PF (un peu moins standard) est la classe des fonctions (potentiellement partielles) calculables en poly-temps. Autrement dit, une fonction ( ) est dans s'il existe une machine déterministe poly-temps telle que, sur les entrées la la machine sort , et sur les entrées la machine ne fait aucune sortie (/ rejette / dit "non" / comme vous voulez le formuler).f:DΣDΣPFxDf(x)xD

  • FNP est une classe de "problèmes de fonction" (plutôt qu'une classe de fonctions). J'appellerais également une "classe relationnelle", mais vraiment, quels que soient les mots que vous utilisez pour le décrire, vous devez vous clarifier par la suite, c'est pourquoi je ne suis pas particulièrement partisan de cette définition. À toute relation binaire il y a un "problème de fonction" associé. Qu'est-ce qu'un problème de fonction? Je n'ai pas de définition mathématique claire comme je le fais pour le langage / la fonction / la relation; elle est plutôt définie par ce qu'est une solution valide: une solution valide au problème de fonction associé à est toute fonction (potentiellement partielle) telle que siFNPRΣ×ΣRf(y)[R(x,y)]f génère un tel , sinon ne produit aucune sortie. est la classe des problèmes de fonction associés aux relations tels que (lorsqu'il est considéré comme un langage de paires) et est p-équilibré. Donc n'est pas une classe de fonctions, ni une classe de langages, mais une classe de "problèmes de fonction", où "problème" ici est défini grossièrement en termes de ce que cela signifie pour le résoudre.yfFNPRRPFNP

  • TFNP est alors la classe des problèmes de fonction dans - définie par une relation comme ci-dessus - un tel est total, dans le sens où pour chaque il existe un tel que .FNPRRxyR(x,y)

Afin de ne pas avoir à écrire des choses comme "Si chaque problème de fonction (resp., ) a une solution dans (resp., comme ci-dessus définition), alors ... "dans ce contexte on utilise la Définition 2 de , qui est:FNPTFNPPFFPFP

  • FP (définition 2) est la classe des problèmes de fonction dans qui ont une solution poly-temps. On peut supposer que la solution (= fonction) ici est totale en choisissant une chaîne spéciale qui n'est pas un valide pour un quelconque , et en ayant la fonction sortie alors qu'il n'y aurait autrement pas de valide . (Si nécessaire, nous pouvons modifier la relation en ajoutant chaque à un 1, puis prendre pour être la chaîne 0; cela ne change pas la complexité de tout ce qui est impliqué).FNPy0yxy0yRyy0

Voici comment ces différentes définitions sont liées les unes aux autres, (définition 2, ce que vous devez supposer car c'est dans un contexte où il est comparé avec ) est équivalent dans . (def 2) est équivalent à (def 1).FNPFPFNPNPMVcPFTFNPFPNPMVtcFP

Joshua Grochow
la source
Merci pour votre réponse détaillée. J'essaie de le digérer et cela a été très utile jusqu'à présent. Je suppose, cependant, que vous vouliez dire FP FNP et FP TFNP dans le dernier paragraphe?
Auberon
1
@Auberon: Non, le dernier paragraphe traduit entre différentes conjectures. Il dit que , etc.FNPFPNPMVcPF
Joshua Grochow
@JoshuaGrochow ou possible ou la hiérarchie s'effondre? Est-ce que dans ou vice-versa (cela semble plausible car il ne semble y avoir aucune implication de toute façon)? NPPTFNPNPPUPPUPPTFNP
T ....
3

En plus de la réponse détaillée de Joshua, je veux ajouter les définitions suivantes d'Elaine Ruch ses automates, calculabilité et complexité .

La classe FP : Une relation binaire est ssi il existe un algorithme polynomial déterministe qui, étant donné une entrée arbitraire , peut trouver un tel que .QFPxy(x,y)Q

La classe FNP : une relation binaire est ssi il existe un vérificateur polynomial déterministe, étant donné une paire d'entrée arbitraire , détermine si . De manière équivalente, est dans ssil existe un algorithme de temps polynomial non déterministe qui, étant donné une entrée arbitraire , peut trouver un certain tel queQFNP(x,y)(x,y)QQFNPxy(x,y)Q

D'après ces définitions, il est clair que . Elle parle également brièvement de problèmes en dehors de .F N PFPTFNPFNPFNP

Pour moi, c'est la ressource la plus satisfaisante qui consiste en une seule page que j'ai trouvée depuis longtemps.

Auberon
la source
Après avoir réfléchi à ces définitions, je soupçonne que les deux définitions "équivalentes" de ne sont pas du tout équivalentes ...FNP
Auberon
Je pense que pour obtenir l'équivalence, il faut supposer que la relation est bornée par p (c'est-à-dire qu'il y a un polynôme tel que si tel que , alors il un tel avec ). En outre, il faut spécifier ce que signifie pour un "algorithme non déterministe de trouver un " - c'est-à-dire, qu'est-ce que cela signifie pour un algorithme non déterministe de "faire une sortie"? C'est en partie pourquoi j'aime la famille de définitions NPMV ...y ( x , y ) Q y | y | p ( | x | ) ypy(x,y)Qy|y|p(|x|)y
Joshua Grochow