Um FSA pode contar?

11

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 é?

Torbjörn
fonte
1
Então você está realmente fazendo a pergunta "o que está contando?" Isso não parece ciência da computação para mim. Seria ciência da computação se sua pergunta fosse "para esta definição de contagem, uma FSA pode contar?".
Sasho Nikolov

Respostas:

8

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 .1n1mn=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:n0}

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.

Shaull
fonte
4

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.

abab

LTD2L=T1(D2)TLTLD2wT1(D2)T(w)D2

D2

Hendrik Jan
fonte
02n!nN
2n!
Porém, da maneira como as FSAs geralmente são apresentadas, elas apenas têm "permissão" para dizer "sim" (aceito) ou "não" (não aceito). Diante disso, ninguém poderia construir uma FSA que conta. Se permitirmos que relate (por exemplo, imprima) o estado (número do) em que está quando termina, ele poderá contar, mas apenas até um limite fornecido pelo número de estados. Mas, se DO permitirmos que seja impressa, é trivial construir um FSA de estado único que imprima (digamos) 1 cada vez que ler um símbolo da sequência de entrada, relatando a contagem na representação de contagem. O que há de errado com essa ideia?
Torbjörn
E, se esquecermos dos relatórios / impressões, e pensarmos em termos de representações internas, uma FSA pode contar os símbolos em uma sequência, mas não em uma longa arbitrária. O FSA de estado único, é claro, não pode contar.
Torbjörn
k
1

@ 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.

Torbjörn
fonte
FSAWOC{an|n is prime }
Eu acho que a diferença entre os exemplos que você dá e os resultados do FST é que o pastor pode ler as linhas depois de escritas, enquanto um FSM não pode. O mesmo vale para comparar.
Shaull
Você pode comentar clicando no link "adicionar comentário" abaixo de qualquer postagem.
Raphael
Qualquer FSA construído para contar um rebanho pode contar esse rebanho. Nenhum FSA construído pode contar com qualquer rebanho. A questão básica é se o pastor sabe apenas contar o suficiente para contar pelo menos o seu próprio rebanho ou se pode usar toda a gama de números naturais. Na minha experiência, nós, humanos, devemos fazer explicitamente a transição entre as duas capacidades em algum momento de nossa educação matemática.
reinierpost
1

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 .

vzn
fonte
mais detalhes: o transdutor pode incrementar o trabalho na ordem "lsb" para "msb", isto é, "menos bit sig" para "bit mais sig" usando uma lógica semelhante ao somador total do EE .
vzn
Os transdutores de estado finito da FYI parecem não ter sido muito estudados. existe outra aplicação interessante na conjectura de collatz na criação de uma máquina que calcula iterações. qualquer pessoa interessada em mais teoria / discussão plz entre em contato comigo no chat ou no meu blog .
vzn