P-Completeness e computação paralela


23

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?


Isso está relacionado ao NC (veja as respostas), que é uma maneira horrível de formalizar "paralelamente eficiente".
Raphael

Respostas:


17

É 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 (PPOLYLOGSPACE)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 RRTIME_SPACETM(nk,(logn)h)khRO((logn)k)kR

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 PPOLYLOGSPACEPOLYLOGSPACEPOLYLOGSPACEP

  1. POLYLOGSPACEP
  2. PPOLYLOGSPACE

P P - ( P P O L Y L O G S P A C E )PPOLYLOGSPACE contém os problemas que podem ser resolvidos no tempo polinomial usando espaço polilogarítmico. problemas com provavelmente pertencem a .PP(PPOLYLOGSPACE)

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(PPOLYLOGSPACE)

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(PPOLYLOGSPACE)=P(PPOLYLOGSPACE)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.


10

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 ).NCN CPNCPP = N CP-completeP=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 1PNCPPNCNC1P

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 ]PAC0[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.


A NC também inclui muitos problemas que não são eficientemente paralelizáveis. Veja minha resposta para detalhes.
Massimo Cafaro

Você pode dizer explicitamente que "Se algum problema de estiver em então ". N C N C = PP-completeNCNC=P
Alex-Brink

1
@unforgiven, existem várias opiniões sobre qual classe captura corretamente algoritmos "paralelos eficientes", por esse motivo eu usei uma classe que é considerada superior. Eu acho que P vs. NC é a razão típica pela qual as pessoas pensam que os problemas de P-completo não possuem algoritmos paralelos eficientes, embora existam detalhes interessantes, conforme indicado em sua resposta. Eu adicionei uma referência à minha resposta.
Kaveh

1
@ Kaveh, eu concordo com você. A maioria das pessoas pensa sobre isso exatamente nesses termos. É por isso que eu queria oferecer um ponto de vista um pouco diferente, com base na tese da computação paralela. A referência que você forneceu é excelente e representa, de fato, o melhor tratamento do assunto que já li.
Massimo Cafaro

6

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.<


A intuição que você está dando não está correta, o fato de que não se pode transformar um algoritmo específico em um paralelo eficiente não significa que o problema não possa ser resolvido em um tempo paralelo eficiente. Poder-se-ia dizer que algo semelhante a dizer primariamente não está em porque você precisa testar muitos números e parece que a maioria deles não está relacionada, mas isso é falso, como sabemos, e a primalidade está em . PPP
Kaveh

Mas o argumento de Louis deve ser visto como intuição e não está totalmente errado. O que é problemático é que embora P-completude do DFS é muito frágil - você precisa lexicographics DFS e é também no RNC etc etc.
Suresh

@Suresh: Sim. Quero dizer, não tenho ideia de como provar esse lex. O DFS de ordem não pode ser simulado deterministicamente de uma maneira muito melhor do que apenas fazer isso, mas as pessoas não "sentem" que isso é possível sem aleatoriedade. (Se isso importa, minha "religião" é que muita aleatoriedade tem algum poder.) #
Louis

@ Kaveh: Este "caminho crítico" (também chamado de "profundidade do trabalho") não é uma característica do algoritmo, mas do problema; é por isso que é difícil mostrar. É a sequência mais longa de "tarefas de trabalho" que foram investigadas em sequência (por qualquer algoritmo).
Raphael

@Raphael, dada uma linguagem, não há razão conhecida para que um algoritmo que a resolva siga uma sequência específica de etapas, se você puder mostrar que isso implicaria uma parte inferior que não temos. E essa é uma das razões pelas quais provar limites inferiores é tão difícil, que você não pode assumir nada sobre como será a computação de um algoritmo que resolve o problema. Esse é o meu ponto.
Kaveh

3

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

conjunto de problemas de decisão decidíveis em tempo polilogarítmico em um computador paralelo com um número polinomial de processadores.

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¹:

  • Se você possui um algoritmo NC, não obtém informações sobre como resolver o problema (eficientemente) em qualquer máquina com um número fixo de processadores.
  • 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()


  1. 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:NR0T1(n)/Tp(n)pTT1(n)T(n)T

  2. 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.


0

Suponha que amanhã alguém descubra uma prova de que P = NC. Quais seriam as consequências para a pesquisa em ciência da computação e aplicações práticas neste caso?

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.