É improvável que qualquer problema com P completo tenha um algoritmo paralelo eficiente. Por quê ?
A existência de problemas completos de P é a pista mais importante de que (P∩POLYLOGSPACE)≠P. A questão então é: por que essa conjectura é relevante para a computação paralela? Vamos começar com os recursos usados em uma computação. Para computação seqüencial: tempo e espaço; para computação paralela: tempo e hardware (número de processadores). Existe uma relação? Sim! Espaço seqüencial time tempo paralelo; Tempo seqüencial hardware hardware paralelo. A correspondência entre espaço seqüencial e tempo paralelo parece ser independente do modelo de computação paralela adotado; isso leva à seguinte tese de computação paralela, que não está comprovada.
(Chandra e Stockmeyer) Todo cálculo de uma TM com complexidade espacial pode ser simulado em um modelo de computação paralela no tempo T ( n ) = O ( S ( n ) O ( 1 ) ) e todo cálculo de uma computação paralela modelo com complexidade temporal T ′ ( n ) pode ser simulado por uma TM com complexidade espacial S ′ ( n ) = O ( T ′ ( n ) OS(n)T(n)=O(S(n)O(1))T′(n).S′(n)=O(T′(n)O(1))
A classe de problemas que podem ser resolvidos sequencialmente no espaço polinomial é e o conjunto de problemas que podem ser resolvidos no tempo polinomial é P .Desde P S P A C E pensa-se ser uma classe muito maior de problemas do que P , a tese quantifica a melhoria efetiva possibilitada pelo paralelismo. Uma conseqüência dessa tese é que uma PRAM pode resolver em tempo polinomial ... Infelizmente, não! A tese da computação paralela implica que podemos realmente lidar com problemas pertencentes aoPSPACEPPSPACEPP S P A C ENPPSPACE… Mas isso requer um número exponencial de processadores! Uma troca de tempo e espaço está funcionando: o tempo exponencial no modelo de computação seqüencial é transformado em um número exponencial de processadores no modelo de computação paralela, enquanto o espaço polinomial no modelo de computação seqüencial é transformado em um tempo polinomial no paralelo modelo de computação.
Este trade-off é mais fácil de entender se tentar restringir o tempo paralelo e hardware paralelo: se o modelo de computação paralela tem um número polinomial de processadores, então a classe de problemas que podem ser resolvidos em tempo polinomial paralelo é . Se restringirmos o número de processadores a um polinômio, podemos melhorar o desempenho de uma máquina seqüencial, mas não mais que um fator polinomial. Assim, podemos reduzir o grau do polinômio que representa a complexidade do tempo, mas não podemos usar o paralelismo para reduzir custos exponenciais a custos polinomiais.P
Os problemas resolvidos em paralelo com a complexidade de tempo polinomial são aqueles problemas pertencentes a . A restrição polinomial no número de processadores leva a um modelo de computação paralela equivalente à TM. Há duas considerações práticas importantes: qual número polinomial de processadores é aceitável / acessível? Na prática, o número polinomial de processadores deve ser linear ou próximo. Qual tempo subpolinomial é possível? Verificou-se que quase todos os problemas viáveis em paralelo podem atingir o tempo paralelo polilogarítmico. Em paralelo, uma complexidade de tempo que é logarítmica no comprimento da entrada representa um cálculo paralelo eficiente. Um algoritmo paralelo é considerado eficiente se, dado um número polinomial de processadores, sua complexidade de tempo for polilogarítmica.P
Dado um problema onde e são constantes, a tese da computação paralela implica a existência de um algoritmo paralelo para com complexidade de tempo onde é uma constante. A comparação entre tempo seqüencial e tempo paralelo permite classificar como um problema altamente paralelizável (de uma perspectiva temporal).k h R O ( ( l o g n ) k ′ ) k ′ RR∈TIME_SPACETM(nk,(logn)h)khRO((logn)k′)k′R
Da tese da computação paralela, segue-se que é a classe de problemas altamente paralelizável. não contém problemas completos com relação a reduções de espaço de log; isto implica . Parece queP O L Y L O G S P A C E P O L Y L O G S P A C E ≠ PPOLYLOGSPACEPOLYLOGSPACEPOLYLOGSPACE≠P
- POLYLOGSPACE⊄P
- P⊄POLYLOGSPACE
P P - ( P ∩ P O L Y L O G S P A C E )P∩POLYLOGSPACE contém os problemas que podem ser resolvidos no tempo polinomial usando espaço polilogarítmico. problemas com provavelmente pertencem a .PP−(P∩POLYLOGSPACE)
O ( ( l S g n ) K ) ) O ( f ( n ) ) f N N C ⊂ ( P ∩ P S L Y L S G S P A C E )NC (classe de Nick - chamada em homenagem a Nicholas Pippenger, a primeira a identificá-la e caracterizá-la em 1979) é a classe de problemas que podem ser resolvidos no tempo polilogarítmico (ou seja, com complexidade de tempo com um número polinomial de processadores (Ie, delimitado por para alguma função polinomial onde é o tamanho do problema) A tese da computação paralela implica .O((logn)k))O(f(n))fnNC⊂(P∩POLYLOGSPACE)
Infelizmente, por definição, a também inclui muitos problemas que não são eficientemente paralelizáveis. O exemplo mais infame é a pesquisa binária paralela . O problema é que esse problema tem complexidade de tempo polilogarítmico, mesmo para = 1. Qualquer algoritmo seqüencial que exija no máximo o tempo logarítmico, no pior dos casos, está no independentemente de sua viabilidade paralela!p N CNCpNC
Agora, podemos finalmente explicar por que os problemas com incompletos são os mais difíceis e paralelizáveis. Dado um problema incompleto , é muito improvável a existência de um algoritmo paralelo eficiente: se esse algoritmo paralelo existir com complexidade de tempo , a tese da computação paralela implicará a existência de um algoritmo paralelo eficiente. um algoritmo seqüencial com complexidade de espaço para o mesmo problema. Uma vez que é um problema -completo isto por sua vez implica que cada problema em podem ser resolvidos no espaço poli-log: . Como você já sabe, acreditamos queP 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 S G S P A C E )PPQO((logn)k)O((logn)k′)QPP(P∩POLYLOGSPACE)=P(P∩POLYLOGSPACE)⊂P , mesmo que ainda não possamos provar isso.
Uma observação final, sobre o requisito do processador polinomial. Bem, isso é uma afirmação teórica. Na prática: um requisito de processador que cresça mais rápido que o tamanho do problema pode não ser realmente útil.