Le code Morse est un préfixe ternaire (pour coder 58 caractères) au-dessus d'un préfixe binaire codant les trois symboles.
C'était une réponse beaucoup plus courte lorsqu'elle a été acceptée. Cependant, compte tenu des incompréhensions considérables entre les utilisateurs et suite à une demande du PO, j'ai écrit cette réponse beaucoup plus longue. La première section «bref» vous en donne l'essentiel.
Contenu
En un (gros) mot
Lorsque vous demandez "Le code Morse est-il binaire, ternaire ou quinaire?" il n'y a pas de comparaison des réponses possibles à moins que l'on fixe certains critères pour une réponse acceptable. En effet, sans critères appropriés, on peut trouver des explications pour presque n'importe quel type de structure. Les critères que j'ai choisis sont les suivants:
il doit refléter la description à trois niveaux du code Morse avec la représentation point / tiret dans le deuxième niveau;
il doit correspondre autant que possible à la présentation et aux outils mathématiques développés pour l'analyse théorique des codes;
cela devrait être aussi simple que possible;
il doit clairement faire apparaître les propriétés du code Morse.
Ceci est destiné à empêcher le piratage arbitraire, qui ignore les concepts de base de la théorie des codes telle qu'étudiée scientifiquement, et qui peut avoir un certain attrait en donnant une illusion d'analyse systématique, bien que traité de manière trop informelle pour être concluant. Ce site est censé concerner l'
informatique , pas la programmation. Nous devons utiliser un minimum de science établie et de concepts acceptés pour répondre à une question technique.
Une analyse rapide de la norme montre que tous les symboles utilisés dans le code Morse sont finalement codés en binaire , car il est transmis sous la forme d'une chaîne d'unités de longueur égale, avec un signal qui peut être activé ou désactivé pour chaque unité. Cela indique que les messages Morse sont finalement codés dans un alphabet logique .Σ1= { 0 , 1 }
Mais cela ne dit rien de la structure interne du code. Les informations à encoder sont une chaîne sur un alphabet de 58 symboles (selon la norme) comprenant 57 caractères et un espace. Cela correspond à un alphabet
Σ3= { A , B , … , Z, 0 , 1 , ... , 9 , ? , = , … , × , @ , [] }, le dernier symbl étant l'espace.
Cependant, la norme précise qu'il ya un alphabet intermédiaire
, sur la base et et éventuellement d' autres symboles. C'est assez clairΣ2dot
dash
qui enchaîne dans Σ∗3 doivent être codées comme des chaînes de , etΣ∗2
qui enchaîne dans Σ∗2 doivent être codées comme des chaînes de Σ∗1
Donc, étant donné qu'il n'y a pas de choix pour Σ1 et , la question doit être comprise comme: " Quel nombre de symboles faut-il considérer dans l'alphabet intermédiaire Σ 2 pour mieux expliquer la structure et les propriétés de l'ensemble du Morse code ", ce qui implique également de spécifier les deux encodages entre les trois niveaux.Σ3Σ2
Compte tenu du fait que le code Morse est un préfixe de code homomorphic (longueur variable) qui exclut toute ambiguïté lors du décodage d' un signal, nous pouvons expliquer simplement cette propriété essentielle avec un ternaire alphabet
{ , , }, et deux schéma de codage C 3 → 2 de Σ 3
à Σ 2 , et C 2Σ2=dot
dash
sep
C3 → 2Σ3Σ2 de Σ 2 à Σ 1C2 → 1Σ2Σ1, qui sont à la fois homomorphes et préfixes, donc tous deux des codes sans ambiguïté, et donc capables d'être composés pour donner un codage de préfixe sans ambiguïté des 58 symboles en binaire.
Par conséquent le code Morse est composé d'un code ternaire préfixe exprimé dans l'alphabet , , } , avec ces trois symboles se codés en binaire avec les mots de code suivants:{ dot
dash
sep
}
dot
, → 1110 et → 00→ 10dash
→ 1110sep
→ 00
Notez que ce qui est connu comme l'espace entre consécutifs dot
ou dash
est réellement inclus dans la représentation de, dot
et dash
comme il s'agit de la représentation mathématique habituelle pour de tels types de codes, qui sont généralement définis comme des homomorphismes de chaîne des symboles source aux mots de code exprimés avec des symboles cibles, comme je viens de le faire.
Cela s'écarte un peu de la présentation donnée dans la norme, qui vise plus à spécifier intuitivement le code pour les utilisateurs, plutôt qu'à l'analyser pour ses propriétés structurelles. Mais l'encodage est le même dans les deux cas.
Même sans les synchronisations précises de la norme, un décodeur du signal analogique pourrait toujours le traduire dans l'alphabet ternaire que nous suggérons, de sorte que la compréhension ci-dessus du code ternaire serait toujours valide.
Codes: points de base
Cette réponse est basée sur la norme UIT-R M.1677-1 , datée d'octobre 2009 (merci à Jason C pour la référence). J'utiliserai la terminologie dot
et dash
, plutôt que dit
et dah
, car c'est la terminologie utilisée par cette norme.
Avant de commencer à discuter du code Morse, nous devons nous mettre d'accord sur ce qu'est un code. Les discussions difficiles sur cette question l'exigent évidemment.
Fondamentalement, les informations doivent être représentées afin d'être transmises ou traitées d'une autre manière. Un code est un système permettant de traduire des informations d'un système de représentation à un autre . Il s'agit d'une définition très générale. Il faut faire attention à ne pas confondre le concept de représentation et celui de code d'une représentation (la source ) à une autre (la cible ).
Une représentation peut prendre plusieurs formes, telles que tension électrique variable, points colorés sur papier, chaîne de caractères, chiffres, chaînes binaires de 0 et 1, etc. Il est important de faire la distinction entre la représentation analogique et la représentation formelle (ou logique ou abstraite). .
Une représentation analogique / physique est un dessin, un niveau de tension variable, une forme (pour une lettre).
Une représentation logique / formelle / abstraite est une représentation mathématique avec des graphiques abstraits, des chaînes de symboles ou d'autres entités mathématiques.
Bien que certaines informations puissent à l'origine être analogiques, nous les convertissons généralement en une représentation logique afin de pouvoir définir précisément leur traitement par des moyens mathématiques ou par des personnes.
Inversement, pour traiter de la représentation logique à l'aide de dispositifs physiques, tels que des ordinateurs ou des émetteurs, nous devons donner une forme analogique à la représentation logique.
Aux fins de cette analyse, la seule forme analogique que nous considérons est celle utilisée pour la transmission, comme décrit dans la norme. Mais même alors, nous considérerons que la première étape consiste à interpréter cette représentation analogique comme une implémentation directe d'une représentation logique structurée de manière identique, sur laquelle nous construisons notre analyse de quel type de code le code Morse peut être. La théorie des codes est un ensemble mathématique de connaissances basé sur l'analyse des représentations logiques.
Cependant, nous reviendrons sur la transition analogique / logique dans la discussion de la fin.
Codes: définitions
Notre point de vue logique est que le code est utilisé pour traduire les chaînes sources d'un alphabet source en un alphabet cible TST . Il arrive souvent que les deux alphabets soient identiques, généralement binaires, lorsque le but est d'ajouter une propriété supplémentaire à la représentation des informations, comme la rendre plus résistante aux erreurs (détection et correction des erreurs), ou rendre la représentation plus petite en suppression de la redondance (compression de code sans perte) et éventuellement avec une perte soigneusement contrôlée de certaines informations (compression avec perte).
Cependant, le but du code Morse est de fournir uniquement un moyen de représenter des chaînes sur un grand alphabet, en chaînes basées sur un alphabet beaucoup plus petit (en fait binaire), en utilisant un alphabet intermédiaire presque binaire (points et tirets) mieux adapté à l'homme. perception et capacités de manipulation. Ceci est réalisé par ce qu'on appelle
un code de longueur variable :
En utilisant des termes issus de la théorie formelle du langage, la définition mathématique précise est la suivante: Soit et T deux ensembles finis, appelés respectivement alphabets source et cible. Un code C : S → T ∗ est une fonction totale mappant chaque symbole de S à une séquence de symboles sur T , et l'extension de C à un homomorphisme de
S ∗ en T ∗ , qui mappe naturellement chaque séquence de symboles source à un séquence de symboles cibles, est appelée son extension.STC: S→ T∗STCS∗T∗
Nous appelons CodeWord l'image d'un symbole de ∈ S .C( s ) ∈ T∗s ∈ S
Un code de longueur variable est uniquement décodable si l'homomorphisme correspondant de S ∗ en T ∗ est injectif . Cela signifie que toute chaîne dans T ∗ peut être l'image d'au plus une chaîne dans S ∗ . Nous disons également que le code est sans ambiguïté , ce qui signifie que toute chaîne peut être décodée sans ambiguïté, le cas échéant.CS∗T∗T∗S∗
Un code de longueur variable est un code de préfixe si aucun mot de code n'est le préfixe d'un autre. Il s'agit également d' un code instantané allié ou d' un code sans contexte . La raison de ces noms est que, lors de la lecture d'une chaîne cible qui commence par un mot de code d'un code de préfixe, vous reconnaissez la fin du mot de code dès que vous lisez son dernier symbole, sans avoir à connaître / lire le symbole suivant. En conséquence, les codes de préfixe sont sans ambiguïté et très faciles à décoder rapidement.w
Il est facile de montrer que la décodabilité unique et la propriété de préfixe sont fermées sous la composition de codes.
Notez que la définition en tant qu'homomorphisme implique qu'il n'y a pas de séparation spéciale entre les mots de code. C'est leur structure, comme la propriété prefix, qui permet de les identifier sans ambiguïté.
En effet, s'il existait de tels symboles de séparation, ils devraient faire partie de l'alphabet cible, car ils seraient nécessaires pour décoder la chaîne de l'alphabet cible. Il serait alors assez simple de revenir au modèle théorique du code de longueur variable en ajoutant le séparateur au mot de code précédent. Si cela devait soulever des difficultés contextuelles (dues par exemple à plusieurs séparateurs), ce ne serait qu'un indice que le code est plus complexe qu'il n'y paraît. C'est une bonne raison de s'en tenir au modèle théorique décrit ci-dessus.
Le code Morse
Le code Morse est décrit dans la norme à trois niveaux:
3. il est destiné à fournir un encodage de texte en langage naturel, en utilisant 57 caractères (27 lettres, 10 chiffres, 20 synboles et ponctuations) et un espace inter-mots pour couper la chaîne de caractères en mots. L'espace inter-mots est utilisé comme un caractère spécial, qui peut être mélangé avec les autres, que je noterai SEP
.
2. tous ces caractères doivent être codés comme des successions de dash
et dot
, en utilisant un espace inter-lettres, que je noterai sep
, pour séparer le dash
et dot
d'une lettre de ceux de la lettre suivante.
1 . Le dash
et dot
, ainsi que sep
doivent être codés en tant que signal ou absence de signal (appelé espacement) avec une longueur définie avec précision en termes d'unité acceptée. En particulier, le dash
et l' dot
encodage d'une lettre doivent être séparés par un espace inter-éléments, que je noterai σ
.
Cela appelle déjà quelques conclusions.
Le message à transmettre et à recevoir sous forme analogique est une succession d'unités de longueur (longueur d'espace ou longueur de temps), de telle sorte qu'un signal soit activé ou désactivé pendant toute la durée de chaque unité, comme spécifié dans l'annexe 1, partie I, section 2 de la norme :
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.
Il s'agit clairement d'un codage analogique dans ce qui est connu comme un flux binaire, qui peut être logiquement représenté en notation binaire par une chaîne de 0
ans 1
, représentant l'analogique off et on .
Afin d'abstraire les problèmes liés à la représentation analogique, nous pouvons donc considérer que les messages en code Morse sont transmis sous forme de chaînes de bits, que nous noterons avec 0
et 1
.
Par conséquent, l'extrait ci-dessus de la norme peut être exprimé logiquement comme:
- 0. A
dot
est représenté par 1
.
- 1 . A
dash
est représenté par 111
.
- 2. Un espace inter-éléments
σ
est représenté par 0
.
- 3. Un espace inter-lettres
sep
est représenté par 000
.
- 4. Un espace inter-mots
SEP
est représenté par 0000000
.
Nous avons donc pu voir le code Morse comme utilisant 5 mots de code en binaire pour coder ces 5 symboles. Hormis le fait que ce n'est pas tout à fait ainsi que le système est décrit, il y en a encore plus, et ce n'est pas la manière la plus pratique de penser, d'un point de vue naïf ou mathématique.
Notez également que cette description est destinée aux profanes, pas aux spécialistes de la théorie des codes. Pour cette raison, il décrit plus l'apparence visible que la structure interne qui le justifie. Il n'a aucune raison d'exclure d'autres descriptions compatibles avec celle-ci, bien que mathématiquement plus structurées, pour souligner les propriétés du code.
Mais d'abord, il faut noter que la description complète du code implique 3 niveaux de représentation, immédiatement reconnaissables:
- 3. Le texte, composé d'une chaîne de caractères, y compris
SEP
.
- 2. L'encodage d'une chaîne de lettres sous la forme d'une chaîne de
dot
, dash
et sep
.
- 1 . L'encodage d'une chaîne de niveau 2 de ces trois en
symbols
tant que chaîne binaire.
Nous pouvons éventuellement discuter de quels symboles sont encodés dans quoi, mais c'est un aspect essentiel du code Morse qu'il a ces trois niveaux de représentation, avec des caractères en haut, dot
s et dash
es au milieu, et des bits 0
et 1
en bas .
Cela implique qu'il y a nécessairement deux codes, l'un du niveau 3 au niveau 2, et l'autre du niveau 2 au niveau 1.
Analyser les trois niveaux de représentation
Afin d'avoir une analyse cohérente de ce système de codage à 3 niveaux, nous devons d'abord analyser le type d'informations pertinentes à chaque niveau.
1 . La chaîne de bits, par définition, et par nécessité de sa représentation analogique, est composée uniquement de 0
et 1
.
3. Au niveau du texte, nous avons besoin d'un alphabet de 58 symboles, dont les 57 caractères et l'espace inter-mots SEP
. Tous les 58 d'entre eux doivent avoir finalement un encodage binaire. Mais, bien que la norme de code Morse spécifie ces 57 + 1 caractères, elle ne spécifie pas comment ils doivent être utilisés pour coder les informations. C'est le rôle de l'anglais et des autres langues naturelles. Le code Morse fournit à un autre système un alphabet de 58 symboles, sur lequel ils pourraient construire du code 58-aire, mais le code Morse n'est pas lui-même un code 58-aire.
2. Au niveau dot
et dash
, tout ce dont nous avons besoin est ces deux symboles afin de coder les 57 caractères, c'est-à-dire fournir un mot de code pour chacun comme une chaîne de dot
et dash
, avec un séparateur sep
pour marquer quand une lettre se termine et un autre commence. Nous avons également besoin de certains moyens de coder l'espace inter-mots SEP
. Nous pourrions essayer de le fournir directement au niveau 1, mais cela perturberait l'organisation autrement structurée du code.
En effet, la description de la norme pourrait à juste titre être critiquée pour avoir fait cela. Mais les auteurs ont peut-être pensé que leur présentation serait plus simple à saisir pour l'utilisateur moyen. Il suit également une description traditionnelle du code Morse, antérieure à ce type d'analyse mathématique.
Cela appelle plusieurs remarques:
au niveau 3, le niveau lettre, l'espace inter-lettres sep
n'a plus de sens. C'est tout à fait normal, car il n'a pas plus de sens dans l'univers des lettres que l'espace séparant deux caractères écrits sur du papier. Il est nécessaire au niveau 2 de reconnaître les mots de code représentant les lettres, mais c'est tout.
de même au niveau 2, l'espace inter-éléments σ
n'a plus de sens. Il n'a pas de sens dans le monde dot
et dash
, mais il est seulement nécessaire au niveau 1 pour identifier les mots de code binaire représentant dot
, dash
. Mais au niveau 1, il ne se distingue pas du mors 0
.
L'espace inter-éléments σ
n'a donc plus rien de spécial. Ce n'est qu'une utilisation de 0
.
Σ∗2→ Σ∗1
dot
→10
dash
→1110
Σ2sep
000
0
dot
dash
00
sep
0
dot
dash
0
Σ2=dot
dash
sep
C2 → 1: Σ2→ Σ∗1
dot
→10
dash
→1110
sep
→00
Et nous avons la bonne surprise de découvrir qu'aucun mot de code n'est le préfixe d'un autre. Par conséquent, nous avons un code de préfixe, qui est sans ambiguïté et facile à décoder.
C3 → 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
}C3 → 2: Σ3→ Σ∗2
C3 → 2
CMo r s e= C2 → 1∘ C3 → 2
Nous pouvons donc conclure que le code morse peut être comprise et facile à analyser, comme la composition d'un préfixe binaire codage d'un 3 symboles alphabet { dot
, dash
, sep
} dans un alphabet binaire, et un préfixe codage d'un alphabet de symboles 58 (57 caractères et un espace) dans l'alphabet à 3 lettres.
La composition elle-même est un préfixe codant les 58 symboles en une représentation binaire.
Remarques sur cette analyse.
Il est toujours difficile d'établir qu'une présentation d'une structure est la meilleure possible. Il semble cependant que l'analyse ci-dessus réponde aux critères définis au début de cette réponse: proximité de la définition à 3 niveaux, présentée formellement selon la théorie de codage actuelle, simplicité et mise en évidence des principales propriétés du code.
Notez qu'il est inutile de rechercher des propriétés de correction d'erreur. Le code Morse peut même ne pas détecter une seule erreur de bit car il peut simplement en changer deux dot
en un dash
. Cependant, il ne provoque que des erreurs locales.
En ce qui concerne la compression, l'encodage ternaire a été conçu pour réduire approximativement le nombre de points et de tirets, dans un type approximatif de codage Huffman . Mais les deux codes composés pourraient facilement être densifiés.
Concernant la taille des alphabets, il n'y a pas de choix pour l'alphabet binaire et 58 symboles. L'alphabet intermédiaire pourrait contenir plus de symboles, mais quel serait le but?
Cependant, certaines personnes seraient enclines à reconnaître l'espace DET
au niveau 2, rendant ainsi l'alphabet quaternaire , puis à l'utiliser directement au niveau 3, encodé comme lui-même au niveau 2.
DET
0000
C2 → 1CMo r s e
En effet, un tel choix rendrait la chaîne binaire 0000
ambiguë, décodable soit comme, soit SEP
comme sep
sep
. L'ambiguïté devrait être résolue avec une règle contextuelle qui sep
ne peut pas se suivre, ce qui rend la formalisation plus complexe.
L'importance de la transition analogique-logique.
Cette analyse repose fortement sur le fait que la décomposition du signal marche / arrêt en unités de longueurs égales indique clairement une représentation analogique d'une chaîne binaire. De plus, les longueurs en unités sont exactement correctes pour l'analyse ci-dessus, ce qui semble peu probable d'avoir été le fruit du hasard (bien que cela soit possible).
Cependant, d'un regard (trop superficiel) sur le brevet original 1647 , il ne semble pas avoir été aussi précis, avec des phrases comme (en haut de la page 2):
Le signe d'un chiffre distinct, ou d'un chiffre composé lorsqu'il est utilisé dans une phrase de mots ou de chiffres, consiste en une distance ou un espace de séparation entre les caractères plus étendu que la distance utilisée pour séparer les caractères qui composent un tel caractère distinct. ou un nombre composé.
Les personnes qui envoyaient plus tard à la main ou recevaient à l'oreille étaient également peu susceptibles d'être aussi précises. En effet, leur poing , c'est-à-dire leur timing, était souvent reconnaissable. Ce point de vue est également soutenu par le fait que les longueurs d'espacement ne sont pas toujours respectées , en particulier lors de l'apprentissage du code Morse.
Ces situations correspondent à une vue analogique du code en tant que signal court (point), signal moyen (tiret) et pause courte, moyenne et longue. La transposition directe dans un alphabet logique donnerait naturellement un alphabet quinaire , dans lequel les 58 symboles doivent être codés. Bien sûr, ce n'est plus une présentation à trois niveaux du code Morse.
Cependant, afin de donner un sens (et éventuellement d'éviter toute ambiguïté), cet alphabet doit être utilisé avec la contrainte que deux symboles de signal ( dot
ou dash
) ne peuvent pas se suivre, et que les symboles de pause ne peuvent pas non plus se suivre. L'analyse du code et de ses propriétés serait rendue plus complexe, et la manière naturelle de le simplifier serait de faire ce qui a été fait: introduire des synchronisations appropriées pour le transformer en la composition de deux codes, conduisant à l'analyse assez simple donnée ci-dessus ( rappelez-vous qu'il inclut l'affichage du code est le préfixe).
De plus, il n'est pas strictement nécessaire de suivre des temporisations exactes dans la représentation analogique. Étant donné que le décodeur de la traduction analogique peut distinguer les pauses courtes, moyennes et longues, par quelque moyen que ce soit, il devrait simplement imiter ce qui a été fait dans le cas binaire. Par conséquent, les signaux courts et moyens (nécessairement suivis d'une pause) sont reconnus comme logiques dot
ou dash
. Les courtes pauses sont oubliées, car elles ne servent qu'à marquer la fin de dot
ou dash
. Les pauses moyennes sont reconnues comme sep
, et les pauses longues sont reconnues comme deux sep
successives. Par conséquent, le signal analogique est représenté dans un alphabet ternaire, qui peut être utilisé comme précédemment pour coder l'alphabet de 58 symboles. Notre analyse initiale peut être utilisée même lorsque les délais ne sont pas strictement respectés.
Alternativement, l'alternance signal-pause pourrait être utilisée pour transformer cet alphabet quinaire en un alphabet ternaire, en ne gardant que les trois durées comme symboles de l'alphabet, et en utilisant une analyse contextuelle pour déterminer si une durée donnée est un signal ou une pause. Mais c'est encore un peu complexe à analyser.
Cela montre simplement qu'il existe de nombreuses façons de voir les choses, mais elles ne sont pas nécessairement pratiques et peuvent ne pas toutes se prêter facilement à l'analyse avec les outils mathématiques qui ont été développés pour analyser les codes.
Plus de références aux brevets peuvent être trouvées sur Internet.
Conclusion
Compte tenu des délais précis de la norme, une bonne réponse semble être de considérer le code Morse comme la composition d'un codage de préfixe ternaire (de 58 caractères) en un alphabet à 3 symboles, composé d'un codage de préfixe binaire de ces trois symboles.
Sans le timing précis de la norme, le niveau binaire ne peut plus être pris en compte. Ensuite, le décodage analogique-logique se déroule naturellement au niveau de l'alphabet intermédiaire de dot
et
dash
. Cependant, le décodeur analogique-logique peut décoder jusqu'à l'alphabet des 3 symboles précédents, préservant ainsi l'applicabilité de notre analyse.