Os programas de máquinas de Turing, embora conceitualmente simples, podem exibir vários recursos comuns, dependendo da tarefa que foram projetados para executar. Esses recursos não estão necessariamente presentes em todos os * Turing Machine Program, mas aparecem com frequência:
1. Transições de estado: Este é o bloco de construção fundamental. O programa determina como a máquina faz a transição entre os estados com base no estado atual e o símbolo lido da fita. Essas transições geralmente envolvem:
*
Lendo um símbolo: A máquina lê o símbolo sob a cabeça.
*
Escrevendo um símbolo: A máquina escreve um novo símbolo na fita, substituindo a anterior.
*
movendo a cabeça: A máquina move a cabeça uma posição para a esquerda ou direita.
*
Mudança de estado: A máquina transita para um novo estado.
2. Estados: Estes representam diferentes estágios de computação. Os estados comuns incluem:
*
Iniciar estado: O estado inicial da máquina.
*
Aceitando estado (s): Estados (s) que indicam computação bem -sucedida. Chegar a um estado de aceitação interrompe a máquina.
*
Estado (s) de rejeição: Estados (s) que indicam computação sem êxito (por exemplo, a entrada não estava no idioma que a MT reconhece).
*
Estados intermediários: Estados que representam várias etapas no algoritmo. Estes são cruciais para cálculos complexos.
3. Manipulação da fita: Partes significativas do programa envolvem manipular a fita:
*
marcação: Usando símbolos especiais para marcar posições na fita, geralmente para acompanhar o progresso ou os resultados intermediários.
*
Contagem: Usando sequências de símbolos para representar números ou quantidades.
*
Pesquisa: Movendo a cabeça para frente e para trás para procurar símbolos ou padrões específicos.
*
Copiar: Seções duplicando da fita.
4. Loops e sub -rotinas (implicitamente): Embora as máquinas Turing não tenham loops ou sub-rotinas explícitas da mesma maneira que as linguagens de programação de nível superior, seu comportamento pode implementá-las efetivamente por meio de transições de estado cuidadosamente projetadas. A máquina pode percorrer repetidamente um conjunto de estados para executar uma operação específica, imitando um loop ou transição para um conjunto específico de estados para executar uma subtarefa antes de retornar ao fluxo principal de computação.
5. Controle do Estado Finito: O número de estados é sempre finito, refletindo a natureza finita do próprio programa. A complexidade de uma máquina de Turing é amplamente determinada pelo número de estados e pela complexidade das transições do estado.
6. Determinismo/não determinismo: O programa pode ser determinístico (uma transição exclusiva para cada combinação de símbolo de estado) ou não determinística (múltiplas transições possíveis). Máquinas não determinísticas podem explorar vários caminhos de computação simultaneamente.
É importante lembrar que as máquinas Turing são modelos abstratos de computação. As implementações reais variam, mas esses recursos representam os principais componentes conceituais de um programa de máquina de Turing. Os detalhes específicos de um programa dependerão fortemente do cálculo específico que foi projetado para executar.