モールス符号は、3つのシンボルをエンコードするプレフィックスバイナリコードの上にあるプレフィックスの3進コード(58文字のエンコード用)です。
受け入れられたとき、これははるかに短い答えでした。しかし、ユーザー間のかなりの誤解を考慮し、OPからの要求に従って、私はこのはるかに長い答えを書きました。最初の「簡単な」セクションでは、その要点を説明します。
内容
(大きな)一言で言えば
「モールス符号はバイナリ、3進、5進のどちらですか?」許容可能な回答の基準を修正しない限り、可能な回答を比較することはできません。実際、適切な基準がなければ、ほぼすべての種類の構造について説明することができます。私が選択した基準は次のとおりです。
これは、科学的に研究されているコード理論の基本概念を無視するarbitrary意的なハッキングを排除することを意図しており、体系的な分析の幻想を与えることで魅力的かもしれませんが、決定的にはあまりにも非公式に対処されています。このサイトは、プログラミングではなく、コンピューターサイエンスに関するものであると想定されて
います。技術的な質問に答えるには、最小限の確立された科学と受け入れられた概念を使用する必要があります。
迅速な分析標準ことを示しているモールスコードで使用されるすべてのシンボルが最終的にバイナリで符号化され、それが各ユニットの信号がONであることができるwhith等しい長さの単位の文字列として、またはオフに送信されるので、。これは、モールス信号が最終的に論理アルファベットコーディングされていることを示しています。Σ1= { 0 、1 }
しかし、それはコードの内部構造については何も言っていません。エンコードされる情報は、57文字とスペースを含む58シンボル(標準に準拠)のアルファベットの文字列です。これは、アルファベット
、最後のsymblはスペースです。Σ3= { A 、B 、… 、Z、0 、1 、... 、9 、?、= 、… 、× 、@、[] }
しかし、中間のアルファベットの標準的な指定があることを
、に基づくと、おそらく他の記号は。かなり明確ですΣ2dot
dash
したがって、とに選択肢がないことをと、質問は次のように理解する必要があります:「モールス全体の構造と特性を最もよく説明するために、中間アルファベット考慮すべきシンボルの数コード、 "また、3つのレベル間で2つのエンコードを指定する必要があります。Σ1Σ3Σ2
モールス符号であるという事実、所与のプレフィックス信号を復号する際に排除いかなる曖昧さは、我々はAで単にこの本質的な性質を説明することができることを準同型(可変長)符号三元アルファベット
{ 、、}、および2つの符号化方式から
に、及びからへ準同型プレフィックス、従って両方の明確なコード、及び明白な接頭辞を与えるように構成することがすることができるともに、 58個のシンボルをバイナリにエンコードします。Σ2=dot
dash
sep
C3 → 2Σ3Σ2C2 → 1Σ2Σ1
したがってモールスコードはアルファベットで表現さ接頭三元コードで構成されている 、、自体はバイナリで符号化されたこれら3つのシンボルを用いて、次のコードワードを有します。{ dot
dash
sep
}
dot
→ 10、、およびdash
→ 1110sep
→ 00
何が連続との間の空間として知られていることに注意してくださいdot
、またはdash
実際の表現に含まれているdot
とdash
、これは通常、ターゲット記号で表さコードワードにソースシンボルから文字列準同型として定義されているコードのようなタイプの通常の数学的表現であるように、私がやったように。
これは、構造特性を分析するのではなく、ユーザーにコードを直感的に指定することを目的とした、標準で提供されているプレゼンテーションの一部から少し外れています。ただし、エンコーディングはどちらの場合も同じです。
標準の正確なタイミングがなくても、アナログ信号のデコーダーは、提案された3進アルファベットに変換することができます。そのため、上記の3進コードの理解は依然として有効です。
コード:基本的なポイント
この回答は、2009年10月付けの標準ITU-R M.1677-1に基づいています(参考としてJason Cに感謝します)。私は専門用語を使用しなければならないdot
とdash
、というよりも、dit
そしてdah
それは、この規格で使用される用語であるとして、。
モールス信号の議論を始める前に、コードが何であるかについて合意する必要があります。この質問に関する難しい議論には明らかにそれが必要です。
基本的に、情報を送信または処理するには、情報を表す必要があります。コードは情報をある表現システムから別のシステムに翻訳するシステムです。これは非常に一般的な定義です。私たちは、の概念と混同しないように注意しなければならない表現を、とのコード 1つの表現(からソース別)(ターゲット)。
表現は、可変電圧、紙上の色付きドット、文字列、数字、0と1のバイナリ文字列など、多くの形式をとることができます。アナログ表現と形式的(または論理的、または抽象的)表現を区別することが重要です。
アナログ/物理表現は、図面、さまざまな電圧レベル、形状(文字の場合)です。
論理的/形式的/抽象的表現は、抽象的なグラフ、記号の文字列、またはその他の数学的エンティティを含む数学的表現です。
一部の情報は元々アナログである場合がありますが、通常、その処理を数学的な手段または人によって正確に定義できるように、論理的な表現に変換します。
逆に、コンピューターやトランスミッターなどの物理デバイスを使用して論理表現を扱う場合、論理表現にアナログ形式を与える必要があります。
この分析のために、標準で説明されているように、我々が検討する唯一のアナログ形式は送信に使用される形式です。しかし、それでも、最初のステップは、このアナログ表現をまったく同じ構造の論理表現の直接の実装として解釈することであり、その上でモールス符号がどのようなコードであるかの分析を構築することだと考えます。コード理論は、論理表現の分析に基づいた数学的知識体系です。
ただし、最後の議論でアナログ/論理の移行に戻ります。
コード:定義
論理的な見方では、ソースアルファベットソース文字列をターゲットアルファベットに変換するためにコードが使用されるということです。多くの場合、目的が情報の表現に特別なプロパティを追加すること(エラーに対する耐性を高める(エラーの検出と修正)や表現を小さくするなど)ために、両方のアルファベットが同一(通常はバイナリ)である場合です。冗長性の削除(ロスレスコード圧縮)、および場合によっては慎重に制御された一部の情報の損失(損失のある圧縮)。ST
ただし、モールス符号の目的は、大きなアルファベットの文字列を、はるかに小さなアルファベット(実際にはバイナリ)に基づいた文字列に表現する方法を提供することです。知覚と操作能力。これは、可変長コードと呼ばれるものによって実現され
ます。
正式な言語理論の用語を使用すると、正確な数学的定義は次のようになりますと、それぞれソースアルファベットとターゲットアルファベットと呼ばれる2つの有限集合とします。コードからの各シンボルマッピング合計関数である上の記号のシーケンスに、および拡張の準同型に
に、天然の各シーケンスをマッピングターゲットシンボルのシーケンスへのソースシンボルは、その拡張子と呼ばれます。STC:S→T∗STCS∗T∗
コードワードをシンボルのイメージと呼びます。C(s)∈T∗s∈S
可変長符号ある一意に復号可能なの対応する準同型場合にである単射。つまり、任意の文字列は、最大1つの文字列のイメージになります。また、コードは明確であると言います。つまり、どんな文字列でも、明確にデコードできるということです。CS∗T∗T∗S∗
可変長コードは、他のコードワードのプレフィックスであるコードワードがない場合、プレフィックスコードです。それはまた、即時コード、またはコンテキストフリーのコードです。これらの名前の理由は、プレフィックスコードのコードワードで始まるターゲット文字列を読み取るときに、次のシンボルを知らない/読み取る必要なく、最後のシンボルを読み取るとすぐにコードワードの終わりを認識するためです。結果として、プレフィックスコードは明確であり、高速で非常に簡単にデコードできます。w
一意のデコード可能性とプレフィックスプロパティがコードの構成の下で閉じられていることが簡単にわかります。
準同型としての定義は、コードワード間に特別な分離がないことを意味することに注意してください。それらを明確に識別することができるのは、プレフィックスプロパティなどの構造です。
実際、そのような分離記号がある場合、ターゲットアルファベットから文字列をデコードする必要があるため、それらはターゲットアルファベットの一部である必要があります。次に、先行するコードワードにセパレータを追加することにより、可変長コードの理論モデルに戻すのは非常に簡単です。それがコンテキストの難しさ(たとえば、複数のセパレーターによる)を引き起こす場合、それはコードが見かけよりも複雑であることのヒントにすぎません。これは、上記の理論モデルに固執する正当な理由です。
モールス信号
モールス符号は、標準で3つのレベルで説明されています。
3。57文字(27文字、10桁、20の記号と句読点)と単語間スペースを使用して、文字列を単語に切り分ける自然言語テキストのエンコードを提供することを目的としています。単語間スペースは特殊文字のように使用され、他の文字と混ぜることができますSEP
。
2。これらの文字はすべての承継としてエンコードされるdash
とdot
、私は注意しなければならインター文字のスペースを、使用してsep
分離すること、dash
およびdot
次の文字のものの中から1つの文字のを。
1 dash
そしてdot
、同様にsep
正確一部受け入れユニットの観点で定義された長さを有する信号又は信号(と呼ばれる間隔)の不在として符号化されるべきです。特に、
文字のエンコードdash
とdot
エンコードは要素間スペースで区切る必要がありますσ
。
これにはすでにいくつかの結論が必要です。
アナログ形式で送受信されるメッセージは連続した長さの単位(スペースの長さまたは時間の長さ)であるため、付録1のパートIのセクションで指定されているように、各単位の期間全体で信号がオンまたはオフになります標準の 2 :
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.
これは明らかにビットストリームと呼ばれるもののアナログエンコーディングであり、アナログのオフとオンを表す0
ansの文字列によってバイナリ表記で論理的に表すことができます。1
アナログ表現に関連する抽象離れて問題にするために、我々は、このように我々が注意しなければならことを、モールス信号のメッセージがビット列として送信されていることを考慮することができます0
と1
。
したがって、標準からの上記の抜粋は、論理的に次のように表現できます。
- 0。A
dot
はで表され1
ます。
- 1 A
dash
はで表され111
ます。
- 2。要素間スペース
σ
はで表され0
ます。
- 3。文字間スペース
sep
はで表され000
ます。
- 4。単語間スペース
SEP
はで表され0000000
ます。
したがって、モールス符号は、これらの5つのシンボルをエンコードするためにバイナリで5つのコードワードを使用していると見ることができます。これがシステムの記述方法ではないという事実を除けば、システムにはさらにいくつかの方法があり、単純または数学的な観点から考えると、これは最も便利な方法ではありません。
また、この説明はコード理論の専門家ではなく、素人向けであることにも注意してください。そのため、それを正当化する内部構造よりも目に見える外観について説明しています。コードのプロパティを強調するために、数学的にはより構造化されていますが、この説明と互換性のある他の説明を除外する理由はありません。
しかし、最初に、コードの完全な説明には、すぐに認識できる3つのレベルの表現が含まれることに注意する必要があります。
- 3。を含む文字列で構成されるテキスト
SEP
。
- 2。
dot
、dash
およびの文字列としての文字列のエンコードsep
。
- 1 これら3つのレベル2文字列を
symbols
バイナリ文字列としてエンコードします。
どのシンボルが何にエンコードされているかについてはおそらく議論するかもしれませんが、モールス符号の本質的な側面は、上部に文字があり、中央にdot
sとdash
esがあり、ビット0
と1
下部に3つのレベルの表現があることです。
これは、レベル3からレベル2まで、およびレベル2からレベル1までの2つのコードが必ず存在することを意味します。
表現の3つのレベルの分析
この3層コーディングシステムの一貫した分析を行うために、各レベルでどのような情報が関連するかを最初に分析する必要があります。
1 ビット列は、定義により、そのアナログ表現の必要性によって、のみから構成されている0
と1
。
3。テキストレベルでは、57文字と単語間スペースを含む58シンボルのアルファベットが必要SEP
です。58個すべてが最終的にバイナリエンコーディングを使用する必要があります。しかし、モールス符号標準ではこれらの57 + 1文字が指定されていますが、情報のエンコードにどのように使用されるべきかは指定されていません。それが英語と他の自然言語の役割です。モールス信号は、他のシステムに58シンボルのアルファベットを提供し、その上で58進コードを作成できますが、モールス符号自体は58進コードではありません。
2。で、dot
かつdash
、すべての我々の必要性は57の文字コードするために、これら二つのシンボルであるレベル、すなわちの文字列としてそれぞれのコードワードを提供dot
し、dash
一緒にいくつかのセパレータを、sep
1つの文字が終了したマークに、そして別のスタート。単語間スペースをエンコードする手段も必要SEP
です。leavel 1で直接提供しようとするかもしれませんが、これは、そうでなければ層構造のコードの組織を台無しにします。
確かに、標準の説明はまさにそれを行うために正しく批判されるかもしれません。しかし、著者は、平均的なユーザーにとって、プレゼンテーションの方が簡単に把握できると考えているかもしれません。また、この種の数学的分析に先行するモールス符号の伝統的な記述に従います。
これにはいくつかの注意が必要です。
レベル3の文字レベルでは、文字間のスペースsep
はもはや意味がありません。文字の世界では、紙に書かれた2つの文字を区切るスペース以上の意味はないため、これは非常に正常です。レベル2では、文字を表すコードワードを認識する必要がありますが、それだけです。
レベル2でも同様に、要素間スペースσ
はもはや意味を持ちません。dot
and の世界では意味dash
がありませんが、レベル1 dot
では、を表すバイナリコードワードを識別するためにのみ必要dash
です。ただし、レベル1では、ビットと区別できません0
。
したがって、要素間スペースσ
はもはや特別なものではありません。これはの1つの使用法です0
。
ただし、前に説明したように、可変長コードの知識を使用してコードを分析する場合は、コードを単純な文字列として定義するために、後続のコードワードにセパレータを追加する必要があります準同型。Σ∗2→Σ∗1
これは、次のコードの部分的な指定を意味します:
およびdot
→10
dash
→1110
レベル2のアルファベットは、少なくとも1つの他の記号が必要です。文字間のスペースは、標準の文字に従う必要があります。ただし、可変長コードを準同型として定義するには、およびの
各コードワードに要素間スペースを追加する必要がありました。したがって、我々は持っている必要がありますのためのコードワードとしてそうtoghether終わるとその、先行からか、それは3になり、標準で必要とされます。これは常に機能します。なぜなら、標準には、2つの文字間セパレータが互いに続くという規定がないためです。Σ2sep
000
0
dot
dash
00
sep
0
dot
dash
0
これは、符号化するのに十分であるアルファベット { 、、}準同型コードと以下のように定義されます:Σ2=dot
dash
sep
C2→1:Σ2→Σ∗1
dot
→10
dash
→1110
sep
→00
そして、コードワードが他のコードワードの接頭辞ではないことを発見したことには大きな驚きがあります。そのため、明確で解読しやすいプレフィックスコードがあります。
コードを定義するために、同様に進めることができます。C3→2:Σ3→Σ∗2
標準では、たとえば文字を表す
ために標準の表で指定されている方法で、の文字のコードワードdot
としてとの文字列を使用します。dash
Σ3dot
dot
dash
dot
f
繰り返しますが、これらのコードワードは文字間スペースで区切られています。コードを準同型写像として定義するには、コードワードにセパレータを含める必要があります。そのため、準同型写像の定義は次のようになります f→ dot
dot
dash
dot
sep
これは、アルファベット 57文字のそれぞれに適用されます。しかし、ここでもまた、単語separatorが必要です。これは、標準に従って、です。最初に、既に3ビットがコードによって提供され、2 が単語の最後の文字を終了するビットによって提供され、1 がその最後の文字の最後またはエンコードを終了するビットによって提供されることに注意してください。したがって、最終的に残りとしてコーディングする必要があります。Σ3SEP
0000000
0
sep
0
dot
dash
SEP
0000
ただし、階層型アプローチを尊重するには、SEP
コードワードでエンコードする必要があります。以来ようバイナリエンコードされ、それが従うように符号化することができます。Σ∗2sep
00
SEP
sep
sep
したがって、アルファベットを準同型コードエンコードでき
ます
は次のように定義されます。Σ3={A,B,…,Z,0,1,…,9,?,=,…,×,@, SEP
}C3→2:Σ3→Σ∗2
また、別のコードワードが別のコードワードのプレフィックスではないことがわかると、さらに驚きます。したがって、コードもプレフィックスコードです。C3→2
プレフィックスプロパティはコードの構成の下で閉じられるため、モールス信号はプレフィックスコードです。CMorse=C2→1∘C3→2
そこで我々は、と結論付けることができる3つのシンボルアルファベットの接頭バイナリエンコーディングの組成物として、{、モールスコードが理解され、容易に分析することができdot
、dash
、sep
57羽の文字(}バイナリアルファベットに、58シンボルアルファベットの接頭符号化3文字のアルファベットに1つのスペース)。
コンポジション自体は、58個のシンボルをバイナリ表現にエンコードするプレフィックスです。
この分析に関するコメント。
構造のプレゼンテーションが思いつく最高のものであることを確立することは常に困難です。ただし、上記の分析は、この回答の冒頭で設定された基準を満たしているようです。現在のコーディング理論に従って正式に提示された3層の定義に近いこと、シンプルさ、コードの主要な特性を証明します。
エラー修正プロパティを探す意味はほとんどありません。モールス符号は、2つdot
を1 つに変更するだけなので、シングルビットエラーを検出することさえできませんdash
。ただし、ローカルエラーのみが発生します。
圧縮に関して、三値エンコーディングは、近似的な種類のハフマンコーディングで、ドットとダッシュの数をほぼ減らすように設計されました。しかし、2つの合成コードは簡単に密度を上げることができます。
アルファベットのサイズに関しては、バイナリおよび58シンボルのアルファベットを選択することはできません。中間アルファベットにはさらに記号を含めることができますが、目的は何でしょうか?
ただし、一部の人々はDET
レベル2でスペースを認識し、アルファベット4進を作成し、それをレベル2でそれ自体としてエンコードされたレベル3で直接使用します。
これはDET
、バイナリとしてとしてエンコードされるため、標準定義を満たし0000
ます。ただし、のプレフィックスコードとしてのバイナリエンコードの分析が妨げられ、
がプレフィックスコードであることを示すのが難しくなり
、明確になります。 C M O R S EC2→1CMorse
実際、このような選択により、バイナリ文字列が0000
あいまいになり、どちらかSEP
またはとしてデコード可能になりますsep
sep
。曖昧さはsep
、それ自体には従えない文脈上のルールで解決する必要があり、形式化はより複雑になります。
アナログから論理への移行の重要性。
この分析は、オン/オフ信号の等しい長さの単位への分解が、バイナリ文字列のアナログ表現を明確に示しているという事実に大きく依存しています。さらに、単位での長さは上記の分析に正確であり、偶然に発生した可能性は低いと思われます(可能ですが)。
しかし、元の特許1647を(あまりにも大雑把に)見てみると、次のような文(2ページの先頭)ではそれほど正確ではなかったようです。
明確な数字、または単語や数字の文で使用される複合数字の記号は、そのような明確な数字を構成する文字の分離に使用される距離よりも大きい範囲の文字間の距離または間隔のスペースで構成されますまたは複合数字。
後で手で送信したり、耳で受信したりする人も、それほど正確ではありませんでした。確かに、彼らの拳、すなわち彼らのタイミングはしばしば認識可能でした。このビューは、特にモールス信号を学習する場合、間隔の長さが常に尊重されるわけではないという事実によってもサポートされています。
これらの状況は、短い信号(ドット)、中程度の信号(ダッシュ)、短い、中程度、長い休止としてのコードのアナログ表示に対応しています。論理アルファベットへの直接転置は当然、58のシンボルをコード化する必要のある5 進アルファベットを与えます。もちろん、これはもはやモールス信号の3層プレゼンテーションではありません。
ただし、意味を理解する(および場合によってはあいまいさを避ける)ために、このアルファベットは、2つのシグナルシンボル(dot
またはdash
)が互いに追従できず、ポーズシンボルも互いに追従できないという制約とともに使用する必要があります。コードとそのプロパティの分析はより複雑になり、それを簡素化する自然な方法は、行われたことを行うことです:適切なタイミングを導入して2つのコードの構成に変換し、上記のかなり単純な分析につながります(コードがプレフィックスであることを示すことを忘れないでください)。
さらに、アナログ表現の正確なタイミングに従う必要はありません。アナログ変換のデコーダーは、短い、中程度、長い一時停止をどのような手段によっても区別できるため、バイナリの場合に行われたことを模倣する必要があります。したがって、短い信号と中程度の信号(必然的に一時停止が続く)は、論理的dot
またはとして認識されdash
ます。dot
またはの終わりを示すためだけに役立つため、短い一時停止は忘れられdash
ます。中ポーズはとして認識されsep
、長いポーズはsep
連続して2として認識されます。したがって、アナログ信号は3進数のアルファベットで表され、58シンボルのアルファベットをエンコードするために以前と同様に使用できます。タイミングが厳密に尊重されていない場合でも、初期分析を使用できます。
あるいは、信号休止交互を使用して、この5進アルファベットを3進アルファベットに変換し、3つの持続時間のみをアルファベットのシンボルとして保持し、コンテキスト分析を使用して、所定の持続時間が信号か休止かを判断できます。しかし、これも分析するのが少し複雑です。
これは、物事を見る方法がたくさんあることを示していますが、必ずしも便利ではなく、コードを分析するために開発された数学ツールを使用した分析にすべてが容易に役立つとは限りません。
特許へのより多くの参照はインターネットで見つけることができます。
結論
標準の正確なタイミングを考えると、モールス符号を、これらの3つのシンボルのバイナリプレフィックスエンコーディングで構成された3つのシンボルアルファベットへの3進数のプレフィックスエンコード(58文字)の構成として考えるのが良いようです。
標準の正確なタイミングがなければ、バイナリレベルを考慮することはできません。次いで、論理復号化アナログは、天然中間体のアルファベットのレベルで行われるdot
と
dash
。ただし、アナログから論理デコーダーは、前の3つのシンボルアルファベットにデコードできるため、分析の適用性が維持されます。