모스 코드는 세 개의 기호를 인코딩하는 접두사 이진 코드 위에있는 접두사 삼진 코드 (58 문자 인코딩 용)입니다.
수락했을 때 훨씬 짧은 답변 이었습니다 . 그러나 사용자 간의 상당한 오해를 고려하고 OP의 요청에 따라 훨씬 더 긴 답변을 썼습니다. 첫 번째 "요약"섹션은 그 요점을 알려줍니다.
내용
간단히 말해서
"Morse Code 이진, 삼항 또는 오음입니까?" 수용 가능한 답변에 대한 몇 가지 기준을 수정하지 않으면 가능한 답변을 비교할 수 없습니다. 실제로 적절한 기준이 없으면 거의 모든 종류의 구조에 대한 설명을 얻을 수 있습니다. 내가 선택한 기준은 다음과 같습니다.
그것은 두 번째 계층의 도트 / 대시 표시와 함께 Morse 코드의 3 계층 설명을 반영해야합니다.
코드의 이론적 분석을 위해 개발 된 프리젠 테이션 및 수학 도구에 최대한 적합해야합니다.
가능한 한 간단해야합니다.
그것은 모스 부호의 특성을 분명히 드러내야합니다.
이것은 과학적으로 연구 된 코드 이론의 기본 개념을 무시하는 임의의 해킹을 배제하기위한 것이며, 비공식적으로 결론을 내릴 수는 없지만 체계적인 분석의 착각을 통해 일부 호소력을 가질 수 있습니다. 이 사이트는 프로그래밍이 아니라 컴퓨터 과학 에 관한 것
입니다. 기술적 질문에 대답하기 위해 최소한의 확립 된 과학과 수용된 개념을 사용해야합니다.
의 신속한 분석 표준 것을 보여준다 모르스 부호에 사용 된 모든 심볼들은 최종적으로 이진 코딩 이 각 유닛에 대한 신호가 될 수 파크 동일한 길이의 단위 문자열 또는 오프 전송되므로. 이것은 Morse 메시지가 궁극적으로 논리 알파벳 코딩됨을 나타냅니다 .Σ1= { 0 , 1 }
그러나 그것은 코드의 내부 구조에 대해서는 아무것도 말하지 않습니다. 인코딩 할 정보는 57 문자와 공백을 포함하여 58 기호 (표준에 따름)의 알파벳 문자열입니다. 이것은 알파벳
마지막 심벌은 공간입니다.Σ삼={A,B,…,Z,0,1,…,9,?,=,…,×,@,[]}
그러나, 중간 알파벳 표준 지정이 있다는
에 기초 하고 그리고 아마도 다른 기호. 꽤 분명하다Σ2dot
dash
따라서, 및 Σ 3에 대한 선택이 없다면 , 질문은 다음과 같이 이해되어야합니다. " 중간 알파벳 Σ 2 에서 몇 개의 기호를 고려해야 모스 전체의 구조와 성질을 가장 잘 알 수 있습니다. 코드, "또한 세 가지 수준 사이에 두 가지 인코딩을 지정해야합니다.Σ1Σ삼Σ2
모스 코드가 있다는 사실을 감안할 때 접두사 신호를 디코딩 할 때 배제가 모호성, 우리는 함께 단순히이 필수 속성을 설명 할 수 있다는 호모 모르 픽 (가변 길이) 코드 원 알파벳
{ , , }, 2 개 개의 코딩 방식의 C (3) → 2 에서 Σ 3
에서 Σ 2로 , C 2 → 1 에서 Σ 2 에서 Σ 1로Σ2=dot
dash
sep
기음3 → 2Σ삼Σ2기음2 → 1Σ2Σ1이는 호 모모 픽 및 프리픽스이고, 따라서 모호하지 않은 코드이고, 따라서 58 심볼의 명확한 프리픽스 인코딩을 이진으로 제공하도록 구성 될 수있다.
따라서 모르스 부호는 알파벳 표현 프리픽스 삼원 코드로 구성되어있다 , , } 자체는 이진 인코딩이 세 문자와 다음 코드 워드 :{ dot
dash
sep
}
dot
, → 1110 및 → 00→ 10dash
→ 1110sep
→ 00
무엇하는 것은 연속적인 사이 공간으로 알려져 있음을 유의 dot
또는 dash
실제의 표현에 포함 dot
하고 dash
이는 일반적으로 소스 심볼의 대상 심볼로 표현 된 코드 워드에 문자열 homomorphisms로 정의 코드들의 이러한 유형에 대한 일반적인 수학적 표현이기 때문에, 방금했던 것처럼
이것은 표준에 제시된 프리젠 테이션의 일부와는 약간 다른데, 이는 구조적 특성을 분석하는 대신 사용자를위한 코드를 직관적으로 지정하는 데 더 중점을두고 있습니다. 그러나 두 경우 모두 인코딩이 동일합니다.
표준의 정확한 타이밍이 없어도 아날로그 신호의 디코더는 여전히 우리가 제안하는 3 진 알파벳으로 변환 할 수 있으므로 3 진 코드에 대한 위의 이해는 여전히 유효합니다.
코드 : 기본 사항
이 답변은 2009 년 10 월 12 일자 표준 ITU-R M.1677-1을 기준으로합니다 (참고로 Jason C에게 감사드립니다). 나는 용어를 사용하여야 dot
하고 dash
, 대신 dit
하고 dah
는이 기준에서 사용하는 용어이기 때문에.
모스 코드에 대해 논의하기 전에 코드가 무엇인지에 동의해야합니다. 이 질문에 대한 어려운 토론은 분명히 그것을 요구합니다.
기본적으로 정보를 전송하거나 처리하려면 정보를 표시해야합니다. 코드는 한 표현 시스템에서 다른 표현 시스템으로 정보를 변환하는 시스템 입니다. 이것은 매우 일반적인 정의입니다. 표현 의 개념 과 한 표현 ( 소스 )에서 다른 표현 ( 타겟 ) 으로의 코드 의 개념을 혼동하지 않도록주의해야합니다 .
표현은 가변 전압, 종이의 컬러 도트, 문자열, 문자, 숫자, 0과 1의 이진 문자열 등과 같은 다양한 형태를 취할 수 있습니다. 아날로그와 형식 (또는 논리적 또는 추상) 표현을 구분하는 것이 중요합니다. .
아날로그 / 물리적 표현은 그림, 다양한 전압 레벨, 모양 (문자)입니다.
논리 / 공식 / 추상 표현은 추상 그래프, 기호 문자열 또는 기타 수학 엔티티를 사용하는 수학 표현입니다.
일부 정보는 원래 아날로그 일 수도 있지만, 수학적 수단이나 사람에 의해 정확하게 처리를 정의 할 수 있도록 보통 논리적 인 표현으로 변환합니다.
반대로, 컴퓨터 나 송신기와 같은 물리적 장치를 사용하여 논리적 표현을 처리하려면 논리적 표현에 아날로그 형식을 제공해야합니다.
이 분석의 목적 상, 우리가 고려하는 유일한 아날로그 형식은 표준에 설명 된대로 전송에 사용 된 것입니다. 그러나 첫 번째 단계는이 아날로그 표현을 동일하게 구조화 된 논리적 표현의 직접 구현으로 해석하는 것이며, Morse 코드가 어떤 코드인지 분석 할 수 있습니다. 코드 이론은 논리적 표현 분석에 기반한 수학적 지식 체계입니다.
그러나 우리는 마지막 토론에서 아날로그 / 논리적 전환으로 돌아올 것입니다.
코드 : 정의
논리적 관점은 코드가 소스 알파벳 의 소스 문자열을 대상 알파벳 T 로 변환하는 데 사용된다는 것 입니다. 정보의 표현에 오류에 대한 저항력을 높이거나 (오류 감지 및 수정) 더 작은 표현을 만드는 등의 추가적인 속성을 추가하려는 경우 두 알파벳이 동일하고 일반적으로 이진 인 경우가 종종 있습니다. 리던던시 제거 (무손실 코드 압축) 및 일부 정보의 손실을 신중하게 제어 (손실 압축) 할 수 있습니다.ST
그러나 Morse 코드의 목적은 큰 알파벳의 문자열을 훨씬 작은 알파벳 (실제 이진)을 기반으로하는 문자열로 표현하는 방법을 제공하는 것입니다. 지각과 조작 능력. 이것은 가변 길이 코드 라고 불리는 것에 의해 달성됩니다
.
공식 언어 이론의 용어를 사용하여 정확한 수학적 정의는 다음과 같습니다. 와 T 를 각각 소스 및 대상 알파벳이라고하는 두 개의 유한 세트로 만듭니다. 코드 C : S → T는 * 에서 각 심볼 매핑 총 함수 S를 통해 심볼들의 시퀀스를 T , 그리고 확장 C 의 동형을
S * 로 T * 자연적으로 소스 심볼들의 각 시퀀스를 맵핑 일련의 대상 심볼을 확장이라고합니다.STC:S→T∗STCS∗T∗
C(s)∈T∗s∈S
기음에스※티※티※에스※
승
고유 한 디코딩 가능성과 접두사 속성이 코드 구성으로 닫혀 있음을 쉽게 알 수 있습니다.
동질성이라는 정의 는 코드 워드 사이에 특별한 분리가 없음을 의미합니다 . 접두사 속성과 같은 구조로 모호하지 않게 식별 할 수 있습니다.
실제로 이러한 분리 기호가있는 경우 대상 알파벳에서 문자열을 디코딩해야하기 때문에 대상 알파벳의 일부 여야합니다. 그런 다음 구분 기호를 앞의 코드 단어에 추가하여 가변 길이 코드의 이론적 모델로 되 돌리는 것이 매우 간단합니다. 문맥 상 난이도를 높이려면 (예 : 여러 구분 기호로 인해), 코드가 명백한 것보다 더 복잡하다는 힌트 일뿐입니다. 이것은 위에서 설명한 이론적 모델을 고수해야 할 좋은 이유입니다.
모스 부호
모스 부호는 표준에서 세 가지 수준으로 설명됩니다.
삼 . 57 문자 (27 자, 10 자리, 20 개의 신볼 및 발음)와 문자열을 단어로 자르는 단어 간 간격을 사용하여 자연어 텍스트의 인코딩을 제공합니다. 단어 간 공간은 특수 문자처럼 사용되며 다른 문자와 혼합 될 수 있습니다 SEP
.
2. 이러한 문자 모두의 승계로 인코딩 할 dash
과 dot
내가주의하여야 간 편지 쓰기 공간을 사용하여 sep
별도의 위해, dash
그리고 dot
다음 글자들에서 문자를 하나의.
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
.
- 삼 . 문자 간 공간
sep
은로 표시됩니다 000
.
- 4. 단어 간 공간
SEP
은로 표시됩니다 0000000
.
따라서 Morse 코드는 5 개의 코드 단어를 이진으로 사용하여이 5 개의 심볼을 인코딩하는 것으로 볼 수 있습니다. 이것이 시스템을 설명하는 방식이 아니라는 사실을 제외하고는 시스템에 더 많은 것이 있으며 순진하거나 수학적인 관점에서 생각할 수있는 가장 편리한 방법은 아닙니다.
또한이 설명은 코드 이론 전문가가 아닌 일반인을위한 것입니다. 이런 이유로, 그것은 그것을 정당화하는 내부 구조보다 더 보이는 외관을 묘사합니다. 수학적으로 더 구조적이지만 코드의 속성을 강조하기 위해이 설명과 호환되는 다른 설명을 배제 할 이유가 없습니다.
그러나 먼저 코드에 대한 완전한 설명은 즉시 인식 할 수있는 3 가지 수준의 표현과 관련이 있습니다.
- 삼 . 를 포함하여 문자열로 구성된 텍스트
SEP
입니다.
- 2. 문자열을
dot
, dash
및 의 문자열로 인코딩 sep
합니다.
- 1 . 이 3 개의 레벨 2 문자열을
symbols
이진 문자열로 인코딩 합니다.
우리는 아마도 어떤 기호가 무엇에 인코딩되는지에 대해 논의 할 수 있지만, Morse 코드의 핵심은이 세 가지 수준의 표현을 가지고 있으며, 상단, 상단 및 하단 , 비트 및 하단 dot
의 문자 .dash
0
1
이것은 레벨 3에서 레벨 2로, 코드 2에서 레벨 1로 2 개의 코드가 반드시 있어야 함을 의미합니다.
세 가지 수준의 표현 분석
이 3 계층 코딩 시스템에 대한 일관된 분석을 위해서는 먼저 각 레벨에서 어떤 종류의 정보가 관련되어 있는지 분석해야합니다.
1 . 비트 문자열은 정의 및 아날로그 표현의 필요성에 의해 0
및 로만 구성됩니다 1
.
삼 . 텍스트 수준에는 57 자 및 단어 간 간격을 포함하여 58 개의 알파벳이 필요합니다 SEP
. 58 개 모두 궁극적으로 이진 인코딩을 가져야합니다. 그러나 Morse 코드 표준은 이러한 57 + 1 문자를 지정하지만 정보를 인코딩하는 데 사용되는 방법을 지정하지는 않습니다. 그것이 영어와 다른 자연어의 역할입니다. Morse 코드는 다른 시스템에 58 기호의 알파벳을 제공하는데, 여기에 58 이진 코드를 작성할 수 있지만 Morse 코드 자체는 58 이진 코드가 아닙니다.
2. 상기 dot
와 dash
수준, 우리 모두의 필요가 순서대로 코드에 57 자이 두 심볼이다, 즉 문자열로 각 코드 워드를 제공 dot
하고 dash
함께 몇 가지 구분으로, sep
하나 개의 문자가 완성 마크, 또 다른 시작. 또한 단어 간 공간을 인코딩하는 수단이 필요합니다 SEP
. 우리는 leavel 1에서 직접 제공하려고 시도 할 수 있지만 그렇지 않으면 계층 구조의 코드 구성이 엉망이됩니다.
실제로 표준에 대한 설명은 그렇게하는 것에 대한 비판을받을 수 있습니다. 그러나 저자는 일반 사용자가 자신의 프레젠테이션을 이해하기가 더 쉽다고 생각했을 수도 있습니다. 또한 이러한 종류의 수학적 분석 이전의 모스 부호에 대한 전통적인 설명을 따릅니다.
이를 위해서는 몇 가지 언급이 필요합니다.
레벨 3, 문자 레벨에서 문자 간 공간 sep
이 더 이상 의미가 없습니다. 이것은 글자의 두 글자를 종이로 분리하는 공간보다 글자의 우주에서 더 이상 의미가 없기 때문에 이것은 매우 정상입니다. 레벨 2에서 문자를 나타내는 코드 워드를 인식해야하지만, 그게 전부입니다.
마찬가지로 레벨 2에서 요소 간 공간 σ
은 더 이상 의미가 없습니다. 그것은 세계에서 아무 의미가 없습니다 dot
및 dash
있지만 나타내는 바이너리 코드 워드를 식별하기 위해 레벨 1에서에만 필요합니다 dot
, dash
. 그러나 레벨 1에서는 비트와 구별 할 수 없습니다 0
.
따라서 요소 간 공간 σ
은 더 이상 특별한 것이 아닙니다. 의 한 번의 사용입니다 0
.
Σ※2→Σ※1
dot
→10
dash
→1110
Σ2sep
000
0
dot
dash
00
sep
0
dot
dash
0
Σ2=dot
dash
sep
기음2 → 1: Σ2→ Σ※1
dot
→10
dash
→1110
sep
→00
우리는 코드 워드가 다른 코드 워드의 접두사가 아님을 알게되어 기쁩니다. 따라서 우리는 접두사 코드를 가지고 있으며, 이는 명확하고 해독하기 쉽습니다.
기음3 → 2: Σ삼→ Σ※2
dot
dash
Σ삼dot
dot
dash
dot
에프
에프→ dot
dot
dash
dot
sep
Σ삼SEP
0000000
0
sep
0
dot
dash
SEP
0000
SEP
Σ※2sep
00
SEP
sep
sep
Σ삼= { A , B , … , Z, 0 , 1 , ... , 9 , ? , = , … , × , @ , SEP
}기음3 → 2: Σ삼→ Σ※2
기음3 → 2
기음엠o r s e= C2 → 1∘ C3 → 2
우리는 따라서 결론 수 모르스 부호 접두사 진 3 개 문자 알파벳 {부호화의 조성물로서 이해 될 수 있으며, 용이하게 분석 할 수있다 dot
, dash
, sep
(바이너리 알파벳에}, 및 프리픽스는 58 심볼 알파벳의 인코딩 57 개 문자 한 글자는 3 글자로 된 알파벳입니다.
컴포지션 자체는 58 기호를 이진 표현으로 접두사 인코딩합니다.
이 분석에 대한 비고
구조의 표현이 가장 좋은 구조라는 것을 확립하는 것은 항상 어렵습니다. 그러나 위의 분석은이 답변의 시작 부분에 설정된 기준, 즉 현재 코딩 이론, 단순성 및 코드의 주요 속성에 따라 공식적으로 제시 된 3 계층 정의에의 근접성에 부합하는 것으로 보입니다.
오류 수정 속성을 찾는 데는 아무런 소용이 없습니다. Morse 코드는 단일 비트 오류를 감지하지 못할 수도 있습니다. 단일 비트 오류는 단순히 두 개 dot
를 하나로 변경하기 때문 dash
입니다. 그러나 로컬 오류 만 발생합니다.
압축과 관련하여, 삼원 인코딩은 허프만 코딩 의 대략적인 종류에서 점과 대시의 수를 대략적으로 줄 이도록 설계되었습니다 . 그러나 구성된 두 코드는 쉽게 밀도가 높아질 수 있습니다.
알파벳의 크기와 관련하여 이진 및 58 기호 알파벳을 선택할 수 없습니다. 중간 알파벳에는 더 많은 기호가 포함될 수 있지만 목적은 무엇입니까?
그러나 일부 사람들은 DET
2 단계 에서 공백을 인식하여 알파벳을 4 차로 만든 다음 3 단계에서 직접 사용하여 2 단계에서 자체적으로 인코딩합니다.
DET
0000
기음2 → 1기음엠o r s e
실제로, 그러한 선택은 이진 문자열을 0000
모호 하게 만들 거나 SEP
또는로 결정할 수 있습니다 sep
sep
. 애매 모호함은 sep
스스로 따라갈 수없는 상황 별 규칙으로 해결되어야 하므로 공식화가 더 복잡해집니다.
아날로그에서 논리로의 전환의 중요성
이 분석은 온 / 오프 신호를 동일한 길이의 단위로 분해하면 이진 문자열의 아날로그 표현을 분명히 나타냅니다. 또한 단위 길이는 위의 분석에 적합하며 우연히 발생하지는 않습니다 (가능하더라도).
그러나 원래 특허 1647을 (너무 커서) 살펴보면 (2 페이지의 맨 위에)와 같은 문장으로 정확하지 않은 것 같습니다.
별개의 숫자 또는 단어 또는 숫자의 문장에서 사용될 때 복합 숫자의 부호는 그러한 구별을 구성하는 문자들을 분리하는데 사용 된 거리보다 문자들 사이의 거리 또는 이격 공간으로 구성된다. 또는 복합 번호.
나중에 손으로 보내거나 귀로받는 사람들도 그처럼 정확하지는 않았습니다. 실제로 그들의 주먹 , 즉 그들의 타이밍은 종종 알아볼 수있었습니다. 이 관점은 특히 모스 부호를 배울 때 간격 길이가 항상 존중되지는 않는다는 사실에 의해 뒷받침됩니다 .
이러한 상황은 코드의 아날로그보기에 짧은 신호 (도트), 중간 신호 (대시) 및 짧은, 중간 및 긴 일시 정지에 해당합니다. 논리적 알파벳으로의 직접 전치는 자연스럽게 5 분의 1 알파벳을 제공하며 , 여기에는 58 개의 기호가 코딩되어야합니다. 물론 이것은 더 이상 모스 부호의 3 계층 표현이 아닙니다.
그러나 이해하기 쉽고 모호함을 피하기 위해이 알파벳은 두 신호 기호 ( dot
또는 dash
)가 서로를 따라갈 수없고 일시 정지 기호가 서로를 따라갈 수 없다는 제약 조건과 함께 사용해야 합니다. 코드와 그 속성의 분석은 더 복잡 해졌고 그것을 단순화하는 자연스러운 방법은 수행 된 작업을 수행하는 것입니다. 적절한 타이밍을 도입하여 두 코드의 구성으로 바꾸면 위에 주어진 매우 간단한 분석이 가능합니다. 코드가 접두사임을 표시하는 것을 포함합니다).
또한 아날로그 표현에서 정확한 타이밍을 따를 필요는 없습니다. 아날로그 변환의 디코더는 어떤 방법 으로든 짧은, 중간 및 긴 일시 중지를 구분할 수 있기 때문에 이진 경우에 수행 된 작업을 모방해야합니다. 따라서 단기 및 중간 신호 (필요에 따라 일시 정지)는 논리 dot
또는 로 인식됩니다 dash
. dot
또는 의 끝을 표시하는 역할 만하기 때문에 짧은 일시 정지는 잊혀 dash
집니다. 중간 일시 중지는으로 인식 sep
되고 긴 일시 중지는 두 번 sep
연속으로 인식됩니다 . 따라서 아날로그 신호는 3 진 알파벳으로 표시되며, 58 개의 알파벳을 인코딩하기 위해 이전과 같이 사용할 수 있습니다. 타이밍을 엄격하게 준수하지 않아도 초기 분석을 사용할 수 있습니다.
대안 적으로, 신호-일시 정지 변경은이 4 원 알파벳을 3 원으로 바꾸는 데 사용될 수 있으며, 3 개의 지속 시간만을 알파벳의 심볼로 유지하고, 상황 분석을 사용하여 주어진 지속 시간이 신호인지 또는 일시 정지인지를 결정할 수있다. 그러나 이것은 다시 분석하기가 약간 복잡합니다.
이것은 단지 사물을 보는 많은 방법이 있다는 것을 보여 주지만, 반드시 편리하지는 않으며, 코드를 분석하기 위해 개발 된 수학적 도구를 사용하여 쉽게 분석 할 수있는 것은 아닙니다.
특허에 대한 추가 참조 는 인터넷에서 찾을 수 있습니다.
결론
표준의 정확한 타이밍을 감안할 때 좋은 대답은 Morse 코드를 3 개의 기호 접두사 인코딩 (58 문자)을 3 개의 기호 알파벳으로 구성 하고이 세 가지 기호의 이진 접두사 인코딩으로 구성된 것으로 간주하는 것 같습니다.
표준의 정확한 타이밍이 없으면 이진 레벨을 더 이상 고려할 수 없습니다. 그러면 아날로그-논리 디코딩은 자연스럽게 dot
및
의 중간 알파벳 레벨에서 발생합니다 dash
. 그러나 아날로그-논리적 디코더는 이전 3 개 심볼의 알파벳으로 디코딩하여 분석의 적용 가능성을 보존 할 수 있습니다.