False credenze comuni in informatica teorica


62

MODIFICA AL 10/12/08:

Proverò a modificare la domanda in modo che possa interessare più persone a condividere le loro opinioni. ABBIAMO BISOGNO dei tuoi contributi!

Questo post è ispirato a quello di MO: esempi di false credenze comuni in matematica . Le grandi liste a volte generano un numero enorme di risposte le cui qualità sono difficili da controllare, ma dopo il successo del relativo post su MO sono convinto che sarebbe utile elencare un gruppo di false credenze comuni in TCS.

Tuttavia, poiché il sito è progettato per rispondere a domande a livello di ricerca, esempi come sta per tempo non polinomiale non dovrebbero essere nell'elenco. Nel frattempo, vogliamo alcuni esempi che potrebbero non essere difficili, ma senza pensare nei dettagli sembra anche ragionevole. Vogliamo che gli esempi siano educativi e di solito compaiono quando si studia la materia per la prima volta.NP

Quali sono alcuni esempi (non banali) di false credenze comuni nell'informatica teorica, che appaiono alle persone che studiano in questo settore?

Per essere precisi, vogliamo esempi diversi da risultati sorprendenti e risultati controintuitivi in TCS; questo tipo di risultati rende le persone difficili da credere, ma sono VERE. Qui stiamo chiedendo esempi sorprendenti che le persone possano pensare che sia vero a prima vista, ma dopo un pensiero più profondo la colpa interiore viene scoperta.


Come esempio di risposte adeguate all'elenco, questo viene dal campo degli algoritmi e della teoria dei grafi:

Per un grafico nodo , un separatore -edge è un sottoinsieme di spigoli di dimensione , in cui i nodi di possono essere partizionati in due parti non adiacenti, ciascuna composta al massimo da nodi . Abbiamo il seguente "lemma":G k S k G S 3 n / 4nGkSkGS3n/4

Un albero ha un separatore a 1 bordo.

Giusto?


Il post è stato contrassegnato per essere richiesto come CW.
Hsien-Chih Chang 張顯 之

Risposte:


59

Questo è comune alla geometria computazionale, ma endemico altrove: gli algoritmi per la RAM reale possono essere trasferiti nella RAM intera (per le restrizioni intere del problema) senza perdita di efficienza. Un esempio canonico è l'affermazione "L'eliminazione gaussiana viene eseguita nel tempo ". In effetti, gli ordini di eliminazione negligente possono produrre numeri interi con esponenzialmente molti bit .O(n3)

Ancora peggio, ma purtroppo comune: gli algoritmi per la RAM reale con funzione floor possono essere trasferiti nella RAM intera senza perdita di efficienza. In effetti, un piano RAM reale + può risolvere qualsiasi problema in PSPACE o in #P in un numero polinomiale di passaggi .


5
L'idea sbagliata dell'eliminazione gaussiana è molto diffusa. Forse parte del problema è che spesso lavoriamo su campi limitati e, poiché non vi è alcun problema, ci dimentichiamo.
slimton,

"Dopo aver fatto l'eliminazione gaussiana intera, sappiamo come trovare una soluzione."
Albert Hendriks,

40

Ho appena scoperto un altro mito, che è contribuito dalla risposta di @ XXYYXX a questo post :

  • Un problema X è -hard se si verifica una riduzione del tempo polinomiale (o spazio di log) da tutti i problemi di N P a X.NPNP
  • Supponiamo che l'ipotesi del tempo esponenziale, 3-SAT non abbia un algoritmo temporale sub-esponenziale. Inoltre, 3-SAT è in .NP
  • Quindi nessun problema con -hard X ha algoritmi temporali sub-esponenziali. Altrimenti un algoritmo di tempo sub-esponenziale per X + una riduzione del tempo polinomiale = un algoritmo di tempo sub-esponenziale per 3-SAT.NP

Ma abbiamo algoritmi temporali sub-esponenziali per alcuni problemi NP-difficili.


Ho avuto la stessa impressione.
Mohammad Al-Turkistany,

Cosa ci dice questo dell'ipotesi del tempo esponenziale? O mi sono perso qualche difetto in questo ragionamento?
Mikhail Glushenkov,

2
C'è un difetto al punto 3. Questo è esattamente ciò che ho frainteso da molto tempo :)
Hsien-Chih Chang 張顯 之

Non sono sicuro se non riesco a trovare l'errore. È che dal momento che , la riduzione non deve essere necessariamente polinomiale ma può essere esponenziale nel tempo, poiché entrambi i problemi sarebbero in ESTREMO (a causa dell'ETH?)PNP
chazisop

43
Le riduzioni del tempo polinomiale possono modificare le dimensioni di input di un importo polinomiale. Quindi se riduci un'istanza di Q di dimensione n a un'istanza di P di dimensione n quadrata, un algoritmo da 2 a root n per P ti dà solo un algoritmo da 2 a n per Q.
Russell Impagliazzo,

29

Una falsa credenza che è stata resa popolare quest'anno e viene raccontata molte volte quando si cerca di spiegare l'intero problema , poiché P viene spiegato come efficiente:PNPP

"Se , allora possiamo risolvere un gran numero di problemi in modo efficiente. Altrimenti, non possiamo"P=NP

Se può essere risolto in O ( n g o o g o l p l e x ) allora P = N P . Non penso che nessuno penserebbe nemmeno di eseguire questo algoritmo.3SATO(ngoogolplex)P=NP

Se , possiamo ancora avere un algoritmo per T S P che gira in n log ( log n ) , che è più piccolo di n 5 per n 2 32 . La maggior parte delle persone sarebbe più che felice di poter risolvere T S P per 4 miliardi di città così velocemente.PNPTSPnlog(logn)n5n232TSP



6
"Per ogni algoritmo del tempo polinomiale che hai, esiste un algoritmo esponenziale che preferirei eseguire" - Alan Perlis, tramite Lost Letter di Gödel e P = NP .
Pål GD,

24

Questa è davvero una falsa credenza in matematica, ma emerge spesso in contesti TCS: se le variabili casuali e Y sono indipendenti, quindi condizionate su Z rimangono indipendenti. (falso anche se Z è indipendente da X e Y. )XYZZXY


2
Hai un semplice esempio preferito di questo che consiglieresti, per aiutare le persone a riconoscere rapidamente perché è falso?
DW,

21
Di ' e Y sono bit indipendenti e uniformemente casuali e Z = X + Y (mod 2). Quindi, Z è indipendente da X ed è indipendente da Y , ma condizionato da Z , sapendo che X rivela Y e viceversa. XYZ=X+YZXYZXY
MCH

22

Calcolo distribuito = calcolo distribuito ad alte prestazioni (cluster, griglie, cloud, seti @ home, ...).

Algoritmi distribuiti = algoritmi per questi sistemi.


Spoiler: se questo non suona molto come una "falsa credenza", ti suggerisco di dare un'occhiata a conferenze come PODC e DISC e vedere che tipo di lavoro le persone svolgono realmente quando studiano aspetti teorici dell'informatica distribuita.

Una tipica impostazione del problema è la seguente: abbiamo un ciclo con nodi; i nodi sono etichettati con identificatori univoci dal set { 1 , 2 , . . . , poli ( n ) } ; i nodi sono deterministici e si scambiano messaggi in modo sincrono. Quanti round di comunicazione sincrona (in funzione di n ) sono necessari per trovare un set indipendente massimo? Quanti round sono necessari per trovare un set indipendente con almeno n / 1000 nodi? [La risposta ad entrambe queste domande è esattamente Θ ( registro n{1,2,...,poly(n)}nn/1000 , scoperto nel 1986-2008.]Θ(logn)

Cioè, le persone spesso studiano problemi che sono completamente banali dal punto di vista degli algoritmi centralizzati e hanno ben poco in comune con qualsiasi tipo di supercalcolo o elaborazione ad alte prestazioni. Il punto certamente non sta accelerando il calcolo centralizzato usando più processori o qualcosa del genere.

L'obiettivo è quello di costruire una teoria della complessità classificando i problemi dei grafici fondamentali in base alla loro complessità computazionale (ad esempio, quanti turni sincroni sono necessari; quanti bit vengono trasmessi). Problemi come insiemi indipendenti in cicli possono sembrare inutili, ma svolgono un ruolo simile al 3-SAT nel calcolo centralizzato: un punto di partenza molto utile nelle riduzioni. Per applicazioni concrete del mondo reale, ha più senso dare un'occhiata a dispositivi come router e switch nelle reti di comunicazione, anziché ai computer nelle reti e nei cluster.

Questa falsa credenza non è del tutto innocua. In realtà rende abbastanza difficile vendere il lavoro relativo alla teoria degli algoritmi distribuiti al pubblico TCS generale. Ho ricevuto relazioni esilaranti da arbitri da conferenze TCS ...


1
Per quanto riguarda l'informatica, non direi che questa non è una falsa credenza, ma piuttosto obsoleta. Oltre ai processori multicore, il calcolo distribuito su piccola scala è stato un caso banale di quello ad alte prestazioni (almeno da quello che so). Con i core che sono "computer" ma a una distanza così piccola, senza rete tra loro, sorgono nuovi problemi. Concordo tuttavia che gli algoritmi distribuiti dovrebbero essere utilizzati per nodi m> = 2.
Chazisop,

Quindi stai solo dicendo che le persone confondono il calcolo parallelo con il calcolo distribuito?
Sasho Nikolov,

Penso che la tua affermazione non si applichi agli informatici teorici, sebbene possa applicarsi ai professionisti senza un background teorico. Come sottolineato da Sasho Nikolov, le persone che lavorano sul campo conoscono molto bene le differenze tra elaborazione parallela e distribuita. Il problema derivante da cluster, griglie, nuvole, ecc. Dipende strettamente dal contesto. Ad esempio, non assumiamo errori quando si utilizza un cluster o un cloud, ma lo facciamo per le griglie. E così via.
Massimo Cafaro,

Inoltre, per questa comunità scientifica, gli algoritmi distribuiti sono algoritmi per problemi come quelli che si trovano comunemente nei libri di Nancy Lynch, Hagit Attiya e Jennifer Welch e Gerard Tel per citarne alcuni. E, come tali, questi algoritmi sono progettati per uno specifico modello teorico distribuito distribuito e analizzati come richiesto in termini di risorse utilizzate (complessità temporale, complessità dei messaggi, complessità dei bit, numero di round ecc.).
Massimo Cafaro,

@MassimoCafaro: Ovviamente le persone che lavorano nel campo del calcolo distribuito sanno cosa è il calcolo distribuito. Tuttavia, la mia esperienza è che gli informatici teorici in generale non sanno cosa sia il calcolo distribuito.
Jukka Suomela,

20

Elementare, ma comune quando abbiamo a che fare con notazioni asintotiche. Considerare la seguente "prova" per la relazione di ricorrenza e T ( 1 ) = 1 :T(n)=2T(n/2)+O(nlogn)T(1)=1

Dimostriamo per induzione. Per il caso base vale per . Supponiamo che la relazione sia valida per tutti i numeri più piccoli di n ,n=1n

T(n)=2T(n/2)+O(nlogn)=2O(n/2logn/2)+O(nlogn)=O(nlogn/2)+O(nlogn)=O(nlogn)

QED (è?)


16
Ho visto gli studenti fare questo. Questa è una delle insidie ​​dell'abuso della notazione e della scrittura di piuttosto che f ( x ) O ( g ( x ) ) . f(x)=O(g(x))f(x)O(g(x))
Aaron Roth,

Ho visto anche ricercatori di informatica teorica fare varianti di questo errore;)
Jeremy,

12

Fino a poco tempo fa pensavo che ogni macchina Turing multi-nastro che gira nel tempo T ( n ) può essere simulata da una macchina Turing ignifuga a due nastri M o nel tempo O ( T ( n ) log T ( n ) ) nel seguente senso:MT(n)MoO(T(n)logT(n))

  • il movimento delle teste di dipende solo dalla lunghezza di ingressoMo
  • per tutti gli ingressi della stessa lunghezza, ferma contemporaneamente (che è Θ ( T ( n ) log T ( n ) ) ).MoΘ(T(n)logT(n))

(vedi questo post di rjlipton per esempio)

Bene, la seconda linea non vale in generale, se . Abbiamo bisogno di una funzione completamente costruibile nel tempo dell'ordine Θ ( T ( n ) log T ( n ) ) (vedi questa domanda per la definizione di funzioni (completamente) costruibile nel tempo) o dobbiamo consentire a M o di funzionare per un tempo infinito (permettiamo M o da eseguire dopo aver raggiunto lo stato accettare inEXPTIMENEXPTIMEΘ(T(n)logT(n))MoMo tempo). Il problema è che per T : NN costruibile nel temponon siamo in grado di "misurare" Θ ( T ( n ) log T ( n ) ) passi nel tempo O ( T ( n ) log T ( n ) ) a meno che E X P - T I M EO(T(n)logT(n))T:NNΘ(T(n)logT(n))O(T(n)logT(n)) .EXPTIME=NEXPTIME

La dimostrazione di questa affermazione è molto simile alla dimostrazione nella risposta di Q1 qui , quindi daremo solo le idee chiave.

Accetta un problema arbitrario , L { 0 , 1 } . Quindi esiste un k N , st L può essere risolto da un NDTM M in passi di 2 n k . Possiamo supporre che ad ogni passo M entri al massimo in due diversi stati per semplicità. Quindi definire la funzione f ( n ) = { ( 8 n + 2LNEXPTIMEL{0,1}kNLM2nkM Si può dimostrare chefè costruibile nel tempo.

f(n)={(8n+2)2if (first logn+1k bits of bin(n))L8n+1else
f

Supponiamo ora che qualche ignara macchina di Turing funzioni nel tempo . Quindi g è completamente costruibile nel tempo.g(n)=Θ(f(n)logf(n))g

Ora il seguente algoritmo risolve :L

  • sull'input , sia n il numero con rappresentazione binaria x 00 0 ( | x | k - 1 zeri). Ne segue che x = ( prima k xnx000|x|k1.x=(first logn+1k bits of bin(n))
  • calcola nel tempo g ( n ) . Se g ( n ) è abbastanza grande, quindi x L , altrimenti x L . (questo funziona solo per abbastanza grande n . Quanto grande dipende da g .)g(n)g(n)g(n)xLxLng

Questo algoritmo viene eseguito in tempo esponenziale e risolve . Poiché L N E X P - T I M E arbitraria, e X P - T I M E = N E X P - T I M E .LLNEXPTIMEEXPTIME=NEXPTIME


11

Ecco i miei due centesimi:

La classe di complessità , lo spazio di log randomizzato , è definita come un analogo di R P , ovvero i problemi di decisione che possono essere risolti da una macchina non deterministica dello spazio di log M , doveRLRPM

  • per esempio positivo, accetta con probabilità almeno 1 / 2 ;M1/2
  • per un'istanza negativa, rifiuta con probabilità 1 .M1

Inoltre, la macchina si ferma sempre.

La definizione è corretta? (No)


9

Siano e g funzioni completamente costruibili nel tempo (es. Esiste un DTM che sull'ingresso 1 n esegue esattamente i passaggi f ( n ) (resp. G ( n ) )) e che f ( n + 1 ) = o ( g ( n ) ) .fg1nf(n)g(n)f(n+1)=o(g(n))

La gerarchia temporale non deterministica è più volte (superficialmente) dichiarata come . (prova: chiedi a Google una gerarchia temporale non deterministica).NTIME(f(n))NTIME(g(n))

Bene, la gerarchia in realtà dà solo . Per esempio avremmo bisogno di f ( n ) g ( n ) per N T I M E ( f ( n ) ) N T I M E ( g (NTIME(g(n))NTIME(f(n))f(n)g(n) . Per le funzioni f , g tale che f ( n + 1 ) = o ( g ( n ) ) , f ( n ) g ( n ) è molto comune. Ma in senso stretto, la gerarchia temporale non deterministica è spesso dichiarata superficialmente.NTIME(f(n))NTIME(g(n))f,gf(n+1)=o(g(n))f(n)g(n)

NTIME(f(n))NTIME(g(n))f,gf(n+1)=o(g(n))

f(n)={n+1n odd(n+1)3else
g(n)=f(n+1)2fgf(n+1)=o(g(n))LNTIME((n+1)3)NTIME((n+1)2){0,1}
L1={0x10x20xn;  x1x2xnL}.

L1NTIME(f(n))L1NTIME(g(n))LNTIME((n+1)2)L1NTIME(f(n))NTIME(g(n))


9

NPUPNPRPUPNPRUPNP=UPNPRPPromiseUP

UPLxLUSUSUPcoNPUS


cosa significa "la proprietà semantica che in tutte le istanze"?
T ....

1
@ 777: proprietà semantica significa: non può essere verificato direttamente dalla struttura (aka sintassi) dell'algoritmo TM / stesso. La frase ha più senso se la si continua oltre la virgola, ovvero: la proprietà che: "in tutti i casi c'è al massimo un testimone"
Joshua Grochow,

-2

μX{X=μ}


9
Questa è certamente una falsa credenza comune tra gli studenti di informatica teorica, ma non è così comune tra i ricercatori di informatica teorica .
Jeffε
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.