J'utiliserai des nombres à partir de plutôt que , car je le trouve beaucoup plus naturel.01
Voici deux classes de problèmes que nous pouvons résoudre de cette manière:
Fonctions dans TFNP (c.-à-d. Problèmes de recherche de NP total à valeur unique)
(Ceci généralise l'exemple avec des permutations unidirectionnelles. Il inclut comme cas particulier les problèmes de décision de .)UP∩coUP
La configuration est que nous avons un prédicat polynomial et un polynôme tels que pour chaque de longueur , il existe un unique de longueur tel que tient. La tâche de calcul est, étant donné , trouver .R(x,y)p(n)xnym=p(n)R(x,y)xy
Maintenant, je vais supposer wlog que est pair, de sorte que . L'algorithme consiste à générer un uniformément aléatoire et à produirem2m≡1(mod3)y∈[0,2m)
y (comme solution au problème de recherche) si ;R(x,y)
y−y′ (comme un élément aléatoire de ) si , et ;{0,1,2}y−y′∈{1,2}R(x,y′)
ymod3 (comme un élément aléatoire de ) si aucun résout .{0,1,2}y′∈{y,y−1,y−2}R(x,y′)
S'il n'y avait pas de solution au problème de recherche, les choix aléatoires de donneraient et fois et fois (une de plus). Cependant, si résout le problème de recherche, nous avons bricolé les éléments (qui ont atteint les trois classes de résidus) afin qu'ils ne produisent que les résidus et , ce qui égalise l'avantage de . (Je suppose ici wlog que .)2m12 (2m−1)/30 (2m+2)/3yy,y+1,y+2120y<2m−2
Problèmes de recherche PPA-3
Un moyen pratique de définir PPA- est que les problèmes de recherche NP sont nombreux et réductibles aux types de problèmes suivants. Nous avons une fonction de temps polynomial fixe et un polynôme , de telle sorte que pour toute entrée de longueur , le mappage induit restreint aux entrées de longueur est une fonction satisfaisant pour chaque . La tâche est, étant donné , de trouver un point fixe de : .3f(x,y)p(n)xnfx(y)=f(x,y)ym=p(n)fx:[0,2m)→[0,2m)fx(fx(fx(y)))=yyxyfxfx(y)=y
Nous pouvons résoudre ceci de la manière suivante dans la question: étant donné de longueur , nous générons un aléatoire de longueur , et la sortiexnym=p(n)
y s'il s'agit d'un point fixe de ;fx
sinon, , et sont des éléments distincts. Nous pouvons les étiqueter comme avec , et sortir tel que .yfx(y)fx(fx(y)){y,fx(y),fx(fx(y))}={y0,y1,y2}y0<y1<y2i∈{0,1,2}y=yi
Il ressort clairement des définitions que cela donne une distribution uniforme sur , car les points non fixes sont triplés.{0,1,2}y
Permettez-moi de montrer pour mémoire l'équivalence du problème ci-dessus avec le problème complet de Papadimitriou pour PPA- , car cette classe est généralement négligée dans la littérature. Le problème est mentionné dans Buss, Johnson: «Preuves propositionnelles et réductions entre les problèmes de recherche NP», mais ils n'indiquent pas l'équivalence. Pour PPA, un problème similaire (LONELY) est donné à Beame, Cook, Edmonds, Impagliazzo et Pitassi: «La complexité relative des problèmes de recherche NP». Il n'y a rien de spécial à propos de , l'argument ci-dessous fonctionne mutatis mutandis pour tout nombre impair impair.33
Proposition: Les problèmes de recherche NP suivants sont poly-temps plusieurs-uns réductibles les uns aux autres:
Étant donné un circuit représentant un graphe bipartite non orienté , et un sommet dont le degré n'est pas divisible par , trouver un autre tel sommet.(A∪B,E)u∈A∪B3
Etant donné un circuit représentant un graphe orienté et un sommet dont l'équilibre en degrés (c'est-à-dire en degrés extérieurs moins en degrés) n'est pas divisible par , trouver un autre tel sommet.(V,E)u∈V3
Etant donné un circuit calculant une fonction telle que , trouvez un point fixe de .f:[0,2n)→[0,2n)f3=idf
Preuve:
1≤p2 est évident, car il suffit de diriger les bords de gauche à droite.
2≤p1 : abord un graphe biparti pondéré. Soit et copies de : , . Pour chaque bord d'origine , nous mettons un bord de poids , et un bord de poids . Cela rend égal au degré d'équilibre de dans le graphique d'origine. Si est le sommet donné de l'équilibre , nous ajoutons un bord supplémentaire de poidsABVA={xA:x∈V}B={xB:x∈V}x→y{xA,yB}1{xB,yA}−1deg(xA)=−deg(xB)xub≢0(mod3){uA,uB}b, de sorte que , et . sera notre sommet choisi.deg(uA)=2b≢0(mod3)deg(uB)=0uA
Afin de faire du graphique un graphique simple non pondéré non orienté, nous réduisons d'abord tous les poids modulo , et supprimons tous les bords du poids . Cela ne laisse que les bords des poids et . Ce dernier peut être remplacé par des gadgets adaptés. Par exemple, au lieu d'une arête de poids , nous incluons de nouveaux sommets , pour , avec des arêtes , , , , : cela fait30122{xA,yB}wAizBii=0,…,3{xA,yB}{xA,zBi}{wAi,yB}{wAi,zBi}{wAi,zB(i+1)mod4}deg(wAi)=deg(zBi)=3Et contribue à et .5≡2(mod3)xAyB
3≤p2 : Supposons pour simplifier que soit égal à . Nous construisons un graphe orienté sur comme suit:n2n≡1(mod3)V=[0,2n)
Nous incluons les arêtes et pour chaque .3x+1→3x3x+2→3xx<2n/3−1
Si est une orbite non fixe de , nous incluons les bords et .x0<x1<x2fx0→x1x0→x2
Le sommet choisi sera . La première clause contribue à l'équilibre ou à chaque sommet . De même, la deuxième clause contribue à l'équilibre ou aux sommets qui ne sont pas des points fixes. Ainsi, en supposant que n'est pas déjà un point fixe, il s'agit en effet de modulo non équilibré , et tout autre modulo non équilibré de sommets est un point fixe de .u=2n−11−2≡1(mod3)≠u−12≡−1(mod3)u33f
1≤p3 : On peut supposer que avec pair, et le sommet donné a le degré .A=B=[0,2n)nu∈A≡2(mod3)
Nous pouvons étiqueter efficacement les arêtes incidentes avec un sommet comme , où . De cette façon, devient un sous-ensemble de , que nous identifions à . Nous définissons une fonction sur comme suit.y∈B(y,j)j<deg(y)E[0,2n)×[0,2n)[0,22n)f[0,2n)×[0,2n)
Sur le complément de : pour chaque , et tel que , on fait , , . Aussi, , , pour . Cela laisse de côté le point , et points pour chaque dont le degré n'est pas divisible par .Ey∈Bjdeg(y)≤3j<2n−1f(y,3j)=(y,3j+1)f(y,3j+1)=(y,3j+2)f(y,3j+2)=(y,3j)f(3i,2n−1)=(3i+1,2n−1)f(3i+1,2n−1)=(3i+2,2n−1)f(3i+2,2n−1)=(3i,2n−1)3i<2n−1(2n−1,2n−1)3−(deg(y)mod3)(y,i)y∈B3
Sur : pour chaque , nous fixons une énumération efficace de ses bords incidents , où . On met , , pour . Cela laisse de côté points pour chaque sommet dont le degré n'est pas divisible par .Ex∈A(y0,j0),…,(yd−1,jd−1)d=deg(x)f(y3i,j3i)=(y3i+1,j3i+1)f(y3i+1,j3i+1)=(y3i+2,j3i+2)f(y3i+2,j3i+2)=(y3i,j3i)i<⌊d/3⌋deg(x)mod3x∈A3
Depuis , deux de ses bords incidents ont été ; nous les transformons en un autre cycle utilisant comme troisième point. Les points restants sont laissés comme points fixes de . Par construction, l'un d'eux donnera lieu à une solution de (1).deg(u)≡2(mod3)f(2n−1,2n−1)f