Sebbene le versioni non-stop del tag ciclico possano essere di particolare interesse per gli automi cellulari, un sistema di tag ciclico può anche essere progettato per simulare una macchina Turing universale in modo tale da arrestarsi se il TM si ferma, visualizzando una parola di output che codifica il uscita della macchina:
Simula la TM con un sistema a 2 tag che codifica tutte le configurazioni istantanee della TM, usando un "alfabeto di output" separato per codificare qualsiasi configurazione di arresto, in modo che il sistema di tag si arresti (cancellando questa parola lettera per lettera) se il TM si ferma. ( Questo documento mostra in dettaglio come ciò può essere fatto utilizzando una formulazione di macchine a Wang .)
Simula il sistema a 2 tag mediante un sistema di tag ciclico come descritto nella sezione Sistema di tag ciclico dell'articolo di Wikipedia . Poiché ogni lettera dell'alfabeto di output a 2 tag ha una stringa vuota come appendice (causando l'arresto della simulazione a 2 tag), il sistema di tag ciclico avrà lo stesso comportamento di arresto / output.
La chiave di questo approccio è che un alfabeto di output designato, ad esempio , consente a ciascuna delle sue lettere di avere la stringa vuota come appendice ( ), facendo sì che la simulazione cancelli il dataword e battuta d'arresto.{αi}αi→ϵ
NB : Per tutti e tre i tipi di sistema (TM, etichetta, tag ciclico), l'identificazione univoca di uscita può essere garantita utilizzando un alfabeto di uscita specificato, e questo può essere fatto sia per arrestare e non di sosta varietà di questi sistemi. (Dato che le TM "standard" sono di tipo bloccante, è ironico che le macchine di calcolo originali di Turing fossero della varietà non-stop con l'alfabeto di output .){0,1}
Con lo stesso approccio, possiamo anche costruire direttamente un semplice sistema a 2 tag per cancellare qualsiasi s da una stringa binaria, quindi simularlo con un tag ciclico. I calcoli diventano rapidamente noiosi, quindi lo applicheremo solo alla stringa di input , fermandoci con la stringa di output . (Il simbolo indicherà la stringa vuota.)010111-
2-tag
input alphabet {a,b}, output alphabet {c}
input encoding:
<0> = aa
<1> = bb
input = <101> = bbaabb
output decoding: <cc> = 1
produzioni:
a -> -
b -> cc
c -> -
calcolo:
bbaabb <-- input word <101>
aabbcc
bbcc
cccc <-- output word <11>
cc
-
tag ciclico
codifica dell'alfabeto a 2 tag:
<a> = 100
<b> = 010
<c> = 001
cyclic tag system = [-,001001,-,-,-,-]
cyclic tag input = <bbaabb> = 010010100100010010
calcolo:
appendant dataword
--------- ---------------------------------------------------------------
- 010010100100010010 <-- input word <bbaabb> = <<101>>
001001 10010100100010010
- 0010100100010010001001
- 010100100010010001001
- 10100100010010001001
- 0100100010010001001
- 100100010010001001
001001 00100010010001001
- 0100010010001001
- 100010010001001
- 00010010001001
- 0010010001001
- 010010001001
001001 10010001001
- 0010001001001001
- 010001001001001
- 10001001001001
- 0001001001001
- 001001001001 <-- output word <cccc> = <<11>>
001001 01001001001
- 1001001001
- 001001001
- 01001001
- 1001001
- 001001
001001 01001
- 1001
- 001
- 01
- 1
- -