Possiamo generare velocemente mod 3 perfettamente perfettamente o risolvere il problema NP?


13

Ad essere sincero, non so molto su come vengono generati i numeri casuali (i commenti sono ben accetti!) Ma supponiamo il seguente modello teorico: possiamo ottenere interi uniformemente casuali da e il nostro obiettivo è quello di emette un numero intero uniformemente casuale da [1,3].[1,2n]

Una soluzione semplice il cui tempo di esecuzione previsto è polinomiale è la seguente. Scarta (e possibilmente anche ) da modo che il numero di interi rimanenti sia divisibile per modo da poter prendere dell'intero generato. Se otteniamo un numero scartato, generiamo un altro numero, fino a quando non ne otteniamo uno non scartato.2n2n1[1,2n]3mod3

E se volessimo terminare sicuramente in tempi polinomiali? A causa di problemi di divisibilità, il problema diventa irrisolvibile. Tuttavia, mi chiedo se possiamo risolvere quanto segue.

Supponiamo di poter generare interi uniformemente casuali da [1,2n] e di avere un problema computazionalmente difficile. Il nostro obiettivo è generare un numero intero uniformemente casuale da [1,3] o risolvere il problema difficile.

Qui il problema difficile può essere il factoring di un numero intero, la risoluzione di un'istanza SAT o qualcosa di simile. Ad esempio, possiamo decodificare una permutazione unidirezionale f come segue, se ci viene dato un po 'di f(x) (e supponiamo che n sia pari): Se per la nostra stringa casuale f(r)<f(x) , allora prendiamo f(r)mod3 , se f(r)>f(x) , quindi prendi f(r)1mod3 . Infine, se f(r)=f(x) , allora abbiamo finito, come r=x . (Se n è dispari, allora qualcosa di simile funziona, dobbiamo solo verificare se f(r+1)=f(x) e sottrarre 2 se f(r)>f(x) .)

Riepilogo delle risposte. Emil Jeřábek ha dimostrato che se non riusciamo a generare in modo perfettamente uniforme, possiamo risolvere qualsiasi problema di ricerca a valore singolo da TFNP e anche da PPA-3. D'altra parte, daniello ha dimostrato che non possiamo risolvere i problemi NP-completi nel modo sopra, a meno che NP = co-NP.


@Tayfun Se è pari, abbiamo bisogno che sia divisibile per , se è dispari, allora è necessario che sia divisibile per . Sarei felice se tu fossi più specifico su quale parte dovrei essere più specifica. 2 n - 1 3 nn2n13n32n23
domotorp

(1) È possibile generalizzare l'esempio con permutazioni unidirezionali per risolvere funzioni (a valore singolo) in TFNP. (2) È possibile risolvere arbitrari problemi di ricerca PPA-3.
Emil Jeřábek 3.0

@Emil (1): Come? (2): Ho anche pensato che questa potrebbe essere la giusta classe di complessità, ma non vedo perché potremmo risolvere tali problemi.
domotorp

Proverò a scriverlo come risposta più tardi. A proposito, la domanda è interessante, non so quale sia il problema con tutti i downgrade.
Emil Jeřábek 3.0

2
I downgrade sono bizzarri. Questa è una domanda molto interessante! E non vedo nulla di poco chiaro al riguardo.
Sasho Nikolov,

Risposte:


6

A seguito della risposta di domotorp, credo che possiamo risolvere i problemi di ricerca NP soddisfacendo una delle seguenti restrizioni:

  1. il numero di soluzioni è noto e non divisibile per ; o,3

  2. il numero di soluzioni è limitato polinomialmente (ma non è noto in anticipo).

Per 1., possiamo usare un'imbottitura semplice per ridurre al caso seguente:

  • Le soluzioni provengono da , dove è pari.m[0,2m1)m

  • Il numero di soluzioni soddisfa .ss1(mod3)

  • Ogni due soluzioni sono distanti almeno . (Diciamo, sono tutti divisibili per )444

Si noti che . Quindi, possiamo risolvere il problema scegliendo un casuale e usando un protocollo simile come nella mia risposta per soluzioni uniche se (risultante in una distribuzione su corto di uno per ciascuna delle soluzioni ), e producendo se .a [ 0 , 2 m ) a [ 0 , 2 m - s ) { 0 , 1 , 2 } 0 s 0 a [ 2 m - s , 2 m )32msa[0,2m)a[0,2ms){0,1,2}0s0a[2ms,2m)

Per 2., supponiamo innanzitutto che il numero di soluzioni sia noto . Come in /cstheory//a/37546 , lascia che sia la più grande potenza di che divide , in modo che . Considera il problema di ricerca le cui soluzioni sono sequenze tali che e ogni è una soluzione del problema originale. Da un lato, il problema originale si riduce a quello nuovo. D'altra parte, il numero di soluzioni del nuovo problema è , cioè non divisibile per3 k 3 s 3 ( ssp(n)3k3sy0,,y3k-1yi(s3(s3k)y0,,y3k1y0<y1<<y3k1yi3(s3k)3e noto. Quindi, abbiamo finito con 1.

Ora, se il numero di soluzioni è limitato da , ma non noto, eseguiamo il protocollo sopra times ( ) in parallelo per ogni possibile scelta di e:2 2 p ( n ) 1 s 2 p(n)22p(n)1s2

  • se uno dei thread restituisce una soluzione al problema originale, ne passiamo uno all'output;

  • se tutti i thread restituiscono elementi , produciamo .( r 1 + r 2 + + r 2 ) mod 3r1,,r2{0,1,2}(r1+r2++r2)mod3

Condizionato al secondo evento, è distribuito uniformemente in poiché è il numero reale di soluzioni del problema originale, mentre l'altro è indipendente da , quindi l'intera somma è anche distribuita uniformemente . { 0 , 1 , 2 } s r i r srs{0,1,2}srirs


La generalizzazione comune di 1 e 2 è che il numero di soluzioni proviene da un elenco di numeri calcolabile in tempo polinomiale, in modo tale che la più grande potenza di divide ciascuna di esse sia limitata polinomialmente. 3
Emil Jeřábek 3.0

A proposito, conosci qualche problema non composito in cui il numero di soluzioni può essere dimostrato divisibile per un potere superpolinomiale di ? Per composito intendo qualcosa come prendere il prodotto diretto di alcuni problemi in cui il numero di soluzioni è divisibile per - i problemi compositi possono essere risolti facilmente nel modo sopra indicato. 333
domotorp

Penso che sia possibile dimostrare che esiste un oracolo in base al quale un potere superpolinomiale di 3 problemi non può essere risolto nel modo sopra descritto.
domotorp

@domotorp È interessante, mi stavo godendo la possibilità che una sorta di argomento Valiant-Vazirani potesse essere usato per risolvere arbitrari problemi TFNP. Ad ogni modo, la caratterizzazione è ancora incompleta. Sono particolarmente scontento della restrizione in questa risposta che il numero di soluzioni è noto, o almeno proviene da un elenco costruibile in tempo polinomiale. Per prima cosa, la classe di tali problemi è apparentemente incomparabile con PPA-3 dalla mia altra risposta, quindi sarebbe bene avere una costruzione che generalizzi entrambi. AFAICS l'unico limite superiore è che qualsiasi problema risolvibile ...
Emil Jeřábek 3.0

... nel modo sopra è riducibile a un problema TFNP il cui numero di soluzioni è modulo (ma non noto). Non mi è chiaro se aspettarmi che questa sia la classe giusta o se dopo tutto siano necessarie ulteriori restrizioni. 313
Emil Jeřábek 3.0

10

Userò numeri a partire da anziché , poiché lo trovo molto più naturale.01

Ecco due classi di problemi che possiamo risolvere in questo modo:

  1. Funzioni in TFNP (ovvero, problemi di ricerca NP totali a valore singolo)

    (Questo generalizza l'esempio con permutazioni unidirezionali. Include come caso speciale problemi di decisione da .)UPcoUP

    L'impostazione è che abbiamo un predicato del tempo polinomiale e un polinomio tale che per ogni di lunghezza , esiste un unico di lunghezza tale che tiene. Il compito computazionale è, dato , trovare .p ( n ) x n y m = p ( n ) R ( x , y ) x yR(x,y)p(n)xnym=p(n)R(x,y)xy

    Ora supporrò wlog che sia pari, quindi . L'algoritmo è generare un uniformemente casuale e produrre2 m1my [ 0 , 2 m )2m1(mod3)y[0,2m)

    • R ( x , y )y (come soluzione del problema di ricerca) se ;R(x,y)

    • { 0 , 1 , 2 } y - y { 1 , 2 } R ( x , y )yy (come elemento casuale di ) se e ;{0,1,2}yy{1,2}R(x,y)

    • { 0 , 1 , 2 } y { y , y - 1 , y - 2 } R ( x , y )ymod3 (come un elemento casuale di ) se no risolve .{0,1,2}y{y,y1,y2}R(x,y)

    Se non ci fosse soluzione al problema di ricerca, le scelte casuali di darebbero e volte e volte (un'altra). Tuttavia, se risolve il problema di ricerca, armeggiamo con gli elementi (che colpiscono tutte e tre le classi di residui) in modo che producano solo residui e , il che uniforma il vantaggio di . (Sto assumendo qui wlog che .) 1 2 ( 2 m - 1 ) / 3 0 ( 2 m + 2 ) / 3 y y , y + 1 , y + 2 1 2 0 y < 2 m - 22m12 (2m1)/30 (2m+2)/3yy,y+1,y+2120y<2m2

  2. PPA- problemi di ricerca3

    Un modo conveniente per definire PPA- è come problemi di ricerca NP molti riducibili al seguente tipo di problemi. Abbiamo una funzione di tempo polinomiale fissa e un polinomio , tale che per qualsiasi input di lunghezza , la mappatura indotta limitata agli input di lunghezza è una funzione soddisfa per ogni . Il compito è, dato , trovare un punto fisso di : .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

    Possiamo risolvere questo nel modo nella domanda come segue: dato di lunghezza , generiamo un casuale di lunghezza e outputn y m = p ( n )xnym=p(n)

    • f xy se è un punto fisso di ;fx

    • in caso contrario, , e sono elementi distinti. Possiamo etichettarli come con e generare tale che .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

    Dalle definizioni si evince che ciò fornisce una distribuzione uniforme su , poiché il non-punto fisso viene in triplo.y{0,1,2}y


Consentitemi di dimostrare per la cronaca l'equivalenza del problema sopra con il problema completo di Papadimitriou per PPA- , poiché questa classe è per lo più trascurata in letteratura. Il problema è menzionato in Buss, Johnson: "Prove propositive e riduzioni tra problemi di ricerca NP", ma non indicano l'equivalenza. Per PPA, un problema simile (LONELY) è riportato in Beame, Cook, Edmonds, Impagliazzo e Pitassi: "La relativa complessità dei problemi di ricerca NP". Non c'è niente di speciale in , l'argomento che segue funziona mutatis mutandis per qualsiasi primo dispari.333

Proposizione: I seguenti problemi di ricerca NP sono molti-volte molti riducibili l'uno all'altro:

  1. Dato un circuito che rappresenta un grafico non orientato bipartito e un vertice cui grado non è divisibile per , trova un altro vertice di questo tipo.u A B 3(AB,E)uAB3

  2. Dato un circuito che rappresenta un grafico diretto e un vertice cui equilibrio di gradi (cioè, out-gradi meno in-gradi) non è divisibile per , trova un altro vertice.u V 3(V,E)uV3

  3. Dato un circuito che calcola una funzione tale che , trova un punto fisso di .f 3 = i d ff:[0,2n)[0,2n)f3=idf

Prova:

1p2 è ovvio, in quanto è sufficiente dirigere i bordi da sinistra a destra.

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 grado ( x A ) = - deg ( x B ) x u2p1 : per prima cosa, costruiamo un grafico bipartito ponderato. Siano e copie di : , . Per ogni bordo originale da , inseriamo un bordo di peso e un bordo di peso . Ciò rende uguale al saldo in gradi di nel grafico originale. Se è la data del vertice di equilibrio , aggiungiamo un vantaggio in più di pesoABVA={xA:xV}B={xB:xV}xy{xA,yB}1{xB,yA}1deg(xA)=deg(xB)xu{ u A , u B } b deg ( u A ) = 2 b 0b0(mod3){uA,uB}b, in modo che e . sarà il nostro vertice scelto.deg ( u B ) = 0 u Adeg(uA)=2b0(mod3)deg(uB)=0uA

Al fine di rendere il grafico un semplice grafico non ponderato non orientato, prima riduciamo tutti i pesi modulo e rilasciamo tutti i bordi del peso . Questo lascia solo i bordi dei pesi e . Quest'ultimo può essere sostituito con gadget adatti. Ad esempio, anziché un bordo di peso , includiamo nuovi vertici , per , con bordi , , , , : questo rende0 1 2 2 { x A , y B } w A i z B i i = 0 , , 3 { x A , y B } { x A , z B i } { w A i , y B } { w A i , z B i } { w A i30122{xA,yB}wiAziBi=0,,3{xA,yB}{xA,ziB}{wiA,yB}{wiA,ziB}deg ( w A i ) = deg ( z B i ) = 3 5 2{wiA,z(i+1)mod4B}deg(wiA)=deg(ziB)=3, E contribuisce per e .x A y B52(mod3)xAyB

n 2 n13p2 : Suppongo che per semplicità sia anche in modo che . Costruiamo un grafico diretto su come segue:nV = [ 0 , 2 n )2n1(mod3)V=[0,2n)

  • bordi e per ogni .3 x + 2 3 x x < 2 n / 3 - 13x+13x3x+23xx<2n/31

  • Se è un'orbita non fissa di , includiamo i bordi da e da . f x 0x 1 x 0x 2x0<x1<x2fx0x1x0x2

Il vertice scelto sarà . La prima clausola contribuisce al saldo o a ciascun vertice . Allo stesso modo, la seconda clausola contribuisce al saldo o ai vertici che non sono punti fissi. Quindi, supponendo che non sia già un punto fisso, è effettivamente un modulo sbilanciato , e qualsiasi altro vertice sbilanciato modulo è un punto fisso di .1 - 2 1u=2n11u - 1 2 - 121(mod3)u1u 3 3 f21(mod3)u33f

A = B = [ 0 , 2 n ) n u A 21p3 : possiamo supporre che con pari, e il dato vertice ha grado .A=B=[0,2n)nuA2(mod3)

Possiamo etichettare in modo efficiente gli spigoli con un vertice come , dove . In questo modo, diventa un sottoinsieme di , che identifichiamo con . Definiamo una funzione su come segue.( y , j ) j < deg ( y ) E [ 0 , 2 n ) × [ 0 , 2 n ) [ 0 , 2 2 n ) f [ 0 , 2 n ) × [ 0 , 2 n )yB(y,j)j<deg(y)E[0,2n)×[0,2n)[0,22n)f[0,2n)×[0,2n)

  • Sul complemento di : per ogni e tale che , facciamo , , . Inoltre, , , per . Questo esclude il punto e punti per ogni cui grado non è divisibile per .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 ) =EyBjdeg(y)3j<2n1f(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,2n1)=(3i+1,2n1)f(3i+1,2n1)=(3i+2,2n1)3 i < 2 n - 1 ( 2 n - 1 , 2 n - 1 ) 3 - ( deg ( y ) mod 3 ) ( y , i ) y B 3f(3i+2,2n1)=(3i,2n1)3i<2n1(2n1,2n1)3(deg(y)mod3)(y,i)yB3

  • Su : per ogni , fissiamo enumerazione dei suoi bordi incidenti , dove . Mettiamo , , per . Questo esclude i punti per ciascun vertice cui grado non è divisibile per .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 +ExA(y0,j0),,(yd1,jd1)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 / 3deg(x)mod3xf(y3i+1,j3i+1)=(y3i+2,j3i+2)f(y3i+2,j3i+2)=(y3i,j3i)i<d/3deg(x)mod33xA3

Poiché , due dei suoi bordi degli incidenti sono stati lasciati fuori; li trasformiamo in un altro ciclo usando come terzo punto. I punti rimanenti vengono lasciati come punti fissi di . Per costruzione, ognuno di essi darà origine a una soluzione di (1).f ( 2 n - 1 , 2 n - 1 ) fdeg(u)2(mod3)f(2n1,2n1)f


1
Entrambe le soluzioni sono corrette, ma ho un problema con le definizioni delle classi. Nella definizione di TFNP, di solito è necessaria almeno una soluzione, mentre tu ne vuoi esattamente una, che sarebbe TFUP, immagino. PPA-3 è originariamente definito con input un grafico bipartito e un dato vertice il cui grado non è 3, e dobbiamo trovare un altro vertice del genere. Il tuo esempio con è ovviamente in questa classe, ma perché è completo per questo? (Questo potrebbe essere ben noto, ma è nuovo per me.)f
domotorp

1
(1) Ho sottolineato in modo molto esplicito che il risultato non si applica ai problemi di ricerca TFNP arbitrari, ma solo alle funzioni. Davvero non so come renderlo ancora più chiaro. (2) Sì, questo equivale alla normale definizione di PPA-3. Questo non dovrebbe essere difficile da mostrare.
Emil Jeřábek 3.0

(1) Mi dispiace, qui la mia confusione era solo linguistica; nel tuo commento originale hai enfatizzato il valore singolo, ma nella tua risposta hai scritto solo le funzioni TFNP, e poi hai aggiunto tra parentesi il "ie" che rende equivalente per quanto ne so. Penso che sarebbe più facile da capire se nella tua risposta scrivessi anche "funzioni TFNP a valore singolo".
domotorp

(2) Questa equivalenza sarebbe molto sorprendente. Con un trucco simile che hai usato in (1), ciò implicherebbe che USAT è in PPA-3, no? Mi aspetto che sia più probabile che il mio problema sia correlato ad alcuni TFNP il cui numero di soluzioni è 1 o 2 mod 3 per ogni (e dobbiamo sapere quale). A proposito, la tua soluzione per (1) implica già che FullFactoring può essere risolto, che era la mia motivazione originale. n
domotorp

Le funzioni sono a valore singolo. Questo è ciò che significa funzione. Proverò a cercare le cose su PPA-3. Tuttavia, non vedo come includerebbe USAT. La costruzione in (1) non produce un poli-tempo con , o almeno non lo vedo: per la scelta ovvia, non si può calcolare senza prima risolvere il problema di ricerca. f 3 = i d f ( 2 m - 1 )ff3=idf(2m1)
Emil Jeřábek 3.0

7

Se potessi generare perfettamente mod OPPURE risolvere SAT (o qualsiasi altro problema NP-completo, per quella materia) allora . In particolare, considera il generatore / risolutore perfetto quando ti viene data una formula SAT .N P = c o N P ϕ3NP=coNPϕ

Sia il numero massimo di bit casuali disegnati dal generatore su input di dimensione . Poiché il generatore viene eseguito in un tempo polinomiale, è polinomiale. Poiché non è divisibile per ci deve essere una sequenza al massimo di lanci di monete che renderanno il generatore una risposta (corretta) per . Pertanto, se non è soddisfacente, esiste una serie di lanci di monete che fanno sì che il generatore dica che non è soddisfacente. Se è soddisfacente, il generatore non pretenderà mai erroneamente chen ( n ) 2 ( n ) 3 ( n ) ϕ ϕ ϕ ϕ ϕ U N S A T N P N P = c o N P(n)n(n)2(n)3(n)ϕϕϕϕϕè insoddisfacente, non importa quali siano le monete. Pertanto, abbiamo dimostrato che il linguaggio di formule insoddisfacenti è in , implicando . UNSATNPNP=coNP


2
In altre parole: tutto ciò che possiamo risolvere in questo modo è riducibile a un problema TFNP. Quindi, piuttosto che NP, potremmo cercare sottoclassi di TFNP.
Emil Jeřábek 3.0

Sì, anche se non sono sicuro che sia necessaria l'unicità, o si può cavarsela con qualcosa di significativamente più debole.
daniello,

1
Unicità di cosa?
Emil Jeřábek 3.0

"L'impostazione è che abbiamo un predicato del tempo polinomiale e un polinomio tale che per ogni di lunghezza , esiste un unico di lunghezza tale che valido. Il compito computazionale è, dato , trovare . " Ho la sensazione che il numero di che non è divisibile per potrebbe essere sufficiente. [Ho appena notato la nuova risposta di p ( n ) x n y m = p ( n ) R ( x , y ) x y y 3R(x,y)p(n)xn ym=p(n)R(x,y)xyy3
domotorp

3
Bene, la prima parte della mia risposta riguarda i problemi di ricerca con una soluzione unica, ma ovviamente non è necessario. Già la seconda parte della mia risposta riguarda problemi di ricerca con potenzialmente molte soluzioni. Quello che intendevo con il mio commento sopra è la semplice osservazione che se è un algoritmo randomizzato a tempo multiplo che genera un elemento uniformemente casuale di o risolve un problema , allora " dato , calcola una stringa di bit casuali che rende risolvere ”è un problema TFNP, e è riducibile ad esso. Nessuna unicità coinvolta. { 0 , 1 , 2 } S x A S SA(x){0,1,2}SxASS
Emil Jeřábek 3.0

4

Quindi, ecco un'estensione dell'argomento di Emil che mostra che i problemi di ricerca in cui il numero di soluzioni è 1, 2 o 4 (non abbiamo bisogno di sapere quale) possono essere risolti nel modo sopra. Lo sto postando come risposta perché è troppo lungo per un commento e spero che qualcuno più intelligente di me possa dimostrare che in realtà il numero di soluzioni può essere qualcosa di non divisibile per 3.

Supponiamo che una stringa casuale sia vicina a una soluzione (cioè a una per la quale vale) se uno di , o tiene. (Per semplicità, supponiamo che ed . Non sono soluzioni) in soluzione di Emil, è stato sufficiente a generare una stringa casuale e l'uscita , tranne che a livello locale in tutto il violino a soluzioni; Non entro nei dettagli, vedo la sua risposta. È sufficiente per noi che se è vicino a una soluzione, allora possiamo uccidere un numero arbitrarioy R ( x , y ) R ( x , r ) R ( x , r + 1 ) R ( x , r + 2 ) y = 0 y = 1 r r mod 3 r mod 3 r r mod 3 mod 3ryR(x,y)R(x,r)R(x,r+1)R(x,r+2)y=0y=1rrmod3rmod3probabilmente emettendo una soluzione in modo che per il resto di la funzione dia un numero perfettamente uniforme .rrmod3mod3

Supponiamo ora che il numero di soluzioni sia 1 o 2 per ogni . Generiamo due stringhe casuali di lunghezza : e . Se almeno uno di questi non è vicino a una soluzione, produciamo . Per semplicità, supponiamo che sia anche in modo da avere uno 0 in più se l'abbiamo appena fatto, e supponiamo anche che se ci sono due soluzioni, sono lontane. Se e sono entrambi vicini alla stessa soluzione, giochiamo in modo da uccidere un 0. Se e sono vicini a soluzioni diverse, allora se , giochiamo in modo da uccidere un 1, e sen r 1 r 2 r 1 + r 2 mod 3 n r 1 r 2 r 1 r 2 r 1 < r 2 r 1 > r 2xnr1r2r1+r2mod3nr1r2r1r2r1<r2r1>r2 , giochiamo in modo da uccidere un 2. In questo modo se esiste una sola soluzione, uccidiamo esattamente uno 0, mentre se ci sono due soluzioni, uccidiamo due 0 e uno 1 e uno 2.

Questo argomento non può essere esteso a 3 soluzioni, ma può essere per 4, e da qui sarò molto impreciso. Genera quattro stringhe casuali, e output meno che non siano tutti vicini a una soluzione. Supponiamo di nuovo che ci sia un ulteriore 0 e che le soluzioni siano sempre lontane. Se tutti gli sono vicini alla stessa soluzione, giochiamo in giro per uccidere uno 0. Se tre degli sono vicini alla stessa soluzione che è più piccola della soluzione a cui è vicino il quarto , giochiamo in giro per uccidere un 1. Se tre dei sono vicini alla stessa soluzione che è più grande della soluzione a cui il quartor 1 + r 2 + r 3 + r 4 mod 3 r i r ir1,r2,r3,r4r1+r2+r3+r4mod3riririr i r iririè vicino, giochiamo in giro per uccidere un 2. Se tutti gli sono vicini a una soluzione diversa, uccidiamo tre 0. La correttezza di una e due soluzioni è simile al caso precedente. Per quattro soluzioni, nota che uccidiamo quattro + tre 0, sei 1 e sei 2.ri

Penso che il ragionamento dell'ultimo paragrafo potrebbe essere esteso a qualsiasi numero limitato di soluzioni che non è divisibile per 3 con qualche algebra. Una domanda più interessante è se esiste un protocollo che funziona per un numero qualsiasi di soluzioni.

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.