Reduzindo a complexidade com paralelismo

10

É possível (barra você pode fornecer um exemplo) reduzir a complexidade computacional de um problema usando um algoritmo paralelo que não requer um número de processadores em relação ao tamanho da entrada?

Nick Larsen
fonte
Você poderia esclarecer um pouco sua pergunta? Número trivialmente constante de processadores -> na melhor das hipóteses, você pode melhorar o tempo de execução por um fator constante. Eu acho que não foi isso que você quis dizer?
Jukka Suomela 23/08/10
"Não é relativo ao tamanho da entrada". O que você quer dizer exatamente com isso? O (1)?
Aryabhata
Quero dizer O (1) processadores. @Jukka: é isso que eu quero dizer, a complexidade computacional só pode ser reduzida com a adição de vários processadores em relação ao tamanho da entrada?
Nick Larsen

Respostas:

12

Se você quer dizer processadores O (1), então não, a complexidade da computação não pode ser reduzida.

Basta alinhar o trabalho realizado por cada processador e fazê-lo em um único. Se você está preocupado com a sincronização, um processador pode facilmente emular isso.

Aryabhata
fonte
Obrigado pela resposta rápida. Sem criar outra pergunta para algo tão intimamente relacionado, é possível reduzir a complexidade computacional usando vários processadores em relação a algo diferente do tamanho da entrada?
Nick Larsen
2
@ Nick: algo diferente do tamanho de entrada é O (1) :-)
Aryabhata
Obrigado, estava tendo problemas para pensar em mais alguma coisa, mas queria ter certeza.
Nick Larsen
WRT: se você pode obter uma aceleração com vários processadores que crescem com alguma quantidade diferente do tamanho da entrada, não tenho certeza de que a resposta seja 'não'. Existem problemas cuja complexidade aumenta com algum parâmetro diferente (embora obviamente não seja independente) do tamanho da entrada. E se, por algum problema no gráfico, eu permitisse vários processadores relacionados à largura da árvore do gráfico, por exemplo?
Aaron Roth
@ Aaron: Se o número de processadores permitidos estiver relacionado à entrada de alguma forma, então sim, não podemos dizer "não" com certeza. Obviamente, a menos que sejamos específicos, é uma pergunta sem sentido.
Aryabhata
6

Existe um campo emergente de algoritmos paralelos de granulação grossa, em que o tempo de execução (e outro consumo de recursos computacionais) é considerado uma função dos parâmetros independentes n (tamanho da entrada) ep (número de processadores), geralmente sob uma suposição natural n >> p .

Um bom ponto de partida é procurar no Google por "paralelismo síncrono em massa".

Alexander Tiskin
fonte
A classe de complexidade pode mudar se você permitir que o hardware seja dimensionado com os dados de entrada? Estou tendo problemas para pesquisar no Google como leigo: /
Gerenuk
1

pp

O(f(n)/p)O((1/p)f(n))O(cf(n))O(f(n))c=1/p

TT/p+SomeMoreTime

Mas nenhuma mudança de complexidade.

Pratik Deoghare
fonte
1

"você não pode computar com 1 processador, mas com 2."

Isso não é possível, supondo que os dois processadores sejam TMs ou um modelo menos poderoso. Da wikipedia, para máquinas com várias fitas:

Esse modelo parece intuitivamente muito mais poderoso que o modelo de fita única, mas qualquer máquina de fita múltipla, independentemente do tamanho k, pode ser simulada por uma máquina de fita única usando apenas quatro vezes mais tempo de computação (Papadimitriou 1994, Thrm 2.1)

Também para máquinas com cabeçote múltiplo, de "Simulação linear no tempo de máquinas de cabeçote com cabeçote múltiplo com saltos cabeçote a cabeçote" de Walter J. Savitch e Paul MB Vitányi:

O principal resultado deste artigo mostra que, dada uma máquina de Turing com várias cabeças de leitura / gravação por fita e que possui a operação adicional de troca de turno "desloca uma cabeça para a posição de outra cabeça", pode-se efetivamente construir uma Máquina de Turing multitape com uma única cabeça de leitura / gravação por fita que simula em tempo linear; isto é, se a máquina original operar no tempo T (n), a máquina de simulação operará no tempo cT (n), por alguma constante c.

chazisop
fonte
Aqui temos um ótimo exemplo de custo de abstração. Computadores reais (como implementações do RM) podem ser paralelizados melhor que as TMs.
Raphael
RM significa? Se isso foi um erro de digitação e você quer dizer MT, eu discordo. As TMs multitape / multihead não precisam se preocupar com a comunicação do processador e com a lei da Amdahl. Além disso, não vejo como um computador pode ter um desempenho melhor do que uma TM de acesso aleatório e vice-versa, ou seja, acredito que sejam equivalentes.
chazisop
0

Talvez "paralelo ou" (dadas duas funções retornando um booleano, diga se uma delas retorna verdadeira, já que alguma delas, mas não as duas, pode falhar em terminar) pode ser o que você está falando: você não pode calcular com 1 processador, mas pode calcular com 2.

No entanto, isso depende muito de qual modelo computacional você usará, se você recebe os processos como caixas pretas ou como a descrição deles que você pode interpretar, etc.

jkff
fonte
2
Isso parece falso, a menos que você esteja trabalhando em algum modelo severamente limitado. Um único processador poderia apenas intercalar as instruções que seriam executadas em 2, causando no máximo uma desaceleração 2x + O (1). Eu acho que por `` caixa preta '' você quer dizer que a intercalação é impossível? Mesmo assim, se você puder finalizar cálculos de caixa preta que demoram muito, ainda poderá simular dois processadores adivinhando e duplicando repetidamente o comprimento de cálculo necessário para cada processo.
Aaron Roth
Mas isso, por sua vez, exige que possamos terminar os cálculos. Quero dizer que você não pode fazer paralelo ou em um processador em um modelo em que a única coisa que você pode fazer é executar uma computação até que ela termine.
Jkff 20/09/10
Agora entendo o que você quis dizer, mas acredito que não está completo. Você também não pode calcular com 2. Se uma máquina continuar funcionando e a outra responder SIM, a resposta será SIM. Mas e se retornar NÃO? Você não pode responder de maneira determinística, porque você não sabe se a máquina ainda está em execução ou está presa (ou seja, o problema da HALTING).
chazisop