Macchina di Turing distribuita?


10

Sono uno studente master focalizzato sui sistemi distribuiti ma anche interessato all'informatica teorica. Mi chiedevo se esiste una rappresentazione formale di un sistema distribuito sopra una macchina da turismo? Cioè, è possibile estendere (fare una variante) il concetto di una macchina turing per sfruttare il calcolo distribuito?

Un'idea è quella di creare un nastro condiviso (qualcosa di simile a Tuple Space ) tra TM.



3
la domanda a cui Jukka si collega potrebbe rispondere alla tua domanda non del tutto. Se è così, forse puoi chiudere questo, e se no, forse puoi chiarire cosa è diverso?
Suresh Venkat,

@Suresh Venkat, penso che la domanda collegata da Jukka sia decisamente in tema, ma poni una domanda più ampia: "perché non esiste un modello standard / accettabile per il calcolo distribuito?". La mia domanda ha sicuramente tutto a che fare con quella, ma ero motivato a trovare sulla / qualsiasi rappresentazione formale del calcolo distribuito.
Marcos Roriz Junior,

ok. sembra ragionevole.
Suresh Venkat,

2
A proposito, il tuo approccio al "nastro condiviso" suona più come un modello di elaborazione parallela anziché di elaborazione distribuita . Pertanto potrebbe anche avere senso esaminare i modelli utilizzati nel campo del calcolo parallelo (ad esempio, il modello PRAM).
Jukka Suomela,

Risposte:


10

[Esiste] una rappresentazione formale di un sistema distribuito sopra una macchina turing?

A questo proposito, la discussione (vedi link pubblicato da Jukka sui commenti) è il modo di guardare. Il modo in cui lo vedo, come rappresenteresti formalmente un sistema distribuito dipende in gran parte da come li vedi, e ciò dipende dai "tuoi presupposti di sistema preferiti" (cioè, i presupposti sulla sincronia (cioè, i tempi relativi delle azioni nel distribuito sistema), sulla comunicazione (passaggio di messaggi vs. memoria condivisa), su errori (di processi e / o collegamenti, benigni o bizantini, ecc.) Dato che la comunità non è d'accordo su questo punto, non c'è nemmeno accordo sul formalismo di base .

[È possibile estendere (fare una variante) il concetto di una macchina turing per sfruttare il calcolo distribuito?

Immagino che sia del tutto possibile, ma nessuno (che io conosca) ci ha pensato. Quello che so sono questi:

  1. Automi IO temporizzati utilizzati anche nel libro di calcolo distribuito di Lynch
  2. Comunicare i processi sequenziali
  3. Logica temporale delle azioni
  4. Pi-Calculus (già menzionato anche da Alex)
  5. E altro (sono stati e saranno citati qui) ...

Grazie per la spiegazione. Il punto che hai fatto riguardo alle discordie su come dovrebbe essere il modello (sync, async, ecc.) Influisce sicuramente sulla creazione di un modello standardizzato. Ottimi collegamenti e grazie per aver risposto :-).
Marcos Roriz Junior,


5

Sono sorpreso che le reti di Petri non siano ancora state menzionate! Le estensioni di reti di Petri come reti di Petri colorate o reti di Petri con archi inibitori sono Turing complete.


Le reti di Petri sono un importante formalismo in concorrenza, ma poiché la loro motivazione deriva dal tentativo di modellare un determinato processo fisico, non sono realmente paragonabili alle TM.
Charles Stewart,

Solo Petri stesso ha insistito per applicarli ai sistemi fisici. Vengono principalmente utilizzati per descrivere software di comunicazione, processi aziendali, eccetera.
reinierpost,

5

( Attenzione: punti di vista piuttosto distorti, semplificazioni eccessive e generalizzazioni sfacciate in vista. )

Spesso la differenza tra calcolo distribuito e calcolo parallelo può essere riassunta come segue:

  • Nel calcolo distribuito , le misure di complessità primaria sono correlate ai flussi di comunicazione e informazione : quanti cicli di comunicazione ("tempo"); quanti bit trasmessi.
  • Nel calcolo parallelo , le misure di complessità primaria sono correlate al calcolo e all'elaborazione delle informazioni : quante fasi elementari ("tempo"); quanti bit memorizzati.

Se prendi questa prospettiva, spesso si scopre che per modellare i sistemi distribuiti, non importa davvero quale tipo di potenza computazionale abbiano i tuoi nodi (o processori o computer).

O(n) la macchina cambia stato. Potrebbe essere una macchina di Turing, ma questo non è poi così rilevante.

XX (ad esempio, il numero di round di comunicazione necessari per risolverlo), il modo in cui si modella il calcolo su ciascun nodo di solito non influenza la risposta. Se lo analizzi prima usando le macchine di Turing e poi assumendo un oracolo arbitrariamente potente, la risposta è in genere la stessa. È possibile aggiungere consigli non uniformi e non cambia nulla.

TT

Quindi usare le macchine di Turing come punto di partenza per modellare i sistemi distribuiti suona un po 'innaturale per me: se questo è un aspetto irrilevante, perché costruire tutto su di esso? D'altra parte, nel calcolo parallelo questo sarebbe naturale (tranne per il fatto che il modello è in genere qualcosa di simile alla PRAM anziché alle macchine di Turing).


3

Alcuni sostengono che, a seconda della tua visione, potresti pensare ai sistemi distribuiti come qualcosa di più potente di una Macchina di Turing, a causa delle diverse interpretazioni del limite del non determinismo e dell'equità. Questo link ha un'interessante discussione sull'argomento. Herlihy / Shavit nel loro libro "L'arte della programmazione multiprocessore" sostiene che la computabilità di Turing si riferisce intrinsecamente alla nozione di algoritmo (sequenziale) e, in un certo senso, non sono appropriati per ragionare sul calcolo distribuito. Dovrei dire che questo è discutibile e controverso, quindi spero che nessuno mi lanci pietre perché sto dicendo questo.


1
Penso che il confronto non sia molto appropriato. In parole povere, nel contesto delle macchine di Turing, il non determinismo è una risorsa: si riferisce alla capacità della macchina di seguire simultaneamente più percorsi di esecuzione, quindi è essenzialmente una forma di parallelismo. Nel contesto dei sistemi distribuiti, invece, il non determinismo è di solito più un ostacolo: è usato per modellare le varie proprietà imprevedibili dei sistemi distribuiti nel mondo reale, come la mancanza di sincronizzazione e guasti.
Antonio Valerio Miceli-Barone,
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.