Ridurre la complessità con il parallelismo


10

È possibile (barra puoi fornire un esempio) per ridurre la complessità computazionale di un problema usando un algoritmo parallelo che non richiede un numero di processori rispetto alla dimensione dell'input?


Potresti chiarire un po 'la tua domanda? Numero di processori sostanzialmente costante -> nella migliore delle ipotesi è possibile migliorare il tempo di esecuzione di un fattore costante. Immagino che non fosse quello che intendevi?
Jukka Suomela,

"Non relativo alla dimensione di input". Cosa intendi esattamente con questo? O (1)?
Aryabhata,

Intendo processori O (1). @Jukka: questo è ciò che intendo, la complessità computazionale può essere ridotta solo aggiungendo un numero di processori rispetto alla dimensione dell'input?
Nick Larsen,

Risposte:


12

Se intendete processori O (1), allora no, la complessità di calcolo non può essere ridotta.

Allinea semplicemente il lavoro svolto da ciascun processore e fallo su un singolo. Se sei preoccupato per la sincronizzazione, un processore può facilmente emularlo.


Grazie per la veloce risposta. Senza creare un'altra domanda per qualcosa di così strettamente correlato, è possibile ridurre la complessità computazionale utilizzando un numero di processori rispetto a qualcosa di diverso dalla dimensione dell'input?
Nick Larsen,

2
@Nick: qualcosa di diverso dalla dimensione di input è O (1) :-)
Aryabhata

Grazie, stavo avendo problemi a pensare ad altro, ma volevo esserne sicuro.
Nick Larsen,

WRT se è possibile ottenere una velocità con un numero di processori che cresce con una quantità diversa da quella di input, non sono sicuro che la risposta sia "no". Ci sono problemi la cui complessità cresce con alcuni parametri che sono dimensioni di input diverse (sebbene ovviamente non indipendenti). E se per qualche problema con il grafico, ti consentissi un numero di processori relativi alla larghezza dell'albero del grafico, ad esempio?
Aaron Roth,

@Aaron: se il numero di processori consentiti è in qualche modo correlato all'input, allora sì, non possiamo dire "no" di sicuro. Naturalmente, a meno che non siamo specifici, è una domanda insignificante.
Aryabhata,

6

Esiste un campo emergente di algoritmi paralleli a grana grossa, in cui il tempo di esecuzione (e il consumo di altre risorse computazionali) è considerato una funzione di parametri indipendenti n (dimensione dell'input) e p (numero di processori), spesso sotto un presupposto naturale n >> p .

Un buon punto di partenza è google per il "parallelismo sincrono alla rinfusa".


La classe di complessità può cambiare se si consente all'hardware di scalare con i dati di input? Sto avendo problemi con Google come laico: /
Gerenuk,


1

pp

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

TT/p+SomeMoreTiome

Ma NESSUN cambiamento di complessità.


1

"non puoi calcolarlo con 1 processore, ma puoi calcolarlo con 2."

Ciò non è possibile, supponendo che entrambi i processori siano TM o un modello meno potente. Da Wikipedia, per macchine multi-nastro:

Questo modello sembra intuitivamente molto più potente del modello a nastro singolo, ma qualsiasi macchina multi-nastro, non importa quanto sia grande la k, può essere simulata da una macchina a nastro singolo usando solo quadraticamente più tempo di calcolo (Papadimitriou 1994, Thrm 2.1)

Anche per le macchine a più teste, da "Simulazione lineare del tempo di macchine a testa multipla con salti testa a testa" di Walter J. Savitch e Paul MB Vitányi:

Il risultato principale di questo documento mostra che, data una macchina di Turing con diverse testine di lettura / scrittura per nastro e che ha l'ulteriore operazione di spostamento del movimento "sposta una data testa nella posizione di un'altra data testa", si può effettivamente costruire un macchina Turing multitape con una sola testina di lettura / scrittura per nastro che la simula in tempo lineare; cioè se la macchina originale opera nel tempo T (n), allora la macchina simulante funzionerà nel tempo cT (n), per qualche costante c.


Qui abbiamo un ottimo esempio per il costo dell'astrazione. I computer reali (come implementazioni di RM) possono essere parallelizzati meglio delle TM.
Raffaello,

Cosa significa RM? Se quello era un errore di battitura e intendi TM, non sono d'accordo. Le TM multitape / multihead non devono preoccuparsi della comunicazione del processore e della legge di Amdahl. Inoltre, non vedo come un computer possa funzionare meglio di una TM ad accesso casuale e viceversa, cioè credo che siano equivalenti.
Chazisop,

0

Forse "parallelo o" (date due funzioni che restituiscono un valore booleano, dire se una di esse ritorna vera, dato che qualcuno di loro, ma non entrambi, potrebbe non riuscire a terminare) potrebbe essere quello di cui stai parlando: non puoi calcolare con 1 processore, ma può calcolare con 2.

Tuttavia, questo dipende molto dal modello computazionale che utilizzerai, se ti vengono dati i processi come scatole nere o come loro descrizione che puoi interpretare da solo, ecc.


2
Questo sembra falso, a meno che tu non stia lavorando in un modello gravemente limitato. Un singolo processore potrebbe semplicemente intercalare le istruzioni che altrimenti verrebbero eseguite su 2, causando al massimo un rallentamento 2x + O (1). Immagino che per `` scatola nera '' intendi che l'interlacciamento è impossibile? Anche in questo caso, se è possibile interrompere i calcoli della scatola nera che impiegano troppo tempo, è comunque possibile simulare due processori indovinando e raddoppiando ripetutamente la lunghezza di calcolo richiesta per ciascun processo.
Aaron Roth,

Ma ciò, a sua volta, ci richiede di essere in grado di terminare i calcoli. Voglio dire che non puoi fare un processore parallelo o su 1 in un modello in cui l'unica cosa che puoi fare è eseguire un calcolo fino al termine.
jkff,

Ora capisco cosa volevi dire, ma credo che non sia completo. Non è possibile calcolarlo con 2 nessuno dei due. Se una macchina continua a funzionare e l'altra risponde SÌ, la risposta è SÌ. Ma cosa succede se restituisce NO? Non puoi rispondere in modo deterministico, perché non sai se la macchina è ancora in funzione o è bloccata (cioè il problema di HALTING).
Chazisop,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.