Escolar Documentos
Profissional Documentos
Cultura Documentos
Resumo
Esse documento visa apresentar aspectos introdutórios da teoria de
complexidade da computação paralela bem como modelos computacionais
razoáveis e uma discussão acerca da questão da P-Completude e a classe
de complexidade N C
1
Sumário
1 Introdução 3
1.1 Multiplicação de Matrizes Quadradas . . . . . . . . . . . . . . . . 3
1.2 Menor Caminho Entre Qualquer Par de Vértices . . . . . . . . . 4
1.3 Princı́pio de Brent . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Modelos Computacionais 7
2.1 Modelo PRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Modelo de Circuitos Booleanos . . . . . . . . . . . . . . . . . . . 8
3 Complexidade Computacional 10
3.1 Classe N C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Redução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.1 Redução Many-One . . . . . . . . . . . . . . . . . . . . . 10
3.2.2 Redução do tipo Turing . . . . . . . . . . . . . . . . . . . 11
3.2.3 P-Completude . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3 Relação Tempo-Espaço . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3.1 Parallel Computation Thesis (PCT) . . . . . . . . . . . . 12
3.4 Problemas Inerentemente Sequenciais . . . . . . . . . . . . . . . . 12
3.4.1 Problema P-Completo Genérico . . . . . . . . . . . . . . . 12
3.4.2 Circuit Value Problem (CVP) . . . . . . . . . . . . . . . . 12
2
1 Introdução
A essência da computação paralela está na busca de se obter um menor tempo
entre o começo e o fim da computação de algum problema. Comparado com
algum modelo sequencial de computação isso parece o tanto quanto óbvio, mas
a computação paralela é bem mais do que tentar obter uma simples diminuição
do tempo necessário para resolver algum problema sequencial, o grande in-
teresse do estudo da complexidade computacional paralela, está em obter uma
diminuição exponencial do tempo necessário para resolver esse mesmo problema
e reconhecer os limites da mesma.
Por exemplo, seja A1 um algoritmo que resolve um problema sequencial
em O(n), suponha que um algoritmo A2 foi projetado para resolver o mesmo
problema, só que esse algoritmo foi projetado para um modelo de computação
paralelo, e resolve esse problema em O(n) também, possı́velmente o algoritmo
A2 será mais rápido que o algoritmo A1 quanto ao tempo de execução, no en-
tando não será assintoticamente mais rápido, o tempo para resolver o problema
continua linear na ordem de entrada.
Um resultado mais interessante seria o projeto de um terceiro algoritmo A3
que resolve o mesmo problema também em algum modelo computacional par-
alelo, mas que leva da ordem de O((log(n))O(1) ) no tamanho n da entrada, isso
iria refletir numa diminuição exponencial na quantidade de passos necessários,
em termos assintoticos, para resolver o mesmo problema. Esse é o tipo de
resultado em que o estudo da computação paralela almeja alcançar.
3
Dessa forma esse algoritmo de multiplicação de matrizes leva Θ(n) passos
paralelos, usando de Θ(n3 ) processadores. É um resultado bom se comparado
com o algoritmo sequencial que levava Θ(n3 ), mas não é uma redução expo-
nencial do tempo no tamanho da entrada. Para obter tal redução é necessário
somar os produtos de uma maneira esperta.
Tal maneira esperta pode ser feita usando uma árvore de adições, desse
modo a soma levará log n + 1 passos paralelos para a execução. Deixando assim
o algoritmo de multiplicação de matrizes levando Θ(log n) passos paralelos para
computar o problema da multiplicação de matrizes quadradas, um decaimento
exponencial se compararmos com a cota antiga de Θ(n).
P0
P1 P2
+
..
.
P3 P4 ...
..
.
4
(m)
O passo de indução consiste que li,j , isto é, o caminho de menor custo de i
m−1
a j pode ser obtido em função de li,j , pois um sub-caminho de um caminho
ótimo tem que ser ótimo também, e do peso da aresta dos nós adjacentes a j
que estão no sub-caminho ótimo. Então temos o seguinte resultado
(m−1)
li,j = min li,k + wk,j (4)
1≤k≤n
l(m−1) → a
w→b
l(m) → c
min → +
+→·
5
1.3 Princı́pio de Brent
Definição 1.3.1 A quantidade de trabalho W (n) feita por um algoritmo par-
alelo é definido como a soma da quantidade de operações feitas por todos os
processadores durante a computação.
Como um algoritmo paralelo pode ser simulado com uma máquina com p
processadores, temos que o tempo necessário para execução do algoritmo em
paralelo é dada pela seguinte relação:
W (n)
T (n) ≤ b c + S(n) (7)
p(n)
Onde p(n) descreve o número de processadores em função da entrada, e
S(n) descreve a quantidade de passos paralelos necessários para a execução do
algoritmo e T descreve o tempo necessário para a execução do algoritmo.
Portanto é possı́vel estabelecer uma cota inferior de processadores à serem
usados em determinado , por exemplo, no algoritmo de multiplicações de ma-
trizes o custo total de trabalho foi de Θ(n3 ) visto que temos n2 produtos es-
calares. Logo para T = O(log n), a cota antiga e analisando 7, precisarı́amos de
n3
no mı́nimo Ω( log n ) processadores, visto que S(n) = O(log n).
Além disso, pelo mesmo motivo, dizemos que uma máquina sequencial pode
emular o algoritmo paralelo, portanto:
6
2 Modelos Computacionais
Para falar de computação paralela e classes computacionais que abrangem os
problemas solúveis em paralelo de uma maneira eficiente, é necessário se basear
em algum modelo razoável de computação.
Os modelos, em geral, se diferenciam por dois grandes fatores. O nı́vel
de tratamento de operações, isto é, um modelo que trate operações bit a bit
como unidade básica de operação é mais rigoroso do que um modelo que trata
operações de mais alto nı́vel como exponenciação por exemplo como unidade
básica de operação.
O outro fator é como os recursos do modelo computacional paralelo se co-
municam, se permitirmos uma comunicação muito poderosa, modelos de com-
putação mais relaxados no aspecto comunicação poderão não conseguir simular
o modelo mais poderoso por um fator polinomial.
Definição 2.1.1 Uma máquina PRAM é uma coleção de máquinas RAM, cada
RAM consiste de uma fita de entrada só de leitura, uma fita de saı́da, um número
infinito de células de memória. Um programa RAM é uma sequência finita de
instruções como LOAD, STORE, ADD, etc . . . A computação em uma RAM
acaba quando esta encontra a instrução HALT, uma definição mais completa do
modelo RAM se encontra em [4],[1],[9]. Como visto, uma PRAM consiste em p
processadores RAM. Além disso esse modelo possui um conjunto de células de
memória compartilhada.
7
• CREW-PRAM3 : Esse modelo permite leitura simultânea, mas apenas se
permite que um processador escreva na célula de memória compartilhada.
8
Portanto um determinado circuito α faz uma computação de f {0, 1}n à
f {0, 1}m , no entanto isso não representa a noção de algoritmo, que têm que
aceitar um tamanho genérico da entrada. Então precisamos do conceito de
famı́lia de circuitos.
Descrever uma função de circuitos requer uma atenção especial, pois se não
for colocada alguma restrição, tal coleção pode “computar” funções não com-
putáveis [1], então devemos restringir o poder de construção de circuitos, isto
é, a construção de um descrição de circuitos, feita por um determinado modelo,
não pode ter mais poder computacional do que esse mesmo modelo.
Por exemplo, se a descrição de uma famı́lia de circuitos for construı́do por
uma máquina de Turing Mt que se limita a usar O(log n) de espaço no tamanho
da entrada, a famı́lia descrita não terá mais poder computacional que a máquina
Mt . Informalmente isso corresponde ao conceito de uniformidade introduzido
por Allan Borodin [11].
Portanto ajustando diferentes construtores de poderes diferentes, poderemos
criar descrições das famı́lias com poder computacional diferente.
9
3 Complexidade Computacional
3.1 Classe N C
A classe dos problemas N C é a classe dos problemas que podem ser resolvidos em
tempo polilogaritmo (log n)O(1) usando um número polinomial de processadores
nO(1) no modelo PRAM.
A classe N C também pode ser definida como as linguagens decidı́veis por
um circuito booleano de profundidade (log n)O(1) e de tamanho nO(1) .
3.2 Redução
Definição 3.2.1 Uma redução é um meio de converter um determinado prob-
lema A à outro determinado problema B de forma que se a solução do problema
B for conhecida, podemos usá-la para resolver o problema A.
10
f : Σ ? → Σ?
A B
11
Do teorema 3.3.1 temos o seguinte resultado.
N C1 ⊆ L ⊆ N L ⊆ N C2 ⊆ N C ⊆ P
A demonstração da primeira e terceira inclusão se encontra em [4].
Portanto, de fato se tivermos que o resultado L = P, teremos também que
N C = P.
12
Referências
[1] Limits to Parallel Computation: P-Completeness Theory RAY-
MOND GREENWLAW, H. JAMES HOOVER, WALTER L. RUZZO
[2] Introduction to Automata Theory, Languages, and Computation
JOHN E. HOPCROFT, RAJEEV MOTWANI, JEFFREY D. ULLMAN
[3] Parallel Complexity Theory IAN PARBERRY
[4] Computacional Complexity CHRISTOS H. PAPADIMITRIOU
13