Completezza P e calcolo parallelo


23

Di recente ho letto degli algoritmi per il controllo della bisimilarità e ho letto che il problema è P-complete . Inoltre, una conseguenza di ciò è che è improbabile che questo problema, o qualsiasi altro problema P-completo, abbia un algoritmo parallelo efficiente.

Qual è l'intuizione alla base di quest'ultima affermazione?


Questo si riferisce a NC (vedi le risposte) che imho è un modo orribile di formalizzare "parallelamente efficiente".
Raffaello

Risposte:


17

È improbabile che qualsiasi problema completo abbia un algoritmo parallelo efficiente. Perché ?P

L'esistenza di problemi Completa è la più importante indizio che . La domanda allora è: perché questa congettura è rilevante per il calcolo parallelo? Cominciamo con le risorse utilizzate in un calcolo. Per il calcolo sequenziale: tempo e spazio; per il calcolo parallelo: tempo e hardware (numero di processori). C'è una relazione? Sì! Spazio sequenziale ↔ tempo parallelo; Tempo sequenziale ↔ hardware parallelo. La corrispondenza tra spazio sequenziale e tempo parallelo sembra essere indipendente dal modello di calcolo parallelo adottato; questo porta alla seguente tesi di calcolo parallela non dimostrata.P(PPOLYLOsolSPUNCE)P

(Chandra e Stockmeyer) Ogni calcolo di una TM con complessità spaziale può essere simulato in un modello di calcolo parallelo nel tempo e ogni calcolo di un modello di calcolo parallelo con complessità temporale può essere simulato da una TM con complessità spaziale .T ( n ) = O ( S ( n ) O ( 1 ) ) T ( n ) S ( n ) = O ( T ( n ) O ( 1 ) )S(n)T(n)=O(S(n)O(1))T'(n)S'(n)=O(T'(n)O(1))

La classe di problemi risolvibili in sequenza nello spazio polinomiale è e l'insieme di problemi risolvibili in tempo polinomiale è Poiché è considerato una classe di problemi molto più ampia di , la tesi quantifica l'effettivo miglioramento reso possibile dal parallelismo. Una conseguenza di questa tesi è che una PRAM può risolvere completi in tempo polinomiale ... Purtroppo no! La tesi di calcolo parallela implica che possiamo effettivamente affrontare i problemi appartenenti aP P S P A C E P N P P S P A C EPSPUNCEPPSPUNCEPNPPSPUNCE... ma questo richiede un numero esponenziale di processori! Sta funzionando un compromesso spazio-tempo: il tempo esponenziale sul modello di calcolo sequenziale viene trasformato in un numero esponenziale di processori sul modello di calcolo parallelo, mentre lo spazio polinomiale sul modello di calcolo sequenziale viene trasformato in un tempo polinomiale sul parallelo modello di calcolo.

Questo trade-off è più facile da capire se cerchiamo di limitare sia il tempo parallelo e hardware in parallelo: se il modello di calcolo parallelo ha un numero polinomiale di processori, allora la classe di problemi risolvibili in tempo polinomiale parallelo è . Se limitiamo il numero di processori a un polinomio, possiamo migliorare le prestazioni di una macchina sequenziale, ma non più di un fattore polinomiale. Quindi possiamo ridurre il grado del polinomio che rappresenta la complessità temporale, ma non siamo in grado di usare il parallelismo per ridurre i costi esponenziali ai costi polinomiali.P

I problemi risolti in parallelo con complessità tempo polinomiale sono quei problemi appartenenti a . Il vincolo polinomiale sul numero di processori porta a un modello di calcolo parallelo equivalente a TM. Vi sono due importanti considerazioni pratiche: quale numero polinomiale di processori è accettabile / conveniente? In pratica, il numero polinomiale di processori dovrebbe essere lineare o vicino. Quale tempo subpolinomiale è raggiungibile? Si è scoperto che quasi tutti i problemi possibili altamente paralleli possono raggiungere tempi paralleli pollogaritmici. Parallelamente, una complessità temporale logaritmica nella lunghezza dell'input rappresenta un calcolo parallelo efficiente. Un algoritmo parallelo è considerato efficace se, dato un numero polinomiale di processori, la sua complessità temporale è pollogaritmica.P

Dato un problema cui e sono costanti, la tesi di calcolo parallela implica l'esistenza di un algoritmo parallelo per con complessità temporale dove è una costante. Il confronto tra tempo sequenziale e tempo parallelo consente di classificare come un problema altamente parallelizzabile (dal punto di vista temporale).k h R O ( ( l o g n ) k ) k RRTioME_SPUNCETM(nK,(logn)h)KhRO((logn)K')K'R

Dalla tesi di calcolo parallela, ne consegue che è la classe di problemi altamente parallelizzabili. non contiene problemi completi per quanto riguarda le riduzioni dello spazio di registro; questo implica . Sembra cheP O L Y L O G S P A C E P O L Y L O G S P A C E PPOLYLOsolSPUNCEPOLYLOsolSPUNCEPOLYLOsolSPUNCEP

  1. POLYLOsolSPUNCEP
  2. PPOLYLOsolSPUNCE

P P - ( P P O L Y L O G S P A C E )PPOLYLOsolSPUNCE contiene i problemi che possono essere risolti nel tempo polinomiale usando lo spazio pollogaritmico. problemi completi probabilmente appartengono a .PP-(PPOLYLOsolSPUNCE)

O ( ( l o g n ) k ) ) O ( f ( n ) ) f n N C ( P P O L Y L O G S P A C E )NC (la classe di Nick - così chiamata in onore di Nicholas Pippenger, la prima a identificarla e caratterizzarla nel 1979) è la classe di problemi che possono essere risolti nel tempo pollogaritmico (cioè con complessità temporale con un numero polinomiale di processori (Ie, limitato da per alcune funzioni polinomiali dove è la dimensione del problema) La tesi di calcolo parallela implica .O((logn)K))O(f(n))fnNC(PPOLYLOsolSPUNCE)

Tuttavia, sfortunatamente per definizione include anche molti problemi che non sono parallelamente efficienti. L'esempio più famigerato è la ricerca binaria parallela . Il problema è che questo problema ha una complessità temporale pollogaritmica anche per = 1. Qualsiasi algoritmo sequenziale che richiede al massimo tempo logaritmico nel peggiore dei casi è in indipendentemente dalla sua fattibilità parallela!p N CNCpNC

Ora possiamo finalmente spiegare perché i problemi completi di sono i problemi parallelizzabili più difficili. Dato un problema incompleto , è molto improbabile l'esistenza di un algoritmo parallelo efficiente: se un tale algoritmo parallelo esistesse con complessità temporale , allora la tesi del calcolo parallelo implicherà l'esistenza di un algoritmo sequenziale con complessità spaziale per lo stesso problema. Poiché è un problema -complete questo a sua volta implica che ogni problema può essere risolto in spazio poli-log: . Come già sapete, invece crediamo cheP Q O ( ( l o g n ) k ) O ( ( l o g n ) k ) Q P P ( P P O L Y L O G S P A C E ) = P ( P P O L Y L O G S P A C E )PPQO((logn)K)O((logn)K')QPP(PPOLYLOsolSPUNCE)=P(PPOLYLOsolSPUNCE)P , anche se non siamo ancora in grado di dimostrarlo.

Un'ultima osservazione, sul requisito del processore polinomiale. Bene, questa è un'affermazione teorica. In pratica: un requisito del processore che cresce più velocemente della dimensione del problema potrebbe non essere davvero utile.


10

Perché "parallelismo efficiente" rientra in ("Classe di Nick" di problemi risolvibili in tempi pollogaritmici con un numero polinomiale di processori), e si ritiene ampiamente che . Quindi non si ritiene che qualsiasi abbia un algoritmo parallelo efficiente (poiché ciò implicherebbe che ).NCN CP P - c o m p l e t e P = N CNCPP-completeP=NC

Ovviamente tutto ciò dipende dalla congettura che , dato che sai che è un problema aperto che non è nel primo livello di , cioè non sappiamo se .P N C N C 1PNCPPNCNC1P

Ancora di più, non sappiamo nemmeno se non puoi risolvere i problemi in in , cioè circuiti booleani a profondità costante (= tempo parallelo costante) con porte .A C 0 [ 6 ]PUNC0[6]mod6

Per ulteriori informazioni, dai un'occhiata al seguente libro:

Raymond Greenlaw, H. James Hoover, Walter L. Ruzzo, " Limiti al calcolo parallelo: teoria della completezza P ", 1995.


NC include anche molti problemi che non sono parallelamente efficienti. Vedi la mia risposta per i dettagli.
Massimo Cafaro,

Potresti voler dire esplicitamente che "Se qualche è in allora ". N C N C = PP-completeNCNC=P
Alex ten Brink,

1
@unforgiven, ci sono varie opinioni su quale classe catturi correttamente algoritmi "paralleli efficienti", per questo motivo ho usato una classe che è considerata un limite superiore. P Ho aggiunto un riferimento alla mia risposta.
Kaveh,

1
@Kaveh, sono d'accordo con te. La maggior parte delle persone ci pensa esattamente in questi termini. Ecco perché volevo offrire un punto di vista leggermente diverso, basato sulla tesi di calcolo parallela. Il riferimento che hai fornito è eccellente e rappresenta, di fatto, il miglior trattamento dell'argomento che abbia mai letto.
Massimo Cafaro,

6

La risposta di Kaveh copre la solita definizione di "parallelismo", che è NC. La domanda se P NC è una delle domande più difficili nella teoria della complessità (e in qualche modo altrettanto rilevante della domanda P NP).<<<

L'intuizione è che alcuni problemi in P, come la programmazione lineare o l'ordine DFS, sembrano avere molte dipendenze che costringono un lungo "percorso critico" che non può essere parallelizzato. Questa non è una prova più di quanto non sia determinante il non determinismo, ma questa è l'idea di base.

Modifica: per chiarire i commenti, il punto di questa risposta è di dire perché (alcune) persone non pensano che P e NC siano uguali. Proprio come con P e NP, nessuno sa come dimostrare se i due sono diversi, ma c'è qualcosa nei difficili problemi che fa pensare ad (alcuni) scienziati informatici.

Un altro aspetto a parte è che NC è "tempo di polilogo su molti processori polinomiali", che richiede una velocità molto drammatica ma che offre molti processori. Pertanto potrebbe non corrispondere a una nozione pratica di parallelizzabilità.

In particolare, se pensi che P NP, inizierai subito a esaminare gli algoritmi di euristica e approssimazione per problemi NP-completi. D'altra parte, anche se pensi che NC sia più piccolo di P, potresti essere in grado di ottenere accelerazioni non banali dai tipi di parallelismo disponibili dai computer di oggi.<


L'intuizione che stai dando non è corretta, il fatto che uno non possa trasformare un particolare algoritmo in un efficiente parallelo non significa che il problema non possa essere risolto in un tempo parallelo efficiente. Qualcuno avrebbe potuto dire qualcosa di simile da dire in primo luogo non è in perché devi testare molti numeri e sembra che molti di loro non siano correlati, ma questo è falso come sappiamo e la primalità è in . PPP
Kaveh,

Ma il punto di Louis dovrebbe essere visto come intuizione e non è del tutto sbagliato. Ciò che è problematico è che la completezza di P di DFS è molto fragile - hai bisogno di lessici DFS ed è anche in RNC ecc. Ecc.
Suresh

@Suresh: Sì. Voglio dire, non ho idea di come dimostrare quel lex. l'ordine DFS non può essere simulato deterministicamente in un modo molto migliore del semplice farlo, ma le persone non "si sentono" come se fosse possibile senza casualità. (Se è importante, la mia "religione" è che molta casualità ha un certo potere.)
Louis

@Kaveh: questo "percorso critico" (chiamato anche "profondità di lavoro") non è una caratteristica dell'algoritmo ma del problema; ecco perché è difficile da mostrare. È la sequenza più lunga di "banchi di lavoro" che sono stati studiati in sequenza (da qualsiasi algoritmo).
Raffaello

@Raphael, dato un linguaggio non esiste alcun motivo noto per cui un algoritmo che lo risolva dovrebbe seguire una particolare sequenza di passaggi, se si potesse dimostrare che implicherebbe un limite inferiore che non abbiamo. E questo è uno dei motivi per cui è così difficile dimostrare che i calcoli inferiori sono così difficili, non si può presumere nulla di come sarà il calcolo di un algoritmo che risolve il problema. Questo è il mio punto.
Kaveh,

3

Prestare molta attenzione a chi utilizza "algoritmi paralleli efficienti" per indicare cosa, esattamente.

Le risposte più vecchie spiegano la prospettiva della teoria della complessità. Lì, "efficiente" di solito significa qualcosa di vago come "runtime nel tempo con processori ". Si noti che il numero di processori può dipendere dalle dimensioni dell'input!O ( g ( n ) )O(f(n))O(g(n))

In particolare, la classe spesso denominata NC è la

insieme di problemi di decisione decidibili in tempo pollogaritmico su un computer parallelo con un numero polinomiale di processori.

Ciò non ha nulla a che fare con l'esistenza di algoritmi paralleli per questi problemi che sono efficienti in termini più pratici¹:

  • Se si dispone di un algoritmo NC non si ottengono informazioni su come risolvere il problema (in modo efficiente) su qualsiasi macchina con un numero fisso di processori.
  • Solo perché non esiste un algoritmo NC per un problema non significa che non ce ne sia uno "reale"; proprio perché non possiamo suddividere il problema in polinomialmente molti pezzi molto piccoli non significa che non si può rompere in costantemente molti quelli sufficientemente piccoli, come cresce.n

    Ad esempio, su molti processori costantemente con memoria condivisa, l'analisi CYK può essere eseguita in parallelo con uno speedup asintoticamente ottimale (vedere la mia tesi di laurea , anche se l'analisi senza contesto è P-completa.

Descrivere l'efficienza su macchine con molti processori finiti in modo utile richiede un'analisi più precisa di poiché l'accelerazione è limitata da una costante finita, il numero di processori². Raramente lo trovi nella teoria della complessità. Pertanto, se vuoi conoscere algoritmi paralleli che sono utili nel mondo reale, consiglierei di cercare altrove.O(...)


  1. Consenti a la funzione di runtime di un algoritmo parallelo. Potresti voler chiamare un algoritmo "efficiente" se , o se per la funzione di runtime di un buon algoritmo sequenziale. Lo propongo in modo più rigoroso nella mia tesi di laurea , basandosi sulla letteratura ivi citata. T 1 ( n ) / T p ( n ) p T 1 ( n ) T ( n ) TTp:NR0T1(n)/Tp(n)pT1(n)T(n)T

  2. Questo non è sempre vero; gerarchia di memoria e hardware possono consentire una maggiore velocità, almeno a volte. Ci sarà comunque un altro limite costante.


0

Supponiamo che qualcuno abbia scoperto una prova che P = NC. Quali sarebbero le conseguenze per la ricerca informatica e le applicazioni pratiche in questo caso?

Quella domanda è stata contrassegnata come duplicata di questa domanda, quindi suppongo che sia davvero un duplicato e fornisca una possibile risposta.

Sappiamo che NC! = PSPACE, quindi una prova che P = NC proverebbe anche P! = PSPACE. Potrebbe non sembrare un grosso problema, ma è una conseguenza per la ricerca informatica.

Perché conosciamo NC! = PSPACE? Bene, conosciamo NC k ⊆ DSPACE (O (log k )), quindi possiamo semplicemente usare il teorema della gerarchia spaziale.


In termini di applicazioni pratiche, le applicazioni relative alla programmazione lineare (e convessa) potrebbero essere così seducenti che potrebbero essere sviluppate e vendute architetture parallele personalizzate insieme a compilatori per la traduzione efficiente di formulazioni di programmazione lineare in quell'hardware.

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.