Recentemente, eu estava lendo sobre algoritmos para verificar a bisimilaridade e li que o problema é P-completo . Além disso, uma consequência disso é que é improvável que esse problema, ou qualquer problema com P-complete, possua algoritmos paralelos eficientes.
Qual é a intuição por trás dessa última afirmação?
complexity-theory
parallel-computing
Dave Clarke
fonte
fonte
Respostas:
É improvável que qualquer problema comP completo tenha um algoritmo paralelo eficiente. Por quê ?
A existência de problemas completos deP é 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 aoPSPACE P PSPACE P P S P A C ENP PSPACE … 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) k h R O((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 ≠ PPOLYLOGSPACE POLYLOGSPACE POLYLOGSPACE≠P
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 .P P−(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)) f n NC⊂(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 CNC p NC
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 )P P Q O((logn)k) O((logn)k′) Q P P (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.
fonte
Como "paralelo eficiente" se enquadra em ("Classe de Nick" de problemas decidíveis em tempo polilogarítmico com um número polinomial de processadores), e acredita -se amplamente que . Portanto, não se acredita que qualquer problema com tenha um algoritmo paralelo eficiente (pois isso implicaria que ).NC N C ≠ PNC≠P P = N CP-complete P=NC
É claro que tudo isso depende da hipótese de que , como você sabe, é um problema em aberto que não está no primeiro nível de , ou seja, não sabemos se .P N C N C 1 ≠ PNC≠P P NC NC1≠P
Ainda mais, nem sabemos se você não consegue resolver problemas em em , isto é, profundidade constante (= tempo paralelo constante) em circuitos booleanos com portas .A C 0 [ 6 ]P AC0[6] mod6
Para mais informações, consulte o seguinte livro:
Raymond Greenlaw, H. James Hoover, Walter L. Ruzzo, " Limites à computação paralela: Teoria da Completude-P ", 1995.
fonte
A resposta de Kaveh cobre a definição usual de "paralelismo", que é NC. A questão de se P NC é uma das questões mais difíceis da teoria da complexidade (e de certa forma tão relevante quanto a questão P NP).<< <
A intuição por trás disso é que alguns problemas em P, como programação linear ou ordem DFS, parecem ter muitas dependências que forçam um longo "caminho crítico" que não pode ser paralelo. Esta não é uma prova mais do que o não-determinismo parece ser muito poderoso, mas esta é a idéia básica.
Editar: para esclarecer os comentários, o objetivo desta resposta é dizer por que (algumas) as pessoas não pensam que P e NC são iguais. Assim como P e NP, ninguém sabe como provar se os dois são diferentes, mas há algo sobre os problemas difíceis que fazem (alguns) cientistas da computação pensarem que são.
Outro aspecto é que o NC é "tempo polilog em muitos processadores polinomialmente", que está pedindo uma aceleração muito dramática, mas dando muitos processadores. Portanto, pode não se encaixar em uma noção prática de paralelizável.
Em particular, se você acha que P NP, começará a examinar heurísticos e algoritmos de aproximação imediatamente para problemas completos de NP. Por outro lado, mesmo que você ache que o NC é menor que P, poderá obter acelerações não triviais dos tipos de paralelismo disponíveis nos computadores atuais.<
fonte
Tenha muito cuidado com quem usa "algoritmos paralelos eficientes" para dizer exatamente o que.
As respostas mais antigas explicam a perspectiva da teoria da complexidade. Lá, "eficiente" geralmente significa algo vago como "tempo de execução em tempo com processadores ". Observe que o número de processadores pode depender do tamanho da entrada!O ( g ( n ) )O(f(n)) O(g(n))
Em particular, a classe freqüentemente denominada NC é a
Isso não tem nada a ver com a existência de algoritmos paralelos para esses problemas, que são eficientes em termos mais práticos¹:
Só porque não há algoritmo NC para um problema, não significa que não exista um "real"; só porque não podemos separar o problema em pedaços muito pequenos, polinomialmente, não significa que não possamos quebrá-lo constantemente em pedaços suficientemente menores, à medida que cresce.n
Por exemplo, em constantemente muitos processadores com memória compartilhada, a análise de CYK pode ser feita em paralelo com a aceleração assintoticamente ideal (consulte minha tese de mestrado , embora a análise sem contexto seja P-completa.
A descrição da eficiência em máquinas com muitos processadores finitos de uma maneira útil requer uma análise mais precisa do que pois a aceleração é limitada por uma constante finita, o número de processadores². Você raramente encontra isso na teoria da complexidade. Portanto, se você quiser aprender sobre algoritmos paralelos que são úteis no mundo real, aconselho a procurar em outro lugar.O(…)
Deixe a função de tempo de execução de um algoritmo paralelo. Você pode chamar um algoritmo de "eficiente" se , ou se para a função de tempo de execução de um bom algoritmo seqüencial. Proponho isso de maneira mais rigorosa em minha tese de mestrado , partindo da literatura citada nela. T 1 ( n ) / T p ( n ) ≈ pTp:N→R≥0 T1(n)/Tp(n)≈p TT1(n)≈T(n) T
Isto não é sempre verdade; a hierarquia de memória e o hardware podem permitir maior aceleração, pelo menos algumas vezes. Porém, haverá outro limite constante.
fonte
Essa pergunta foi marcada como duplicada , então, suponha que seja realmente uma duplicata e forneça uma resposta possível.
Sabemos que NC! = PSPACE, portanto, uma prova de que P = NC também provaria P! = PSPACE. Isso pode não parecer muito, mas é uma consequência da pesquisa em ciência da computação.
Por que sabemos NC! = PSPACE? Bem, conhecemos NC k ⊆ DSPACE (O (log k )), para que possamos apenas usar o teorema da hierarquia espacial.
Em termos de aplicações práticas, as aplicações em torno da programação linear (e convexa) podem ser tão sedutoras que arquiteturas paralelas personalizadas, juntamente com compiladores para traduzir formulações de programação linear com eficiência para esse hardware, possam ser desenvolvidas e vendidas.
fonte