Il codice Morse è binario, ternario o quinario?


27

Sto leggendo il libro: " Codice: il linguaggio nascosto dell'hardware e del software del computer " e nel capitolo 2 l'autore dice:

Si dice che il codice Morse sia un codice binario (che significa letteralmente due per due) perché i componenti del codice sono costituiti solo da due cose: un punto e un trattino.

Wikipedia d'altra parte dice:

A rigor di termini non è binario, in quanto vi sono cinque elementi fondamentali (vedi quinary). Tuttavia, ciò non significa che il codice Morse non possa essere rappresentato come un codice binario. In senso astratto, questa è la funzione che gli operatori di telegrafia svolgono durante la trasmissione di messaggi (vedi quinary).

Ma ancora una volta, un'altra pagina di Wikipedia include il codice Morse in "Elenco di codici binari".

Sono molto confuso perché penso che il codice Morse sia effettivamente ternario . Esistono 3 diversi tipi di "possibilità": un silenzio, un breve segnale acustico o un lungo segnale acustico.

È impossibile rappresentare il codice Morse in "stirct binary", vero?

Per "binario rigoroso" intendo, penso al flusso di binario: 1010111101010 .. Come posso rappresentare un silenzio, un breve segnale acustico e / o un segnale acustico lungo?

L'unico modo in cui riesco a pensare è la "dimensione delle parole" implementata da un computer. Se io (e la CPU / l'interprete del codice) so che leggerà ogni volta 8 bit, allora posso rappresentare il codice Morse. Posso semplicemente rappresentare un breve segnale acustico con un 1 o un lungo segnale acustico con uno 0 e i silenzi saranno rappresentati implicitamente dalla lunghezza della parola. (Diciamo 8 bit ..) Quindi, ancora una volta, ho questa terza variabile / la terza risorsa in la mia mano: la dimensione della parola.

Il mio modo di pensare è questo: posso riservare i primi 3 bit per quanti bit leggere e gli ultimi 5 bit per il codice Morse in una parola a 8 bit. Come 00110000 significherà 'A'. E sono ancora in "binario" MA ho bisogno della dimensione della parola che lo rende ternario, non è vero? I primi 3 bit dicono: Leggi solo 1 bit dai seguenti 5 bit.

Invece di binario, se usiamo il trinary, possiamo mostrare il codice morse come: 101021110102110222 ecc. Dove 1 è: dit 0 è: dah e 2 è silenzio. Usando 222 possiamo codificare il lungo silenzio, quindi se hai un segnale come * - * --- * - puoi mostrarlo come: 102100022210, ma non è direttamente possibile usando solo con 1 e 0 A MENO CHE non ti viene in mente qualcosa come una dimensione di parola "fissa", come ho già detto, ma bene questo è interpretare, non salvare il codice Morse come è in binario. Immagina qualcosa come un pianoforte, hai solo i pulsanti del piano. Vuoi lasciare un messaggio nel codice Morse per qualcuno e puoi dipingere i pulsanti in nero. Non puoi lasciare un messaggio chiaro, vero? Hai bisogno di almeno un altro colore in modo da poter mettere i silenzi (quelli tra caratteri e parole. Questo è ciò che intendo per trenaria.

Non ti sto chiedendo se puoi rappresentare il codice Morse in 57-ary o qualsiasi altra cosa.

Ho inviato un'e-mail all'autore (Charles Petzold) a riguardo; dice che dimostra nel capitolo 9 del "Codice" che il codice Morse può essere interpretato come un codice binario.

Dove sbaglio con il mio pensiero? Quello che sto leggendo nel libro è che il codice Morse essendo un binario è un fatto o no? È in qualche modo discutibile? Perché viene detto che il codice Morse è quinary in una pagina di Wikipedia ed è anche elencato nella pagina Elenco dei codici binari ?

Modifica: ho inviato un'e-mail all'autore e ho ricevuto una risposta:

-----Messaggio originale-----

Da: Koray Tugay [mailto: koray@tugay.biz]

Inviato: martedì 3 marzo 2015 15:16

A: cp@charlespetzold.com

Oggetto: Il codice Morse è davvero binario?

Signore, potresti dare un'occhiata alla mia domanda qui: il codice Morse è binario, ternario o quinario? quinary?

Saluti, Koray Tugay

Da: "Charles Petzold"

A: "'Koray Tugay'"

Oggetto: RE: Il codice Morse è davvero binario? Data: 3

Mar 2015 23:04:35 EET

Verso la fine del capitolo 9 in "Codice", dimostro che il codice Morse può essere interpretato come un codice binario.

-----Messaggio originale-----

Da: Koray Tugay [mailto: koray@tugay.biz]

Inviato: martedì 3 marzo 2015 15:16

A: cp@charlespetzold.com

Oggetto: Il codice Morse è davvero binario?

Signore, potresti dare un'occhiata alla mia domanda qui: il codice Morse è binario, ternario o quinario? quinary?

Saluti, Koray Tugay

Non nascondo la sua e-mail perché è davvero facile da trovare sul web comunque.


Sposta qualsiasi altra conversazione su chat.stackexchange.com/rooms/21638/…
Logica errante

I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Raffaello

Ho corretto i collegamenti che ho cancellato accidentalmente (whoops); si prega di astenersi dal tornare indietro a revisioni peggiori.
Raffaello

1
@WanderingLogic L'approccio corretto, più efficace e privo di rumore è quello di contrassegnare silenziosamente la domanda per la pulizia dei commenti e suggerire che i commenti vengano spostati per chattare nella bandiera, non per giocare pubblicamente alla polizia dei commenti e tentare di creare una chat room per combinare tutti i commenti su tutte le risposte senza contesto. Anche i tuoi collegamenti ora confondono la questione poiché Raphael ha pubblicato i collegamenti corretti.
Jason C

1
@ J.-E.Pin Bene, non ho dato una definizione formale perché ho dato per scontato che le persone che rispondevano alla domanda lo sapessero, e avevo un riferimento o due a Wikipedia per impostare il contesto. Anche se Wikipedia può essere tutt'altro che perfetto, questo dovrebbe essere in grado di assumere il ruolo di definizioni, come spesso fatto qui. Mi ci è voluto del tempo per capire che era il problema, in realtà apparentemente molto diffuso. Ero io stesso nel processo di riscrittura del tutto, con definizioni esplicite, citazioni, riferimenti e spiegazioni formali con omomorfismi iniettivi. Dovrei finire?
babou,

Risposte:


19

Il codice Morse è un prefisso codice ternario (per la codifica di 58 caratteri) sopra un prefisso codice binario che codifica i tre simboli.

Questa è stata una risposta molto più breve una volta accettata. Tuttavia, considerando i notevoli equivoci tra gli utenti e in seguito a una richiesta del PO, ho scritto questa risposta molto più lunga. La prima sezione "in poche parole" ti dà un'idea.

Contenuto

In breve (in grande)

Alla domanda "Il codice Morse è binario, ternario o quinario?" non è possibile confrontare le risposte possibili a meno che non si fissino alcuni criteri per una risposta accettabile. Infatti, senza criteri adeguati, si possono escogitare spiegazioni per quasi ogni tipo di struttura. I criteri che ho scelto sono i seguenti:

  • dovrebbe riflettere la descrizione a tre livelli del codice Morse con la rappresentazione punto / trattino nel secondo livello;

  • dovrebbe adattarsi il più possibile alla presentazione e agli strumenti matematici sviluppati per l'analisi teorica dei codici;

  • dovrebbe essere il più semplice possibile;

  • dovrebbe chiaramente chiarire le proprietà del codice Morse.

Questo ha lo scopo di escludere l'hacking arbitrario, che ignora i concetti di base della teoria del codice come scientificamente studiato e che può avere un certo fascino dando un'illusione di analisi sistematiche, sebbene affrontate in modo troppo informale per essere conclusivo. Questo sito dovrebbe riguardare l' informatica , non la programmazione. Dovremmo usare un minimo di scienza consolidata e concetti accettati per rispondere a una domanda tecnica.

Una rapida analisi dello standard mostra che tutti i simboli utilizzati nel codice Morse sono infine codificati in binario , poiché viene trasmesso come una stringa di unità di uguale lunghezza, con un segnale che può essere attivato o disattivato per ogni unità. Ciò indica che i messaggi Morse sono in definitiva codificati in un alfabeto logico .Σ1={0,1}

Ma questo non dice nulla della struttura interna del codice. Le informazioni da codificare sono una stringa su un alfabeto di 58 simboli (secondo lo standard) inclusi 57 caratteri e uno spazio. Ciò corrisponde a un alfabeto , l'ultimo symbl è lo spazio.Σ3={A,B,,Z,0,1,,9,?,=,,×,@,[]}

Tuttavia, previsto dalla norma che esiste un alfabeto intermedio , sulla base di e ed eventualmente altri simboli. È abbastanza chiaroΣ2dotdash

  • che le stringhe in devono essere codificate come stringhe in eΣ3Σ2

  • che le stringhe in devono essere codificate come stringhe inΣ2Σ1

Quindi, dato che non c'è scelta per e , la domanda deve essere intesa come: " Quale numero di simboli dovremmo considerare nell'alfabeto intermedio modo da meglio spiegare la struttura e le proprietà di tutto il Morse codice " , che implica anche la specifica delle due codifiche tra i tre livelli.Σ1Σ3Σ2

Dato che il codice Morse è un prefisso di codice omomorfa (lunghezza variabile) che esclude qualsiasi ambiguità nella decodifica di un segnale, si possono spiegare semplicemente questa struttura essenziale al ternario alfabeto { , , }, e due schema di codifica da a e da a , che sono sia omomorfi che prefissi, quindi entrambi codici non ambigui, e quindi in grado di essere composti per dare un prefisso non ambiguo codifica dei 58 simboli in binario.Σ2=dotdashsepC32Σ3Σ2C21Σ2Σ1

Quindi codice Morse è composto da un prefisso ternaria espressa in alfabeto , , , con questi tre simboli stessi codificato in binario con le seguenti parole di codice:{ dotdashsep }

dot 10 , edash 1110sep 00

Si noti che quello che è noto come lo spazio tra consecutivi doto dashè effettivamente incluso nella rappresentazione di dote dash, poiché questa è la consueta rappresentazione matematica per tali tipi di codici, che di solito sono definiti omomorfismi di stringa dai simboli di origine a parole di codice espressi con simboli di destinazione, come ho appena fatto.

Ciò si discosta leggermente da alcune delle presentazioni fornite nello standard, che mira più a specificare intuitivamente il codice per gli utenti, piuttosto che ad analizzarlo per le sue proprietà strutturali. Ma la codifica è la stessa in entrambi i casi.

Anche senza i tempi precisi dello standard, un decodificatore del segnale analogico potrebbe ancora tradurlo nell'alfabeto ternario che suggeriamo, in modo che la comprensione di cui sopra del codice ternario sia ancora valida.

Codici: punti base

Questa risposta si basa sullo standard ITU-R M.1677-1 , datato ottobre 2009 (grazie a Jason C per il riferimento). Userò la terminologia dote dash, piuttosto che dite dah, come è la terminologia utilizzata da questo standard.

Prima di iniziare a discutere del codice Morse, dobbiamo concordare cos'è un codice. Le difficili discussioni su questa domanda ovviamente lo richiedono.

Fondamentalmente, le informazioni devono essere rappresentate per essere trasmesse o altrimenti elaborate. Un codice è un sistema per tradurre informazioni da un sistema di rappresentazione in un altro . Questa è una definizione molto generale. Dobbiamo stare attenti a non confondere il concetto di una rappresentazione e quello di un codice da una rappresentazione (la fonte ) a un'altra (la destinazione ).

Una rappresentazione può assumere molte forme, come tensione elettrica variabile, punti colorati su carta, stringa di caratteri, numeri, stringhe binarie di 0 e 1, ecc. È importante distinguere tra rappresentazione analogica e formale (o logica o astratta) .

Una rappresentazione analogica / fisica è un disegno, un livello di tensione variabile, una forma (per una lettera).

Una rappresentazione logica / formale / astratta è una rappresentazione matematica con grafici astratti, stringhe di simboli o altre entità matematiche.

Sebbene alcune informazioni possano essere originariamente analogiche, di solito le convertiamo in una rappresentazione logica in modo da poter definire precisamente la sua elaborazione con mezzi matematici o da persone.

Al contrario, abbiamo a che fare con la rappresentazione logica utilizzando dispositivi fisici, come computer o trasmettitori, dobbiamo dare una forma analogica alla rappresentazione logica.

Ai fini di questa analisi, l'unica forma analogica che consideriamo è quella utilizzata per la trasmissione, come descritto nella norma. Ma anche allora, considereremo che il primo passo è interpretare questa rappresentazione analogica come un'implementazione diretta di una rappresentazione logica strutturata in modo identico, su cui costruiamo la nostra analisi di quale tipo di codice può essere il codice Morse. La teoria dei codici è un corpus matematico di conoscenza basato sull'analisi delle rappresentazioni logiche.

Comunque torneremo sulla transizione analogica / logica nella discussione alla fine.

Codici: definizioni

La nostra visione logica è che il codice viene utilizzato per tradurre fonti stringhe su un alfabeto fonte ad un target alfabeto . Accade spesso che entrambi gli alfabeti siano identici, generalmente binari, quando lo scopo è quello di aggiungere qualche proprietà in più alla rappresentazione delle informazioni, come renderla più resistente agli errori (rilevazione e correzione degli errori) o rendere la rappresentazione più piccola di rimuovendo la ridondanza (compressione senza perdita di codice) e possibilmente con una perdita controllata e controllata di alcune informazioni (compressione con perdita).ST

Tuttavia, lo scopo del codice Morse è quello di fornire solo un modo per rappresentare stringhe su un grande alfabeto, in stringhe basate su un alfabeto molto più piccolo (in realtà binario), usando un alfabeto intermedio quasi binario (punti e trattini) per adattarsi meglio all'essere umano percezione e capacità manipolative. Ciò si ottiene con il cosiddetto codice a lunghezza variabile :

Usando i termini della teoria formale del linguaggio, la definizione matematica precisa è la seguente: Sia e due insiemi finiti, chiamati rispettivamente alfabeti sorgente e target. Un codice è una funzione totale che mappa ogni simbolo da a una sequenza di simboli su e l'estensione di a un omomorfismo di in , che mappa naturalmente ogni sequenza di simboli sorgente a una sequenza di simboli target, viene definita estensione.STC:STSTCST

Chiamiamo Codeword le immagini di un simbolo .C(s)TsS

Un codice di lunghezza variabile è unicamente decodificabile se il corrispondente omomorfismo di in è iniettivo . Ciò significa che qualsiasi stringa in può essere l'immagine di al massimo una stringa in . Diciamo anche che il codice è inequivocabile , il che significa che qualsiasi stringa può essere decodificata in modo univoco, se non del tutto.CSTTS

Un codice a lunghezza variabile è un prefisso se nessuna codeword è il prefisso di un altro. È anche un codice istantaneo allettato , o codice senza contesto . Il motivo di questi nomi è che, quando si legge una stringa di destinazione che inizia con una parola in codice di un prefisso, si riconosce la fine della parola in codice non appena si legge il suo ultimo simbolo, senza dover conoscere / leggere il simbolo successivo. Di conseguenza, i codici prefisso sono inequivocabili e molto facili da decodificare rapidamente.w

È facilmente dimostrato che la decodificabilità unica e la proprietà del prefisso sono chiuse sotto la composizione di codici.

Si noti che la definizione come omomorfismo implica che non esiste una separazione speciale tra le parole in codice. È la loro struttura, come la proprietà del prefisso, che consente di identificarli in modo univoco.

In effetti, se esistessero tali simboli di separazione, dovrebbero essere parte dell'alfabeto target, poiché sarebbero necessari per decodificare la stringa dall'alfabeto target. Quindi sarebbe abbastanza semplice tornare al modello teorico di codice a lunghezza variabile aggiungendo il separatore alla parola di codice precedente. Se ciò dovesse sollevare difficoltà contestuali (dovute ad esempio a più separatori), ciò significherebbe solo che il codice è più complesso che apparente. Questa è una buona ragione per attenersi al modello teorico sopra descritto.

Il codice Morse

Il codice Morse è descritto nello standard a tre livelli:

  • 3 ha lo scopo di fornire una codifica del testo in linguaggio naturale, utilizzando 57 caratteri (27 lettere, 10 cifre, 20 simboli e punti) e uno spazio tra parole per tagliare la stringa di caratteri in parole. Lo spazio tra parole è usato come un carattere speciale, che può essere mescolato con gli altri, che noterò SEP.

  • 2 tutti questi personaggi devono essere codificati come successioni di dash e dot, usando uno spazio tra le lettere, che noterò sep, per separare la dashe dotdi una lettera da quelle della lettera successiva.

  • 1 Gli dashe dot, come pure sepdevono essere codificati come segnale o assenza di segnale (chiamato spaziatura) con una lunghezza definita con precisione in termini di alcune unità accettate. In particolare, dashe la dot codifica di una lettera deve essere separata da uno spazio tra elementi, che noterò σ.

Ciò richiede già alcune conclusioni.

Il messaggio da trasmettere e ricevere in forma analogica è una successione di unità di lunghezza (lunghezza dello spazio o lunghezza del tempo), in modo tale che un segnale sia acceso e spento per l'intera durata di ciascuna unità, come specificato nella sezione Allegato 1, Parte I 2 della 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.

Questa è chiaramente una codifica analogica in quello che è noto come un flusso di bit, che può essere logicamente rappresentato in notazione binaria da una stringa di 0ans 1, che sta per l'analogo spento e acceso .

Al fine di sottrarre questioni relative alla rappresentazione analogica, possiamo quindi considerare che i messaggi in codice Morse vengono trasmessi come stringhe di bit, che dovremo notare con 0e 1.

Quindi il suddetto estratto dallo standard può essere espresso logicamente come:

  • 0 A dotè rappresentato da 1.
  • 1 A dashè rappresentato da 111.
  • 2 Uno spazio tra gli elementi σè rappresentato da 0.
  • 3 Uno spazio tra lettere sepè rappresentato da 000.
  • 4 Uno spazio tra parole SEPè rappresentato da 0000000.

Quindi potremmo vedere il codice Morse come usare 5 parole in codice binario per codificare questi 5 simboli. Fatta eccezione per il fatto che questo non è esattamente il modo in cui viene descritto il sistema, c'è qualcosa in più, e non è il modo più conveniente in cui si possa pensare, da un punto di vista ingenuo o matematico.

Nota anche che questa descrizione è destinata ai laici, non agli specialisti della teoria dei codici. Per questo motivo descrive più l'aspetto visibile che la struttura interna che lo giustifica. Non ha motivo di precludere altre descrizioni compatibili con questa, sebbene matematicamente più strutturate, per enfatizzare le proprietà del codice.

Ma prima, dovremmo notare che la descrizione completa del codice comporta 3 livelli di rappresentazione, immediatamente riconoscibili:

  • 3 Il testo, composto da una stringa di caratteri, incluso SEP.
  • 2 La codifica di una stringa di lettere come una stringa di dot, dashe sep.
  • 1 La codifica di una stringa di livello 2 di questi tre symbolscome stringa binaria.

Potremmo forse discutere su quali simboli siano codificati in cosa, ma è un aspetto essenziale del codice Morse che ha questi tre livelli di rappresentazione, con caratteri in alto, se dote dashin mezzo e bit 0e 1in fondo .

Ciò implica che ci sono necessariamente due codici, uno dal livello 3 al livello 2 e l'altro dal livello 2 al livello 1.

Analizzare i tre livelli di rappresentazione

Al fine di avere un'analisi coerente di questo sistema di codifica a 3 livelli, dovremmo prima analizzare quale tipo di informazione è pertinente ad ogni livello.

  • 1 La stringa di bit, per definizione e per necessità della sua rappresentazione analogica, è composta solo da 0e 1.

  • 3 A livello di testo, abbiamo bisogno di un alfabeto di 58 simboli, inclusi i 57 caratteri e lo spazio tra le parole SEP. Tutti e 58 devono avere in definitiva una codifica binaria. Ma, sebbene lo standard del codice Morse specifichi questi 57 + 1 caratteri, non specifica come dovrebbero essere usati per codificare le informazioni. Questo è il ruolo dell'inglese e di altre lingue naturali. Il codice Morse fornisce ad altri sistemi un alfabeto di 58 simboli, su cui potrebbero costruire un codice di 58-ary, ma il codice Morse non è esso stesso un codice di 58-ary.

  • 2 A livello di dote dash, tutto ciò di cui abbiamo bisogno sono questi due simboli per codificare i 57 caratteri, ovvero fornire una parola in codice per ciascuno come una stringa di dote dash, insieme ad un separatore sepper segnare quando una lettera è finita e un'altra inizia. Abbiamo anche bisogno di alcuni mezzi per codificare lo spazio tra parole SEP. Potremmo provare a provvedere direttamente al leavel 1, ma ciò rovinerebbe l'organizzazione altrimenti strutturata del codice.

In effetti, la descrizione dello standard potrebbe essere giustamente criticata per aver fatto proprio questo. Ma gli autori potrebbero aver pensato che la loro presentazione sarebbe stata più semplice da comprendere per l'utente medio. Inoltre segue una descrizione tradizionale del codice Morse, che precede questo tipo di analisi matematica.

Ciò richiede diverse osservazioni:

  • a livello 3, a livello di lettera, lo spazio tra le lettere sepnon è più significativo. Questo è abbastanza normale, dal momento che non ha più significato nell'universo delle lettere dello spazio che separa due caratteri scritti su carta. È necessario al livello 2 riconoscere le parole in codice che rappresentano le lettere, ma questo è tutto.

  • analogamente a livello 2, lo spazio tra gli elementi σnon è più significativo. Non ha senso nel mondo di dote dash, ma è necessario solo a livello 1 per identificare le parole in codice binario che rappresentano dot, dash. Ma al livello 1, non è distinguibile dal bit 0.

Quindi lo spazio tra gli elementi σnon è più niente di speciale. È solo un uso di 0.

Tuttavia, come spiegato in precedenza, se il codice da deve essere analizzato utilizzando la conoscenza dei codici a lunghezza variabile, i separatori devono essere aggiunti alle parole in codice che seguono, in modo da definire il codice come una semplice stringa omomorfismo.Σ2Σ1

Ciò implica la seguente specifica parziale del codice: edot10dash1110

L'alfabeto di livello 2 bisogno di almeno un altro simbolo, lo spazio tra le lettere notato , che dovrebbe essere secondo la lettera dello standard. Tuttavia, la definizione del codice a lunghezza variabile come omomorfismo ha richiesto l'aggiunta dello spazio tra gli elementi a ciascuna parola di codice per e . Quindi dobbiamo avere solo come codeword per , in modo che insieme alla fine del precedente o , ne faccia 3 come richiesto dallo standard. Funziona sempre poiché nello standard non sono previsti due separatori tra lettere che si susseguono.Σ2sep0000dotdash00sep0dotdash0

Questo è sufficiente per codificare l'alfabeto { , , } con un codice di omomorfa definito come segue:Σ2=dotdashsepC21:Σ2Σ1

  • dot10

  • dash1110

  • sep00

E abbiamo la bella sorpresa di scoprire che nessuna parola in codice è un prefisso di un'altra. Quindi abbiamo un prefisso, che è inequivocabile e facile da decodificare.

Ora possiamo procedere in modo simile per definire il codice .C32:Σ3Σ2

Lo standard usa stringhe di dote dashcome in codice per i caratteri in , nel modo dato dalle tabelle dello standard per esempio per rappresentare la lettera .Σ3dot dot dash dotf

Ancora una volta, queste parole chiave sono separate da spazi tra lettere. Per definire il codice come omomorfismo, dobbiamo includere il separatore nelle parole in codice, in modo che la definizione di omomorfismo diventi piuttosto: f dot dot dash dot sep

Questo vale per ciascuno dei 57 caratteri dell'alfabeto . Ma ancora una volta abbiamo anche bisogno della parola separatore , che, secondo lo standard, è . Notiamo innanzitutto che il codice fornisce già 3 bit , 2 dalla fine dell'ultima lettera della parola e 1 dalla fine dell'ultima o della codifica dell'ultima lettera. Quindi alla fine deve essere codificato come il rimanente .Σ3SEP00000000sep0dotdashSEP0000

Ma per rispettare l'approccio a più livelli, SEPdovrebbe essere codificato in una in codice da . Poiché è binario codificato come , ne consegue che può essere codificato come .Σ2sep00SEPsep sep

Quindi possiamo codificare l'alfabeto , con un codice definito come segue:Σ3={A,B,,Z,0,1,,9,?,=,,×,@, SEP}C32:Σ3Σ2

  • A dot dash se p

  • B dash do t dot dot sep ...

  • Z dash dash dot dot sep ...

  • 7 dash dash dot dot dot sep ...
  • SEP sep sep (per il separatore di parole)

E abbiamo l'ulteriore sorpresa di vedere che nessuna parola in codice è un prefisso di un'altra. Quindi anche il codice è un prefisso.C32

Poiché la proprietà del prefisso viene chiusa in base alla composizione dei codici, il codice Morse è un codice prefisso.CMorse=C21C32

Possiamo quindi concludere che il codice Morse può essere compresa e facilmente analizzato, come la composizione di un prefisso binario codifica di un alfabeto di 3 simboli { dot, dash, sep} in un alfabeto binario, e un prefisso codificante di un alfabeto di 58 simboli (57 caratteri e uno spazio) nell'alfabeto di 3 lettere.

La composizione stessa è un prefisso che codifica i 58 simboli in una rappresentazione binaria.

Osservazioni su questa analisi.

È sempre difficile stabilire che una presentazione di una struttura sia la migliore che si possa inventare. Sembra tuttavia che l'analisi di cui sopra soddisfi i criteri stabiliti all'inizio di questa risposta: vicinanza alla definizione a 3 livelli, presentata formalmente secondo l'attuale teoria dei codici, semplicità e evidenza delle principali proprietà del codice.

Si noti che è inutile cercare proprietà di correzione degli errori. Il codice Morse potrebbe non rilevare nemmeno un singolo errore in quanto potrebbe semplicemente cambiarne due dotin uno dash. Tuttavia, causa solo errori locali.

Per quanto riguarda la compressione, la codifica ternaria è stata progettata per ridurre approssimativamente il numero di punti e trattini, in un tipo approssimativo di codifica Huffman . Ma i due codici composti potrebbero essere facilmente resi più densi.

Per quanto riguarda la dimensione degli alfabeti, non c'è scelta per l'alfabeto binario e 58 simboli. L'alfabeto intermedio potrebbe contenere più simboli, ma quale sarebbe lo scopo?

Tuttavia, alcune persone sarebbero inclini a riconoscere lo spazio DETal livello 2, rendendo così l'alfabeto quaternario , quindi utilizzandolo direttamente al livello 3, codificato come se stesso nel livello 2.

Ciò soddisferebbe la definizione standard, per DETcodificato in binario come 0000. Ma impedirebbe l'analisi della codifica binaria come codice prefisso, rendendo più difficile mostrare che è un codice prefisso, quindi non ambiguo.C21CMorse

In effetti, una scelta del genere renderebbe 0000ambigua la stringa binaria , decodificabile come una SEPo l' altra sep sep. L'ambiguità dovrebbe essere risolta con una regola contestuale che sepnon può seguire se stessa, rendendo la formalizzazione più complessa.

L'importanza della transizione da analogico a logico.

Questa analisi si basa fortemente sul fatto che la decomposizione del segnale on / off in unità di uguale lunghezza indica chiaramente una rappresentazione analogica di una stringa binaria. Inoltre, le lunghezze in unità sono esattamente esatte per l'analisi di cui sopra, che sembra improbabile che sia accaduto per caso (sebbene sia possibile).

Tuttavia, da uno sguardo (troppo superficiale) al brevetto originale 1647 , non sembra essere stato così preciso, con frasi come (in cima alla pagina 2):

Il segno di un numero distinto, o di un numero composto quando usato in una frase di parole o di numeri, consiste in una distanza o uno spazio di separazione tra i caratteri di maggiore estensione rispetto alla distanza usata per separare i caratteri che compongono tali distinti o un numero composto.

Anche le persone che in seguito spedivano a mano o ricevevano a orecchio erano probabilmente altrettanto precise. In effetti, il loro pugno , cioè il loro tempismo, era spesso riconoscibile. Questa visione è anche supportata dal fatto che le lunghezze di spaziatura non sono sempre rispettate , in particolare durante l'apprendimento del codice Morse.

Queste situazioni corrispondono a una vista analogica del codice come segnale breve (punto), segnale medio (trattino) e pausa breve, media e lunga. La trasposizione diretta in un alfabeto logico darebbe naturalmente un alfabeto quinary , in cui i 58 simboli devono essere codificati. Questa ovviamente non è più una presentazione a 3 livelli del codice Morse.

Tuttavia, al fine di dare un senso (e possibilmente evitare ambiguità), questo alfabeto dovrebbe essere usato con il vincolo che due simboli di segnale ( doto dash) non possono seguirsi e che i simboli di pausa non possono seguirsi. L'analisi del codice e delle sue proprietà sarebbe resa più complessa e il modo naturale per semplificarlo sarebbe quello di fare ciò che è stato fatto: introdurre tempistiche adeguate per trasformarlo nella composizione di due codici, portando all'analisi abbastanza semplice fornita sopra ( ricorda che include mostrare che il codice è prefisso).

Inoltre, non è strettamente necessario seguire i tempi esatti nella rappresentazione analogica. Poiché il decodificatore della traduzione analogica può distinguere pause brevi, medie e lunghe, con qualsiasi mezzo, dovrebbe semplicemente imitare ciò che è stato fatto nel caso binario. Quindi il segnale corto e medio (seguito necessariamente da una pausa) sono riconosciuti come logici doto dash. Le brevi pause vengono dimenticate, poiché servono solo per segnare la fine di doto dash. Le pause medie vengono riconosciute come sepe le pause lunghe vengono riconosciute come due sepin successione. Quindi il segnale analogico è rappresentato in un alfabeto ternario, che può essere usato come prima per codificare l'alfabeto di 58 simboli. La nostra analisi iniziale può essere utilizzata anche quando i tempi non sono rigorosamente rispettati.

In alternativa, l'alternanza pausa-segnale potrebbe essere usata per trasformare questo alfabeto quinary in uno ternario, mantenendo solo le tre durate come simboli dell'alfabeto e usando l'analisi contestuale per determinare se una data durata è segnale o pausa. Ma questo è di nuovo un po 'complesso da analizzare.

Questo dimostra solo che ci sono molti modi di vedere le cose, ma non sono necessariamente convenienti e potrebbero non prestarsi facilmente all'analisi con gli strumenti matematici che sono stati sviluppati per analizzare i codici.

Ulteriori riferimenti ai brevetti sono disponibili su Internet.

Conclusione

Dati i tempi precisi dello standard, una buona risposta sembra essere quella di considerare il codice Morse come la composizione di un prefisso ternario che codifica (di 58 caratteri) in un alfabeto di 3 simboli, composto da un prefisso binario che codifica questi tre simboli.

Senza il preciso tempismo dello standard, il livello binario non può più essere considerato. Quindi la decodifica da analogico a logico avviene naturalmente a livello dell'alfabeto intermedio di dote dash. Tuttavia, dall'analogo al decodificatore logico è possibile decodificare il precedente alfabeto con 3 simboli, preservando così l'applicabilità della nostra analisi.


1
Sposta qualsiasi altra conversazione su chat.stackexchange.com/rooms/21638/…
Logica errante

1
I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Raffaello

Domanda: nell'argomento ternario inizi con un alfabeto {0,1}, da questo costruisci quattro simboli {punto = 10, trattino = 1110, sep1 = 00, sep2 = 000000}, da questo costruisci un set di parole in codice ternario consentendo sep2 = sep1 sep1 sep1 . Il set di parole in codice è stato scelto perché lega implicitamente i simboli alla codifica, il che è conveniente e l'OP chiede informazioni sull'archiviazione binaria. Tuttavia, perché non puoi invece usare la parola in codice set {rest = 0, on = 1} quindi dire "punto = on", "trattino = on on on", sep0 = "off", sep1 = "off off off" , sep2 = "off off off off off off off" (dove sep0 è resto intersignale)?
Jason C

^ Nel qual caso l'argomento è per una parola di codice binario impostata su una ternaria, ma usando un argomento simile e altrettanto forte come quello ternario qui dato. Cioè, la scelta di dare un significato speciale a più separatori di fila ma di non dare un significato speciale a più nient'altro di fila è fondamentale per l'argomento ternario, ma sembra anche arbitraria.
Jason C


28

Questa risposta non è lunga come sembra; questo sito mette molto spazio tra le voci dell'elenco! Aggiornamento: In realtà sta diventando piuttosto lungo ...

Il codice Morse non è "ufficialmente" binario, ternario, quaternario, quinario o addirittura 57-ary (se conto correttamente). Discutere su quale sia senza contesto non è produttivo. Sta a te definire quale di questi cinque è basato sulla tua applicazione e sui requisiti di codifica per la tua situazione specifica . A tal fine, ci sono pro e contro per ogni dimensione del set di simboli, che dovresti considerare per la tua situazione prima di prendere una decisione.

Per la base, M.1677 , lo standard internazionale Morse Code, sezione 2, definisce i tempi come:

2 Spaziatura e lunghezza dei segnali
2.1 Un trattino è uguale a tre punti.
2.2 Lo spazio tra i segnali che formano la stessa lettera è uguale a un punto.
2.3 Lo spazio tra due lettere è uguale a tre punti.
2.4 Lo spazio tra due parole è uguale a sette punti.

Si noti che ciò definisce solo i tempi, ad esempio un trattino non significa la stessa cosa di tre punti, è semplicemente la stessa lunghezza. L'unità di base del tempo è un punto.


Binario

Possiamo scegliere binario se lo desideriamo. È possibile rappresentare il codice Morse con "binario rigoroso", come lo chiami tu - l'approccio di quell'autore era quello di assegnare le cifre a "punto" e "trattino". Questo approccio non funziona e non credo che l'autore abbia una solida conoscenza del codice Morse. Ma c'è un approccio diverso che funziona. Se scegliamo binario, essenzialmente rappresentiamo se il segnale è alto o basso con ogni simbolo che occupa un singolo intervallo di tempo con punti. Nota che questo è anche l'approccio descritto nella pagina Elenco dei codici binari che hai citato.

Possono essere scelti anche altri codici binari (ad esempio la risposta di Bob Jarvis ) a scapito di aumenti della difficoltà di decodifica in codice Morse udibile (la codifica di Bob non può essere decodificata senza stato, ad esempio, il compromesso è che fornisce sequenze codificate più brevi).

simboli:

  • Basso, spento, ecc. (0)
  • Alto, acceso, ecc. (1)

Esempi di codifica:

  • Separatore di segnale: 0
  • Separatore di lettere: 000
  • Separatore di parole: 0000000
  • Tre punti: 10101
  • Tre trattini: 11101110111
  • La parola "figlio": 101010001110111011100011101
  • La frase "è un": 10100010101000000010111

Professionisti:

  • Dimensione minima del set di simboli
  • Gestito facilmente con la tipica logica digitale
  • Facile da decodificare in codice Morse udibile (presumendo che non venga effettuata alcuna convalida); decodifica senza stato e non richiede la memorizzazione di informazioni sulla tempistica dei simboli (ogni simbolo ha la stessa lunghezza).

Contro:

  • Codifiche lunghe.
  • Molte opportunità per codifiche non valide.
  • I significati dei singoli simboli (0, 1) dipendono dal contesto.


Ternario

Con questa scelta, definiamo le spaziature tra lettere e parole come pause e le spaziature del segnale sono implicite (anche se potresti scegliere di richiedere simboli di riposo a lunghezza di punto tra i segnali, se ti si addice meglio).

simboli:

  • Punto di riposo (0)
  • Punto (1)
  • Dash (2)

Esempi di codifica:

  • Separatore di lettere: 000
  • Separatore di parole: 0000000
  • Tre punti: 111
  • Tre trattini: 222
  • La parola "figlio": 11100022200021
  • La frase "è un": 11000111000000012

Professionisti:

  • Dimensioni del set di simboli piccoli.
  • Il separatore di segnale non è più necessario.
  • Lunghezze di codifica più brevi di quelle binarie.
  • Rimuove alcune codifiche non valide (ad es. 0110 con la scelta binaria non più possibile).

Contro:

  • Codifiche ancora lunghe.
  • Ancora molte possibilità per codifiche non valide, in particolare, il resto.
  • Non può essere decodificato senza stato † a meno che non si scelga di posizionare pause di punti esplicite tra i segnali.
  • I separatori di segnale sono impliciti ‡ a meno che non si scelga di posizionare pause di punti esplicite tra i segnali.
  • Alcuni significati dei singoli simboli (0) dipendono dal contesto.


Quaternario

simboli:

  • Separatore di lettere (0)
  • Separatore di parole (1)
  • Punto (2)
  • Dash (3)

Esempi di codifica:

  • Tre punti: 222
  • Tre trattini: 333
  • La parola "figlio": 2220333032
  • La frase "è un": 220222123

Professionisti:

  • Lunghezza codificata molto breve.
  • La possibilità di codifiche non valide è ridotta.
  • I simboli sono semanticamente precisi.
  • Probabilmente, più leggibile dall'uomo.

Contro:

  • Grande dimensione del set di simboli.
  • Non può essere decodificato senza stato.
  • I separatori di segnale sono impliciti.


Quinary

Un'interpretazione diretta dell'elenco di Wikipedia. Si noti che questo è molto simile alla scelta binaria, tranne per il fatto che alle varie combinazioni valide di 0 o 1 binari vengono assegnati simboli propri.

simboli:

  • Separatore di segnale (0)
  • Separatore di lettere (1)
  • Separatore di parole (2)
  • Punto (3)
  • Dash (4)

Esempi di codifica:

  • Tre punti: 30303
  • Tre trattini: 40404
  • La parola "figlio": 303031404041403
  • La frase "è un": 3031303032304

Pro (rispetto al quaternario):

  • Può essere decodificato senza stato.
  • L'unica dimensione del set di simboli che rappresenta in modo univoco, diretto e conciso i cinque oggetti menzionati nella sezione 2 della norma: "punto" (a cui sono correlati tutti i tempi), "trattino", "spazio tra i segnali", "spazio tra due lettere "," spazio tra due parole ".

Contro (rispetto al quaternario):

  • Maggiore possibilità di codifiche non valide.
  • Lunghezze di codifica aumentate senza aggiungere ulteriori informazioni (il compromesso è la facilità di decodifica).
  • Non è come facile da decodificare come la scelta binaria, nel senso che ogni simbolo è una lunghezza diversa nel tempo e questa associazione deve essere mantenuto da qualche parte.


57-ary:

Incluso per completezza.

simboli:

  • 26 lettere
  • 10 numeri
  • 20 segni di punteggiatura e segni vari
  • Separatore di parole (spazio)

Esempi di codifica:

  • La parola "figlio": son
  • La frase "è un": is a

Professionisti:

  • Codifica più breve
  • Leggibile dagli umani
  • Codifiche non valide sono impossibili.

Contro:

  • Il più grande set di simboli
  • Difficile da decodificare in codice Morse; necessario per mantenere le tabelle delle sequenze di output del codice Morse per ciascun simbolo e necessario per rilevare i confini delle parole e le lettere adiacenti per determinare dove inserire i vari resti.
  • Impossibile espandersi oltre le specifiche del codice Morse senza aggiungere nuovi simboli (compromesso per essere immuni a codifiche non valide).
  • I separatori di segnali e lettere sono impliciti.

fine

Per l'archiviazione come flusso di simboli su un dispositivo, se è necessario farlo, vale la pena notare che M.1677 definisce le sequenze di terminazione del messaggio e della trasmissione. Dalla parte II:

5 Ogni telegramma deve essere terminato con un segnale a croce (. -. -.)
6 La fine della trasmissione deve essere indicata dal segnale a croce (. -. -.) Seguito dall'invito a trasmettere il segnale K (-. -)
7 La fine dei lavori deve essere indicata dalla stazione che ha trasmesso l'ultimo telegramma. L'indicazione corretta è il segnale di fine lavoro (... -. -)

Sfortunatamente, lo standard tace sulla capacità di distinguere, ad esempio, la stringa "+ K" dalla sequenza ( fine del telegramma , invito a trasmettere ). Tuttavia, la fine del lavoro è unica. Se stai memorizzando il codice morse, dovrai scegliere come indicare la fine di una sequenza memorizzata.

Se, ad esempio, stai memorizzando un'intera conversazione e stai utilizzando il set di simboli binari, potresti ragionevolmente considerare la fine del lavoro come l'indicatore di fine sequenza, rappresentato come sequenza di bit univoca 101010111010111. Devi considerare il tipo dei dati che stai memorizzando (ad es. frammenti di messaggi, interi messaggi, intere conversazioni) nonché le strutture offerte dal tuo supporto di memorizzazione (ad es. capacità di prefisso con lunghezza del messaggio) prima di decidere. Suppongo che potresti arrivare al punto di definire il tuo indicatore di fine sequenza. In ogni caso questi sono tutti aspetti della memoria sottostante e hanno troppe possibilità di elencarli qui. La scelta dipende davvero da te in base a ciò che è appropriato per la tua situazione.


Non può essere decodificato senza stato: queste codifiche richiedono un certo stato per poter essere decodificate in codice Morse udibile. Tutti richiedono "Se il simbolo precedente era un punto / trattino e il simbolo corrente è un punto / trattino, inserire il separatore di segnale". Mentre potresti provare a "imbrogliare" e aggiungere automaticamente un separatore di segnale a tutti i simboli, riducendo al contempo il separatore di parole a 5 pause e il separatore di lettere a 1, Afaict M.1677 non proibisce esplicitamente separatori di parole consecutivi, il che rompe questo kludge.

‡ I separatori di segnale sono impliciti: questo è direttamente correlato alla nota precedente ma più orientato semanticamente. Queste codifiche hanno separatori di segnali impliciti nella loro notazione. Cioè "zzz" è intuitivamente tre z separate, i confini sono "piggybacked" su qualunque cosa separa i simboli nella codifica stessa. Considera la descrizione "tre punti di fila"; intuitivamente prendiamo questo per significare tre separatipunti, ma se i separatori non fossero impliciti questo potrebbe essere considerato indistinguibile da un trattino. Solo le rappresentazioni binarie e quinarie in stile Wikipedia (o ternarie con l'opzione di separazione del segnale esplicita) rimuovono qui tutte le ambiguità e le "scorciatoie", che possono essere di grande valore a seconda della situazione. È per questo motivo che esiste una forte argomentazione per la scelta del quinary.


TL; DR:

Come puoi vedere, ci sono vantaggi e svantaggi per ciascuno di essi e spetta a te decidere come vuoi trattarlo in base alle tue esigenze . Non c'è una risposta corretta. Si potrebbe tentare di sostenere che uno è più appropriato dell'altro in generale, ma questi argomenti si riducono a preferenze pedanti, poiché senza contesto non esiste una risposta corretta.

Ora, tutto ciò che ha detto, a mio avviso, la scelta del quinario è la rappresentazione che mi sembra più "giusta" per lo stesso codice Morse (in origine avevo favorito il quaternario). È l'unica scelta che fornisce tutto quanto segue:

  • Simboli senza contesto (un simbolo a sé stante contiene tutte le informazioni sul suo significato senza esaminare simboli adiacenti).
  • Rappresentazione di tutti i primitivi definiti in M.1667.
  • I separatori (segnale, lettera, parola) non sono implicati dalla notazione o dalla codifica sottostante (questo è importante, se ho scritto { dot, dot, dash }, quelli ,sono significativi e facili da trascurare).

Tuttavia, ci sono argomenti forti per tutti. Gli argomenti relativi alla codifica sono applicabili anche al trattamento di Morse stesso. Non esiste una risposta concreta al 100%, ma può sicuramente essere un buon argomento di dibattito con i tuoi amici al bar.

. . . -. -


1
Sposta qualsiasi altra conversazione su chat.stackexchange.com/rooms/21638/…
Logica errante

1
I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Raffaello

Continui a fare riferimento alla decodifica senza stato nei tuoi argomenti. Nella teoria dei codici, gli stati sembrano essere usati solo raramente, nei codici convoluzionali, che sono una famiglia di codici di correzione degli errori. Questo è completamente fuori tema poiché il codice Morse è tutt'altro che correzione degli errori. In effetti, non è nemmeno in grado di rilevare alcuni errori di un bit, per non parlare di correggerli. Si concepiscono vari tipi di codici arbitrari come una versione del codice Morse, ma non portano a comprensione. Perché presentarli? Gli stati non obbligatori, ovvero la codifica omomorfa, sembrano un requisito minimo. E ti mancano le codifiche interessanti. cc @KorayTugay
Babou

@babou Argomenti di decodifica statless?
Koray Tugay,

@babou Non mi dispiace avere un paio di punti fuori tema. Naturalmente i set di simboli sono arbitrari; questo è esattamente il punto che sto sollevando con questa risposta. La parola ternaria impostata in cima all'argomento del codice prefisso binario è ugualmente arbitraria. A prima vista no, ma fondamentalmente, hai fatto la scelta arbitraria di basare l'argomento su una parola in codice impostata con un alfabeto di due lettere (0 e 1). È una scelta arbitraria, perché la scelta di dare un significato speciale a "sep sep sep" ma di non farlo ad una "unità 1" è arbitraria. Si potrebbe facilmente dire che "trattino" è "punto punto punto" e discutere per binario su ternario.
Jason C

5

Nonostante i miei pensieri iniziali su questo, si scopre che questa domanda può essere formalizzata in un modo che ammette una risposta abbastanza precisa (modulo un paio di problemi di definizione). La risposta risulta essere 3 o 4, cioè ternaria o quaternaria. La risposta "tutto va da 2 a 57", gradita dalla folla, è corretta solo nel senso che se qualcuno ti chiede una caratterizzazione di gruppi abeliani, gli dici che sono ambientati.

Iniziamo osservando la codifica fisica per il codice Morse. Questo è in realtà B ASK , ovvero il keying binario di spostamento dell'ampiezza, che è solo un modo elaborato di dire che ci sono due livelli di ampiezza fisica (elettrica / ottica ecc.) Per codificare il nostro messaggio. Quindi, la domanda immediata è: non significa che la risposta è che il codice Morse è binario? Bene, è binario solo in un modo piuttosto non informativo, nel senso che il segnale binario on / off inviato sul filo non corrisponde direttamente a nessuna linea o punto. A questo vago livello di corrispondenza, potremmo persino inviare il codice ASCII (con la codifica diretta e ovvia dei bit) e chiamarlo "Morse" e / o "binario"; lo stesso vale per qualsiasi codice Huffman (anziché ASCII).

Quindi, come possiamo rendere la corrispondenza più precisa e allo stesso tempo formalizzare la nostra domanda? La teoria dei codici viene in aiuto. Lascia che sia l'insieme di simboli "bloccabili", all'incirca 66 simboli se comprendo correttamente l'universo del codice Morse; questo include le 26 lettere latine, le cifre 0-9 e un mucchio di accessori come alcune punteggiatura, "prosigns" ecc. In realtà non è tremendamente importante cosa siano. Un codice è una mappatura iniettiva dove (non ) è un insieme di parole in codice. Per essere fisicamente rappresentabili nel nostro hardware BASK sottostante, richiediamo che , ovvero che le nostre parole in codice debbano essere una stringa di bit; notare che ciò comportaMc:MTTTT{0,1}cI valori sono stringhe di parole in codice, quindi stringhe di stringhe di bit, ma alla fine linearizzate come stringhe di bit.

Per essere una fedele caratterizzazione del codice Morse, abbiamo bisogno di per contenere alcuni equivalenti diretti di linee e punti, nel senso che deve esserci una biiezione tra queste parole in codice e i punti e le linee che rappresentano il codice Morse su carta. deve anche essere [quasi] un codice univocamente decifrabile, il che significa che qualsiasi factoring di un elemento di in termini di elementi / parole chiave di [idealmente] deve essere unico. (Nota che alcuni autori, ad esempio Berstel , non chiamano nemmeno un codice a meno che non sia univocamente decifrabile, ma altri, ad esempio Steve RomanTTTTThanno una terminologia diversa in cui qualsiasi mappatura è un codice, ma quelli che sono unicamente decifrabili sono appena detti e abbreviati codici UD. Qui tratterò solo quest'ultima terminologia. Vedrai anche un po 'più tardi perché ho detto "idealmente".)

Dal momento che deve solo essere un'iniezione e non un'esclusione, possiamo popolare con "spazzatura" arbitraria oltre a ciò che è necessario per ottenere un codice UD, a condizione che le stringhe generate da questa spazzatura non siano il preimage di qualcosa di bloccabile. Ad esempio, una stringa di esattamente 42 punti non corrisponde a nulla in nessuna variante del codice Morse che ho visto. Quindi quando quando chiediamo se il codice Morse binario, ternario, quaternario, quinario ecc., La domanda dovrebbe essere quella di chiedere la cardinalità minima di con le due proprietà sopra, cioè: è [quasi] un codice UD e abbiamo un ovvio biiezione tra la carta "linea" e "dot" per alcuni elementi di .cTTT

Esistono due modi per procedere nella costruzione di , dall'alto verso il basso osservando che è necessario un separatore tra la rappresentazione cartacea di punti Morse per ottenere un codice UD o dal basso verso l'alto poiché nell'ITU codice Morse internazionale ci viene data la lunghezza delle linee, punti e varie pause. Userò quest'ultimo approccio qui perché ci sono molti modi per ottenere un po 'di altrimenti, cioè puoi scegliere lunghezze di tempo abbastanza arbitrarie, ad esempio il defunto codice American Morse utilizzava linee più corte rispetto alla versione ITU.TT

Iniziamo con la rappresentazione derivata dalla lunghezza del segnale ITU che ha cinque parole in codice di base, generate dal segnale "on" (1) e dal segnale "off" (0): just-dot(1), just-line(111), unit-space(0) , letter-space(000) e word-space[ha assunto sette 0 nel Morse internazionale ma può variare nella pratica]. Notare immediatamente che il unit-spacepuò apparire solo seguito da un 1 solo subito dopo just-dote just-line; e questo -termination di e (che è un codice virgola; ne parleremo più avanti) è effettivamente richiesto altrimenti non potresti nemmeno distinguere le linee dai punti. Questo ti dà l'ovvia riduzione a quattro parole in codice con:0just-dotjust-line

  • dit= just-dot unit-space= 10 e
  • dah= just-line unit-space= 1110.

Ecco, questo è il codice Morse quaternario: dit, dah, letter-space, word-space. La prossima osservazione è che si word-spacepuò approssimare (o addirittura assumere che sia) due letter-spaces, cioè sei zeri. Quindi è così che ottieni il set di codeword ternario; Come riferimenti per questa linea di ragionamento vedi ad esempio [1] [2] .

C'è anche un motivo tecnico per preferire le parole in codice ternarie: è un codice univocamente decifrabile, in realtà è un prefisso. Tuttavia (o la versione con solo sei zeri) non è più univocamente decifrabile perché quindi non c'è -fattorizzazione unica. Sebbene questo sia teoricamente un problema, non è un problema pratico perché il "metronomo" umano ha comunque difficoltà a misurare silenzi molto lunghi, quindi in pratica qualsiasi silenzio più lungo di una certa lunghezza viene assunto (da un essere umano) come una specie.T={10,1110,000}{10,1110,000,07}010=0307=0703word-space

Si noti inoltre che se si inserisce in quel set (ovvero si prende una visione "quinary"), si ottiene "ancora più sbagliato", nel senso che anche non ha più una fattorizzazione unica (poiché di per sé è anche una parola in codice). Inoltre, non è nella pre-immagine di alcun simbolo Morse, quindi è spazzatura in , proprio come è possibile aggiungere a ; infatti l'aggiunta di quest'ultimo è meno problematica in quanto, diversamente dall'aggiunta di , il codice non perderà la proprietà UD.00000T1420T0

La riduzione / estrazione da dit, dah, letter-spacecome parole di codice binario a tre simboli astratti (Trits) è utile per mostrare rapidamente che il (ternario) codice Morse è UD; questo è immediatamente ovvio perché letter-spacefunge da virgola, cioè il codice Morse ternario è un codice virgola. (Si noti che altri autori definiscono il "codice virgola" in un senso più restrittivo in cui tutti i simboli diversi dalla virgola sono gli stessi; lo sto usando qui nel senso più ampio dato in "Algebra postmoderna" di DH Smith , che significa usare un simbolo di terminazione univoco per mai codeword.) Si noti inoltre che la tecnica comma0code viene utilizzata a due livelli nel codice Morse; la just-linee just-dotterminano con "breve virgola" unit-space=0per renderli distinguibili l'uno dall'altro. Una volta astratta quella costruzione sui due diversi ( dite dah) tratti, tutte le lettere in codice Morse sono anche codificate in virgola terminandole con che il terzo tratto.000

Puoi anche usare l'approccio trit per calcolare l'entropia assumendo a dahe dite letter-spacesono "equivalenti" come trits [3] , nel senso che - per esempio - "e" prende 2 trits e "y" ne prende 5. L'approccio del trit astratto non è così utile se ti preoccupi di quanto sia costoso ogni simbolo effettivamente trasmettere nella vera codifica BASK Morse su una linea. Per quest'ultimo, è necessario scendere alla lunghezza dei bit reali dei simboli 3 (o 4), che sono visti come transizioni in un automa. Ad esempio, la lettera 'e' richiede 5 bit per codificare (come dit letter-space) mentre 'y' richiede 17 bit (tre dahs, uno dite a letter-space). Questa linea di pensiero risale a Shannon (vedi pagg. 3-4). Maggiori dettagli possono essere trovatinella "Teoria e codifica delle informazioni" di Blahut , ad esempio calcola "una media di 9.296 unità di tempo di segnalazione per lettera di uscita della fonte" per il codice Morse utilizzando le probabilità (incondizionate) di occorrenze di lettere in inglese. Per un'esposizione leggermente diversa (da parte di uno zoologo!) Potresti guardare JP Hailman ; ottiene una media diversa (10.2) perché assume probabilità leggermente diverse per le lettere inglesi, ma per il resto la sua analisi è concettualmente la stessa.

Per riassumere: puoi prendere diverse visioni del codice Morse, ma alcune sono più fruttuose di altre nel dire qualcosa di interessante. Non sono a conoscenza di alcuna analisi che utilizza la vista "quinary" e affinché questo modello non sia riducibile a quattro simboli dovresti fare delle ipotesi sull'occorrenza lo spazio unitario che non tiene in Morse reale , ad esempio che potresti avere due ma non necessariamente tre spazi unità adiacenti (che non è valido Morse). La vista ternaria ti offre una rapida analisi della decodificabilità unica. La visione più profonda / feconda è quella che vede i 3 o 4 simboli come effettivamente rappresentati da quantità diseguali di bit come nel codice Morse reale (| dit| = 2, | dah| = 4, | letter-space| = 3 e |word-space| = 6 o 7); è ancora perspicace a questo livello basso considerare i simboli ternari / quaternari come transizioni in un automa.

Quanto al motivo per cui Wikipedia fa schifo su questo ... bene su alcuni argomenti che fa. Il loro articolo principale su http://en.wikipedia.org/wiki/Coding_theory non è davvero qualcosa che consiglierei di leggere. Non posso dire molto del libro (Petzold) che hai citato, a parte il fatto che non sembra scritto da un esperto di teoria dell'informazione. Petzold ha ragione solo nel senso che se i messaggi in codice Morse fossero composti da una sola lettera, si potrebbe ragionevolmente dire che sono in un codice binario; se vuoi inviare parole, però, hai bisogno di un separatore di lettere, altrimenti il ​​codice sarebbe orribilmente non UD, fino al punto di essere impraticabile.


È un po 'tardi qui per me per rivedere l'intero post, ma @babou fa un punto valido sotto che apparentemente Shannon, Blahut e altri hanno interpretato male lo standard (attuale) ITU (supponendo che non sia cambiato dai loro tempi) nel seguente tecnicità: lo spazio unitario viene aggiunto tra dits e dah della stessa lettera , ma letter-spaceviene aggiunto solo lo spazio tra le lettere. Questa lettura dello standard sembra dare un'occhiata al libro di un praticante abbastanza recente . Quindi dobbiamo prendere in prestito uno 0 da letter-spaceciascuno dite dahquando sono in posizioni terminali di una lettera, lasciando solo due 0 per il letter-space, cioè . Ciò significa anche che (ad esempio) la dimensione di 'e' è solo 4 bit, non 5.T={10,1110,00}


Sposta qualsiasi altra conversazione su chat.stackexchange.com/rooms/21638/…
Logica errante

I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Raffaello

-1

Inizialmente il codice Morse doveva essere scritto su una striscia di carta, ma gli operatori del telegrafo divennero presto in grado di "leggere" i clic dell'attrezzatura. Questa versione di Morse (americano o "land" Morse) aveva tre elementi "mark", il punto, il trattino e il trattino lungo.

L'uso del Morse internazionale nel secolo scorso, tramite trasmissione radio, veniva solitamente codificato a mano (su una chiave telegrafica) e decodificato a orecchio, ascoltando lo schema dei segnali acustici prodotti dal ricevitore. Operatori qualificati potrebbero ricevere meglio di quelli non qualificati e alcune persone potrebbero produrre codice più facile da capire rispetto a quello di altri. Si diceva che un buon operatore trasmittente avesse un "buon pugno". Un operatore inetto era chiamato LID. (Per l'origine di "coperchio" - che credo provenga da un errore comune in American Morse nell'invio di LID per DD, daaahh, dit dit, dah dit dit anziché dah dit dit, dah dit dit - vedi questo riferimento: https://english.stackexchange.com/questions/31818/how-did-the-word-lid-come-to-mean-poor-operator-in-the-context-of-telegraph .)

Quindi ne consegue che la "codifica" di Morse in un formato binario dipende dallo scopo, e quindi se la qualità del "pugno buono" rispetto al "pugno povero" deve essere mantenuta. Una stringa di accensione e spegnimento deve essere abbinata a un orologio e "corretta" per difficoltà di fase o durata di ciascuna porzione del segnale? O deve invece essere campionato ad una velocità sufficiente a conservare variazioni casuali o confuse, presumibilmente per ispezioni o delizie successive?


1
Siamo spiacenti, come risponde alla domanda?
Koray Tugay,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.