Ho costruito un computer meccanico alimentato da marmi. Quali sono i suoi limiti teorici?


8

Negli ultimi due anni ho costruito un computer meccanico alimentato da marmi e ne ho ricavato un gioco. È simile al vecchio Digi-Comp II, ad eccezione di due differenze chiave:

  1. Le parti sono riposizionabili sulla scheda.
  2. Puoi collegare più 'bit' insieme usando gli ingranaggi. Quando uno di questi bit viene invertito, capovolge gli altri bit ad esso collegati.

Il link sopra descrive come funziona. La mia domanda è: quali sono i suoi limiti teorici? Il mio background di calcolo teorico è debole, quindi per favore ELI5.

modifica: Non mi interessano le ovvie limitazioni: velocità (non vincerò nessuna gara lì ...), dimensioni del tabellone o # di biglie. Sono più interessato ai suoi limiti teorici. Forse aiuterebbe a dividerlo in due domande:

  1. Come si può dimostrare (o confutare) di essere Turing-complete?
  2. Se più di 3 punte di ingranaggi sono collegate tra loro, l'attrito diventa troppo grande perché un marmo possa girarle tutte in una volta. Ciò crea ulteriori limiti?

Grazie - Sono davvero entusiasta di leggere le tue risposte! Ci sto pensando da molto tempo.


3
Vuoi prendere in considerazione un modello idealizzato (dimensioni della griglia infinite, infiniti marmi) o la macchina specifica a portata di mano? Osservando le melagne di tag che hai scelto, puoi restringere quali domande vuoi affrontare? Cosa può essere calcolato? Quanto velocemente si possono calcolare le cose? Quali domande sull'architettura hai in mente?
Raffaello

1
Il modo più semplice per restringere le capacità del modello è rispondere a queste domande. 1) Cosa sono input e output? 2) Quali porte logiche puoi modellare? Sto chiedendo 2) perché è chiaro che non hai un computer universale lì; ogni configurazione della scheda è un programma fisso e che corrisponde strettamente ai circuiti. Quindi, se è possibile simulare qualsiasi set completo di porte (ad esempio porte NAND), si dispone di un modello completo di Turing (presupponendo infinite cose). Dato che non hai alcun componente statico con due ingressi e un singolo output, non vedo immediatamente cosa sta succedendo.
Raffaello

2
Detto questo, progetto interessante! Fateci sapere nella chat di Computer Science quando si avvia.
Raffaello

3
Nel video, dici: se fai una scheda abbastanza grande, può fare ciò che può fare qualsiasi computer. Bene, sì e no: dato un computer, puoi (teoricamente) costruire una scheda abbastanza grande, ma dato una scheda, puoi costruire un computer che ha bisogno di una scheda più grande - e ciò significa che le tue schede non sono Turing complete. La completezza di Turing richiede di operare su una memoria arbitrariamente grande , cosa che le tue schede non possono fare. Ogni macchina Turing è il limite di una serie infinita di macchine Turing a nastro finito, ma ciò non rende complete le macchine Turing a nastro finito.
reinierpost,

2
Se rendi l'ingrandimento di una scheda parte dell'operazione della macchina, diventano Turing completi.
reinierpost,

Risposte:


3

Quello che hai in questo momento è un computer concreto. Non possiamo confrontarlo con un modello computazionale fino a quando non sarà adeguatamente formalizzato.

La mia intuizione è che la scheda potrebbe essere modellata come un'architettura di flusso di dati . I modelli computazionali concepiti secondo questo paradigma possono essere completi di Turing, ma (come è stato detto nei commenti) nessun computer concreto sarà mai equivalente a Turing, e non credo che dovresti preoccuparti di questo. Tutti i computer reali sono solo metafore (imperfette) funzionanti di modelli computazionali formali.

Se dovessi venire all'idea di imitare più da vicino una macchina di flusso di dati equivalente a Turing, ci sono alcuni problemi che potrebbero essere affrontati per "rafforzare la metafora", per così dire. Introdurre cicli e composizione delle macchine sarebbe la seconda cosa più importante, secondo me, ma penso che la tua macchina sia già piuttosto sorprendente. Serve molto bene al suo scopo e questi "miglioramenti" potrebbero sacrificare la sua usabilità.


Grazie! E molto utile! Non sapevo della distinzione tra architettura del flusso di dati e, diciamo, architettura di Von Neumann prima. Ho solo immaginato che, se la tavola fosse più grande, sarebbe stata possibile costruire un'architettura Von Neumann. Qualche possibilità che potresti offrire una definizione o un link a ciò che intendi per "cicli" e "composizione"?
Paul Boswell,

Per i cicli, immagina che ci sia un modo per riportare indietro i marmi, all'inizio o in qualche memoria intermedia nel mezzo. Ciò consentirebbe di calcolare alcuni tipi di funzioni ricorsive primitive. La composizione delle macchine è simile alla composizione delle funzioni, immagina di poter collegare l'uscita di una scheda all'input di altre.
André Souza Lemos,

Un computer von Neumann è un grande ciclo.
André Souza Lemos,
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.