Estou lendo o livro: " Código: a linguagem oculta do hardware e software dos computadores " e no capítulo 2 o autor diz:
Diz-se que o código Morse é um código binário (literalmente significa dois por dois) porque os componentes do código consistem em apenas duas coisas - um ponto e um traço.
A Wikipedia, por outro lado, diz:
Estritamente falando, não é binário, pois existem cinco elementos fundamentais (consulte o quinário). No entanto, isso não significa que o código Morse não possa ser representado como um código binário. Em um sentido abstrato, essa é a função que os operadores de telégrafo desempenham ao transmitir mensagens (consulte a seção "Quinário").
Mas, novamente, outra página da Wikipedia inclui o Código Morse em 'Lista de códigos binários'.
Estou muito confuso porque acho que o Código Morse é na verdade ternário . Você tem três tipos diferentes de 'possibilidades': um silêncio, um bipe curto ou um bip longo.
É impossível representar o Código Morse em 'mexer binário', não é?
Por "binário estrito", quero dizer, pense no fluxo de binário: 1010111101010 .. Como devo representar um silêncio, um bipe curto e / ou longo?
A única maneira de pensar é no "tamanho da palavra" implementado por um computador. Se eu (e a CPU / intérprete do código) soubermos que ele estará lendo 8 bits a cada vez, então eu posso representar o Código Morse. Eu posso simplesmente representar um bipe curto com 1 ou um bipe longo com 0 e os silêncios serão representados implicitamente pelo comprimento da palavra (digamos 8 bits). minha mão: o tamanho da palavra.
Meu pensamento é o seguinte: posso reservar os 3 primeiros bits para quantos bits serão lidos e os últimos 5 bits para o código Morse em uma palavra de 8 bits. Como 00110000, significa 'A'. E ainda estou em 'binário', MAS preciso da palavra tamanho que a torna ternária, não é? Os 3 primeiros bits dizem: Leia apenas 1 bit dos 5 bits a seguir.
Em vez de binário, se usarmos trinário, podemos mostrar código morse como: 101021110102110222 etc. onde 1 é: dit 0 é: dah e 2 é silêncio. Ao usar 222, podemos codificar o longo silêncio; portanto, se você tiver um sinal como * - * --- * -, poderá mostrá-lo como: 102100022210, mas não é diretamente possível usar apenas com 1 e 0, A menos que você tenha algo como um tamanho de palavra 'fixo' como mencionei, mas isso é interpretativo, não salvando o Código Morse, pois é em binário. Imagine algo como um piano, você tem apenas os botões do piano. Você deseja deixar uma mensagem no Código Morse para alguém e pode pintar os botões em preto. Não há como você deixar uma mensagem clara, não é? Você precisa de pelo menos mais uma cor para poder colocar os silêncios (aqueles entre caracteres e palavras. É isso que quero dizer com trenário.
Não estou perguntando se você pode representar o Código Morse em 57 anos ou qualquer outra coisa.
Enviei um e-mail ao autor (Charles Petzold) sobre isso; ele diz que demonstra no capítulo 9 do "Código" que o Código Morse pode ser interpretado como um código binário.
Onde estou errado com meu pensamento? O que estou lendo no livro é que o Código Morse é um Binário um fato ou não? É de alguma forma discutível? Por que o Código Morse é informado como quinário em uma página da Wikipedia e também está listado na página Lista de códigos binários ?
Editar: enviei um e-mail ao autor e recebi uma resposta:
-----Mensagem original-----
De: Koray Tugay [mailto: [email protected]]
Enviado: terça-feira, 3 de março de 2015 15:16
Para: [email protected]
Assunto: O Código Morse é realmente binário?
Senhor, você pode dar uma olhada na minha pergunta aqui: O Código Morse é binário, ternário ou quinário? quinário?
Atenciosamente, Koray Tugay
De: "Charles Petzold"
Para: "'Koray Tugay'"
Assunto: RE: O código Morse é realmente binário? Data: 3
Mar 2015 23:04:35 EET
No final do capítulo 9 do "Código", demonstro que o Código Morse pode ser interpretado como um código binário.
-----Mensagem original-----
De: Koray Tugay [mailto: [email protected]]
Enviado: terça-feira, 3 de março de 2015 15:16
Para: [email protected]
Assunto: O Código Morse é realmente binário?
Senhor, você pode dar uma olhada na minha pergunta aqui: O Código Morse é binário, ternário ou quinário? quinário?
Atenciosamente, Koray Tugay
Não estou ocultando o e-mail dele, pois é realmente fácil de encontrar na Web.
fonte
Respostas:
O código Morse é um código ternário de prefixo (para codificar 58 caracteres) em cima de um código binário de prefixo que codifica os três símbolos.
Essa foi uma resposta muito mais curta quando aceita. No entanto, considerando os consideráveis mal-entendidos entre os usuários e seguindo uma solicitação do OP, escrevi essa resposta por muito mais tempo. A primeira seção "resumo" fornece a essência.
Conteúdo
Em poucas palavras (grande)
Ao perguntar "O Código Morse é binário, ternário ou quinário?" não há comparação de respostas possíveis, a menos que se estabeleça alguns critérios para uma resposta aceitável. De fato, sem critérios adequados, é possível inventar explicações para quase qualquer tipo de estrutura. Os critérios que escolhi são os seguintes:
deve refletir a descrição em três níveis do código Morse com a representação de ponto / traço no segundo nível;
deve caber na apresentação e nas ferramentas matemáticas desenvolvidas para a análise teórica dos códigos, tanto quanto possível;
deve ser o mais simples possível;
deve claramente tornar aparentes as propriedades do código Morse.
O objetivo é impedir o hacking arbitrário, que ignora os conceitos básicos da teoria do código estudados cientificamente e que podem ter algum apelo ao fornecer uma ilusão de análise sistemática, embora abordada de maneira informal demais para ser conclusiva. Este site deve ser sobre ciência da computação , não programação. Devemos usar um mínimo de ciência estabelecida e conceitos aceitos para responder a uma pergunta técnica.
Uma análise rápida do padrão mostra que todos os símbolos usados no código Morse são codificados em binário , uma vez que são transmitidos como uma cadeia de unidades de igual comprimento, com um sinal que pode ser ativado ou desativado para cada unidade. Isso indica que as mensagens Morse são finalmente codificadas em um alfabeto lógico .Σ1={0,1}
Mas isso não diz nada da estrutura interna do código. As informações a serem codificadas são uma sequência em um alfabeto de 58 símbolos (de acordo com o padrão), incluindo 57 caracteres e um espaço. Isso corresponde a um alfabeto , o último simbolo é o espaço.Σ3={A,B,…,Z,0,1,…,9,?,=,…,×,@,[]}
No entanto, os especifica padrão que existe um alfabeto intermediário , com base em e e, possivelmente, outros símbolos. Está bem claroΣ2
dot
dash
que cadeias em devem ser codificadas como cadeias em eΣ∗3 Σ∗2
que cadeias em devem ser codificadas como cadeias emΣ∗2 Σ∗1
Portanto, considerando que não há escolha para e , a questão deve ser entendida como: " Qual o número de símbolos que devemos considerar no alfabeto intermediário para melhor planejar a estrutura e as propriedades de todo o Morse código " , que também implica especificar as duas codificações entre os três níveis.Σ1 Σ3 Σ2
Dado o fato de que o código Morse é um prefixo de código homomorphic (comprimento variável) que impede qualquer ambiguidade ao decodificar um sinal, podemos explicar simplesmente esta propriedade essencial com um ternário alfabeto { , , }, e dois esquema de codificação de a e de a , que são homomórficos e prefixos, portanto, ambos códigos inequívocos e, portanto, capazes de ser compostos para fornecer um prefixo inequívoco. codificação dos 58 símbolos em binário.Σ2= C3→2 Σ3 Σ2 C2→1 Σ2 Σ1
dot
dash
sep
Daí código Morse é composto de um código de prefixo ternário expresso no alfabeto , , , com estas três próprios símbolos codificados em binário com as palavras de código seguintes:{ }
dot
dash
sep
dot
dash
sep
Observe que o que é conhecido como o espaço entre consecutivo
dot
oudash
está realmente incluído na representação dedot
edash
, como essa é a representação matemática usual para esses tipos de códigos, que geralmente são definidos como homomorfismos de cadeia de caracteres dos símbolos de origem às palavras de código expressas com símbolos de destino, como eu acabei de fazer.Isso se afasta um pouco de algumas das apresentações fornecidas no padrão, que objetivam especificar mais intuitivamente o código para os usuários, em vez de analisá-lo por suas propriedades estruturais. Mas a codificação é a mesma nos dois casos.
Mesmo sem os tempos precisos do padrão, um decodificador do sinal analógico ainda poderia traduzi-lo para o alfabeto ternário que sugerimos, para que o entendimento acima do código ternário ainda fosse válido.
Códigos: pontos básicos
Esta resposta é baseada no padrão ITU-R M.1677-1 , de outubro de 2009 (agradecimentos a Jason C pela referência). Usarei a terminologia
dot
edash
, em vez dedit
edah
, como é a terminologia usada por esta norma.Antes de começarmos a discutir o código Morse, precisamos concordar com o que é um código. As discussões difíceis sobre essa questão obviamente exigem isso.
Fundamentalmente, as informações precisam ser representadas para serem transmitidas ou processadas. Um código é um sistema para converter informações de um sistema de representação em outro . Esta é uma definição muito geral. Devemos tomar cuidado para não confundir o conceito de representação e o código de uma representação (a fonte ) para outra (o destino ).
Uma representação pode assumir várias formas, como tensão elétrica variável, pontos coloridos no papel, sequência de caracteres, numerais, sequências binárias de 0 e 1, etc. É importante distinguir entre representação analógica e formal (ou lógica ou abstrata) .
Uma representação analógica / física é um desenho, um nível de tensão variável, uma forma (para uma letra).
Uma representação lógica / formal / abstrata é uma representação matemática com gráficos abstratos, cadeias de símbolos ou outras entidades matemáticas.
Embora algumas informações possam ser originalmente analógicas, geralmente as convertemos em uma representação lógica para poder definir com precisão seu processamento por meios matemáticos ou por pessoas.
Por outro lado, ao lidar com a representação lógica usando dispositivos físicos, como computadores ou transmissores, precisamos dar uma forma analógica à representação lógica.
Para os fins desta análise, a única forma analógica que consideramos é a usada para transmissão, conforme descrito na norma. Mas, mesmo assim, consideraremos que o primeiro passo é interpretar essa representação analógica como uma implementação direta de uma representação lógica estruturada identicamente, na qual construímos nossa análise de que tipo de código pode ser o código Morse. A teoria dos códigos é um corpo de conhecimento matemático baseado na análise de representações lógicas.
No entanto, voltaremos à transição analógica / lógica na discussão no final.
Códigos: definições
Nossa visão lógica é que o código é usado para traduzir fontes de cordas em uma fonte alfabeto a um alvo alfabeto . Geralmente, os dois alfabetos são idênticos, geralmente binários, quando o objetivo é adicionar alguma propriedade extra à representação das informações, como torná-las mais resistentes a erros (detecção e correção de erros) ou diminuir a representação por remoção de redundância (compactação sem perda de código) e possivelmente com perda cuidadosamente controlada de algumas informações (compactação com perda).S T
No entanto, o objetivo do código Morse é fornecer apenas uma maneira de representar cadeias de caracteres em um alfabeto grande, em cadeias baseadas em um alfabeto muito menor (na verdade binário), usando um alfabeto intermediário quase binário (pontos e traços) para melhor adaptação ao humano percepção e habilidades manipulativas. Isso é alcançado pelo que é chamado código de tamanho variável :
Chamamos Codeword a imagem de um símbolo .C(s)∈T∗ s∈S
Um código de comprimento variável é decodificado de forma única se o homomorfismo correspondente de em for injetivo . Isso significa que qualquer string em pode ser a imagem de no máximo uma string em . Também dizemos que o código não é ambíguo , o que significa que qualquer string pode ser decodificada de maneira inequívoca, se houver.C S∗ T∗ T∗ S∗
Um código de tamanho variável é um código de prefixo se nenhuma palavra de código for o prefixo de outro. Também é um código instantâneo ou código livre de contexto . A razão para esses nomes é que, ao ler uma sequência de destino que começa com uma palavra de código de um código de prefixo, você reconhece o final da palavra de código assim que lê seu último símbolo, sem precisar conhecer / ler o próximo símbolo. Como conseqüência, os códigos de prefixo são inequívocos e muito fáceis de decodificar rapidamente.w
É facilmente demonstrado que a decodabilidade exclusiva e a propriedade prefix são fechadas sob a composição de códigos.
Observe que a definição como homomorfismo implica que não há separação especial entre as palavras de código. É sua estrutura, como a propriedade prefix, que permite identificá-los sem ambiguidade.
De fato, se houvesse tais símbolos de separação, eles teriam que fazer parte do alfabeto alvo, pois seriam necessários decodificar a string do alfabeto alvo. Seria bastante simples reverter para o modelo teórico do código de tamanho variável anexando o separador à palavra de código anterior. Se isso criar uma dificuldade contextual (devido, por exemplo, a vários separadores), isso seria apenas uma dica de que o código é mais complexo do que aparente. Essa é uma boa razão para seguir o modelo teórico descrito acima.
O código Morse
O código Morse é descrito no padrão em três níveis:
3) ele pretende fornecer uma codificação de texto em idioma natural, usando 57 caracteres (27 letras, 10 dígitos, 20 sinbols e pontuações) e um espaço entre palavras para cortar a sequência de caracteres em palavras. O espaço entre palavras é usado como um caractere especial, que pode ser misturado com os outros, o que observarei
SEP
.2) todos esses caracteres devem ser codificados como sucessões
dash
edot
, usando um espaço entre letras, que observareisep
, para separar a letradash
e adot
letra de uma das letras da próxima letra.1 O
dash
edot
, assim comosep
devem ser codificados como sinal ou ausência de sinal (chamado espaçamento) com comprimento definido com precisão em termos de alguma unidade aceita. Em particular, a letradash
e adot
codificação devem ser separadas por um espaço entre elementos, que observareiσ
.Isso já requer algumas conclusões.
A mensagem a ser transmitida e recebida em forma analógica é uma sucessão de unidades de comprimento (espaço ou duração), de modo que um sinal seja desligado durante toda a duração de cada unidade, conforme especificado na seção I da parte 1 do anexo 2 do padrão :
Esta é claramente uma codificação analógica no que é conhecido como um fluxo de bits, que pode ser logicamente representado na notação binária por uma série de
0
ans1
, de pé para o analógico off e on .Para abstrair questões relacionadas à representação analógica, podemos considerar que as mensagens do código Morse são transmitidas como cadeias de bits, as quais devemos observar com
0
e1
.Portanto, o trecho acima do padrão pode ser expresso logicamente como:
dot
é representado por1
.dash
é representado por111
.σ
é representado por0
.sep
é representado por000
.SEP
é representado por0000000
.Assim, poderíamos ver o código Morse usando 5 palavras de código em binário para codificar esses 5 símbolos. Exceto pelo fato de que não é exatamente assim que o sistema é descrito, há um pouco mais, e não é a maneira mais conveniente de se pensar, de um ponto de vista ingênuo ou matemático.
Observe também que esta descrição é destinada a leigos, não a especialistas em teoria de códigos. Por esse motivo, descreve mais a aparência visível do que a estrutura interna que a justifica. Não há razão para impedir outras descrições compatíveis com esta, embora matematicamente mais estruturadas, para enfatizar as propriedades do código.
Mas primeiro, devemos observar que a descrição completa do código envolve 3 níveis de representação, imediatamente reconhecíveis:
SEP
.dot
,dash
esep
.symbols
como uma sequência binária.Podemos discutir sobre quais símbolos são codificados em quê, mas é um aspecto essencial do código Morse que ele tenha esses três níveis de representação, com caracteres no topo,
dot
s edash
es no meio e bits0
e1
na parte inferior .Isso implica que existem necessariamente dois códigos, um do nível 3 ao nível 2 e o outro do nível 2 ao nível 1.
Analisando os três níveis de representação
Para ter uma análise consistente desse sistema de codificação em três camadas, devemos primeiro analisar que tipo de informação é relevante em cada nível.
1 A cadeia de bits, por definição e por necessidade de sua representação analógica, é composta apenas por
0
e1
.3) No nível do texto, precisamos de um alfabeto de 58 símbolos, incluindo os 57 caracteres e o espaço entre palavras
SEP
. Todos os 58 deles precisam ter uma codificação binária. Porém, embora o padrão do código Morse especifique esses 57 + 1 caracteres, ele não especifica como eles devem ser usados para codificar informações. Esse é o papel do inglês e de outras línguas naturais. O código Morse fornece a outro sistema um alfabeto de 58 símbolos, no qual eles poderiam criar um código de 58 árias, mas o código Morse não é, por si só, um código de 58 árias.2) No nível
dot
edash
, tudo o que precisamos são esses dois símbolos para codificar os 57 caracteres, ou seja, forneça uma palavra de código para cada uma como uma seqüência de caracteresdot
edash
, juntamente com um separadorsep
para marcar quando uma letra terminar e outra começar. Também precisamos de alguns meios de codificar o espaço entre palavrasSEP
. Podemos tentar fornecê-lo diretamente no ponto 1, mas isso atrapalharia a organização do código, de outra forma estruturada em camadas.De fato, a descrição do padrão pode ser criticada por fazer exatamente isso. Mas os autores podem ter pensado que sua apresentação seria mais simples de entender para o usuário médio. Também segue uma descrição tradicional do código Morse, que antecede esse tipo de análise matemática.
Isso exige várias observações:
no nível 3, no nível da letra, o espaço entre letras
sep
não é mais significativo. Isso é bastante normal, pois não tem mais significado no universo das letras do que o espaço que separa dois caracteres escritos no papel. É necessário, no nível 2, reconhecer as palavras de código que representam as letras, mas isso é tudo.da mesma forma no nível 2, o espaço entre elementos
σ
não é mais significativo. Não tem nenhum significado no mundo dosdot
edash
, mas só é necessário no nível 1 para identificar as palavras de código binário que representadot
,dash
. Mas no nível 1, não é distinguível do bit0
.Portanto, o espaço entre elementos
σ
não é mais nada de especial. É apenas um uso de0
.No entanto, como explicado anteriormente, se o código for analisado usando o conhecimento de códigos de comprimento variável, os separadores devem ser anexados às palavras de código que seguem, para definir o código como uma sequência simples homomorfismo.Σ∗2→Σ∗1
Isso implica a seguinte especificação parcial do código: e→ →
dot
10
dash
1110
O alfabeto de nível 2 precisa de pelo menos um outro símbolo, o espaço entre letras indicado , que deve estar de acordo com a letra do padrão. No entanto, a definição do código de comprimento variável como um homomorfismo exigia anexar o espaço entre elementos a cada palavra de código para e . Portanto, devemos ter apenas como palavra-código , para que, juntamente com o final do precedente ou , faça 3 conforme exigido pelo padrão. Isso sempre funciona, uma vez que não há previsão no padrão para que dois separadores entre letras se sigam.Σ2
sep
000
0
dot
dash
00
sep
0
dot
dash
0
Isto é suficiente para codificar o alfabeto { , , } com um código homomórfica definidos como segue:Σ2= C2→1:Σ2→Σ∗1
dot
dash
sep
dot
10
dash
1110
sep
00
E temos a boa surpresa de descobrir que nenhuma palavra de código é um prefixo de outra. Portanto, temos um código de prefixo, que é inequívoco e fácil de decodificar.
Agora podemos proceder da mesma forma para definir o código .C3→2:Σ3→Σ∗2
O padrão usa cadeias de caracteresΣ3 f
dot
edash
como palavras de código para os caracteres em , da maneira fornecida pelas tabelas do padrão, por exemplo, para representar a letra .dot
dot
dash
dot
Novamente, essas palavras de código são separadas por espaços entre letras. Para definir o código como um homomorfismo, devemos incluir o separador nas palavras de código, para que a definição do homomorfismo se torne:f→
dot
dot
dash
dot
sep
Isso se aplica a cada um dos 57 caracteres do alfabeto . Mas, novamente, também precisamos da palavra separador , que, de acordo com o padrão, é . Observamos primeiro que já são fornecidos 3 bits pelo código, 2 pelo que termina a última letra da palavra e 1 pelo bit que termina a última ou pela codificação dessa última letra. Portanto, em última análise, deve ser codificado como o restante .Σ3
SEP
0000000
0
sep
0
dot
dash
SEP
0000
Mas, para respeitar a abordagem em camadas,Σ∗2
SEP
deve ser codificado em alguma palavra de código de . Como é codificado como binário , segue-se que pode ser codificado como .sep
00
SEP
sep
sep
Portanto, podemos codificar o alfabeto , com um código homomórfico definido da seguinte forma:Σ3={A,B,…,Z,0,1,…,9,?,=,…,×,@, } C3→2:Σ3→Σ∗2
SEP
dot
dash
se
pdash
do
tdot
dot
sep
...dash
dash
dot
dot
sep
...dash
dash
dot
dot
dot
sep
...SEP
sep
sep
(para o separador de palavras)E ainda temos a surpresa de ver que nenhuma palavra de código é um prefixo de outra. Portanto, o código é um código de prefixo.C3→2
Como a propriedade prefix é fechada sob a composição de códigos, o código Morse é um código de prefixo.CMorse=C2→1∘C3→2
Podemos, assim, concluir que o código Morse pode ser compreendido, e facilmente analisadas, como a composição de um prefixo de binário que codifica de um alfabeto 3 símbolos {
dot
,dash
,sep
} em um alfabeto binário, e um prefixo que codifica de um 58 símbolo alfabeto (57 caracteres e um espaço) no alfabeto de 3 letras.A composição em si é um prefixo que codifica os 58 símbolos em uma representação binária.
Comentários sobre esta análise.
É sempre difícil estabelecer que a apresentação de uma estrutura é a melhor possível. Parece, no entanto, que a análise acima atende aos critérios estabelecidos no início desta resposta: proximidade com a definição em três níveis, formalmente apresentada de acordo com a teoria atual de codificação, simplicidade e evidenciando as principais propriedades do código.
Observe que há pouco sentido em procurar propriedades de correção de erros. O código Morse pode nem detectar um erro de bit único, pois pode simplesmente transformar dois
dot
em umdash
. No entanto, ele causa apenas erros locais.Em relação à compressão, a codificação ternária foi projetada para reduzir aproximadamente o número de pontos e traços, em um tipo aproximado de codificação de Huffman . Mas os dois códigos compostos poderiam ser facilmente mais densos.
Em relação ao tamanho dos alfabetos, não há escolha para o alfabeto binário e o alfabeto de 58 símbolos. O alfabeto intermediário poderia conter mais símbolos, mas qual seria o objetivo?
No entanto, algumas pessoas estariam inclinadas a reconhecer o espaço
DET
no nível 2, tornando o alfabeto quaternário , usando-o diretamente no nível 3, codificado como ele próprio no nível 2.Isso atenderia à definição padrão, paraC2→1 CMorse
DET
codificado em binário como0000
. Mas isso impediria a análise da codificação binária como um código de prefixo, tornando mais difícil mostrar que é um código de prefixo, portanto inequívoco. C M o r e sDe fato, essa escolha tornaria a string binária
0000
ambígua, decodificável como umSEP
ou comosep
sep
. A ambiguidade teria que ser resolvida com uma regra contextual quesep
não pode seguir a si mesma, tornando a formalização mais complexa.A importância da transição analógica para a lógica.
Esta análise baseia-se fortemente no fato de que a decomposição do sinal liga / desliga em unidades de comprimentos iguais indica claramente uma representação analógica de uma cadeia binária. Além disso, os comprimentos em unidades são exatamente corretos para a análise acima, o que parece improvável que tenha acontecido por acaso (embora seja possível).
No entanto, a partir de uma análise (muito superficial) da patente original 1647 , não parece ter sido tão precisa, com frases como (no topo da página 2):
As pessoas que mais tarde enviavam à mão ou recebiam de ouvido também provavelmente não seriam tão precisas. De fato, seu punho , ou seja, seu timing, era frequentemente reconhecível. Essa visão também é suportada pelo fato de que os comprimentos de espaçamento nem sempre são respeitados , principalmente ao aprender código Morse.
Essas situações correspondem a uma visualização analógica do código como sinal curto (ponto), sinal médio (traço) e pausa curta, média e longa. A transposição direta para um alfabeto lógico daria naturalmente um alfabeto quinário , no qual os 58 símbolos devem ser codificados. Obviamente, isso não é mais uma apresentação em três níveis do código Morse.
No entanto, para fazer sentido (e possivelmente evitar ambiguidade), esse alfabeto deve ser usado com a restrição de que dois símbolos de sinal (
dot
oudash
) não possam se seguir e que os símbolos de pausa também não possam se seguir. A análise do código e de suas propriedades seria mais complexa e a maneira natural de simplificá-lo seria fazer o que foi feito: introduza tempos adequados para transformá-lo na composição de dois códigos, levando à análise bastante simples fornecida acima ( lembre-se de que inclui mostrar o código como prefixo).Além disso, não é estritamente necessário seguir os horários exatos na representação analógica. Como o decodificador da tradução analógica pode distinguir pausas curtas, médias e longas, por qualquer meio, deve apenas imitar o que foi feito no caso binário. Portanto, o sinal curto e médio (necessariamente seguido de uma pausa) são reconhecidos como lógicos
dot
oudash
. Pausas curtas são esquecidas, pois servem apenas para marcar o final dedot
oudash
. Pausas médias são reconhecidas comosep
e pausas longas são reconhecidas como duassep
em sucessão. Portanto, o sinal analógico é representado em um alfabeto ternário, que pode ser usado como antes para codificar o alfabeto de 58 símbolos. Nossa análise inicial pode ser usada mesmo quando os horários não são estritamente respeitados.Como alternativa, a alternância de pausa de sinal pode ser usada para transformar esse alfabeto quinário em um ternário, mantendo apenas as três durações como símbolos do alfabeto e usando a análise contextual para determinar se uma determinada duração é sinal ou pausa. Mas isso é novamente um pouco complexo para analisar.
Isso apenas mostra que existem muitas maneiras de ver as coisas, mas elas não são necessariamente convenientes e nem todas se prestam facilmente à análise com as ferramentas matemáticas que foram desenvolvidas para analisar códigos.
Mais referências às patentes podem ser encontradas na Internet.
Conclusão
Dados os tempos precisos do padrão, uma boa resposta parece ser considerar o código Morse como a composição de um prefixo ternário que codifica (de 58 caracteres) em um alfabeto de 3 símbolos, composto por um prefixo binário que codifica esses três símbolos.
Sem o tempo preciso do padrão, o nível binário não pode mais ser considerado. Então a decodificação analógica para lógica ocorre naturalmente no nível do alfabeto intermediário de
dot
edash
. No entanto, o decodificador analógico para lógico ainda pode decodificar para o alfabeto dos três símbolos anteriores, preservando a aplicabilidade de nossa análise.fonte
Essa resposta não é tão longa quanto parece; este site apenas coloca muito espaço entre os itens da lista! Atualização: Na verdade, está ficando muito longo ...
O Código Morse não é "oficialmente" binário, ternário, quaternário, quinário ou até 57 anos (se contar corretamente). Argumentar sobre qual deles é sem contexto não é produtivo. Cabe a você definir qual desses cinco se baseia em seu aplicativo e nos requisitos de codificação para sua situação específica . Para esse fim, existem prós e contras em cada tamanho de conjunto de símbolos, que você deve considerar para sua situação antes de tomar uma decisão.
Para base, M.1677 , o padrão internacional do Código Morse, seção 2, define tempos como:
Observe que isso define apenas os tempos, por exemplo, um traço não significa a mesma coisa que três pontos, é simplesmente o mesmo comprimento. A unidade base de tempo é um ponto.
Binário
Podemos escolher o binário, se quisermos. É possível representar o Código Morse com "binário estrito", como você o chama - a abordagem do autor foi atribuir os dígitos a "ponto" e "traço". Essa abordagem não funciona e eu não acho que o autor tenha uma compreensão firme do código Morse. Mas existe uma abordagem diferente que funciona. Se escolhermos o binário, representamos essencialmente se o sinal é alto ou baixo, com cada símbolo ocupando uma única fatia de tempo com comprimento de ponto. Observe que esta também é a abordagem descrita na página Lista de códigos binários que você citou.
Outras codificações binárias também podem ser escolhidas (por exemplo , resposta de Bob Jarvis ) às custas de aumentos na dificuldade de decodificação de volta ao Código Morse audível (a codificação de Bob não pode ser decodificada sem estado, por exemplo, a desvantagem é que ela fornece sequências codificadas mais curtas).
Símbolos:
Exemplos de codificação:
Prós:
Contras:
Ternário
Com essa opção, definimos espaçamentos de letras e palavras como pausas, e os espaçamentos de sinais estão implícitos (embora você possa optar por exigir símbolos de descanso de comprimento de ponto entre os sinais, se for melhor para você).
Símbolos:
Exemplos de codificação:
Prós:
Contras:
Quaternário
Símbolos:
Exemplos de codificação:
Prós:
Contras:
Quinário
Uma interpretação direta da lista da Wikipedia. Observe que isso é muito semelhante à escolha binária, exceto que as várias combinações válidas de 0 ou 1 binários recebem seus próprios símbolos.
Símbolos:
Exemplos de codificação:
Prós (comparado ao quaternário):
Contras (comparado ao quaternário):
57 anos:
Incluído para ser completo.
Símbolos:
Exemplos de codificação:
son
is a
Prós:
Contras:
Terminação
Para armazenamento como um fluxo de símbolos em um dispositivo, se você precisar fazer isso, vale a pena notar que M.1677 define sequências de terminação de transmissão e mensagem. Da parte II:
Infelizmente, o padrão é omisso quanto à capacidade de distinguir, por exemplo, a string "+ K" da sequência ( final do telegrama , convite para transmissão ). No entanto, o final do trabalho é único. Se você estiver armazenando código morse, precisará escolher como deseja indicar o final de uma sequência armazenada.
Se você estiver armazenando uma conversa inteira, por exemplo, e estiver usando o conjunto de símbolos binários, considere razoavelmente o fim do trabalho como o indicador de fim de sequência, representado como a sequência de bits exclusiva 101010111010111. Você precisa considerar o tipo dos dados que você está armazenando (por exemplo, fragmentos de mensagens, mensagens inteiras, conversas inteiras), bem como os recursos oferecidos pelo seu meio de armazenamento (por exemplo, capacidade de prefixar o tamanho da mensagem) antes de decidir. Suponho que você possa chegar ao ponto de definir seu próprio indicador de fim de sequência. De qualquer forma, todos esses são assuntos de armazenamento subjacente e têm muitas possibilidades de listar aqui. A escolha é sua, com base no que for apropriado para sua situação.
† Não pode ser decodificado sem estado: Essas codificações exigem que algum estado seja mantido para decodificar em Código Morse audível. Todos eles exigem "Se o símbolo anterior for um ponto / traço e o símbolo atual for um ponto / traço, insira o separador de sinal". Embora você possa tentar "trapacear" e anexar automaticamente um separador de sinal a todos os símbolos, reduzindo o separador de palavras para 5 intervalos e o separador de letras para 1, o M.1677 afaict não proíbe explicitamente separadores de palavras consecutivos, o que interrompe esse kludge.
‡ Separadores de sinal estão implícitos: isso está diretamente relacionado à nota acima, mas é mais semanticamente orientado. Essas codificações possuem separadores de sinal implícitos em suas notações. Ou seja, "zzz" é intuitivamente três zs separados, os limites são "sobrepostos" no que quer que seja que separa símbolos na própria codificação. Considere a descrição "três pontos seguidos"; intuitivamente que levar isto para dizer três separadopontos, mas se os separadores não estivessem implícitos, isso poderia ser considerado indistinguível de um traço. Somente as representações binária e quinária do estilo Wikipedia (ou ternário com a opção explícita de separador de sinal) removem toda ambiguidade e "atalhos" aqui, que podem ser de grande valor dependendo da situação. É por esse motivo que há um forte argumento para a escolha quinária.
TL; DR:
Como você pode ver, existem vantagens e desvantagens para cada um, e cabe a você decidir como deseja tratá-lo com base em seus requisitos . Não há resposta certa. Você pode tentar argumentar que um é mais apropriado que o outro em geral, mas esses argumentos se resumem a preferências pedantes, pois, sem contexto, não há resposta correta.
Agora, tudo o que disse, na minha opinião, a escolha temporária é a representação que me parece mais "certa" para o próprio Código Morse (originalmente eu preferia o quaternário). É a única opção que fornece todo o seguinte:
{ dot, dot, dash }
,,
é significativo e fácil de ignorar).No entanto, existem fortes argumentos para todos. Os argumentos relacionados à codificação também são aplicáveis ao tratamento do próprio Morse. Não existe uma resposta 100% concreta, mas certamente pode ser um bom tópico para o debate com seus amigos no bar.
. . . -. -
fonte
Apesar dos meus pensamentos iniciais sobre isso, verifica-se que essa pergunta pode ser formalizada de uma maneira que admita uma resposta bastante precisa (algumas questões de definição sobre o módulo). A resposta acaba sendo 3 ou 4, ou seja, ternário ou quaternário. A resposta que agrada a todos "tudo vai de 2 a 57" é correta apenas no sentido em que se alguém lhe pede uma caracterização de grupos abelianos, você diz a ele que são conjuntos.
Vamos começar analisando a codificação física do código Morse. Na verdade, isso é B ASK , ou seja, chaveamento binário de mudança de amplitude, que é apenas uma maneira elaborada de dizer que existem dois níveis de amplitude física (elétrica / óptica etc.) para codificarmos nossa mensagem. Portanto, a pergunta imediata é: isso não significa que a resposta é que o código Morse é binário? Bem, é binário apenas de uma maneira não informativa, no sentido de que o sinal de ligar / desligar binário enviado pelo fio não corresponde diretamente a linhas ou pontos. Nesse nível vago de correspondência, poderíamos até enviar o código ASCII (com a codificação direta óbvia de bits) e chamá-lo de "Morse" e / ou "binário"; o mesmo se aplica a qualquer código Huffman (em vez de ASCII).
Então, como podemos tornar a correspondência mais precisa e, ao mesmo tempo, formalizar nossa pergunta? A teoria da codificação vem ajudar. Seja o conjunto de símbolos "moderáveis", aproximadamente 66 símbolos, se eu entender o universo do código Morse corretamente; isso inclui as 26 letras latinas, os dígitos de 0 a 9 e vários acessórios, como algumas pontuações, "prosigns" etc. etc. Na verdade, não é muito importante o que são. Um código é um mapeamento injetivo onde (não ) é um conjunto de palavras de código. Para ser fisicamente representável em nosso hardware BASK subjacente, exigimos que , ou seja, nossas palavras de código precisem ser uma sequência de bits; note que isso implicaM c:M→T∗ T T∗ T⊂{0,1}∗ c Os valores de são cadeias de caracteres de código, portanto, cadeias de caracteres de bits, mas, no final das contas, linearizadas como apenas cadeias de bits.
Para ser uma caracterização fiel do código Morse, precisamos que contenha alguns equivalentes diretos de linhas e pontos, no sentido de que deve haver uma bijeção entre essas palavras de código e os pontos e linhas que representam o código Morse no papel. também é necessário para ser [quase] um código exclusivamente decifráveis, o que significa que qualquer factoring de um elemento de em termos de elementos / codewords de [idealmente] deve ser exclusivo. (Observe que alguns autores, por exemplo, Berstel , nem chamam código, a menos que seja exclusivamente decifrável, mas outros, por exemplo, Steve RomanT T T∗ T T possuem uma terminologia diferente em que qualquer mapeamento é um código, mas aqueles que são exclusivamente decifráveis são apenas o que dizem e abreviam códigos UD. Aqui eu vou apenas a última terminologia. Você também verá um pouco mais tarde porque eu disse "idealmente".)
Como é necessário apenas para ser uma injeção e não uma injeção, podemos preencher com "lixo" arbitrário além do necessário para obter um código UD, desde que as strings geradas por esse lixo não sejam a pré-imagem de algo que possa ser pior. Por exemplo, uma seqüência de exatamente 42 pontos não corresponde a nada em nenhuma variante do código Morse que eu vi. Portanto, quando perguntamos se o código Morse é binário, ternário, quaternário, quinário etc., a pergunta deve ser pedir a cardinalidade mínima de com as duas propriedades acima, ou seja: é [quase] um código UD e temos um bijection óbvia entre a "linha" à base de papel e "ponto" a alguns elementos da .c T T T
Existem duas maneiras de proceder na construção de , de cima para baixo, observando que você precisa de um separador entre a representação em papel de ponto de linha das letras Morse para obter um código UD ou de baixo para cima, desde a ITU código Morse internacional, recebemos os comprimentos das linhas, pontos e várias pausas. Usarei a última abordagem aqui porque existem várias maneiras de obter algum , ou seja, você pode escolher períodos bastante arbitrários, por exemplo, o código Morse americano extinto usou linhas mais curtas que a versão ITU.T T
Comece com a representação derivada do comprimento do sinal ITU, que possui cinco palavras de código básicas, geradas a partir do sinal "on" (1) e "off" (0) do comprimento da unidade:0
just-dot
(1),just-line
(111),unit-space
(0) ,letter-space
(000) eword-space
[assumiu sete zeros no International Morse, mas pode variar na prática]. Observe imediatamente que ounit-space
item só pode aparecer seguido por 1 somente depoisjust-dot
ejust-line
; e esse término de e (que é um código de vírgula; mais sobre isso mais tarde) é realmente necessário, caso contrário, você não pode nem distinguir linhas de pontos. Isso fornece a redução óbvia para quatro palavras de código com:just-dot
just-line
dit
=just-dot
unit-space
= 10 edah
=just-line
unit-space
= 1110.Então esse é o código Morse quaternário:
dit
,dah
,letter-space
,word-space
. A próxima observação é que o valorword-space
pode ser aproximado (ou mesmo assumido) doisletter-space
s, ou seja, seis zeros. Então, como é assim que você obtém o conjunto de palavras de código ternárias; Como referências para esta linha de raciocínio, veja, por exemplo, [1] [2] .Há também uma razão técnica para preferir as palavras de código ternárias: é um código exclusivamente decifrável, na verdade, é um código de prefixo. No entanto, (ou a versão com apenas seis zeros) não é mais decifrável exclusivamente porque portanto, fatoração Embora isso seja teoricamente um problema, não é uma preocupação prática, porque o "metrônomo" humano tem dificuldade em medir silêncios muito longos de qualquer maneira; portanto, basicamente, qualquer silêncio maior que um certo comprimento é considerado (por um humano) uma espécie de espécie.{ 10 , 1110 , 000 , 0 7 } 0 10 = 0 3 0 7 = 0 7 0 3T={10,1110,000} {10,1110,000,07} 010=0307=0703
word-space
Observe também que, se você colocar nesse conjunto também (por exemplo, adotar a visualização "quinária"), ela ficará "ainda mais errada", no sentido de que mesmo não tenham mais fatoração exclusiva (pois ela também é uma palavra de código). Além disso, não está na pré-imagem de nenhum símbolo de Morse; portanto, é lixo em , assim como você pode adicionar a ; de fato, adicionar o último é menos problemático, pois, ao contrário de adicionar , não fará com que o código perca a propriedade UD.000 0 T 1 42 0 T 00 000 0 T 1420 T 0
A redução / abstracção de0 para torná-los distinguíveis um do outro. Uma vez que você abstraia essa construção para os dois trits diferentes ( 000
dit
,dah
,letter-space
como palavras de código binário para três símbolos sumário (Trits) é útil para mostrar rapidamente que o (ternário) é o código Morse UD; isso é imediatamente óbvio porqueletter-space
atua como uma vírgula, ou seja, o código Morse ternário é um código de vírgula. (Observe que outros autores definem "código de vírgula" em um sentido mais restritivo, onde todos os símbolos que não sejam a vírgula são os mesmos; estou usando-o aqui no sentido mais amplo dado na "Álgebra pós-moderna" de DH Smith , que apenas significa usar um símbolo de terminação exclusivo para qualquer palavra de código.) Observe também que a técnica comma0code é usada em dois níveis no código Morse; ojust-line
ejust-dot
são terminadas pelo "curto vírgula"unit-space
=000dit
edah
), todas as letras do código Morse também são codificadas por vírgula, terminando-as com que é o terceiro trit.Também é possível usar o calcule entropia abordagem trit assumindo um
dah
edit
eletter-space
são "equivalentes" como Trits [3] , no sentido em que, por exemplo,-'e' leva 2 Trits e 'y' leva 5 Trits. A abordagem trit abstrata não é tão útil se você se importar com o quão caro cada símbolo é realmente transmitir na codificação real do BASK Morse em uma linha. Para o último, você precisa reduzir o tamanho real dos bits dos 3 (ou 4) símbolos, que são vistos apenas como transições em um autômato. Por exemplo, a letra 'e' leva 5 bits para codificar (asdit
letter-space
) enquanto 'y' leva 17 bits (trêsdah
s, umdit
e aletter-space
). Essa linha de pensamento remonta a Shannon (ver pp. 3-4). Mais detalhes podem ser encontradosna "Teoria da informação e codificação" de Blahut, por exemplo, ele calcula "uma média de 9,296 unidades de tempo de sinalização por letra de saída da fonte" para o código Morse usando as probabilidades (incondicionais) de ocorrência de letras em inglês. Para uma exposição ligeiramente diferente (por um zoólogo!), Você pode olhar para o de JP Hailman ; ele obtém uma média diferente (10,2) porque assume probabilidades ligeiramente diferentes para as letras em inglês, mas, caso contrário, sua análise é conceitualmente a mesma.Para resumir isso: você pode ter várias visualizações do código Morse, mas algumas são mais proveitosas do que outras ao dizer algo interessante sobre isso. Não conheço nenhuma análise que use a visualização "quinary" e, para que esse modelo não seja redutível a quatro símbolos, você teria que fazer algumas suposições sobre a ocorrência do espaço-unidade que não contém Morse real , por exemplo, você poderia ter dois, mas não necessariamente três espaços de unidade adjacentes (que é Morse inválido). A visão ternária oferece uma análise rápida da decodibilidade exclusiva. A visão mais profunda / proveitosa é aquela que vê os 3 ou 4 símbolos como realmente representados por quantidades desiguais de bits, como no código Morse real (|
dit
| = 2, |dah
| = 4, |letter-space
| = 3 e |word-space
| = 6 ou 7); ainda é perspicaz nesse nível inferior considerar os símbolos ternários / quaternários como transições em um autômato.Por que a Wikipedia é uma merda nisso ... bem em alguns tópicos, apenas isso. O artigo principal em http://en.wikipedia.org/wiki/Coding_theory também não é algo que eu recomendo a leitura. Não posso dizer muito sobre o livro (Petzold) que você mencionou, exceto que não parece escrito por um especialista em teoria da informação. Petzold está correto apenas no sentido de que se as mensagens codificadas em Morse consistissem em apenas uma letra, você poderia razoavelmente dizer que elas estão em algum código binário; se você quiser enviar palavras, precisará de um separador de letras; caso contrário, o código seria horrivelmente não UD, a ponto de impraticabilidade.
É um pouco tarde aqui para eu revisar o post inteiro, mas @babou faz um argumento válido abaixo que aparentemente Shannon, Blahut e outros interpretaram mal o padrão (atual) da ITU (assumindo que ele não mudou desde o tempo) no seguinte tecnicidade: o espaço da unidade é adicionado entre dits e dahs da mesma letra , mas apenas o espaçoT={10,1110,00}
letter-space
é adicionado entre as letras. Essa leitura do padrão parece ser confirmada com base no livro de um praticante relativamente recente . Portanto, precisamos emprestar um 0 deletter-space
cada umdit
edah
quando estiverem nas posições terminais de uma letra, deixando apenas dois 0 para oletter-space
, ou seja, . Isso também significa que (por exemplo) o tamanho de 'e' é de apenas 4 bits, não 5.fonte
Originalmente, o código Morse pretendia ser marcas escritas em uma tira de papel, mas os operadores de telégrafo logo conseguiram "ler" os cliques do equipamento. Esta versão do Morse (americano ou "land" Morse) tinha três elementos "mark", o ponto, o traço e o traço longo.
O uso do International Morse durante o século passado, via transmissão de rádio, era geralmente codificado à mão (em uma tecla de telégrafo) e decodificado pelo ouvido, ouvindo o padrão de bipes produzidos pelo receptor. Operadores qualificados podem receber melhor do que os não qualificados, e algumas pessoas podem produzir código mais fácil de entender do que o de outras. Um bom operador de transmissão teria um "bom punho". Um operador inepto foi chamado de LID. (Para a origem da "tampa" - que eu acredito que vem de um erro comum no American Morse de enviar LID para DD, daaahh, dit dit, dah dit dit em vez de dah dit dit, dah dit dit - veja esta referência: https://english.stackexchange.com/questions/31818/how-did-the-word-lid-come-to-mean-poor-operator-in-the-context-of-telegraph .)
Assim, segue-se que a "codificação" de Morse para um formato binário depende do propósito e, assim, se a qualidade de "bom punho" versus "mau punho" deve ser mantida. Uma sequência de comutação liga e desliga deve ser correspondida a um relógio e "corrigida" para dificuldades na fase ou duração de cada parte do sinal? Ou será feita uma amostragem a uma taxa suficiente para reter variações aleatórias ou confusas, presumivelmente para inspeção ou satisfação posterior?
fonte