НОВОСТИ   БИБЛИОТЕКА   ЮМОР   КАРТА САЙТА   ССЫЛКИ   О САЙТЕ  




предыдущая главасодержаниеследующая глава

4.3. Коды с ограниченной задержкой

Среди отдельных исследованных в литературе классов кодов коды с ограниченной задержкой привлекают интерес в связи с многими проблемами теории языков, в частности с проблемой DOL-эквивалентности, которая будет рассматриваться в следующей главе. Прежде чем дать определение, рассмотрим в качестве примера код C = {a, ab, bb}. Пусть нам надо декодировать слово вида abi, читая слово слева направо. Тогда, прежде чем начать декодирование, надо прочесть все слово целиком, так как первый декодируемый символ зависит от четности числа символов b. Подобная ситуация невозможна, если данный код имеет ограниченную задержку при чтении слева направо: в этом случае всегда достаточно заглянуть вперед на некоторое фиксированное число символов. Экстремальным примером могут служить коды, подобные C1 = {aa, ab, ba}, где для декодирования вовсе не требуется заглядывать вперед. Так обстоит дело и для кода C, если слова декодировать справа налево!

Определение. Код C имеет задержку p≥1 слева если из того, что

xi1, ..., xip есть префикс xj1 ... xjn(4.14)

где xv суть слова из C, следует, что xi1 = xj1. Задержка справа определяется аналогично при помощи суффиксов. Код имеет ограниченную задержку слева (соответственно справа или в обоих направлениях), если существует такое p, что C имеет задержку p слева (соответственно справа или в обоих направлениях).

Таким образом, в рассмотренных выше примерах оба кода C и C1 имеют задержку 1 справа (коды с таким свойством называются суффиксными), а C1 имеет также задержку 1 слева (коды с этим свойством называются префиксными). Код C не является кодом с ограниченной задержкой слева.

Код с задержкой p имеет также задержку p1 для любого p1≥p. Заметим также, что условие, определяющее понятие задержки, выполняется только для кодов. Поэтому мы могли бы дать следующее эквивалентное определение: "Язык C есть код с задержкой p ...".

Очевидно, код C является префиксным (соответственно суффиксным) кодом тогда и только тогда, когда не существует таких непустых слов x и y, что оба слова x и xy (соответственно x и yx) принадлежат C. Коды, одновременно являющиеся и префиксными, и суффиксными, называются бипрефиксными кодами.

В следующей простой лемме указывается одно из свойств кодов с ограниченной задержкой, которое очень часто используется в качестве их определения. Мы сформулируем эту лемму для направления слева направо, но аналогичное утверждение верно и для направления справа налево.

Лемма 4.7. Код C над алфавитом ∑ имеет задержку p слева тогда и только тогда, когда для всех x∈C*, y∈Cp-1 и w∈C*

xyw∈C* влечет yw∈C*.(4.15)

Доказательство. Предположим, что C имеет задержку p слева, и рассмотрим слово xyw∈C* из (4.15). Если γ= λ, то (4.15) верно; в противном случае можно записать

xy = xi1 ,.. xiq, q≥p, xyw = xj1 ... xjn.

Так как xy является префиксом слова xyw, то xi1 = xj1. Следовательно, если удалить из xyw префикс xi1, то образовавшееся слово также будет принадлежать C*. Повторяя операцию удаления префиксов, мы придем к тому, что yw∈C*. Обратно, предположим, что (4.15) имеет место и что (4.14) выполняется для некоторых xv из C. Тогда для некоторого w∈∑*

xj1 ... xjn = xi1 ... xipw

Полагая в (4.15) x = xi1 и y = xi2 ... xip, заключаем, что слово, получающееся из xj1 ... xjn удалением префикса xi1, принадлежит C*, т. е.

xj1 ... xjn = xi1y1, где y1 ∈C*.

Так как C является кодом, то xj1 = xi1, откуда видно, что C имеет задержку p слева. ▫

Введем теперь понятие композиции двух кодов. Для этого будет полезно отождествить коды и некоторые морфизмы*. Будем говорить, что морфизм h: ∑*1→∑* является кодом, если язык {h(a)|a∈∑1} является кодом. (Здесь ∑ - алфавит, a ∑1 - алфавит или бесконечное множество символов.) Очевидно, что в этом смысле каждый код можно рассматривать как морфизм, причем как инъективный морфизм (ср. с леммой 4.1). Композиция двух кодов - это просто композиция соответствующих морфизмов (если она существует).

* (Связь между свойствами кодов и морфизмами DOL-систем исследуется в недавней статье [HW*].- Прим. перев.)

Для того чтобы существовала композиция, число символов в алфавите первого кода должно равняться числу символов в алфавите второго кода. Если это имеет место, то композиция зависит еще от выбора биекции, используемой в том случае, когда коды заданы как языки, а не как морфизмы. Например, код {a, aba, baba, bb, bbba) является композицией двух кодов {a, ba, bb} и {0, 01, 11, 2, 21}, полученной из биекции φ(0) = a, φ(1) = ba, φ(2) = bb.

Так как при композициях инъективность сохраняется, то очевидно, что композиция двух кодов также является кодом. В дальнейшем в связи с элементарными морфизмами нам потребуется следующий результат.

Лемма 4.8. Композиция двух кодов с ограниченной задержкой слева (соответственно справа) является кодом с ограниченной задержкой слева (соответственно справа).

Доказательство. Пусть при i = 1, 2 код Ci имеет задержку pi слева. Докажем, что композиция C1 и C2 имеет задержку p1 + p2 - 1.

Предположим, что Ci определяется морфизмом hi (i = 1, 2) и что

h1(h2(au)) является префиксом слова h1(h2(bv)), (4.16)

где a и b - буквы, а u и v - такие слова, что |u| = (p1 + p2 - 1) - 1. Нам надо доказать, что a = b.

Запишем u в виде u = u2u1, причем

|ui| = pi - 1, i = 1, 2.(4.17)

Представим h2(au2) и h2(u1) в следующем виде:

h2(au2) = c1 ... ct, h2(u1) = ct+1 ... ct+t',

где c1, ..., ct+t' суть буквы. Согласно (4.17), t'≥p1-1. (Очевидно, что h1 и h2 являются нестирающими морфизмами.) Далее обозначим первые t букв в h2(bv) через c1', ..., ct'. (Согласно (4.16), такие буквы должны существовать.) Достаточно показать, что

ci = c'i для i = 1, ... , t. (4.18)

Действительно, из (4.18) следует, что h2(au2) есть префикс слова h2(bv), и поэтому a = b, ибо h2 имеет задержку p2. Чтобы доказать (4.18), заметим сначала, что в силу (4.16) h1(c1, ... ct+t') является префиксом слова h1h2(bv), откуда c1 =c'1, поскольку h1 имеет задержку p1 и t+t'-1≥t'≥p1-1. Рассматривая теперь слово c2 ... ct+t' и слово, полученное из h2(bu) удалением первой буквы c1' = c1, мы подобным же образом заключаем, что c2 = c'2. Эту процедуру можно продолжить, и, поскольку t'≥p1-1, то ct = ct'.

Доказательство леммы 4.8 в случае ограниченной задержки справа проводится аналогично. ▫

предыдущая главасодержаниеследующая глава








© Злыгостев А.С., 2001-2019
При использовании материалов сайта активная ссылка обязательна:
http://informaticslib.ru/ 'Библиотека по информатике'
Рейтинг@Mail.ru