El código Morse es un código ternario de prefijo (para codificar 58 caracteres) encima de un código binario de prefijo que codifica los tres símbolos.
Esta fue una respuesta mucho más corta cuando fue aceptada. Sin embargo, considerando los considerables malentendidos entre los usuarios y siguiendo una solicitud del OP, escribí esta respuesta mucho más larga. La primera sección de "cáscara de nuez" le da la esencia.
Contenido
En una cáscara de nuez (grande)
Al preguntar "¿El código Morse es binario, ternario o quinario?" no hay comparación de posibles respuestas a menos que uno arregle algunos criterios para una respuesta aceptable. De hecho, sin los criterios adecuados, uno puede idear explicaciones para casi cualquier tipo de estructura. Los criterios que he elegido son los siguientes:
debe reflejar la descripción de tres niveles del código Morse con la representación de punto / guión en el segundo nivel;
debe ajustarse a la presentación y las herramientas matemáticas desarrolladas para el análisis teórico de códigos, tanto como sea posible;
debería ser lo más simple posible;
Debería hacer evidentes las propiedades del código Morse
Esto tiene la intención de impedir la piratería arbitraria, que ignora los conceptos básicos de la teoría del código tal como se estudió científicamente, y que puede tener cierto atractivo al dar una ilusión de análisis sistemático, aunque se aborda de manera demasiado informal para ser concluyente. Se supone que este sitio trata sobre
informática , no sobre programación. Deberíamos usar un mínimo de ciencia establecida y conceptos aceptados para responder una pregunta técnica.
Un análisis rápido del estándar muestra que todos los símbolos utilizados en el código Morse se codifican en última instancia en binario , ya que se transmite como una cadena de unidades de igual longitud, con una señal que puede activarse o desactivarse para cada unidad. Esto indica que los mensajes Morse finalmente están codificados en un alfabeto lógico .Σ1={0,1}
Pero eso no dice nada de la estructura interna del código. La información a codificar es una cadena en un alfabeto de 58 símbolos (según el estándar) que incluye 57 caracteres y un espacio. Esto corresponde a un alfabeto
Σ3={A,B,…,Z,0,1,…,9,?,=,…,×,@,[]}, el último símbolo es el espacio.
Sin embargo, los previsto por la norma de que hay un alfabeto intermedio
, sobre la base de y y posiblemente otros símbolos. Es bastante claroΣ2dot
dash
que las cadenas en deben codificarse como cadenas en Σ ∗ 2 , yΣ∗3Σ∗2
que las cadenas en deben codificarse como cadenas en Σ ∗ 1Σ∗2Σ∗1
Entonces, dado que no hay opción para y Σ 3 , la pregunta debe entenderse como: " ¿Qué número de símbolos deberíamos considerar en el alfabeto intermedio Σ 2 para explicar mejor la estructura y las propiedades de todo el Morse? código " , que también implica especificar las dos codificaciones entre los tres niveles.Σ1Σ3Σ2
Dado el hecho de que el código Morse es un prefijo de código homomorphic (longitud variable) que se opone a cualquier ambigüedad cuando se decodifica una señal, que pueden explicar simplemente esta propiedad esencial con un ternario alfabeto
{ , , }, y dos esquema de codificación C 3 → 2 de Σ 3
a Σ 2 , y C 2 → 1 de Σ 2 a Σ 1Σ2=dot
dash
sep
C3→2Σ3Σ2C2→1Σ2Σ1, que son a la vez homomórficos y prefijos, por lo tanto, ambos códigos no ambiguos y, por lo tanto, pueden componerse para proporcionar una codificación de prefijo inequívoco de los 58 símbolos en binario.
Por lo tanto el código Morse se compone de un código de prefijo ternario expresado en el alfabeto , , } , con estos tres símbolos mismos codificado en binario con las siguientes palabras de código:{ dot
dash
sep
}
dot
, → 1110 y → 00→10dash
→1110sep
→00
Tenga en cuenta que lo que se conoce como el espacio entre consecutivos dot
o dash
realmente se incluye en la representación de dot
y dash
, como esta es la representación matemática habitual para tales tipos de códigos, que generalmente se definen como homomorfismos de cadena de símbolos de origen a palabras de código expresadas con símbolos de destino, como acabo de hacer.
Esto se aleja un poco de parte de la presentación dada en el estándar, que apunta más a especificar intuitivamente el código para los usuarios, en lugar de analizarlo por sus propiedades estructurales. Pero la codificación es la misma en ambos casos.
Incluso sin los tiempos precisos del estándar, un decodificador de la señal analógica podría traducirlo al alfabeto ternario que sugerimos, de modo que la comprensión anterior del código ternario aún sería válida.
Códigos: puntos básicos
Esta respuesta se basa en la Norma UIT-R M.1677-1 , fechada en octubre de 2009 (gracias a Jason C por la referencia). Usaré la terminología dot
y dash
, en lugar de dit
y dah
, ya que es la terminología utilizada por esta norma.
Antes de comenzar a discutir el código Morse, debemos acordar qué es un código. Las difíciles discusiones sobre esta cuestión obviamente lo requieren.
Fundamentalmente, la información necesita ser representada para ser transmitida o procesada de otra manera. Un código es un sistema para traducir información de un sistema de representación a otro . Esta es una definición muy general. Debemos tener cuidado de no confundir el concepto de una representación y el de un código de una representación (la fuente ) a otra (el destino ).
Una representación puede tomar muchas formas, como voltaje eléctrico variable, puntos de color en papel, cadena de caracteres, números, cadenas binarias de 0 y 1, etc. Es importante distinguir entre representación analógica y formal (o lógica o abstracta) .
Una representación analógica / física es un dibujo, un nivel de voltaje variable, una forma (para una letra).
Una representación lógica / formal / abstracta es una representación matemática con gráficos abstractos, cadenas de símbolos u otras entidades matemáticas.
Aunque parte de la información puede ser originalmente analógica, generalmente la convertimos en una representación lógica para poder definir con precisión su procesamiento por medios matemáticos o por personas.
Por el contrario, al tratar con la representación lógica utilizando dispositivos físicos, como una computadora o transmisores, necesitamos darle una forma analógica a la representación lógica.
Para el propósito de este análisis, la única forma analógica que consideramos es la utilizada para la transmisión, como se describe en el estándar. Pero incluso entonces, consideraremos que el primer paso es interpretar esta representación analógica como una implementación directa de una representación lógica estructurada idénticamente, sobre la cual construimos nuestro análisis de qué tipo de código puede ser el código Morse. La teoría del código es un cuerpo matemático de conocimiento basado en el análisis de representaciones lógicas.
Sin embargo, volveremos sobre la transición analógica / lógica en la discusión al final.
Códigos: definiciones
Nuestro punto de vista lógico es que el código se utiliza para traducir las fuentes de cuerdas en un alfabeto fuente a un alfabeto objetivo T . A menudo se da el caso de que ambos alfabetos son idénticos, generalmente binarios, cuando el propósito es agregar alguna propiedad adicional a la representación de la información, como hacerla más resistente a los errores (detección y corrección de errores), o hacer que la representación sea más pequeña eliminar la redundancia (compresión de código sin pérdida) y posiblemente con la pérdida cuidadosamente controlada de cierta información (compresión con pérdida).ST
Sin embargo, el propósito del código Morse es proporcionar solo una forma de representar cadenas en un alfabeto grande, en cadenas basadas en un alfabeto mucho más pequeño (en realidad binario), utilizando un alfabeto intermedio casi binario (puntos y guiones) para adaptarse mejor al humano percepción y habilidades de manipulación. Esto se logra mediante lo que se llama
código de longitud variable :
Usando términos de la teoría del lenguaje formal, la definición matemática precisa es la siguiente: Sea y T dos conjuntos finitos, llamados alfabetos fuente y destino, respectivamente. Un código C : S → T ∗ es una función total que asigna cada símbolo de S a una secuencia de símbolos sobre T , y la extensión de C a un homomorfismo de
S ∗ a T ∗ , que naturalmente asigna cada secuencia de símbolos fuente a secuencia de símbolos de destino, se conoce como su extensión.STdo: S→ T∗STdoS∗T∗
Llamamos palabra de código de la imagen de un símbolo s ∈ S .do( s ) ∈ T∗s ∈ S
Un código de longitud variable es decodificable de forma única si el homomorfismo correspondiente de S ∗ en T ∗ es inyectivo . Eso significa que cualquier cadena en T ∗ puede ser la imagen de como máximo una cadena en S ∗ . También decimos que el código no es ambiguo , lo que significa que cualquier cadena puede decodificarse sin ambigüedad, si es que lo hace.doS∗T∗T∗S∗
Un código de longitud variable es un código de prefijo si ninguna palabra de código es el prefijo de otro. También se denomina código instantáneo o código sin contexto . La razón de estos nombres es que, cuando lee una cadena de destino que comienza con una palabra de código de un código de prefijo, reconoce el final de la palabra de código tan pronto como lee su último símbolo, sin tener que saber / leer el siguiente símbolo. Como consecuencia, los códigos de prefijo son inequívocos y muy fáciles de decodificar rápidamente.w
Se muestra fácilmente que la decodabilidad única y la propiedad del prefijo se cierran bajo la composición de códigos.
Tenga en cuenta que la definición de homomorfismo implica que no existe una separación especial entre las palabras de código. Es su estructura, como la propiedad del prefijo, lo que permite identificarlos sin ambigüedades.
De hecho, si existieran tales símbolos de separación, tendrían que ser parte del alfabeto objetivo, ya que serían necesarios para decodificar la cadena del alfabeto objetivo. Entonces sería bastante simple volver al modelo teórico de código de longitud variable agregando el separador a la palabra de código anterior. Si eso aumentara la dificultad contextual (debido, por ejemplo, a múltiples separadores), eso solo sería una pista de que el código es más complejo de lo que parece. Esta es una buena razón para apegarse al modelo teórico descrito anteriormente.
El código Morse
El código Morse se describe en el estándar en tres niveles:
3) está destinado a proporcionar una codificación de texto en lenguaje natural, utilizando 57 caracteres (27 letras, 10 dígitos, 20 símbolos y ponderaciones) y un espacio entre palabras para cortar la cadena de caracteres en palabras. El espacio entre palabras se usa como un carácter especial, que se puede mezclar con los otros, lo cual señalaré SEP
.
2) Todos estos caracteres deben codificarse como sucesiones dash
y dot
, utilizando un espacio entre letras, que debo señalar sep
, para separar el dash
y dot
de una letra de los de la siguiente letra.
1) El dash
y dot
, así como sep
se codificarán como señal o ausencia de señal (llamado espaciado) con una longitud definida con precisión en términos de alguna unidad aceptada. En particular, la dash
y que dot
codifica una letra debe estar separada por un espacio entre elementos, que debo señalar σ
.
Esto ya requiere algunas conclusiones.
El mensaje que se transmitirá y recibirá en forma analógica es una sucesión de unidades de longitud (longitud del espacio o longitud del tiempo), de modo que una señal esté encendida o apagada durante toda la duración de cada unidad como se especifica en el anexo 1, Parte I, sección 2 de la norma :
2 Spacing and length of the signals
2.1 A dash is equal to three dots.
2.2 The space between the signals forming the same letter is equal to one dot.
2.3 The space between two letters is equal to three dots.
2.4 The space between two words is equal to seven dots.
Esta es claramente una codificación analógica en lo que se conoce como un flujo de bits, que se puede representar lógicamente en notación binaria mediante una cadena de 0
ans 1
, que representa el análogo apagado y encendido .
Para abstraer los problemas relacionados con la representación analógica, podemos considerar que los mensajes de código Morse se transmiten como cadenas de bits, que notaremos con 0
y 1
.
Por lo tanto, el extracto anterior del estándar se puede expresar lógicamente como:
- 0. A
dot
está representado por 1
.
- 1) A
dash
está representado por 111
.
- 2) Un espacio entre elementos
σ
está representado por 0
.
- 3) Un espacio entre letras
sep
está representado por 000
.
- 4) Un espacio entre palabras
SEP
está representado por 0000000
.
Entonces podríamos ver el código Morse como el uso de 5 palabras de código en binario para codificar estos 5 símbolos. Excepto por el hecho de que no es así como se describe el sistema, hay algo más, y no es la forma más conveniente en la que se pueda pensar, desde un punto de vista ingenuo o matemático.
Tenga en cuenta también que esta descripción está destinada a laicos, no a especialistas en teoría de códigos. Por esa razón, describe más la apariencia visible que la estructura interna que lo justifica. No tiene ninguna razón para excluir otras descripciones que sean compatibles con esta, aunque matemáticamente más estructuradas, para enfatizar las propiedades del código.
Pero primero, debemos tener en cuenta que la descripción completa del código involucra 3 niveles de representación, inmediatamente reconocibles:
- 3) El texto, compuesto por una cadena de caracteres, incluidos
SEP
.
- 2) La codificación de una cadena de letras como una cadena de
dot
, dash
y sep
.
- 1) La codificación de una cadena de nivel 2 de estos tres
symbols
como una cadena binaria.
Posiblemente podamos discutir qué símbolos están codificados en qué, pero es un aspecto esencial del código Morse que tiene estos tres niveles de representación, con caracteres en la parte superior, dot
s y dash
es en el medio, y bits 0
y 1
en la parte inferior .
Esto implica que necesariamente hay dos códigos, uno del nivel 3 al nivel 2 y el otro del nivel 2 al nivel 1.
Analizando los tres niveles de representación
Para tener un análisis consistente de este sistema de codificación de 3 niveles, primero debemos analizar qué tipo de información es relevante en cada nivel.
1) La cadena de bits, por definición, y por necesidad de su representación analógica, se compone solo de 0
y 1
.
3) A nivel de texto, necesitamos un alfabeto de 58 símbolos, incluidos los 57 caracteres y el espacio entre palabras SEP
. Todos los 58 tienen que tener en última instancia una codificación binaria. Pero, aunque el estándar del código Morse especifica estos 57 + 1 caracteres, no especifica cómo deben usarse para codificar la información. Ese es el papel del inglés y otros idiomas naturales. El código Morse proporciona otro sistema con un alfabeto de 58 símbolos, sobre los cuales podrían construir un código de 58 arios, pero el código Morse no es en sí un código de 58 arios.
2) En el nivel dot
y dash
, todo lo que necesitamos son estos dos símbolos para codificar los 57 caracteres, es decir, proporcionar una palabra de código para cada uno como una cadena de dot
y dash
, junto con un separador sep
para marcar cuando una letra termina y otra comienza. También necesitamos algunos medios para codificar el espacio entre palabras SEP
. Podríamos intentar proporcionarlo directamente en el nivel 1, pero esto estropearía la organización del código, que de otro modo estaría estructurada en niveles.
De hecho, la descripción de la norma podría ser criticada por hacer justamente eso. Pero los autores pueden haber pensado que su presentación sería más fácil de entender para el usuario promedio. También sigue una descripción tradicional del código Morse, anterior a este tipo de análisis matemático.
Esto requiere varios comentarios:
en el nivel 3, el nivel de letra, el espacio entre letras sep
ya no tiene sentido. Esto es bastante normal, ya que no tiene más significado en el universo de las letras que el espacio que separa dos caracteres escritos en papel. Es necesario en el nivel 2 reconocer las palabras de código que representan las letras, pero eso es todo.
de manera similar en el nivel 2, el espacio entre elementos σ
ya no tiene sentido. No tiene ningún significado en el mundo de dot
y dash
, pero sólo es necesario en el nivel 1 para identificar las palabras de código binario que representa dot
, dash
. Pero en el nivel 1, no se distingue del bit 0
.
Entonces el espacio entre elementos σ
ya no es nada especial. Es solo un uso de 0
.
Σ∗2→ Σ∗1
dot
→10
dash
→1110
Σ2sep
000
0
dot
dash
00
sep
0
dot
dash
0
Σ2=dot
dash
sep
do2 → 1: Σ2→ Σ∗1
dot
→10
dash
→1110
sep
→00
Y tenemos la buena sorpresa de descubrir que ninguna palabra de código es el prefijo de otra. Por lo tanto, tenemos un código de prefijo, que es inequívoco y fácil de decodificar.
do3 → 2: Σ3→ Σ∗2
dot
dash
Σ3dot
dot
dash
dot
F
F→ dot
dot
dash
dot
sep
Σ3SEP
0000000
0
sep
0
dot
dash
SEP
0000
SEP
Σ∗2sep
00
SEP
sep
sep
Σ3= { A , B , ... , Z, 0 , 1 , ... , 9 , ? , = , … , × , @ , SEP
}do3 → 2: Σ3→ Σ∗2
do3 → 2
doMETROo r s e= C2 → 1∘ C3 → 2
Por lo tanto podemos concluir que el código Morse puede ser entendida, y fácilmente analizada, como la composición de un prefijo binario que codifica de un alfabeto de 3 símbolos { dot
, dash
, sep
} en un alfabeto binario, y un prefijo que codifica de un alfabeto de 58 símbolos (57 caracteres y un espacio) en el alfabeto de 3 letras.
La composición en sí es una codificación de prefijo de los 58 símbolos en una representación binaria.
Observaciones sobre este análisis.
Siempre es difícil establecer que una presentación de una estructura es lo mejor que se puede encontrar. Sin embargo, parece que el análisis anterior cumple con los criterios establecidos al comienzo de esta respuesta: cercanía a la definición de 3 niveles, presentada formalmente de acuerdo con la teoría de codificación actual, simplicidad y evidencia de las principales propiedades del código.
Tenga en cuenta que no tiene mucho sentido buscar propiedades de corrección de errores. Es posible que el código Morse ni siquiera detecte un error de un solo bit, ya que simplemente puede cambiar dos dot
en uno dash
. Sin embargo, solo causa errores locales.
Con respecto a la compresión, la codificación ternaria se diseñó para reducir aproximadamente el número de puntos y rayas, en un tipo aproximado de codificación Huffman . Pero los dos códigos compuestos podrían fácilmente hacerse más densos.
Con respecto al tamaño de los alfabetos, no hay opción para el alfabeto binario y el de 58 símbolos. El alfabeto intermedio podría contener más símbolos, pero ¿cuál sería el propósito?
Sin embargo, algunas personas se sentirían inclinadas a reconocer el espacio DET
en el nivel 2, haciendo que el alfabeto sea cuaternario y luego usándolo directamente en el nivel 3, codificado como sí mismo en el nivel 2.
DET
0000
do2 → 1doMETROo r s e
De hecho, tal elección haría que la cadena binaria sea 0000
ambigua, decodificable como SEP
o como sep
sep
. La ambigüedad tendría que resolverse con una regla contextual que sep
no puede seguirse, lo que hace que la formalización sea más compleja.
La importancia de la transición analógica a la lógica.
Este análisis se basa en gran medida en el hecho de que la descomposición de la señal de encendido / apagado en unidades de igual longitud indica claramente una representación analógica de una cadena binaria. Además, las longitudes en unidades son exactamente correctas para el análisis anterior, que parece poco probable que haya sucedido por casualidad (aunque es posible).
Sin embargo, desde una mirada (demasiado superficial) a la patente original 1647 , no parece haber sido tan preciso, con oraciones como (en la parte superior de la página 2):
El signo de un número distinto, o de un número compuesto cuando se usa en una oración de palabras o de números, consiste en una distancia o espacio de separación entre los caracteres de mayor extensión que la distancia utilizada para separar los caracteres que componen dichos caracteres distintos. o número compuesto.
Tampoco era probable que las personas que luego enviaban en mano o recibían por oído fueran tan precisas. De hecho, su puño , es decir, su sincronización, a menudo era reconocible. Esta vista también está respaldada por el hecho de que las longitudes de espacio no siempre se respetan , particularmente cuando se aprende el código Morse.
Estas situaciones corresponden a una vista analógica del código como señal corta (punto), señal media (guión) y pausa corta, media y larga. La transposición directa a un alfabeto lógico daría naturalmente un alfabeto quinario , en el que los 58 símbolos deben codificarse. Esto, por supuesto, ya no es una presentación de 3 niveles del código Morse.
Sin embargo, para tener sentido (y posiblemente evitar la ambigüedad), este alfabeto debe usarse con la restricción de que dos símbolos de señal ( dot
o dash
) no pueden seguirse, y que los símbolos de pausa tampoco pueden seguirse. El análisis del código y sus propiedades se haría más complejo, y la forma natural de simplificarlo sería hacer lo que se hizo: introducir los tiempos adecuados para convertirlo en la composición de dos códigos, lo que lleva al análisis bastante simple dado anteriormente ( recuerda que incluye mostrar que el código es prefijo).
Además, no es estrictamente necesario seguir tiempos exactos en la representación analógica. Dado que el decodificador de la traducción analógica puede distinguir pausas cortas, medias y largas, por cualquier medio, simplemente debe imitar lo que se hizo en el caso binario. Por lo tanto, la señal corta y media (necesariamente seguida de una pausa) se reconoce como lógica dot
o dash
. Las pausas cortas se olvidan, ya que solo sirven para marcar el final de dot
o dash
. Las pausas medias se reconocen como sep
, y las pausas largas se reconocen como dos sep
en sucesión. Por lo tanto, la señal analógica se representa en un alfabeto ternario, que se puede usar como antes para codificar el alfabeto de 58 símbolos. Nuestro análisis inicial puede usarse incluso cuando los tiempos no se respetan estrictamente.
Alternativamente, la alternancia señal-pausa podría usarse para convertir este alfabeto quinario en uno ternario, manteniendo solo las tres duraciones como símbolos del alfabeto y utilizando el análisis contextual para determinar si una duración dada es señal o pausa. Pero esto es nuevamente un poco complejo de analizar.
Esto solo muestra que hay muchas formas de ver las cosas, pero no son necesariamente convenientes y es posible que no todas se presten fácilmente al análisis con las herramientas matemáticas que se han desarrollado para analizar códigos.
Se pueden encontrar más referencias a las patentes en Internet.
Conclusión
Dados los tiempos precisos del estándar, una buena respuesta parece ser considerar el código Morse como la composición de una codificación de prefijo ternario (de 58 caracteres) en un alfabeto de 3 símbolos, compuesto con una codificación de prefijo binario de estos tres símbolos.
Sin la sincronización precisa del estándar, el nivel binario ya no puede considerarse. Entonces, la decodificación analógica a lógica tiene lugar naturalmente en el nivel del alfabeto intermedio de dot
y
dash
. Sin embargo, el decodificador analógico a lógico puede decodificar el alfabeto de los 3 símbolos anteriores, preservando así la aplicabilidad de nuestro análisis.