Je lis le livre: " Code: Le langage caché du matériel informatique et des logiciels " et dans le chapitre 2, l'auteur dit:
Le code Morse est dit être un code binaire (signifiant littéralement deux par deux) parce que les composants du code ne se composent que de deux choses - un point et un tiret.
Wikipédia en revanche dit:
À proprement parler, ce n'est pas binaire, car il y a cinq éléments fondamentaux (voir quinaire). Cependant, cela ne signifie pas que le code Morse ne peut pas être représenté comme un code binaire. Dans un sens abstrait, c'est la fonction que les opérateurs télégraphiques remplissent lors de la transmission des messages (voir quinaire).
Mais là encore, une autre page Wikipedia inclut le code Morse dans la «Liste des codes binaires».
Je suis très confus parce que je pense que le code Morse est en fait ternaire . Vous avez 3 types différents de «possibilités»: un silence, un bip court ou un bip long.
Il est impossible de représenter le code Morse en «binaire agitateur» n'est-ce pas?
Par «strict binaire» je veux dire, pensez au flux de binaire: 1010111101010 .. Comment suis-je censé représenter un silence, un bip court et / ou un bip long?
La seule façon dont je peux penser est la «taille des mots» qu'un ordinateur implémente. Si je (et le CPU / l'interprète du code) sais qu'il lira 8 bits à chaque fois, alors je pourrai représenter le code Morse. Je peux simplement représenter un bip court avec un 1 ou un bip long avec un 0 et les silences seront implicitement représentés par la longueur du mot (disons 8 bits ..) Encore une fois, j'ai cette 3ème variable / le 3ème atout dans ma main: la taille du mot.
Ma réflexion est la suivante: je peux réserver les 3 premiers bits pour le nombre de bits à lire, et les 5 derniers bits pour le code Morse dans un mot de 8 bits. Comme 00110000 signifie «A». Et je suis toujours en «binaire» MAIS j'ai besoin de la taille du mot qui le rend ternaire n'est-ce pas? Les 3 premiers bits disent: Lire seulement 1 bit parmi les 5 bits suivants.
Au lieu du binaire, si nous utilisons le trinaire, nous pouvons afficher du code morse comme: 101021110102110222 etc. où 1 est: dit 0 est: dah et 2 est silence. En utilisant 222, nous pouvons coder le long silence, donc si vous avez un signal comme * - * --- * - vous pouvez le montrer comme: 102100022210, mais ce n'est pas directement possible en utilisant uniquement avec 1 et 0 À MOINS QUE vous arriviez avec quelque chose comme une taille de mot «fixe» comme je l'ai mentionné, mais bon, c'est interpréter, pas enregistrer le code Morse comme il est en binaire. Imaginez quelque chose comme un piano, vous n'avez que les boutons du piano. Vous voulez laisser un message en Morse pour quelqu'un et vous pouvez peindre les boutons en noir. Il n'y a aucun moyen de laisser un message clair, n'est-ce pas? Vous avez besoin d'au moins une couleur de plus pour pouvoir mettre les silences (ceux entre les caractères et les mots. C'est ce que je veux dire par trénaire.
Je ne vous demande pas si vous pouvez représenter le code Morse en 57-aire ou quoi que ce soit d'autre.
J'ai envoyé un e-mail à l'auteur (Charles Petzold) à ce sujet; il dit qu'il démontre au chapitre 9 de "Code" que le code Morse peut être interprété comme un code binaire.
Où ai-je tort avec ma pensée? Est-ce que je lis dans le livre, que le code Morse étant un binaire est un fait ou non? Est-il en quelque sorte discutable? Pourquoi le code Morse est-il dit quinaire dans une page Wikipédia, et il est également répertorié dans la page Liste des codes binaires ?
Edit: J'ai envoyé un e-mail à l'auteur et j'ai obtenu une réponse:
----- Message d'origine -----
De: Koray Tugay [mailto: [email protected]]
Envoyé: mardi 3 mars 2015 15h16
Objet: Le code Morse est-il vraiment binaire?
Monsieur, pourriez-vous jeter un œil à ma question ici: le code Morse est-il binaire, ternaire ou quinaire? quinaire?
Cordialement, Koray Tugay
De: "Charles Petzold"
À: "'Koray Tugay'"
Objet: RE: Le code Morse est-il vraiment binaire? Date: 3
Mars 2015 23:04:35 EET
Vers la fin du chapitre 9 de "Code", je démontre que le code Morse peut être interprété comme un code binaire.
----- Message d'origine -----
De: Koray Tugay [mailto: [email protected]]
Envoyé: mardi 3 mars 2015 15h16
Objet: Le code Morse est-il vraiment binaire?
Monsieur, pourriez-vous jeter un œil à ma question ici: le code Morse est-il binaire, ternaire ou quinaire? quinaire?
Cordialement, Koray Tugay
Je ne cache pas son e-mail car il est de toute façon très facile à trouver sur le Web.
la source
Réponses:
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Σ2
dot
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= 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.
dot
dash
sep
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 → 00dash
sep
Notez que ce qui est connu comme l'espace entre consécutifs
dot
oudash
est réellement inclus dans la représentation de,dot
etdash
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
etdash
, plutôt quedit
etdah
, 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 TS T . 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 :
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.C S∗ 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
etdot
, en utilisant un espace inter-lettres, que je noteraisep
, pour séparer ledash
etdot
d'une lettre de ceux de la lettre suivante.1 . Le
dash
etdot
, ainsi quesep
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, ledash
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 :
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
ans1
, 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
et1
.Par conséquent, l'extrait ci-dessus de la norme peut être exprimé logiquement comme:
dot
est représenté par1
.dash
est représenté par111
.σ
est représenté par0
.sep
est représenté par000
.SEP
est représenté par0000000
.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:
SEP
.dot
,dash
etsep
.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 etdash
es au milieu, et des bits0
et1
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
et1
.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
etdash
, 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 dedot
etdash
, avec un séparateursep
pour marquer quand une lettre se termine et un autre commence. Nous avons également besoin de certains moyens de coder l'espace inter-motsSEP
. 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 mondedot
etdash
, mais il est seulement nécessaire au niveau 1 pour identifier les mots de code binaire représentantdot
,dash
. Mais au niveau 1, il ne se distingue pas du mors0
.L'espace inter-éléments
σ
n'a donc plus rien de spécial. Ce n'est qu'une utilisation de0
.dot
10
dash
1110
sep
000
0
dot
dash
00
sep
0
dot
dash
0
dot
dash
sep
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.
dot
dash
dot
dot
dash
dot
dot
dot
dash
dot
sep
SEP
0000000
0
sep
0
dot
dash
SEP
0000
SEP
sep
00
SEP
sep
sep
SEP
dot
dash
se
dash
do
dot
dot
sep
dash
dash
dot
dot
sep
dash
dash
dot
dot
dot
sep
SEP
sep
sep
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 undash
. 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
En effet, un tel choix rendrait la chaîne binaire
0000
ambiguë, décodable soit comme, soitSEP
commesep
sep
. L'ambiguïté devrait être résolue avec une règle contextuelle quisep
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):
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
oudash
) 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
oudash
. Les courtes pauses sont oubliées, car elles ne servent qu'à marquer la fin dedot
oudash
. Les pauses moyennes sont reconnues commesep
, et les pauses longues sont reconnues comme deuxsep
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
etdash
. 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.la source
Cette réponse n'est pas aussi longue qu'elle en a l'air; ce site met juste beaucoup d'espacement entre les éléments de la liste! Mise à jour: En fait, cela devient assez long ...
Le code Morse n'est pas "officiellement" binaire, ternaire, quaternaire, quinaire ou même 57-aire (si je compte correctement). Discuter de laquelle il s'agit sans contexte n'est pas productif. C'est à vous de définir lequel de ces cinq il est basé sur votre application et les exigences d'encodage pour votre situation spécifique . À cette fin, chaque taille de jeu de symboles présente des avantages et des inconvénients, que vous devez prendre en compte pour votre situation avant de prendre une décision.
Pour la base, M.1677 , la norme internationale du code Morse, section 2, définit les temporisations comme:
Notez que cela ne définit que les timings, par exemple un tiret ne signifie pas la même chose que trois points, c'est simplement la même longueur. L'unité de base du temps est un point.
Binaire
Nous pouvons choisir le binaire si nous le souhaitons. Il est possible de représenter le code Morse avec un "binaire strict", comme vous l'appelez - l'approche de cet auteur était d'attribuer les chiffres à "point" et "tiret". Cette approche ne fonctionne pas et je ne pense pas que l'auteur ait une bonne compréhension du code Morse. Mais il existe une approche différente qui fonctionne. Si nous choisissons le binaire, nous représentons essentiellement si le signal est haut ou bas avec chaque symbole occupant une seule tranche de temps de longueur de point. Notez que c'est également l'approche décrite sur la page Liste des codes binaires que vous avez citée.
D'autres codages binaires peuvent également être choisis (par exemple, la réponse de Bob Jarvis ) au détriment de l'augmentation de la difficulté à décoder le code Morse audible (le codage de Bob ne peut pas être décodé sans état, par exemple, le compromis est qu'il fournit des séquences codées plus courtes).
Symboles:
Exemples d'encodage:
Avantages:
Les inconvénients:
Ternaire
Avec ce choix, nous définissons les espacements de lettres et de mots comme des silences, et les espacements de signaux sont implicites (bien que vous puissiez choisir d'exiger des symboles de reste de longueur de point entre les signaux, si cela vous convient mieux).
Symboles:
Exemples d'encodage:
Avantages:
Les inconvénients:
Quaternaire
Symboles:
Exemples d'encodage:
Avantages:
Les inconvénients:
Quinaire
Une interprétation directe de la liste de Wikipédia. Notez que cela est très similaire au choix binaire, sauf que les différentes combinaisons valides de 0 ou de 1 binaires reçoivent leurs propres symboles.
Symboles:
Exemples d'encodage:
Avantages (par rapport au quaternaire):
Inconvénients (par rapport au quaternaire):
57 ans:
Inclus pour l'exhaustivité.
Symboles:
Exemples d'encodage:
son
is a
Avantages:
Les inconvénients:
Résiliation
Pour le stockage en tant que flux de symboles sur un périphérique, si vous devez le faire, il convient de noter que M.1677 définit les séquences de terminaison de message et de transmission. De la partie II:
Malheureusement, la norme ne dit rien sur la possibilité de distinguer, par exemple, la chaîne "+ K" de la séquence ( fin de télégramme , invitation à transmettre ). Cependant, la fin du travail est unique. Si vous stockez du code morse, vous devrez alors choisir comment indiquer la fin d'une séquence stockée.
Si vous stockez une conversation entière, par exemple, et que vous utilisez le jeu de symboles binaires, vous pouvez raisonnablement considérer que la fin du travail est l'indicateur de fin de séquence, représenté comme la séquence de bits unique 101010111010111. Vous devez considérer le type des données que vous stockez (par exemple des fragments de message, des messages entiers, des conversations entières) ainsi que les facilités qui vous sont offertes par votre support de stockage (par exemple la possibilité de préfixer la longueur du message) avant de décider. Je suppose que vous pourriez aller jusqu'à définir votre propre indicateur de fin de séquence. Dans tous les cas, ce sont toutes des questions de stockage sous-jacent et ont trop de possibilités pour les énumérer ici. Le choix vous appartient vraiment en fonction de ce qui convient à votre situation.
† Ne peut pas être décodé sans état: ces encodages nécessitent un certain état pour être décodés en code Morse audible. Ils nécessitent tous "Si le symbole précédent était un point / tiret et que le symbole actuel est un point / tiret, insérez un séparateur de signal". Bien que vous puissiez essayer de "tricher" et ajouter automatiquement un séparateur de signal à tous les symboles tout en réduisant le séparateur de mots à 5 silences et le séparateur de lettres à 1, M.1677 afaict n'interdit pas explicitement les séparateurs de mots consécutifs, ce qui brise ce tracas.
‡ Les séparateurs de signaux sont implicites: cela est directement lié à la note ci-dessus mais plus sémantiquement orienté. Ces codages ont des séparateurs de signaux implicites dans leur notation. C'est-à-dire que "zzz" est intuitivement trois z séparés, les frontières sont "superposées" sur tout ce qui sépare les symboles dans l'encodage lui-même. Considérez la description «trois points d'affilée»; intuitivement, nous considérons que cela signifie trois séparéspoints, mais si les séparateurs n'étaient pas sous-entendus, cela pourrait être considéré comme impossible à distinguer d'un tiret. Seules les représentations binaires et quinaires de style Wikipedia (ou ternaire avec l'option de séparateur de signal explicite) suppriment ici toute ambiguïté et "raccourcis", qui peuvent être d'une grande valeur selon la situation. C'est pour cette raison qu'il existe un argument fort pour le choix quinaire.
TL; DR:
Comme vous pouvez le voir, chacun présente des avantages et des inconvénients, et c'est à vous de décider comment vous souhaitez le traiter en fonction de vos besoins . Il n'y a pas de bonne réponse. Vous pourriez essayer de faire valoir que l'un est plus approprié que l'autre en général, mais ces arguments se résumeraient à des préférences pédantes, car sans contexte, il n'y a pas de bonne réponse.
Maintenant, tout cela dit, à mon avis, le choix quinaire est la représentation qui me semble la plus "juste" pour le Morse Code lui-même (à l'origine j'avais privilégié le quaternaire). C'est le seul choix qui offre tous les éléments suivants:
{ dot, dot, dash }
, ceux,
-ci sont significatifs et faciles à ignorer).Cependant, il existe de solides arguments pour tous. Les arguments liés à l'encodage sont également applicables au traitement de Morse lui-même. Il n'y a pas de réponse 100% concrète, mais cela peut certainement constituer un bon sujet de débat avec vos amis au bar.
. . . -. -
la source
Malgré mes premières réflexions à ce sujet, il s'avère que cette question peut être formalisée d'une manière qui admet une réponse assez précise (modulo quelques problèmes de définition). La réponse s'avère être 3 ou 4, c'est-à-dire ternaire ou quaternaire. La réponse de la foule "tout va de 2 à 57" n'est correcte que dans le sens où si quelqu'un vous demande une caractérisation des groupes abéliens, vous lui dites que ce sont des ensembles.
Commençons par regarder l'encodage physique du code Morse. Il s'agit en fait de B ASK , c'est-à-dire de la clé de décalage d'amplitude binaire, qui est juste une manière élaborée de dire qu'il y a deux niveaux d'amplitude physique (électrique / optique, etc.) pour nous de coder notre message. Donc, la question immédiate est: cela ne signifie-t-il pas que la réponse est que le code Morse est binaire? Eh bien, c'est binaire uniquement de manière plutôt non informative, dans le sens où le signal binaire marche / arrêt envoyé sur le fil ne correspond pas directement aux lignes ou aux points. A ce vague niveau de correspondance, nous pourrions même envoyer le code ASCII (avec l'encodage binaire direct et évident) et l'appeler "Morse" et / ou "binaire"; la même chose s'appliquerait à tout code Huffman (au lieu de ASCII).
Alors, comment pouvons-nous rendre la correspondance plus précise et en même temps formaliser notre question? La théorie du codage vient en aide. LaisserM être l'ensemble des symboles «mornes», environ 66 symboles si je comprends bien l'univers du code Morse; cela inclut les 26 lettres latines, les chiffres 0-9, et un tas d'auxiliaires comme certaines ponctuations, "prosigns" etc. Ce n'est en fait pas très important ce que ce sont. Un code est une cartographie injective c : M→ T∗ où T (ne pas T∗ ) est un ensemble de mots de code. Pour être physiquement représentable dans notre matériel BASK sous-jacent, nous exigeons queT⊂ { 0 , 1 }∗ , c'est-à-dire que nos mots de code doivent être des chaînes de bits; notez que cela impliquec Les valeurs sont des chaînes de mots de code, donc des chaînes de chaînes de bits, mais finalement linéarisées comme de simples chaînes de bits.
Pour être une caractérisation fidèle du code Morse, nous avons besoinT contenir des équivalents directs de lignes et de points, en ce sens qu'il doit y avoir une bijection entre ces mots de code et les points et lignes représentant le code Morse sur papier. T doit également être [presque] un code déchiffrable unique, ce qui signifie que toute factorisation d'un élément de T∗ en termes d'éléments / mots de code de T [idéalement] doit être unique. (Notez que certains auteurs, par exemple Berstel , n'appellent même pasT un code à moins qu'il ne soit déchiffrable de façon unique, mais d'autres, par exemple Steve Roman ont une terminologie différente où tout mappage est un code, mais ceux qui sont déchiffrables de manière unique sont simplement dits ainsi et des codes UD abrégés. Ici, je vais juste la dernière terminologie. Vous verrez également un peu plus tard pourquoi j'ai dit "idéalement".)
Puisquec ne doit être qu'une injection et non une surjection, nous pouvons remplir T avec des "ordures" arbitraires au-delà de ce qui est nécessaire pour obtenir un code UD, tant que les chaînes générées par ces ordures ne sont pas la pré-image de quelque chose de lamentable. Par exemple, une chaîne d'exactement 42 points ne correspond à rien dans aucune variante du code Morse que j'ai vu. Ainsi, lorsque nous demandons si le code Morse est binaire, ternaire, quaternaire, quinaire, etc., la question devrait être de demander la cardinalité minimale deT avec les deux propriétés ci-dessus, à savoir: c'est [presque] un code UD et nous avons une bijection évidente entre la "ligne" et le "point" sur papier à certains éléments de T .
Il y a deux façons de procéder à la constructionT , soit de haut en bas en observant que vous avez besoin d'un séparateur entre la représentation papier et ligne-point des lettres Morse pour obtenir un code UD, ou de bas en haut puisque dans le code Morse international de l'UIT, nous avons le temps -longueurs des lignes, des points et diverses pauses. Je vais utiliser cette dernière approche ici car il existe de nombreuses façons d'en obtenirT autrement, c'est-à-dire que vous pouvez choisir des durées assez arbitraires, par exemple le code américain Morse défunt utilisait des lignes plus courtes que la version ITU.
Commençons avec la représentation dérivée de la longueur du signal de l'UIT qui a cinq mots de code de base, générés à partir du signal de longueur unitaire "on" (1) et du signal "off" (0):0 - la terminaison de
just-dot
(1),just-line
(111),unit-space
(0) ,letter-space
(000), etword-space
[supposé sept 0 dans le Morse international mais peut varier dans la pratique]. Notez immédiatement que leunit-space
ne peut apparaître que suivi d'un 1 juste aprèsjust-dot
etjust-line
; et çajust-dot
andjust-line
(qui est un code virgule; plus d'informations à ce sujet plus tard) est en fait requise sinon vous ne pourriez même pas distinguer les lignes des points. Cela vous donne la réduction évidente à quatre mots de code avec:dit
=just-dot
unit-space
= 10 etdah
=just-line
unit-space
= 1110.Donc , c'est le code Morse quaternaire:
dit
,dah
,letter-space
,word-space
. L'observation suivante est que leword-space
peut être approché (ou même supposé être) deuxletter-space
s, c'est-à-dire six zéros. Alors, comment vous obtenez l'ensemble de mots de code ternaire; Comme références pour cette ligne de raisonnement, voir par exemple [1] [2] .Il y a aussi une raison technique de préférer les mots de code ternaires:T= { 10 , 1110 , 000 } est un code déchiffrable unique, en fait c'est un code préfixe. toutefois{ 10 , 1110 , 000 , 07} (ou la version avec seulement six zéros) n'est plus déchiffrable de façon unique car 0dix= 0307= 0703 il y a donc une factorisation non unique. Bien que cela soit théoriquement un problème, cela n'a aucune importance pratique car le "métronome" humain a de la difficulté à mesurer de très longs silences de toute façon, donc fondamentalement tout silence plus long qu'une certaine longueur est supposé (par un humain) être un
word-space
sorte.Notez également que si vous vous en tenez0 dans cet ensemble aussi (c'est-à-dire adopter une vue "quinaire"), cela devient "encore plus faux", dans le sens où même 000 n'a plus de factorisation unique (comme lui-même est aussi un mot de code). En outre,0 n'est pas dans la préimage d'un symbole Morse, il est donc indésirable dans T , tout comme vous pouvez ajouter 1420 à T ; en fait, l'ajout de ce dernier est moins gênant que contrairement à l'ajout0 cela ne fera pas perdre au code la propriété UD.
La réduction / abstraction de0 pour les distinguer des autres. Une fois que vous avez résumé cette construction aux deux trits différents ( 000 dont le troisième trit.
dit
,dah
enletter-space
tant que mots de code binaires en trois symboles abstraits (trits) est utile pour montrer rapidement que le code Morse (ternaire) est UD; c'est immédiatement évident parce qu'illetter-space
agit comme une virgule, c'est-à-dire que le code Morse ternaire est un code virgule. (Notez que d'autres auteurs définissent le «code virgule» dans un sens plus restrictif où tous les symboles autres que la virgule sont les mêmes; je l'utilise ici dans le sens large donné dans «L'algèbre post-moderne» de DH Smith , qui signifie utiliser un symbole de terminaison unique pour chaque mot de code.) Notez également que la technique comma0code est utilisée à deux niveaux dans le code Morse; lajust-line
etjust-dot
se terminent par la « courte virgule »unit-space
=dit
etdah
), toutes les lettres du code Morse sont également codées par des virgules en les terminant parVous pouvez également utiliser l'approche trit calculer l'entropie en supposant a
dah
etdit
etletter-space
sont "équivalents" comme trits [3] , dans le sens que, par exemple, "e" prend 2 trits et "y" prend 5 trits. L'approche trit abstraite n'est pas si utile si vous vous souciez du coût réel de chaque symbole à transmettre dans le véritable codage BASK Morse sur une ligne. Pour ce dernier, vous devez descendre à la longueur réelle des bits des 3 (ou 4) symboles, qui sont vus comme des transitions dans un automate. Par exemple, la lettre «e» prend 5 bits pour coder (asdit
letter-space
) tandis que «y» prend 17 bits (troisdah
s, undit
et aletter-space
). Cette ligne de pensée remonte à Shannon (voir pp. 3-4). Plus de détails peuvent être trouvésdans "Théorie de l'information et codage" de Blahut, par exemple, il calcule "une moyenne de 9.296 unités de temps de signalisation par lettre de sortie source" pour le code Morse en utilisant les probabilités (inconditionnelles) d'occurrences de lettres en anglais. Pour une exposition légèrement différente (par un zoologiste!), Vous pouvez consulter JP Hailman ; il obtient une moyenne différente (10,2) parce qu'il suppose des probabilités légèrement différentes pour les lettres anglaises, mais sinon son analyse est conceptuellement la même.Pour résumer ceci: vous pouvez avoir plusieurs vues du code Morse, mais certaines sont plus fructueuses que d'autres en disant quelque chose d'intéressant à ce sujet. Je ne suis au courant d'aucune analyse utilisant la vue "quinaire" et pour que ce modèle ne soit pas réductible à quatre symboles, vous devrez faire quelques hypothèses sur l'occurrence de l'unité-espace qui ne tient pas dans le Morse réel , par exemple que vous pourriez avoir deux mais pas nécessairement trois espaces unitaires adjacents (ce qui n'est pas un Morse invalide). La vue ternaire vous achète une analyse rapide de la décodabilité unique. La vue la plus profonde / fructueuse est celle qui voit les 3 ou 4 symboles comme réellement représentés par des quantités inégales de bits comme ils le sont dans le vrai code Morse (|
dit
| = 2, |dah
| = 4, |letter-space
| = 3 et |word-space
| = 6 ou 7); il est toujours judicieux à ce bas niveau de considérer les symboles ternaires / quaternaires comme des transitions dans un automate.Quant à savoir pourquoi Wikipédia aspire à cela ... et bien sur certains sujets, il le fait. Leur article principal sur http://en.wikipedia.org/wiki/Coding_theory n'est pas vraiment quelque chose que je recommanderais de lire non plus. Je ne peux pas en dire beaucoup sur le livre (Petzold) que vous avez mentionné, à part qu'il ne semble pas écrit par un expert en théorie de l'information. Petzold n'a raison que dans le sens où si les messages codés en Morse ne comprenaient qu'une seule lettre, on pourrait raisonnablement dire qu'ils se trouvent dans un code binaire; si vous voulez envoyer des mots, vous avez besoin d'un séparateur de lettres, sinon le code ne serait pas horriblement UD, au point d'impraticabilité.
Il est un peu tard pour moi de réviser l'intégralité du message, mais @babou fait valoir ci-dessous qu'apparemment Shannon, Blahut et d'autres ont mal interprété la norme (actuelle) de l'UIT (en supposant qu'elle n'a pas changé depuis leur époque) dans ce qui suit technicité: l'espace unitaire est ajouté entre les points et les dahs de la même lettre , mais seul leT= { 10 , 1110 , 00 } . Cela signifie également que (par exemple) la taille de 'e' n'est que de 4 bits, pas 5.
letter-space
est ajouté entre les lettres. Cette lecture de la norme semble vérifier sur la base d'un livre de pratiquant assez récent . Nous devons donc emprunter un 0letter-space
dans chacundit
etdah
quand ils sont dans les positions terminales d'une lettre, ne laissant que deux 0 pour leletter-space
, c'est-à-direla source
À l'origine, le code Morse était censé être des marques écrites sur une bande de papier, mais les opérateurs télégraphiques sont rapidement parvenus à "lire" les clics de l'équipement. Cette version du Morse (Morse américain ou «terrestre») avait trois éléments «marque», le point, le tiret et le long tiret.
L'utilisation d'International Morse au cours du siècle dernier, par transmission radio, était généralement codée à la main (sur une clé télégraphique) et décodée à l'oreille, en écoutant le schéma des bips émis par le récepteur. Les opérateurs qualifiés pourraient recevoir mieux que les opérateurs non qualifiés, et certaines personnes pourraient produire du code plus facile à comprendre que celui des autres. Un bon opérateur de transmission aurait un «bon poing». Un opérateur inepte était appelé LID. (Pour l'origine de "couvercle" - qui, je crois, provient d'une erreur courante dans American Morse d'envoyer LID pour DD, daaahh, dit dit, dah dit dit au lieu de dah dit dit, dah dit dit - voir cette référence: https://english.stackexchange.com/questions/31818/how-did-the-word-lid-come-to-mean-poor-operator-in-the-context-of-telegraph .)
Ainsi, il s'ensuit que le "codage" de Morse dans un format binaire dépend du but, et donc de la conservation de la qualité du "bon poing" par rapport au "mauvais poing". Une chaîne de commutation marche / arrêt doit-elle être mise en correspondance avec une horloge et "corrigée" pour les difficultés de phase ou de durée de chaque partie du signal? Ou faut-il plutôt l'échantillonner à un taux suffisant pour conserver des variations aléatoires ou déroutantes, vraisemblablement pour une inspection ou un plaisir ultérieur?
la source