Cosa sono esattamente le classi FP, FNP e TFNP?


13

Nel suo libro Computational Complexity , Papadimitriou definisce FNP come segue:

Supponiamo che sia una lingua in NP . Dalla Proposizione 9.1, c'è un decidibile polinomiale, polinomialmente equilibrato rapporto R L tale che per tutte le stringhe x : V'è una stringa y con R L ( x , y ), se e solo se x L . Il problema di funzione associato a L , indicato con F L , è il seguente problema computazionale:LRLxyRL(x,y)xLLFL

Dato x , trova una stringa y tale che RL(x,y) se esiste una stringa del genere; se tale stringa non esiste, restituisce "no".

La classe di tutti i problemi di funzione associati come sopra al linguaggio in NP si chiama FNP . FP è la sottoclasse risultante se consideriamo solo problemi di funzione in FNP che possono essere risolti in tempi polinomiali.

(...)

(...), chiamiamo un problema R nel totale FNP se per ogni stringa x esiste almeno una y tale che R ( x , y ) . La sottoclasse di FNP contenente tutti i problemi di funzione totale è indicata con TFNP .xyR(x,y)

In un diagramma di Venn nella panoramica del capitolo, Papadimitriou implica che FP TFNP FNP .

Ho difficoltà a capire perché sostiene esattamente che FP TFNP poiché i problemi in FP non devono essere di per sé totali.

Per capire meglio, ho analizzato la letteratura per trovare una definizione impermeabile di FP , FNP e specie, senza successo.

Secondo la mia (umile) opinione, penso che ci sia poco (corretto!) Materiale didattico su questi argomenti.

Per problemi di decisione, le classi sono insiemi di lingue (ovvero insiemi di stringhe).

Quali sono esattamente le classi per i problemi di funzione? Sono insiemi di relazioni, lingue, ...? Che cos'è una definizione solida?


4
La notazione comune è piuttosto sciatta. In primo luogo, FP era ed è usato per indicare la classe di funzioni poli-tempo (quindi totale) al di fuori del contesto dei problemi di ricerca NP, dove è stato ridefinito. In secondo luogo, ogni problema di ricerca risolvibile in un tempo polinomiale ha un'estensione totale risolvibile in un tempo polinomiale, quindi in questo senso non c'è molta differenza reale tra una definizione totale e non totale di FP, quindi i due sono confusi dall'abuso del linguaggio.
Emil Jeřábek 3.0

Risposte:


11

Il commento di Emil Jerabek è un bel riassunto, ma volevo sottolineare che ci sono altre classi con definizioni più chiare che catturano più o meno lo stesso concetto e chiarire la relazione tra tutte queste cose.

[Avvertenza: mentre credo di aver ottenuto le definizioni giuste, alcune delle cose che seguono riflettono le mie preferenze personali - ho cercato di essere chiaro su dove fosse.]

Nel mondo deterministico, una classe di funzioni è solo una raccolta di funzioni (nel solito senso matematico della parola "funzione", cioè una mappa ). Occasionalmente vogliamo consentire "funzioni parziali", il cui output è "indefinito" per determinati input. (Equivalentemente, funzioni definite su un sottoinsieme di Σ piuttosto che su tutto.)ΣΣΣ

Sfortunatamente, ci sono due diverse definizioni per fluttua intorno e, per quanto posso dire, non sono equivalenti (sebbene siano "moralmente" equivalenti).FP

  • (definizione 1) è la classe di funzioni che possono essere calcolate in tempo polinomiale. Ogni volta che vedi F P e non è in un contesto in cui le persone parlano di F N P , T F N P , questa è la definizione che presumo.FPFPFNP,TFNP

Nel mondo non deterministico le cose diventano un po 'divertenti. Lì, è conveniente consentire "funzioni parziali, multivalore". Sarebbe naturale anche chiamare una cosa del genere una relazione binaria , cioè un sottoinsieme di . Ma dal punto di vista della complessità è spesso filosoficamente e mentalmente utile pensare a queste cose come "funzioni non deterministiche". Penso che molte di queste definizioni siano chiarite dalle seguenti classi (le cui definizioni sono completamente standardizzate, se non molto note):Σ×Σ

  • : la classe di "funzioni parziali a più valori" calcolabili da una macchina non deterministica in tempo polinomiale. Ciò significa che esiste una macchina non deterministica poli-tempo, e sull'input x , su ciascun ramo non deterministico, può scegliere di accettare e produrre un output, oppure rifiutare e non produrre alcun output. L'output "multivalore" sull'ingresso x è quindi l'insieme di tutti gli output su tutti i rami non deterministici quando viene dato x come input. Si noti che questo set può essere vuoto, quindi come "funzione multi-valore" può essere solo parziale. Se la pensiamo in termini di relazioni binarie, ciò corrisponde alla relazione { ( x , y ) : yNPMVxxx .{(x,y):y is output by some branch of the computation on input x}

  • : "funzioni" totali in N P M V , ovvero su ogni inputx, almeno un ramo accetta (e quindi genera un output, per definizione)NPMVtNPMVx

  • : funzioni a valore singolo (potenzialmente parziale) in N P M V . C'è una certa flessibilità qui, tuttavia, in quanto più filiali possono accettare, ma se una qualsiasi filiale accetta, è necessario garantire a tutte le filiali che accettano di produrre lostessooutput (in modo che sia realmente a valore singolo). Tuttavia, è ancora possibile che nessun ramo accetti, quindi la funzione è solo una "funzione parziale" (cioè non definita su tutto Σ ).NPSVNPMVΣ

  • : valore singolo funzioni totali in N P S V . Queste sono davvero funzioni, nel solito senso della parola, Σ Σ . È un esercizio non troppo difficile vedere che N P S V t = F P N Pc o N P (usando Def 1 per FP sopra).NPSVtNPSVΣΣNPSVt=FPNPcoNP

NPMVNPSVN 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 VNPSVNPMVcfgxgffsono sempre un sottoinsieme degli output di . La domanda corretta è quindi se ogni "funzione" ha un raffinatezza. In tal caso, scriviamo .gNPMVNPSVNPMVcNPSV

  • f : D Σ D Σ P F x D f ( x ) x DPF (un po 'meno standard) è la classe di funzioni (potenzialmente parziali) calcolabili in poly-time. Vale a dire, una funzione da ( ) è in se esiste una macchina deterministica poli-temporale tale che, sugli input il output della macchina , e sugli input la macchina non emette alcun output (/ rifiuta / dice "no" / comunque si desidera esprimerlo).f:DΣDΣPFxDf(x)xD

  • F N P R Σ × Σ R f ( y ) [ R ( x , y ) ] f y f F N P R R P F N PFNP è una classe di "problemi di funzione" (piuttosto che una classe di funzioni). anche una "classe relazionale", ma in realtà qualunque parola tu usi per descriverla, devi seguito, motivo per cui non sono particolarmente parziale di questa definizione. A qualsiasi relazione binaria esiste un "problema di funzione" associato. Qual è un problema di funzione? Non ho una chiara definizione matematica come faccio per linguaggio / funzione / relazione; piuttosto, è definito da ciò che è una soluzione valida: una soluzione valida al problema di funzione associato a è qualsiasi funzione (potenzialmente parziale) tale che seFNPRΣ×ΣRf(y)[R(x,y)]f emette uno qualsiasi di questi , altrimenti non produce alcun output. è la classe di problemi di funzione associati alle relazioni tale che (se considerato come un linguaggio di coppie) ed è p-equilibrato. Quindi non è una classe di funzioni, né una classe di linguaggi, ma una classe di "problemi di funzione", dove "problema" qui è definito approssimativamente in termini di cosa significa risolverlo.yfFNPRRPFNP

  • F N P R R x y R ( x , y )TFNP è quindi la classe di problemi di funzione in - definita da una relazione come sopra - tale è totale, nel senso che per ogni esiste una tale che .FNPRRxyR(x,y)

Per non dover scrivere cose come "Se ogni problema di funzione (resp., ) ha una soluzione in (resp., secondo quanto sopra definizione), quindi ... "in questo contesto si usa la Definizione 2 di , che è:T F N P P F F P F PFNPTFNPPFFPFP

  • F N P y 0 y x y 0 y R y y 0FP (definizione 2) è la classe di problemi di funzione in che hanno una soluzione poly-time. Si può presumere che la soluzione (= funzione) qui sia totale selezionando una stringa speciale che non è una valida per qualsiasi , e avendo la funzione in uscita quando altrimenti non ci sarebbe valida . (Se necessario, possiamo modificare la relazione anteponendo ogni con 1, quindi prendere come stringa 0; ciò non modifica la complessità di nulla.FNPy0yxy0yRyy0

Ecco come queste varie definizioni si relazionano tra loro, (definizione 2, che è quello che dovresti assumere perché è in un contesto in cui viene confrontato con ) è equivalente a . (def 2) è equivalente a (def 1).F N P N P M V c P F T F N PF P N P M V t c F PFNPFPFNPNPMVcPFTFNPFPNPMVtcFP


Grazie per la tua ampia risposta. Sto cercando di digerirlo ed è stato molto utile finora. Presumo, tuttavia, intendevi FP FNP e FP TFNP nell'ultimo paragrafo?
Auberon,

1
@Auberon: No, l'ultimo paragrafo sta traducendo tra varie congetture. Dice che , ecc.FNPFPNPMVcPF
Joshua Grochow

@JoshuaGrochow o possibile o la gerarchia crolla? Anche in o viceversa è (sembra plausibile in quanto non sembrano esserci implicazioni in entrambi i modi)? NPPTFNPNPPUPPUPPTFNP
T ....

3

Oltre alla vasta risposta di Joshua, voglio aggiungere le seguenti definizioni da Elaine Ruch: Automi, Computabilità e Complessità .

La classe FP : Una relazione binaria è in se e solo se v'è un algoritmo di tempo polinomiale deterministico che, dato un input arbitrario , si può trovare qualche tale che .QFPxy(x,y)Q

Classe FNP : Una relazione binaria è in sse esiste un tempo polinomiale deterministica verificatore, data una coppia d'ingresso arbitrario , determina se . Equivalentemente, è in se esiste un algoritmo temporale polinomiale non deterministico che, dato un input arbitrario , può trovare alcuni tali cheF N P ( x , y ) ( x , y ) Q Q F N P x y ( x , y ) QQFNP(x,y)(x,y)QQFNPxy(x,y)Q

Da queste definizioni è chiaro che . Parla anche brevemente di problemi al di fuori di .F N PFPTFNPFNPFNP

Per me, questa è stata la risorsa più soddisfacente che consiste in una singola pagina che ho trovato da molto tempo.


Dopo aver riflettuto su queste definizioni, sospetto che le due definizioni "equivalenti" di non siano affatto equivalenti ...FNP
Auberon,

Penso che per ottenere l'equivalenza sia necessario presumere che la relazione sia p-bound (ovvero, esiste un polinomio tale che se tale che , allora esiste tale con ). Inoltre, si deve specificare cosa significa per un "algoritmo non deterministico trovare una ", ovvero cosa significa per un algoritmo non deterministico "creare un output"? Questo è parte del motivo per cui mi piace la famiglia di definizioni NPMV ...y ( x , y ) Q y | y | p ( | x | ) ypy(x,y)Qy|y|p(|x|)y
Joshua Grochow,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.