Азбука Морзе - это префиксный троичный код (для кодирования 58 символов) поверх префиксного двоичного кода, кодирующего три символа.
Это был гораздо более короткий ответ, когда его приняли. Однако, учитывая значительные недоразумения между пользователями и после запроса от OP, я написал этот гораздо более длинный ответ. Первый раздел «ореховая скорлупа» дает вам суть этого.
содержание
В (большой) словах
На вопрос "Является ли азбука Морзе двоичным, троичным или кинарным?" сравнивать возможные ответы невозможно, если не установить некоторые критерии приемлемого ответа. Действительно, без надлежащих критериев можно придумать объяснения почти для любого вида структуры. Критерии, которые я выбрал, следующие:
он должен отражать трехуровневое описание азбуки Морзе с представлением точки / тире во втором уровне;
он должен максимально соответствовать представлениям и математическим инструментам, разработанным для теоретического анализа кодов;
это должно быть максимально просто;
это должно ясно показать свойства азбуки Морзе.
Это предназначено для предотвращения произвольного взлома, в котором игнорируются основные концепции теории кода, изученные с научной точки зрения, и которые могут иметь некоторую привлекательность, давая иллюзию систематического анализа, хотя и рассматриваются слишком неофициально, чтобы быть убедительными. Предполагается, что этот сайт посвящен
информатике , а не программированию. Мы должны использовать минимум устоявшейся науки и принятых концепций, чтобы ответить на технический вопрос.
Быстрый анализ стандарта показывает, что все символы, используемые в азбуке Морзе, в конечном итоге кодируются в двоичном виде , поскольку он передается в виде строки единиц одинаковой длины с сигналом, который может быть включен или выключен для каждой единицы. Это указывает на то, что сообщения Морзе в конечном итоге кодируются в логическом алфавите .Σ1= { 0 , 1 }
Но это ничего не говорит о внутренней структуре кода. Кодируемая информация представляет собой строку в алфавите из 58 символов (в соответствии со стандартом), включающую 57 символов и пробел. Это соответствует алфавит
Σ3= { A , B , … , Z, 0 , 1 , ... , 9 , ? , = , … , × , @ , [] }последний символ - пространство.
Тем не менее, стандарт определяет , что существует промежуточный алфавит
, на основе и и , возможно , других символов. Это вполне понятноΣ2dot
dash
что строки в должны быть закодированы как строки в Σ ∗ 2 , иΣ*3Σ*2
что строки в должны быть закодированы как строки в Σ ∗ 1Σ*2Σ*1
Таким образом, учитывая, что нет выбора для и Σ 3 , вопрос следует понимать как: « Какое количество символов мы должны рассмотреть в промежуточном алфавите Σ 2, чтобы наилучшим образом объяснить структуру и свойства всего Морса? код ", который также влечет за собой указание двух кодировок между тремя уровнями.Σ1Σ3Σ2
Учитывая тот факт , что код Морзе является префиксом гомоморфна (переменной длины) код , который исключает любую неоднозначность при декодировании сигнала, мы можем объяснить , просто это существенное свойство с троичной алфавита
{ , , }, и две схемы кодированияΣ2знак равноdot
dash
sep
от Σ 3
до Σ 2 и C 2 → 1 от Σ 2 до Σ 1С3 → 2Σ3Σ2С2 → 1Σ2Σ1которые являются как гомоморфными, так и префиксными, таким образом, оба являются однозначными кодами и, таким образом, могут быть составлены так, чтобы дать однозначное префиксное кодирование 58 символов в двоичный код.
Поэтому Морзе состоит из префикса троичного кода , выраженной в алфавите , , } , с этими тремя символами самих закодированных в двоичной системе со следующими кодовыми словами:{ dot
dash
sep
}
dot
, → 1110 и → 00→ 10dash
→ 1110sep
→ 00
Обратите внимание, что то, что известно как пробел между последовательными dot
или dash
фактически включено в представление dot
и dash
, поскольку это обычное математическое представление для таких типов кодов, которые обычно определяются как гомоморфизмы строк от исходных символов до кодовых слов, выраженных с помощью целевых символов, как я только что сделал.
Это немного отличается от некоторых представлений, представленных в стандарте, которые направлены скорее на интуитивное определение кода для пользователей, чем на анализ его структурных свойств. Но кодировка одинакова в обоих случаях.
Даже без точной синхронизации стандарта декодер аналогового сигнала может все же перевести его в троичный алфавит, который мы предлагаем, так что вышеупомянутое понимание троичного кода все еще будет в силе.
Коды: основные пункты
Этот ответ основан на Стандарте МСЭ-R M.1677-1 от октября 2009 года (спасибо Джейсону C за справку). Я буду использовать терминологию dot
и dash
, а не dit
и dah
, так как это терминология, используемая в этом стандарте.
Прежде чем мы начнем обсуждать азбуку Морзе, мы должны договориться о том, что такое код. Сложные дискуссии по этому вопросу, очевидно, требуют этого.
По сути, информация должна быть представлена, чтобы быть переданной или обработанной иным образом. Код - это система для перевода информации из одной системы представления в другую . Это очень общее определение. Мы должны быть осторожны, чтобы не перепутать концепцию представления и концепции кода из одного представления ( источника ) в другое ( цели ).
Представление может принимать различные формы, такие как переменное электрическое напряжение, цветные точки на бумаге, строка символов, цифры, двоичные строки из нулей и единиц и т. Д. Важно различать аналоговое и формальное (или логическое, или абстрактное) представление. ,
Аналоговое / физическое представление - это чертеж, изменяющийся уровень напряжения, форма (для буквы).
Логическое / формальное / абстрактное представление - это математическое представление с абстрактными графами, строками символов или другими математическими объектами.
Хотя некоторая информация изначально может быть аналоговой, мы обычно преобразуем ее в логическое представление, чтобы иметь возможность точно определить ее обработку математическими средствами или людьми.
И наоборот, когда мы имеем дело с логическим представлением с использованием физических устройств, таких как компьютер или передатчики, нам необходимо придать логическую форму аналоговой форме.
Для целей этого анализа единственная аналоговая форма, которую мы рассматриваем, - это форма, используемая для передачи, как описано в стандарте. Но даже тогда мы будем считать, что первым шагом является интерпретация этого аналогового представления как прямой реализации идентично структурированного логического представления, на котором мы строим наш анализ того, каким может быть код Морзе. Теория кода - это математическая совокупность знаний, основанная на анализе логических представлений.
Однако мы вернемся к аналогично-логическому переходу в конце обсуждения.
Коды: определения
ST
Тем не менее, цель азбуки Морзе состоит в том, чтобы предоставить только способ представления строк в большом алфавите в строки на основе гораздо меньшего алфавита (фактически двоичного), используя промежуточный алфавит, почти двоичный (точки и тире), для лучшей адаптации к человеку Восприятие и манипулятивные способности. Это достигается тем, что называется
кодом переменной длины :
Используя термины из теории формального языка, точное математическое определение выглядит следующим образом: Пусть и T два конечных набора, называемые исходным и целевым алфавитами соответственно. Код C : S → T ∗ - это полная функция, отображающая каждый символ из S в последовательность символов над T и расширениеSTС: S→ T*STСS*T*
С( s ) ∈ T*s ∈ S
СS*T*T*S*
вес
Легко показать, что уникальная декодируемость и свойство префикса закрыты по составу кодов.
Обратите внимание, что определение как гомоморфизма подразумевает, что не существует специального разделения между кодовыми словами. Именно их структура, например свойство префикса, позволяет однозначно идентифицировать их.
Действительно, если бы были такие символы разделения, они должны были бы быть частью целевого алфавита, поскольку они были бы необходимы для декодирования строки из целевого алфавита. Тогда было бы довольно просто вернуться к теоретической модели кода переменной длины, добавив разделитель к предыдущему кодовому слову. Если бы это вызвало контекстную сложность (например, из-за нескольких разделителей), это было бы только намеком на то, что код более сложный, чем очевидный. Это хорошая причина придерживаться теоретической модели, описанной выше.
Азбука Морзе
Азбука Морзе описана в стандарте на трех уровнях:
3 он предназначен для кодирования текста на естественном языке с использованием 57 символов (27 букв, 10 цифр, 20 синболов и знаков препинания) и межсловного пространства для разрезания строки символов на слова. Межсловное пространство используется как специальный символ, который можно смешивать с остальными, что я отмечу SEP
.
2 все эти символы должны быть закодированы как последовательности dash
и dot
с использованием межбуквенного пробела, который я отмечу sep
, чтобы отделить dash
и dot
одной буквы от таковых из следующей буквы.
1 dash
И dot
, а также sep
должны быть закодированы как сигнал или отсутствие сигнала ( так называемый интервал) с длиной точно определенной в терминах некоторого принятого блока. В частности, dash
и dot
кодировка буквы должна быть отделена межэлементным пространством, что я отмечу σ
.
Это уже требует нескольких выводов.
Сообщение, которое должно быть передано и получено в аналоговой форме, представляет собой последовательность единиц длины (пространственной длины или продолжительности времени), так что сигнал включается в течение всей длительности каждой единицы, как указано в разделе I Приложения 1, раздел 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
dot
представлен 1
.
- 1
dash
представлен 111
.
- 2 Межэлементное пространство
σ
представлено как 0
.
- 3 Межбуквенное пространство
sep
представлено как 000
.
- 4 Межсловное пространство
SEP
представлено как 0000000
.
Таким образом, мы могли видеть код Морзе как использующий 5 кодовых слов в двоичном коде, чтобы закодировать эти 5 символов. За исключением того факта, что это не совсем то, как описывается система, есть еще кое-что, и это не самый удобный способ, с которым можно думать, с наивной или математической точки зрения.
Также обратите внимание, что это описание предназначено для неспециалистов, а не специалистов по теории кода. По этой причине он описывает больше видимый внешний вид, чем внутреннюю структуру, которая его оправдывает. У него нет причин исключать другие описания, совместимые с этим, хотя и математически более структурированные, чтобы подчеркнуть свойства кода.
Но сначала отметим, что полное описание кода включает в себя 3 уровня представления, которые сразу распознаются:
- 3 Текст, состоящий из строки символов, в том числе
SEP
.
- 2 Кодирование буквы строки в виде строки
dot
, dash
иsep
.
- 1 Кодирование строки этих двух уровней 2
symbols
в виде двоичной строки.
Мы можем, возможно, обсудить, какие символы закодированы в чем, но существенным аспектом азбуки Морзе является то, что он имеет эти три уровня представления, с символами вверху, символами dot
s и dash
es в середине и битами 0
и 1
внизу. ,
Это подразумевает, что обязательно есть два кода, один с уровня 3 на уровень 2, а другой с уровня 2 на уровень 1.
Анализируя три уровня представления
Чтобы провести последовательный анализ этой трехуровневой системы кодирования, мы должны сначала проанализировать, какая информация актуальна на каждом уровне.
1 Битовая строка по определению и по необходимости ее аналогового представления состоит только из 0
и 1
.
3 На уровне текста нам нужен и алфавит из 58 символов, включая 57 символов и межсловное пространство SEP
. Все 58 из них должны иметь в конечном итоге двоичное кодирование. Но, хотя стандарт кода Морзе определяет эти 57 + 1 символов, он не определяет, как они должны использоваться для кодирования информации. Это роль английского и других естественных языков. Азбука Морзе предоставляет другой системе алфавит из 58 символов, на котором они могли бы построить 58-значный код, но сам код Морзе не является 58-буквенным кодом.
2 На dot
и dash
уровне, нам нужны все эти два символа для того , чтобы кодировать 57 символов, т.е. обеспечивают кодовое слово для каждого в виде строки dot
и dash
, вместе с каким - то разделителем sep
к отметке , когда одна буква закончена, и еще один старт. Нам также нужны некоторые средства кодирования межсловного пространства SEP
. Мы могли бы попытаться обеспечить это непосредственно на уровне 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: Σ3→ Σ*2
dot
dash
Σ3dot
dot
dash
dot
е
е→ dot
dot
dash
dot
sep
Σ3SEP
0000000
0
sep
0
dot
dash
SEP
0000
SEP
Σ*2sep
00
SEP
sep
sep
Σ3= { A , B , … , Z, 0 , 1 , ... , 9 , ? , = , … , × , @ , SEP
}С3 → 2: Σ3→ Σ*2
С3 → 2
СMо R сек е= C2 → 1∘ C3 → 2
Таким образом , мы можем сделать вывод о том , что код Морзе может быть понят и легко проанализировать, как состав префикса двоичного кодирования из алфавита 3 символов { dot
, dash
, sep
} в двоичный алфавит, и префикс , кодирующем из 58 символов алфавита (57 символов и один пробел) в алфавит из 3 букв.
Сама композиция представляет собой префиксное кодирование 58 символов в двоичное представление.
Замечания по этому анализу.
Всегда трудно установить, что представление структуры - лучшее, что можно придумать. Однако представляется, что приведенный выше анализ соответствует критериям, установленным в начале этого ответа: близость к трехуровневому определению, формально представленная в соответствии с современной теорией кодирования, простота и свидетельство основных свойств кода.
Обратите внимание, что нет смысла искать свойства для исправления ошибок. Код Морзе может даже не обнаружить единственную битовую ошибку, поскольку он может просто изменить две dot
в одну dash
. Однако это вызывает только локальные ошибки.
Что касается сжатия, троичное кодирование было разработано, чтобы приблизительно уменьшить количество точек и тире в приближенном виде кодирования Хаффмана . Но два составных кода можно легко сделать более плотными.
Что касается размера алфавитов, то здесь нет выбора для двоичного и 58-символьного алфавита. Промежуточный алфавит может содержать больше символов, но какова будет цель?
Однако некоторые люди будут склонны распознавать пространство DET
на уровне 2, что делает алфавит четвертичным , а затем использовать его непосредственно на уровне 3, закодированном как само на уровне 2.
DET
0000
С2 → 1СMо R сек е
Действительно, такой выбор сделал бы двоичную строку 0000
неоднозначной, декодируемой либо как, либо SEP
как sep
sep
. Неоднозначность должна быть решена с помощью контекстного правила, которое sep
не может следовать самому себе, что делает формализацию более сложной.
Важность аналога к логическому переходу.
Этот анализ в значительной степени опирается на тот факт, что разложение сигнала включения / выключения на блоки равной длины четко указывает на аналоговое представление двоичной строки. Кроме того, длины в единицах точно соответствуют приведенному выше анализу, что вряд ли произошло случайно (хотя это возможно).
Однако, из (слишком поверхностного) взгляда на оригинальный патент 1647 , он, кажется, не был настолько точным с такими предложениями, как (в верхней части страницы 2):
Знак отличной цифры или составной цифры, когда он используется в предложении из слов или цифр, состоит из расстояния или пробела между символами, которые больше, чем расстояние, используемое при разделении символов, составляющих любые такие отличительные знаки. или составная цифра.
Люди, которые позже отправляли вручную или получали на слух, также вряд ли были такими точными. Действительно, их кулак , то есть их время, часто было узнаваемо. Это мнение также подтверждается тем фактом, что не всегда соблюдаются расстояния между интервалами , особенно при изучении азбуки Морзе.
Эти ситуации соответствуют аналоговому представлению кода как короткий сигнал (точка), средний сигнал (тире) и короткая, средняя и длинная пауза. Прямое преобразование в логический алфавит, естественно, даст двоичный алфавит, в который должны быть закодированы 58 символов. Это, конечно, уже не трехуровневая презентация азбуки Морзе.
Однако, чтобы иметь смысл (и, возможно, избежать двусмысленности), этот алфавит должен использоваться с ограничением, что два сигнальных символа ( dot
или dash
) не могут следовать друг за другом, и что символы паузы также не могут следовать друг за другом. Анализ кода и его свойств будет сделан более сложным, и естественный способ упростить его будет заключаться в том, чтобы сделать то, что было сделано: ввести правильные временные параметры, чтобы превратить его в композицию из двух кодов, что приведет к довольно простому анализу, приведенному выше ( помните, что это включает в себя показ кода префикса).
Кроме того, нет необходимости строго придерживаться точного времени в аналоговом представлении. Поскольку декодер аналогового перевода может различать короткие, средние и длинные паузы любыми средствами, он должен просто имитировать то, что было сделано в двоичном случае. Следовательно, короткий и средний сигнал (обязательно сопровождаемый паузой) распознается как логический dot
или dash
. Короткие паузы забываются, так как служат только для обозначения конца dot
или dash
. Средние паузы распознаются как sep
, а длинные паузы распознаются как две sep
подряд. Следовательно, аналоговый сигнал представлен в троичном алфавите, который можно использовать, как и прежде, для кодирования алфавита из 58 символов. Наш первоначальный анализ может использоваться, даже если сроки строго не соблюдаются.
В качестве альтернативы, альтернация паузы сигнала может использоваться для преобразования этого двоичного алфавита в троичный, сохраняя только три длительности в качестве символов алфавита и используя контекстный анализ, чтобы определить, является ли данная длительность сигналом или паузой. Но это опять немного сложно для анализа.
Это просто показывает, что существует множество способов взглянуть на вещи, но они не обязательно удобны и могут не все легко поддаются анализу с помощью математических инструментов, разработанных для анализа кодов.
Дополнительные ссылки на патенты можно найти в Интернете.
Вывод
Учитывая точные временные параметры стандарта, хороший ответ, по-видимому, заключается в том, чтобы рассматривать азбуку Морзе как композицию троичного префиксного кодирования (из 58 символов) в алфавит из 3 символов, составленный из двоичного префиксного кодирования этих трех символов.
Без точной синхронизации стандарта бинарный уровень больше не может рассматриваться. Тогда аналог логического декодирования естественным образом происходит на уровне промежуточного алфавита dot
и
dash
. Тем не менее, аналогово-логический декодер может по-прежнему декодировать до 3 предыдущих символов алфавита, тем самым сохраняя применимость нашего анализа.