Esta pode ser uma pergunta boba. Parece claro que um FSA, por ser finito, pode contar apenas o número de símbolos em sua sequência de entrada até um número limitado pelo número de seus estados. Mas agora suponha que damos ao FSA recursos de saída (por exemplo, impressão). Seria então muito fácil construir uma máquina capaz de imprimir um símbolo para cada símbolo que lê. Isso conta como contagem? Se não, por que não?
Para colocar em termos de FSTs: suponho que não é possível construir uma FST capaz de mapear uma sequência de comprimento arbitrário para uma representação binária (ou seja, um número no sistema numérico de base 2) de seu comprimento. Mas é claro que é trivial construir uma FST capaz de mapear uma sequência de comprimento arbitrário para uma sequência de zeros (ou uns) do mesmo comprimento. Mas isso poderia contar como contar, não poderia, porque o que o FST está fazendo é construir uma representação do comprimento de sua entrada. Uma representação um tanto estranha, mas ainda uma representação, não é?
fonte
Respostas:
Essa pergunta é um pouco vaga, então, aqui está uma resposta vaga: traduzir unário para unário não é exatamente uma contagem, já que a máquina realmente "não sabe" qual era o tamanho da entrada "no final".
Você percebe isso, é claro, e é por isso que questiona o fato de que realmente está contando.
Traduzir de unário para binário, no entanto, parece uma operação muito mais avançada, porque não envolve apenas contagem, mas também aritmética.
Portanto, talvez a noção mais precisa de se olhar, em vez de contar, esteja se comparando . Isto é, dado dois números (em unária) e 1 m , determinar se n = m .1n 1m n=m
A capacidade de fazer essa comparação é o que dá origem à famosa linguagem não regular . E a incapacidade de um NFA contar é o que torna esse idioma não regular.{anbn:n≥0}
Curiosamente, essa linguagem é uma CFL. E, de fato, o modelo de autômato correspondente - PDAs, tem a capacidade de fazer uma comparação limitada.
Quando você fala sobre comparação, os transdutores não fornecem mais nenhum poder adicional; portanto, a questão é resolvida nesse sentido.
Uma observação adicional: completamente informal, a capacidade de comparar dois números geralmente pode ser usada para simular uma máquina Minsky Machine de 2 contadores , que é equivalente a TMs.
fonte
Não. Autômatos de estados finitos não contam. Eles podem fazer coisas parecidas, mas não podem contar. Eles podem até fazer cálculos pequenos (com fio) (como determinar se um número binário é divisível por três ), mas isso não conta.
Uma pequena história. Você está em uma grande praça retangular em uma cidade famosa. Os habitantes locais dizem que a praça é realmente quadrada. Se você puder contar, verifique se os números horizontal e vertical de peças correspondem, contando peças ao longo dos lados do quadrado. Se você não pode contar, ainda pode verificar a reivindicação: comece em uma esquina e caminhe na diagonal. Se você alcançar exatamente o canto oposto, terá um quadrado.
fonte
@ Shaull: Obrigado pela sua resposta! Eu sou novo no StackExchange e não sei como comentar uma resposta, por isso optei por escrever uma resposta, na esperança de que eu possa ser perdoado.
Hmm, parece-me que um carneiro contando suas ovelhas escrevendo uma marca em um pedaço de papel para cada ovelha que vê, ou um prisioneiro contando os dias em que esteve preso escrevendo marcas na parede. Por que n marcas em um pedaço de papel ou em uma parede não contam como uma representação do número n? Não é isso que se chama representação de registro? AFAICS não é de maneira óbvia inferior a (digamos) uma representação binária, exceto que ela usa mais espaço.
Suponho que, para você, "saber" significa que ela tem uma representação interna da contagem no final. Então, é claro, é óbvio que uma FSA da FST não pode calcular o comprimento de uma sequência arbitrária. Mas se não exigimos conhecimento nesse sentido, mas exigimos apenas que a FSA ou a FST sejam capazes de informar o resultado a um observador externo, parece-me que apresentar a contagem em um formato de contagem deve ser aceitável.
Além disso, se um FSA é equipado com entradas e saídas incrementais, em princípio ele deve poder usar seu ambiente externo como uma memória de leitura / gravação e, portanto, ser tão poderoso quanto uma máquina de Turing. Direita?
Obrigado por abordar o caso da comparação. Agora, parece que se elevarmos o requisito de uma representação interna e exigirmos apenas que a máquina seja capaz de apresentar o resultado a um observador externo, poderíamos criar facilmente um FSM que pudesse produzir uma espécie de apresentação gráfica do resultado. Suponha que o FSM, depois de readins "aaaaaabbbbbb", escrevesse
000000
000000
então, como as barras têm o mesmo comprimento, o FSM aceitou a sequência "aaaaaabbbbbb". Duas barras do mesmo comprimento significam "sim", comprimentos diferentes significam "não".
Acho que estou flexionando as regras, mas é isso que quero, pois estou interessado nas suposições mais ou menos implícitas que estão sendo feitas no campo da linguística matemática.
fonte
Os FSMs podem "contar" dentro de um intervalo / número finito de etapas significadas por transições de estado. no entanto, eles não podem contar além de um número finito de etapas.
existe um sentido em que uma máquina do tipo FSA pode contar. uma máquina intimamente relacionada é chamada de transdutor de estado finito . o transdutor pode realmente contar no sentido de entrada e saída "canalizadas". um único transdutor pode pegar uma sequência de entrada (digamos em binária) e "transduzir" para uma sequência de saída que é incrementada. então um "encadeia" os transdutores (idênticos) de contagem por 1, cada um incrementando sua entrada em 1 e emitindo-a. também é como um "algoritmo de streaming" rudimentar .
fonte