Usarei números começando de vez de , pois acho muito mais natural.101
Aqui estão duas classes de problemas que podemos resolver dessa maneira:
Funções no TFNP (ou seja, problemas de pesquisa de NP total com valor único)
(Isso generaliza o exemplo com permutações unidirecionais. Inclui como caso especial problemas de decisão de .)UP∩coUP
A configuração é que temos um predicado em tempo polinomial e um polinômio modo que, para cada de comprimento , exista um único de comprimento tal que é válido. A tarefa computacional é, dado , encontre .p ( n ) x n y m = p ( n ) R ( x , y ) x yR(x,y)p(n)xnym=p(n)R(x,y)xy
Agora, assumirei wlog que é par, de modo que . O algoritmo é gerar um uniformemente aleatório e gerar2 m ≡ 1my ∈ [ 0 , 2 m )2m≡1(mod3)y∈[0,2m)
R ( x , y )y (como solução do problema de pesquisa) se ;R(x,y)
{ 0 , 1 , 2 } y - y ' ∈ { 1 , 2 }y−y′ (como um elemento aleatório de ) se e ;{0,1,2}y−y′∈{1,2}R(x,y′)
{ 0 , 1 , 2 } y ' ∈ { y , y - 1 , y - 2 } R ( x , y ' )ymod3 (como um elemento aleatório de ) se nenhum resolver .{0,1,2}y′∈{y,y−1,y−2}R(x,y′)
Se não houvesse solução para o problema de busca, as escolhas aleatórias de dariam e vezes e vezes (mais uma). No entanto, se resolve o problema de pesquisa, mexemos nos elementos (que atingem todas as três classes de resíduos) para que eles produzam apenas os resíduos e , o que reduz a vantagem de . (Estou assumindo aqui wlog que .) 1 2 ( 2 m - 1 ) / 3 0 ( 2 m + 2 ) / 3 y y , y + 1 , y + 2 1 2 0 y < 2 m - 22m12 (2m−1)/30 (2m+2)/3yy,y+1,y+2120y<2m−2
Problemas pesquisa PPA-3
Uma maneira conveniente de definir o PPA- é porque os problemas de pesquisa NP são muitos redutíveis aos seguintes tipos de problemas. Temos uma função de tempo polinomial fixo e um polinômio , de modo que, para qualquer entrada de comprimento , o mapeamento induzido restrito às entradas de comprimento é uma função satisfazendo para cada . A tarefa é, dado , encontre um ponto de correção de : .f ( x , y ) p ( n ) x n f x ( y ) = f ( x , y ) y m = p ( n ) f x : [ 0 , 2 m ) → [ 0 , 2 m ) f x ( f x ( f x ( y ) ) )3f(x,y)p(n)xnfx(y)=f(x,y)ym=p(n)fx:[0,2m)→[0,2m)y x y f x f x ( y ) = yfx(fx(fx(y)))=yyxyfxfx(y)=y
Podemos resolver isso da seguinte maneira: dado de comprimento , geramos um aleatório de comprimento e a saídan y m = p ( n )xnym=p(n)
f xy , se for um ponto fixo de ;fx
caso contrário, , e são elementos distintos. Podemos rotulá-los como com e gerar tal que .f x ( y ) f x ( f x ( y ) ) { y , f x ( y ) , f x ( f x ( y ) ) } = { y 0 , y 1 , y 2 } y 0 < y 1 < y 2 i ∈ { 0 , 1 , 2yfx(y)fx(fx(y)){y,fx(y),fx(fx(y))}={y0,y1,y2}y0<y1<y2y = y ii∈{0,1,2}y=yi
É claro pelas definições que isso fornece uma distribuição uniforme em , pois os não pontos de fixação são triplos.y{0,1,2}y
Deixe-me mostrar para registro a equivalência do problema acima com o problema completo de Papadimitriou para o PPA- , pois essa classe é principalmente negligenciada na literatura. O problema é mencionado em Buss, Johnson: “Provas e reduções proposicionais entre os problemas de busca de NP”, mas elas não indicam a equivalência. Para o PPA, um problema semelhante (LONELY) é dado em Beame, Cook, Edmonds, Impagliazzo e Pitassi: “A relativa complexidade dos problemas de pesquisa de NP”. Não há nada de especial em , o argumento abaixo funciona mutatis mutandis para qualquer primo ímpar.333
Proposição: Os seguintes problemas de pesquisa de NP são múltiplos de um tempo redutíveis um ao outro:
Dado um circuito que representa um gráfico não-direcionado bipartido e um vértice cujo grau não é divisível por , encontre outro desses vértices.u ∈ Um ∪ B 3(A∪B,E)u∈A∪B3
Dado um circuito que representa um gráfico direcionado e um vértice cujo balanço de graus (isto é, grau fora de grau menos em grau) não é divisível por , encontre outro desses vértices.u ∈ V 3(V,E)u∈V3
Dado um circuito que calcula uma função tal que , encontre um ponto fixo de .f 3 = i d ff:[0,2n)→[0,2n)f3=idf
Prova:
1≤p2 é óbvio, pois basta direcionar as bordas da esquerda para a direita.
A B V A = { x A : x ∈ V } B = { x B : x ∈ V } x → y { x A , y B } 1 { x B , y A } - 1 grau ( x A ) = - deg ( x B ) x u2≤p1 : Primeiro, vamos construir um gráfico bipartido ponderado. Seja e cópias de : , . Para cada aresta original , colocamos uma aresta de peso e uma aresta de peso . Isso faz com que igual ao balanço de graus de no gráfico original. Se é o vértice dado do balanço , adicionamos uma aresta extra de pesoABVA={xA:x∈V}B={xB:x∈V}x→y{xA,yB}1{xB,yA}−1deg(xA)=−deg(xB)xu{ u A , u B } b deg ( u A ) = 2 b ≢ 0b≢0(mod3){uA,uB}b, de modo que e . será o nosso vértice escolhido.deg ( u B ) = 0 u Adeg(uA)=2b≢0(mod3)deg(uB)=0uA
Para transformar o gráfico em um gráfico não direcionado não ponderado, reduzimos primeiro todos os pesos do módulo e removemos todas as arestas do peso . Isso deixa apenas as arestas dos pesos e . Este último pode ser substituído por gadgets adequados. Por exemplo, em vez de uma aresta de peso , incluímos novos vértices , para , com arestas , , , , : isso faz com que0 1 2 2 { x A , y B } w Um i z B i i = 0 , ... , 3 { x A , y B } { x A , z B i } { w Um i , y B } { w A i , z B i } { w A i30122{xA,yB}wAizBii=0,…,3{xA,yB}{xA,zBi}{wAi,yB}{wAi,zBi}deg ( w A i ) = deg ( z B i ) = 3 5 ≡ 2{wAi,zB(i+1)mod4}deg(wAi)=deg(zBi)=3, E contribui para e .x A e B5≡2(mod3)xAyB
n 2 n ≡ 13≤p2 : Deixe-me supor, por simplicidade, é igual a . Construímos um gráfico direcionado em seguinte maneira:nV = [ 0 , 2 n )2n≡1(mod3)V=[0,2n)
Incluímos arestas e para cada .3 x + 2 → 3 x x < 2 n / 3 - 13x+1→3x3x+2→3xx<2n/3−1
Se é uma órbita não fixa de , incluímos as arestas e . f x 0 → x 1 x 0 → x 2x0<x1<x2fx0→x1x0→x2
O vértice escolhido será . A primeira cláusula contribui com o saldo ou para cada vértice . Da mesma forma, a segunda cláusula contribui com o saldo ou para vértices que não são pontos de correção. Portanto, supondo que ainda não seja um ponto de correção, é de fato o módulo desequilibrado e qualquer outro módulo vértice desequilibrado é um ponto fixo de .1 - 2 ≡ 1u=2n−11≠ L - 1 2 ≡ - 1−2≡1(mod3)≠u−1u 3 3 f2≡−1(mod3)u33f
A = B = [ 0 , 2 n ) n u ∈ A ≡ 21≤p3 : Podemos assumir que com pares, e o vértice dado tem grau .A=B=[0,2n)nu∈A≡2(mod3)
Podemos rotular eficientemente as bordas incidentes com um vértice como , onde . Dessa maneira, se torna um subconjunto de , que identificamos com . Definimos uma função em seguinte maneira.( y , j ) j < deg ( y ) E [ 0 , 2 n ) × [ 0 , 2 n ) [ 0 , 2 2 n ) f [ 0 , 2 n ) × [ 0 , 2 n )y∈B(y,j)j<deg(y)E[0,2n)×[0,2n)[0,22n)f[0,2n)×[0,2n)
No complemento de : para cada , e tal que , fazemos , , . A função , , para . Isso deixa de fora o ponto e pontos para cada cujo grau não é divisível por .y ∈ B j deg ( y ) ≤ 3 j < 2 n - 1 f ( y , 3 j ) = ( y , 3 j + 1 ) f ( y , 3 j + 1 ) = ( y , 3 j + 2 ) f ( y , 3 j + 2 ) =Ey∈Bjdeg(y)≤3j<2n−1f(y,3j)=(y,3j+1)f(y,3j+1)=(y,3j+2)f ( 3 i , 2 n - 1 ) = ( 3 i + 1 , 2 n - 1 ) f ( 3 i + 1 , 2 n - 1 ) = ( 3 i + 2 , 2 n - 1 ) f ( 3 i + 2 , 2 nf(y,3j+2)=(y,3j)f(3i,2n−1)=(3i+1,2n−1)f(3i+1,2n−1)=(3i+2,2n−1)3 i < 2 n - 1 ( 2 n - 1 , 2 n - 1 ) 3 - ( deg ( y ) mod 3 ) ( y , i ) y ∈ B 3f(3i+2,2n−1)=(3i,2n−1)3i<2n−1(2n−1,2n−1)3−(deg(y)mod3)(y,i)y∈B3
Em : para cada , uma enumeração eficiente de suas bordas incidentes , onde . Colocamos , , para . Isso exclui pontos para cada vértice cujo grau não é divisível por .x ∈ A ( y 0 , j 0 ) , … , ( y d - 1 , j d - 1 ) d = deg ( x ) f ( y 3 i , j 3 i ) = ( y 3 i + 1 , j 3 i + 1 ) f ( y 3 i +Ex∈A(y0,j0),…,(yd−1,jd−1)d=deg(x)f(y3i,j3i)=(y3i+1,j3i+1)f( y 3 i + 2 , j 3 i + 2 )=( y 3 i , j 3 i )i<⌊d / 3⌋deg(x)mod3x∈f(y3i+1,j3i+1)=(y3i+2,j3i+2)f(y3i+2,j3i+2)=(y3i,j3i)i<⌊d/3⌋deg(x)mod33x∈A3
Desde , duas de suas arestas incidentes foram deixadas de fora; nós os transformamos em outro ciclo usando como terceiro ponto. Os pontos restantes são deixados como pontos de fixação de . Por construção, qualquer um deles dará origem a uma solução de (1).f ( 2 n - 1 , 2 n - 1 ) fdeg(u)≡2(mod3)f(2n−1,2n−1)f