Text
                    УДК 621.391:519.728
Кричевский Р. Е. Сжатие и поиск информации. — М.: Радио и связь,
1889. — 168 с: ил. — ISBN 5-256-00325-9.
Книга посвящена изложению теории кодирования источника — раздела тео
рии информации, изучающего методы компактного представления данных. В
книгу включены классические результаты, никакие предварительные знания для
чтения не требуются. Особое внимание уделяется достижениям последнего времени,
которые еще не нашли монографического освещения. Среди них — теория
универсального кодирования, теоретико-информационная трактовка проблемы
поиска в словарях, приложения к корректирующим кодам. Книга носит теоретический
характер, но приводятся примеры, относящиеся к факсимильному кодированию,
телефонной и спутниковой связи, построению определителей растений и
животных. Нас интересует прежде всего взаимосвязь между степенью сжатия и его
счожностью.
Разработаны алгоритмы универсального кодирования, не требующие точного
знания характеристик источника для осуществления хорошего сжатия.
Рассмотрение проб темы поиска с точки зрения теории кодирования источника
позволило установить минимальные размеры поисковых программ. Разработаны
простые способы построения поисковых программ с использованием теории
полей Галуа.
Для научшх работников — специалистов в области теории связи и
информатики.
Табл. 9. Hi. 13. Библиогр. 97.
Рецензент В. А. Свириденко
Редакция литературы по электросвязи
Научное издание
КРИЧЕВСКИЙ РАФАИЛ ЕВСЕЕВИЧ
СЖАТИЕ И ПОИСК ИНФОРМАЦИИ
Заведующий редакцией В. Н. Вяльцев
Редактор Е. В. Комарова
Художественный редактор А. В. Проценко
Обложка художника В. В. Третьякова
Технический редактор О. А Гришки на
Корректор Т. В. Дземидович
ИБ № 1706
. —. ¦¦%
Сдано в набор 31.10.88 Подписано в печать 16.02.89
Т-05042 Формат 60x90 ?? Бумага типогр. № 2 Гарнитура литературная
Печать высокая Усл. печ. л. 10,5 Уел кр. отт. 10,88 Уч.-изд. л. 11,23
Тираж 8400 экз. Изд. № 22129 Зак. К° 170 Цена 1 р. 30 к.
Издательство «р дио и связь». 101000 Мо ква, Почтамт, а я 693
Типография издательства «Радио и связь». 101000 Москва, ул. Кирова, д 40
„ 2303020000—076 о„ ол
К 37—89
046@1)-89
ZS№ 5-256-00325-9 © Издательство «Радио и связь», 1989


ПРЕДИСЛОВИЕ Как сжать текст, сохранив возможность его реконструкции? В каком порядке целесообразно размещать слова в словаре или в памяти компьютера? Содержание книги концентрируется вокруг этих двух вопросов. Первый из них возникает при передаче сообщений по каналам связи. Неплохое эмпирическое решение одного частного случая этого вопроса дает известный код Морзе. С момента создания азбуки Морзе появитись новые методы коммуникации: телефон, радио, телевидение. С их помощью передаются огромные потоки информации. Задача сжатия приобрела такую важность, что для рассмотрения различных ее вариантов возникла новая наука — теория информации. Достижения теории информации, которая помимо компактного представления сообщений занимается также предохранением их от помех, хорошо известны. Найдены теоретические пределы сжатия в самых разных ситуациях. Разработанные теорией методы применяются во многих видах связи, в цифровом телевидении, телеметрии, при записи звука и изображений. Теория информации излагается в многочисленных книгах. Однако в последние годы обнаружены некоторые заслуживающие внимания явления, которые еще не нашли монографического освещения. Появились универсальные коды, которые сжимают сразу широкий класс текстов, не требуя точного знания их закономерностей. Была найдена зависимость между степенью сжатия и сложностью сжимающих алгоритмов. Обнаружен некоторый порог: если степень сжатия больше порога, то алгоритм сжатия экспоненциально сложен, а если меньше, то алгоритм весьма прост. Эти найденные в теории информации факты привели к созданию новых методов экономного представления данных. Некоторые из таких методов уже применяются на практике. Достижения последних лет изменили облик теории кодирования источника — того раздела теории информации, который изучает сжатие данных. Настоящая книга посвящена изложению теории кодирования источника с учетом упомянутых работ недавнего времени. Обратимся ко второму вопросу, рассматриваемому в книге: как размещать слова в словаре. С этим вопросом сталкиваются при решении на компьютере почти любой задачи, и он рассматривается во многих руководствах. Однако теория организации машинных словарей развивалась независимо от теории информации. Между тем стоит только считать адрес слова в словаре его сокращенным представлением, как первая теория становится частью второй. 3
В последние годы теоретико-информационный подход к поиску позволил найти теоретический предел сложности поисковых программ. Оказалось, что эта сложность в пересчете на одно слово словаря асимптотически не зависит от длины слов. Алфавитный способ размещепгя слов оказался не наилучшим. Есть другие, более эффективные методы организации словарей. Они строятся в этой книге. Приводятся и не очень трудоемкие способы нахождения хеш-функций (функций расстановки) для заданного словаря. Такие функции решают задачу размещения слов с допущением некоторого числа наложений (коллизий). Итак, книга посвящена изложению современного состояния раздела теории информации, называемого кодированием источника и изучающего задачу сжатия данных. Изложение не требует никаких предварительных знаний теории информации. Конечно, очень многие аспекты теории остались вне рамок книги. Основное внимание уделяется дискретным источникам. Никак не затрагивается вопрос кодирования с критерием качества, не изучаются сети источников и т. д. Главное, что нас интересует, — взаимосвязь между степенью сжатия и его сложностью. Книга может представить интерес для специалистов по теории связи, теории информации, информатике, программированию, базам данных.
ВВЕДЕНИЕ Задача сжатия информации возникает достаточно часто. Так, предварительное сжатие позволяет существенно улучшить характеристики системы связи. Сжатие применяется при хранении информации, ее передаче со спутников и т. д. Актуальность проблемы сжатия информации возрастает в связи с увеличением объемов передаваемой и хранимой информации. Способы решения задачи сжатия информации рассматриваются в разделе теории информации, называемом теорией кодирования источника. Первый эффективный сжимающий код был создан С. Морзе в 1837 г. Для редко употребляемых букв Морзе подобрал более длинные комбинации. Частоту букв он определял по числу литер в наборной кассе типографии. В 1928 г. Р. Хартли пришел к выводу, что количество информации, которое несет одна буква, пропорционально логарифму величины объема алфавита. Согласно существующей терминологии мы говорим, что Морзе имел дело с вероятностным источником сообщений, а Хартли — с комбинаторным. Вероятностный источник может создать любое сообщение, но каждое с определенной вероятностью. Комбинаторный источник порождает некоторое подмножество множества всех возможных сообщений, причем все порождаемые сообщения равновероятны. Источники сообщений могут, кроме того, быть конечными и бесконечными. Конечный комбинаторный источник можно идентифицировать с подмножеством некоторого конечного множества. Конечный вероятностный источник можно отождествить с распределением вероятностей на конечном алфавите. Бесконечные источники порождают бесконечные слова некоторого алфавита или же функции действительного переменного. Особого внимания заслуживают источники, имеющие конечное число состояний. Вероятностные источники с конечной памятью называются марковскими, а источники без памяти, у которых вероятность порождения очередной буквы не зависит от предыдущих букв, называются бернуллиевскими. Именно такие общепринятые модели я изучаются в книге Основная характеристика источника — его энтропия. Для конечного комбинаторного источника, т. е. некоторого конечного множества S, энтропия равна логарифму его мощности: #(S)~ = log|S|. Для конечною вероятностного источника энтропия равна среднему значению логарифма вероятности, взятого со знаком минус. Энтропия определяется и для бесконечных стационарных источников. 5
Энтропия является нижней гранью для сжатия, т. е. для стоимости любого обратимого кодирования (см. гл. 2). Если кодировать конечный источник словами одной и той же длины т, то относительная избыточность такого кодирования равна \т— —H{S)]/H(S). Очевидно, что для обратимого кодирования избыточность неотрицательна. Код слова можно трактовать как его адрес в компьютерной памяти. Тогда аналогом избыточности становится коэффициент заполнения памяти. Задача машинного вычисления функций также укладывается в схему кодирования комбинаторного источника, если кодом функции считать ее программу. Слово может быть порождено компьютером. В этом случае программу, введенную в компьютер, можно считать кодом слова. Такая интерпретация программы, порождающей слово, лежит в основе понятия колмогоровской сложности слова. Она равна, с точностью до общей аддитивной константы, длине кратчайшего кода, по которому можно вычислить слово. Она показывает, до какой степени может быть сжато слово, если разрешено использовать любые вычислительные средства. Однако в силу своего универсального характера колмогоровская сложность оказывается невычислимой. Если известно, что слово порождено некоторым источником, то роль нижней границы сжатия играет энтропия вместо колмогоровской сложности. Любопытным образом энтропия и колмогоровская сложность появляются в опытах над муравьями, описанными в [38]. На вершине бинарного дерева, собранного из спичек, помещен сахар. Найдя его, муравей-разведчик сообщает своим собратьям, как до него добраться. Как правило, время рассказа пропорционально числу этажей дерева (энтропии источника). Однако если для достижения сахара надо идти шесть раз влево, то для сообщения этого факта требуется меньше времени, чем если к сахару ведет путь «влево, вправо, два раза влево, вправо, влево». Иными словами, время рассказа связано с длиной самого краткого кода пути, ведущего к сахару, т. е. с колмогоровской сложностью этого пути. Для вероятностных источников стоимость кода определяется как среднее число кодовых букв, приходящихся на одну входную. Роль энтропии здесь та же, что и в комбинаторном случае: стоимость обратимого кода не меньше энтропии, но может быть сделана сколь угодно близкой к ней (в стационарном случае). Это составляет содержание основной теоремы Шеннона о кодировании источников. Если сжимающий код должен быть обратимым не на бесконечных, а только на конечных словах, то стоимость может быть и меньше энтропии, хотя ненамного (как установлено Ковером и Леун-Ян-Чеонгом). В книге приводятся обычные конструкции кодов, сжимающих порожденные вероятностным источником сообщения: кодов Шеннона, Хаффмена, Гилберта и Мура. С помощью кода для источника равновероятных букв строятся формулы для булевой функции с порогом два. б
Основное внимание в этой книге уделяется зависимости между сложностью кодирования и его качеством. Показателем качества является избыточность (разность между стоимостью и энтропией). Показателем сложности может служить средняя задержка кодирования. Если кодируются слова одинаковой длины, то задержка равна длине блока. Находим, насколько большую длину блока необходимо взять для достижения заданной избыточности. Оказывается, что для источников с конечной памятью избыточность убывает не быстрее, чем константа, деленная на длину блока. Единственным исключением являются бернуллиев- ские источники с согласованными вероятностями (§ 2.6). В § 2.7 изучается неблочное кодирование. Особый интерес представляет равномерное по выходу кодирование, построенное вначале Г. Л. Ходаком, а позже Джелинеком и Шнейдером. Входная последовательность разбивается на слова неодинаковой длины, которые кодируются словами одной и той же длины. Такие коды могут представлять интерес, в частности, потому, что их декодирование меньше подвержено ошибкам — нет бегущей ошибки синхронизации. Итак, гл. 2 посвящена проблеме сжатия для конкретного ис- точика. Основной вывод — избыточность (превышение стоимости над энтропией) — убывает, как правило, со скоростью, обратной задержке. Коды, дающие хорошее сжатие, строились специально для определенного источника на основе знания его вероятностей. Поскольку вероятности порождения букв вряд ли когда-либо известны точно, то считалось, что коды Хаффмена, Шеннона и т. д. не могут найти практического применения. Однако теория кодирования нашла вывод из этого затруднения. Оказалось, что часто сжатие данных можно осуществлять без точного знания статистики источника. Для этой цели предназначены универсальные коды, которым посвящена гл. 3. Их создателем является Б. М. Фитингоф. Теория универсального кодирования интенсивно развивалась в последние годы и продолжает привлекать внимание специалистов. Особенно значительный вклад в ее развитие внесли ученые СССР, где она возникла, и США. Отметим работы Бабкина, Рябко, Трофимова, Штарькова, Галлагера, Дэ- висона, Зива, Ковера, Элайеса. Постановка задачи универсального кодирования очень естественна. Предположим, что надо создать код Морзе для букв латинского алфавита. Передаче подлежат тексты на французском, немецком и английском языках. В каждом из них латинские буквы имеют свои вероятности, но код должен быть один и тот же. Понятно, что показателем качества этого кода должна служить его максимальная по всем трем языкам избыточность. Код выбирается таким, чтобы она была минимальна. В общем случае имеется класс источников. Ищется код, для которого верхняя грань избыточностей минимальна. Оказывается, что задача нахождения такого кода сводится к излагаемой во всех руководствах по теории информации задаче определения 7
пропускной способности канала. Входами канала служат источники, выходами ~ буквы алфавита. Вероятность появления на выходе некоторой буквы при условии, что входом являлся какой- то источник, равна вероятности порождения этой буквы этим источником. Как только задача универсального кодирования редуцирована к задаче нахождения пропускной способности, можно сразу же воспользоваться хорошо разработанными методами решения этой второй задачи. В результате появляются универсальные коды для различных классов источников. Избыточность универсального кода для множества источников с некоторой конечной памятью убывает, как О (log п/п), где ? — длина блока. Это означает, что стоимость кода стремится с ростом ? к энтропии источника, хотя, во-первых, неизвестно, каким именно источником с конечной памятью порождена информация, и, во-вторых, код от источника не зависит. Далее, универсальный код очень мало проигрывает коду, специально приспособленному для данного источника: избыточность первого — О (log п/п), второго— 0A/п), а функция log n растет медленно. Универсальный код для источника с конечной памятью конструируется довольно просто. Поясним на примере источника Бернулли, порождающего нули и единицы. Все слова длины /г, я>0, разбиваются на п+1 множество по числу вхождений символа 1. Код слова состоит из суффикса, равного номеру слова в содержащем его множестве, и префикса. В качестве префикса можно взять двоичную запись числа единиц в слове. Такой код называют кодом Линча — Дэвисона, хотя его универсальность впервые была обнаружена Бабкиным. Есть, однако, и лучшие способы выбора префикса (см. § 3.2). Процедура вычисления суффикса была известна до появления универсального кодирования. Она приводится в гл. 4. В § 3.4 явно указываем универсальный код для монотонных источников. Они порождают конечное множество букв, вероятности появления которых упорядочены одинаковым для всех источников образом. Если вероятности букв неизвестны, но известно, какая из двух букв более вероятна, то речь идет о монотонном источнике. Именно такова ситуация при построении определителей (ключей) растений и животных. Вероятности неизвестны, но известно, какой вид более многочисленный. Пример построения определителя имеется в § 3.4. Если в терминах примера с определителем вообще нет информации о вероятностях, но известно, в каких зонах какие виды растений или животных имеются, то приходим к задаче универсального кодирования комбинаторных источников. К такой же задаче приходим, если надо кодировать функции, степень гладкости которых заранее неизвестна. Это является содержанием § 3.5. Универсальное кодирование стационарных источников рассматривается в § 3.6. Отметим теорему Бабкина и Штарькова: 8
имеется такая последовательность кодов, избыточность которой на любом стационарном источнике стремится к нулю с ростом длины блока (слабая универсальность). Адаптивные коды занимают промежуточное положение между универсальными и специально подобранными для источника кодами. Перед кодированием изучается некоторая порожденная источником выборка. Код зависит от этой выборки. Такую процедуру адаптации или подгонки кода к источнику можно повторять несколько раз. Избыточность этих кодов для источников Бер- нулли найдена в § 5.5. Известны адаптивные коды и для других источников. Эти коды успешно применяются для прогноза стационарных процессов. Остальные главы посвящены компьютерной реализации алгоритмов сжатия. Особенный интерес представляет зависимость между степенью сжатия и сложностью сжимающего алгоритма. Задачу о сложности кодирования комбинаторного источника можно интерпретировать таким образом. В гостиницу приезжают гости и будут жить там некоторое время. Гостиничный компьютер, снабженный программой, стоит у входа. Гость набирает свою фамилию, и на дисплее высвечивается номер его комнаты. Как разместить ? остей, чтобы длина программы в битах была минимальной? Пусть фамилии гостей имеют длину ? бит, число гостей равно 2п%, коэффициент заполнения гостиницы равен а. Тогда относительная избыточность отображения «фамилия->-номер комнаты» р ——logoc/(nx). Обозначим через L(t, p) длину программы для самой неблагоприятной группы из 2?? гостей (фамилии этих гостей труднее всего преобразуются в номера). Нужно оценить L(t, ?) ? указать методы нахождения оптимальных программ. При этом помимо длины про1ргммы будут учитываться также время ее работы и используемая ею память. Задача размещения гостей имеет следующие варианты. Допустим, что на компьютере набрал свою фамилию посторонний, не проживающий в гостинице человек. Если компьютер отличит постороннего от гостя и выдаст специальный сигнал, то программа компьютера называется в этом случае программой сильного поиска (сжатия). Сложность минимальной программы сильного поиска обозначается через Lst(x), если число гостей равно 2пх (здесь р = 0). Если в одну комнату можно поселить несколько гостей, то говорят, что допустимы коллизии, или склеивание. Метод расселения с допущением коллизий называется хешированием. Для оценки качества хеширования вводится его индекс /: если ? гостей размещены по т комнатам и в /-ю комнату помещено tj, /— = 1, ..., m, гостей, то 1 т ? 2d '
Если предположить, что кровати стоят в комнате в ряд и среднее время, необходимое гостю, чтобы добраться до кровати, равно f, то /=//2+1. В случае хеширования аналогом введенной ранее функции L(x, ?) является функция L(x, ?, ?)—кратчайшая длина программы расселения с индексом а и коэффициентом загрузки ? наихудшего набора гостей в количестве 2??. Понятно, что при а = 0 в комнате может быть не более одного гостя и L(t, a, 0) = e?(t|_JS» ). ?? Наша цель состоит в оценке введенных функций L(t, ph L(t, ?, ?) и Le*(r) и построении алгоритмов сжатия, имеющих длины программ, близкие к минимальным. Если считать, что фамилии гостей являются словами некоторого словаря, а номера комнат — адресами памяти компьютера, то приходим к задаче размещения и поиска слов. Эта задача часто встречается в практике программирования и излагается во многих руководствах. Однако оценки введенной выше функции L(t, p) и ее аналогов ранее найдены не были, а оптимальные алгоритмы поиска были неизвестны. В гл. 4 рассматриваются хорошо известные методы поиска: лексикографический, побуквенный, нумерационный, хеш-метод. Для каждого из них находятся сложностные характеристики: длина программы в битах, время работы, используемая память. Результаты сведены в табл. В.1. Там же приведены данные алгоритмов поиска, разрабатываемых в гл. 6. В гл. 4 эти известные алгоритмы модифицируются таким образом, чтобы их было удобно применять в качестве составных частей методов оптимального поиска, рассматриваемых в гл. 6. Помимо известных алгоритмов поиска оптимальные алгоритмы используют еще и универсальные множества сжимающих отображений. О них речь идет в гл. 5. Множество отображений называется универсальным для некоторой совокупности словарей, если для каждого словаря найдется отображение, принимающее на нем разные значения (инъективное). Аналогичное определение формулируется и для хеш-отображений, которые могут принимать одинаковые значения, но не более определенного уровня. Чтобы найти нижнюю оценку мощности универсального множества, подсчитываем число словарей, для которых отображение может быть инъективным. Для нахождения верхней оценки определяем число инъективных отображений для данного словаря и используем метод случайного кодирования. Эти оценки приводятся в § 5.3, их аналоги для хеш-функций — в § 5.4, предварительные теоретико-вероятностные рассмотрения — в § 5.1 и 5.2. Методы построения универсальных множеств опираются на теорему 5.3, суть которой состоит в том, что один из столбцов кода с достаточно большим расстоянием определяет отображение, не слишком сильно склеивающее слова, т. е. почти инъективное. Эта теорема помогает установить, что хорошие нумерующие, 10
Таблица В.1 Сложность алгоритмов поиска Алгоритм поиска Поиск в неупорядочан- ной таблице Лексикографический поиск По буквенный пмск Нумерационный поиск По б уквенный кваэиоп- тималвный полек (см. § 6.5) Асимптотический оптимальный сильный по- буквенный поиск Оптимальная слабая нумерация: с большой избыточностью, р>1 то же, 0<р<1 с малой избыточностью, a=const Метод Мельхорна Двойное ФКС-хепшрова- кие Л ин еиное хеширование Полиномиальное хеширование Асимптотическая длина программы, бит Тп Тп crteT ? (?- log T) CT log ? ? (? — log ?) 0(?) ??1-?+?A) Tlogae(l + 0/a — — 1I?A —?) 0(? ?) 0(?) ? log ?/? Время работы СТ С log T Сп С-2п Сп Сп 0A) 0(п) 0(п) 0(ет) 0A) 0A) 0A) Индекс / 0 0 0 0 0 0 0 0 0 0 0 a а л/log m Алгоритм СИЛЬНЫЙ (S) или слабый S S W S W S W W W W W W W Примечание. Словарь, содержащий ? слов длины /г, 0<log Т/п<1, п^-оо, размещен в таблице объема т. Коэффициент заполнения а—Т/'т, избыточность р=—log a/log Т. Слова, -имеющие одинаковый адрес, образуют списки. Среднее время поиска слова в списке равно /,2+1, где / — индекс склеивания. При /=0 имеем инъективное отображение (нумерацию)» при />0 — хеширование, C=const. или хеширующие, отображения можно искать в классе полиномиальных (§ 5.6). Такое отображение переводит двоичное слово ? в слово fb (x) =xi+X2b+ ... +Xn^bn/^_1, где b — фиксированный ?-мерный вектор; х0| ..., хп/д — последовательно идущие ?-мер- ные подвекторы вектора х, а вычисления проводятся в поле Га- луа GF B^). Для каждого словаря найдется такой вектор Ь, что определяемое им отображение fb <X) будет очень слабо склеивать слова этого словаря. Нетрудоемкие методы поиска такого слова описываются в § 6.6. Отметим следствие 5.2 теоремы 5.3 Оно говорит, что в каждом словаре найдется позиция, которая разбивает его на два подсловаря, состоящих из слов, имеющих нуль или единицу в этой позиции, причем мощности подсловарей весьма близки друг 11
к другу. Именно с данной позиции выгодно начинать побуквеи- ный поиск. Сложность сжатия информации, порожденной комбинаторным источником, оценивается в гл. 6. Отдельно рассматриваются два случая: кодирование с большой избыточностью, когда относительная избыточность p=const>0, и кодирование с малой избыточностью, когда коэффициент заполнения ? = const. Напомним что ?—2~???, где ? — длина слов, ?— энтропия источника, п~^оо. Для кодирования с большой избыточностью справедлива очень простая формула: Ь(х, р) =2,гт€1""Р>+0(та> при р<1 и L(t, р) = = 0(/г) при р>1. Время работы кодирующей программы равно 0(п). Нижняя оценка L(r, ?) определяется исходя из найденных в § 5.3 границ мощности универсальных нумераторов. Верхнюю оценку получаем, строя для произвольного словаря S кодирующую программу требуемой сложности. При этом используется полиномиальное отображение с подходящим вектором Ь. Рассматривая формулу для L(t, ?), обнаруживаем эффект удвоения энтропии: кодирование источника словами длиной меньше его удвоенной энтропии, как правило, экспоненциально сложно. Если же длина кода больше удвоенной энтропии, то сложность кодирующего отображения становится весьма малой. Сложность кодирования с малой избыточностью, т. е. при ?— const, найдена в § 6.3. Здесь приведем только значение сложности безызбыточного кодирования: L(t, 0) ~2nMog2 ?==1,44 ... ... >2??. Это значит, что длина программы, преобразующей слово из множества S в его номер, имеющий длину log2 |S|, асимптотически равна logse|5| и не зависит от длины слов из S. Оказывается, что алфавитное расположение слов S не дает наилучшей программы поиска их в словаре. Наилучший поиск совпадает с лексикографическим вплоть до некоторого шага. Далее для каждой группы неразличенных слов выбирается различающее их полиномиальное отображение f&. Делается еще несколько шагов лексикографического поиска в соответствии со значениями fb. Наконец, для нумерации оставшихся не различенными слов используется подходящая функция из универсального нумерующего множества. Время поиска равно О(п). Еще в 50-е годы А. А. Ляпунов говорил, что лексикографический поиск целесообразно прервать, не доводя до конца. Эта его идея используется в конструкции оптимальной поисковой информации. Найдя в § 6.3 сложность обратимых кодирований источника,, переходим в § 6.4 к изучению хеширования, т. е. размещения слов в памяти с допущением коллизий. Там установлены асимптотические оценки функции L(t, ?, ?)—сложности хеширования при индексе склеивания а, коэффициенте загрузки ? и энтропии источника ?. Для обратимых отображений пороговым значением избыточности было 100%, пересечение порога резко меняло поведение сложности. Теперь пороговое значение избыточности рав~ 12
но — log aj(nt). Иначе говоря, если нужно распределить слова в памяти с индексом склеивания, равным коэффициенту загрузки а, то это, как правило, требует экспоненциально сложных программ. Если же допускается большее склеивание, то можно обой- тись очень простыми программами. Опять-таки полиномиальные отображения fb служат хорошими хеш-функциями. Подходящий для данного словаря вектор Ь, обеспечивающий малое склеивание слов, выбирается с помощью нетрудоемкой процедуры, описанной в § 6.6. Эффективное построение несклеивающего сжимающего отображения рассмотрено в § 6.5. Нужно взять разряд, делящий двоичный словарь на две почти равные части (следствие 5.2). С этого разряда надо начинать побуквенкый поиск. С каждым из двух под словарей поступаем так же. Таким способом получается близкое по сложности к оптимальному кодирование. Если же речь идет о сильном сжатии, когда вепорождаемые источником 5 слова отображаются в 0, то длина полученной таким способом программы кодирования будет асимптотически минимальной и равной ^(?) = 2"%A— ?). Канал с аддитивным шумом задается набором S слов некоторой длины ? — шумов. При передаче некоторого слова к нему прибавляется шум. Надо передать некоторое подмножество слов длины ? — код так, чтобы на приемном конце можно было понять, что именно передавалось. Выбирая надлежащим образом 5, можно получить двоичный симметричный канал и другие известные модели каналов. Существует связь между теорией сжатия данных и теорией каналов с аддитивным шумом, о которой говорится в § 6.2. Там доказываются для таких каналов неравенства Варшамова — Гилберта, Хэмминга, обобщенная теорема Шеннона. Эти факты были найдены М, Е. Деза и В. Д. Гоппой. Устанавливается, что как правило, точным является не неравенство Хемминга, чо неравенство Варшамова — Гилберта. В гл. 7 даются оценки трудоемкости кодирования вероятностных источников. Произвольные конечные вероятностные источники являются предметом рассмотрения § 7.1. Такой источник задается распределением вероятностей на некотором конечном алфавите, причем буквы алфавита представлены каноническим образом в виде двоичных слов. Оказывается, что для большинства источников сложность любого сжатия весьма велика. Никакое значение избыточности здесь не является пороговым, переход через которое резко уменьшил бы сложность сжатия, как это было в случае комбинаторных источников. Не совсем строго выражаясь, можно сказать, что программа перевода букв в их коды типа Морзе должна быть для большинства источников очень длинной, имея вид полной таблицы. К счастью, для таких употребительных источников, как марковские и бернуллиевские, дело обстоит значительно проще. Для 13
нахождения кода здесь нет необходимости составлять полную кодовую таблицу. Уже отмечалось, на примере источника Бернул- ли, что универсальный код состоит из суффикса и префикса. Суффиксом является номер данного слова во множестве всех слов с тем же числом вхождений букв алфавита. Суффикс находится с помощью нумерационного поиска (§ 4.3), что дает наибольший вклад в сложность кодирования. Суффикс будет одним и тем же для универсальных, адаптивных или индивидуальных, использующих специфику источника методов. Префикс же будет разным в каждом из этих случаев, однако вклад программы нахождения префикса в общую сложность сравнительно невелик. В § 7.3 приводится разработанная Лоуренсом конструкция универсального для источников Бернулли равномерного по выходу кода. Длина кодового слова одна и та же для всех входных слов, т. е. этот код является универсальным аналогом равномерного кода из § 2.7. В кодовой схеме используется некоторая модификация нумерационного поиска. Сложность такого кодирования близка к сложности блочного кодирования из § 7.2. Оценка избыточности принадлежит В. К. Трофимову. Представим себе, что буквы алфавита сложены в стопку. Их позиции в стопке кодируются с помощью монотонного кода, описанного в § ЗА Как только появляется текущая буква подлежащего кодированию слова, передается ее код. Затем буква перекладывается на самый верх стопки. В результате часто встречающиеся буквы получают более короткие коды. Схема эта просто реализуема и обладает свойствами универсальности. Она была открыта Б. Я. Рябко, затем переоткрыта Бентли, Слейтером, Тарьяном и Вей. О ней речь идет в § 7.4. В § 7.5 исследуется, до какой степени может сжать информацию конечный автомат. При этом оценивается степень сжатия каждого конкретного слова. Эти результаты принадлежат Зиву и Лемпелю. Интересные арифметические коды Риссанена [94] остаются, к сожалению, за рамками книги. В книге рассказывается о первых шагах, сделанных в теории сжатия. Можно надеяться, что в результате дальнейшего ее развития появятся новые алгоритмы компактного представления информации и новые методы ведения различных видов поиска.
ГЛАВА 1. ИСТОЧНИКИ СООБЩЕНИЙ И ИХ ЭНТРОПИЯ § 1.1. КОНЕЧНЫЕ КОМБИНАТОРНЫЕ ИСТОЧНИКИ При сжатии данных сообщения заменяются их кодами так, что по кодам можно отличить одно сообщение от другого. Сообщения порождаются некоторым источником. Принято рассматривать источники двух типов — комбинаторные и вероятностные. Комбинаторный источник способен породить только некоторые сообщения. Скажем, допустимо считать, что предложения русского языка произведены некоторым комбинаторным источником. Вероятностный источник порождает в принципе любое сообщение, но различные сообщения имеют различные вероятности. Конечным комбинаторным источником называется произвольное конечное множество S. В качестве таких источников, как правило, будем рассматривать множества слов некоторого алфавита А (словари). Основной характеристикой источника является его энтропия. Она формализует интуитивное понятие «количество информации, несомое одним элементом S». Чтобы отвечать нашим интуитивным представлениям, это количество должно, во-первых, зависеть только от мощности \S\ множества S и, во-вторых, возрастать с ростом |S|. Далее, количество информации, несомое ? элементами S, должно быть в ? раз больше количества, несомого одним элементом, п>1. Если энтропию источника S обозначить через ЯE), то можем записать, что #(S)=(p(|S|), где <p(|S|)—некоторая монотонная функция, удовлетворяющая условию ? (^| S |) =/?ф (J S |). Утверждение 1.1. Единственной монотонной функцией, удовлетворяющей условию ty(n-k) =/гср(&) для любых целых ? и k, является функция ? (k) = С log k, где С — произвольная положительная константа. Доказательство. Пусть а и Ь — произвольные натуральные числа, не меньшие 2. Для всякого ЛГ>0 существует такое число ш, что bm <аы < bm+\ A.1) Отсюда, пользуясь свойствами функции ?, имеем my{b)< Mp(a)<: (m+ !)?(*). A-2) Для логарифмической функции справедливо такое же неравенство m\ogb < N\oga<{m-\-\)\ogb. A.3) 15
Из J 1.2) и A.3) вытекает, что у (a) log ? Поскольку A.4) справедливо для любого N, то ?(?)/?(?>) = = log ?/log b и, следовательно, ? (a) /log ?=? (Ь)/log 6 = const=С, что и требовалось доказать. Константа С может быть выбрана произвольно. Полагая С=1, приходят к двоичной энтропии. Единица измерения двоичной энтропии называется битом. Итак, энтропия H(S) конечного множества (источника) 5 определена как log |S|. Часто в качестве S рассматривается подмножество множества Еп двоичных слов некоторой длины п. В этом случае энтропией источника на букву называется число h E)= H(S). Источ- ?? ник, у которого энтропия на букву отлична от 0 и 1, называется нетривиальным, так как он производит некоторое непустое и отличное от Еп множество слов. Последовательность источников называется асимптотически нетривиальной, если ее предельная энтропия на букву не равна ни 0, ни 1. Это определение, так же как и само понятие комбинаторного источника, дано Хартли '[52]. Значение комбинаторных источников разъяснено А. Н. Колмогоровым в [21J. Понятие энтропии используется Б. Я. Рябко и Ж. И. Резниковой [38] для анализа языка муравьев. Из спичек, соединенных пластилином, монтируется бинарное дерево, от каждого нелистового узла которого отходят две спички. Это дерево помещается в кювету с водой. На одной из листовых вершин ставится кормушка с сахарным сиропом. Муравьи могут путешествовать только по спичкам. Известно, что по выполняемым ими функциям муравьи делятся на несколько категорий, среди которых интерес представляют две: разведчики и фуражиры. Вначале на дерево выпускают разведчика. Найдя кормушку, он возвращается к гнезду, где контактирует с фуражирами. Время контакта замеряется. После общения с разведчиком фуражиры одной группой направляются сразу к кормушке, не делая ошибок (ложных поворотов). Многочисленные опыты показывают, что время контакта разведчика с фуражирами равно a+bH(S), где а и Ь — константы, H(S)—энтропия множества листьев дерева. Если дерево одноэтажное, то ЯE) = 1, для двухэтажного дерева H(S) = 2 и т. д. Можно считать, что вначале разведчик сообщает о самом факте наличия пищи, тратя на это а мин. Затем он описывает дорогу к кормушке, указывая направление поворота (влево или вправо). На каждое такое указание тратится Ь мин. Скорость передачи информации (константа Ь) колеблется у разных видов муравьев от 0,7 до 1,2 бит/мин. Эти опыты, устанавливающие линейную зависимость между временем контакта и энтропией мно- 16 N A-4)
жества возможных исходов, служат убедительным аргументом в пользу существования языка у муравьев. Особого внимания заслуживают комбинаторные источники с конечным числом состояний (автоматные источники), описанные в [58]. Такой источник имеет некоторое число kr tf^l, состояний. При переходе из одного состояния в другое он порождает некоторую букву алфавита Л. Источнику соответствует матрица S, элемент Sij которой равен 1, если из r-го состояния источник может перейти в /-е и 0 — в противном случае, l^i, /=?&. Одно из состояний называется начальным, некоторые из состояний — заключительными. Источник порождает слово, если он порождает последовательно все его буквы, проходя от начального состояния к одному из заключительных. Например, источник, порождающий все двоичные слова, содержащие t, i^l, единиц, имеет матрицу S размеров (?-\~ 1) X (/+1): /1 1 0 ... 0\ /01 10... 0\ I 0 ... Ill \0 ... 0 1/ Здесь начальное состояние первое, заключительное — (f+l)-e. Если источник остается в прежнем состоянии, то порождается 0, а если состояние меняется, то порождается 1. Источник Фибоначчи, порождающий двоичные слова, в которых никакие две единицы не стоят рядом, имеет матрицу S = = ( ), первое состояние в качестве начального и оба в качестве заключительных. При переходе из первого состояния в первое порождается 0, при переходе из первого во второе—1, при переходе из второго в первое — также 1. § КОМПАКТЫ И ИХ ?-ЭНТРОПИЯ Обобщением понятия комбинаторного источника на бесконечный случай следует считать произвольное подмножество S некоторого универсума. Множество S играет роль совокупности допустимых сообщений. Однако в этом случае энтропия H(S) может обратиться в бесконечность. Чтобы избежать этого неприятного явления, считают близкие друг к другу точки неотличимыми и приходят к понятию ?-энтропии. Пусть имеем множество 5 в некотором метрическом пространстве с расстоянием р. Множество SB называется ?-сетью для S, если для всякого л: из 5 существует такой элемент хь из 5? , что Ш(х, хе )^??. Множество, имеющее для всякого ?>0 конечную ?- сеть, называется вполне ограниченным. Вполне ограниченное и замкнутое множество называется компактом. 17
Скажем, интервал @,1) имеет для каждого ? конечную ?-сеть и поэтому является вполне ограниченным множеством. Однако он не включает точек 0 и 1, и поэтому он не замкнут и не компактен. Прямая — замкнутое, но не вполне ограниченное множество. Замкнутые конечномерные куб и шар компактны. Компактно множество функций, имеющих на интервале [0, 1] ограниченную производную и не превышающих в нуле некоторой константы, если в качестве расстояния между функциями выбран максимум модуля их разности. Наименьшая из энтропии множеств, являющихся ?-сетями для S, называется его ?-энтропией и обозначается НЕ (S). Для оценок Не (S) снизу нам понадобится еще одна величина — ?-емкость. Множество называется ?-различимым, если расстояние между любыми двумя его точками больше ?. Энтропия максимального ?-различимого подмножества S называется ?-емкостью S и обозначается hE (S). Утверждение 1.2. Для всякого вполне ограниченного множества 5 и всякого ?>0 справедливы неравенства h2e(S) <Я?E)<Л?E). Доказательство. Рассмотрим шары радиуса ? с центрами в точках максимального ?-различимого подмножества S. В силу максимальности *? будет покрыто этими шарами, т. е. точки максимального ?-различимого подмножества образуют ?-сеть, и правое неравенство доказано. Левое неравенство докажем от противного. Предпотожим, что Нъ (S)<Ch2B (S) Тогда в одном из шаров радиуса ? с центрами в точках ?-сети нашлись бы, по крайней мере, две точки 2г-раз- личимого множества и расстояние между ними было бы не больше 2?. Однако это противоречит определению 2?-paзличимoгo подмножества. Таким образом, левое неравенство доказано. Найдем ?-энтропию я-мерного куба, который обозначим через /п, т. е. 1п есть множество n-мерных векторов (х\> ..., хп)9 удовлетворяющих неравенствам ?^?^?, ?=1, ..., п. Теорема 1.1. При ?-^O и постоянном ? справедливо асимпто* тическое равенство Нш Aп) ^п\о^A/г). Доказательство. Рассмотрим в /п ?-решетку, т. е. множество точек вида (???, ..., ???), O^i/t^ [l/?]. Энтропия этой решетка равна n[\og(\/e)\ ~n\og(\/e). Поскольку при всяком С>0 e-+Q\og(llCs) — 1??A/?), то асимптотика этой энтропии не меняется при замене ? на Сгу С = const. Расстояние между любыми двумя точками решетки не меньше ?, поэтому точки решетки образуют ?/2-различимое множество. Следовательно, К 2 (/„)>« log — A + 0A)). A.5) ? В то же время расстояние от произвольной точки куба (хи ..., хп) 18
до точки решетки хп ? ? не превышает, очевидно, у пг. Значит, точки решетки образуют ?? ?-сеть для куба 1п и поэтому Иш(/я)<\ои^{1+оA))<п1ое^-[\+оA)). A.6) с с Неравенства A.5) и A.6) вместе с утверждением 1.2 и даюг нам теорему 1.1. Ботее точные оценки НеAп) вытекают из теоремы об экономном покрытии пространства шарами и о плотнейшей упаковке шаров. Л. С. Понтрялш и Л. Г. Шнирельман исходили из соотношения Не (In) ~/ilog(l/e) при определении размерности [22]. Чис- r HAS) ло lim — они называли метрическим порядком множе- е-о log(l/s) ства S. Перейдем к оценке ?-энтропии множества функций от ? переменных, имеющие частные производные до порядка ? включительно при п^\у р^1. Все частные производные до порядка р, включая и сами функции, ограничены по модулю некоторой константой В, ?>0. Это множество обозначим через F(nt ?, В). Метрика подразумевается чебышевской, т. е. p(fb /2) = sup \fi(x) — —U(x)\- Функции определены на n-мерком кубе 1п. Теорема 1.2, оценивающая ?-энтропию множества F(nt p, В), доказана (в несколько более общем виде) А. Н. Колмогоровым \22\. Теорема 1.2. Для ?-энтропии множества F(ji, ?, ?^ при г-^0 справедливо следующее равенство: Я?(Р(м, р, B))X0Wnp. где подразумеваемые знаком ? константы не зависят от е. Доказательство. 1. Нам будет удобно использовать векторные индексы (мультииндексы). Если \—n-мерный вектор, \—Уь . ···» jn), /i^O, то факториалом этого вектора назовем произведи ние факториалов его координат: j! = /?!· ... -/п/, модулем вектор назо ем сумму координат: |j|=/i+ ... + /п. Если а= (??, ..., ап) Ь=(йь ..., Ьп) — чва вектора, то ab =aibi ... а? ьп . Мультииндексы часто употребляют в рассуждениях, связаг шх с полиномом Ньютона, формулой Тейлора, многомерным эаспределениями. Так, формула полинома Ньютона для возведс тя е\ммы ? чисел аи ·.-, ап в степень k выглядит очень ком тактно: (а1+...+ая)*= 2 4а'· Здесь а = (аи ..., a?)» ?—?'?» -·> in) —мультииндекс; сумма рас 1ространена на все мультииндексы, модуль которых равен k. I
Возьмем в кубе 1п решетку с некоторым шагом б, где число ? выберем позднее. Для числа s точек решетки имеем sx6^ Зададим положительные числа ??, ..., ?^-?, которые также выберем позднее· Для функции /' и каждого n-мерного вектора j- = (/ь ···> in) определим набор чисел: vj(a)=L«i!^J/(a)J; / d,JI f (a) DfKa) = D't ...DJn»f(a)= ° 77 dx\*... dxnn , где а — точка решетки. Зная для всех точек а и векторов j наборы чисел vj (а) и выбирая подходящие ? и ??, ..., ??-?, можно восстановить f со сколь угодно малой ошибкой. Чтобы убедиться в этом, разложим f в точке а по формуле Тейлора с остаточным членом в форме Лагранжа: Ях) = ? -\rDif(a)(x--*)i + Rp(x)9 A7) где ^(?)=-? 2 --i-W(lHx--'a)/, A.8) I — некоторая точка In. Если а — ближайшая к х точка решетки, то ? 2 I я/-** 1<л8. A.9) Согласно формуле многочлена Ньютона из A.9) следует, что j. IJI=/> J' \?=1 / Теперь AЛ0) вместе с ограниченностью производных дает нам Rp(x)\<-^—. A.11) Пусть некоторые две функции fi и /г из класса F(n, ?, ?) имеют во всех точках а один и тот же набор чисел vj (?). Это значит, что их частные производные порядка k отличаются не более чем на ?/i, ? = 0, ..., ?—1. Вычитая тейлоровское разложение одной функции из тейлоровского разложения другой и учитывая A.7), A.8), A.10) и A.11), получаем 20
Теперь для некоторого фиксированного ? положим: 8=тЫ ~е ¦ A',3) •*=i^k-8,^'*=0 '-¦· (|·14) С учетом A.13) и A.14) неравенство A.12) дает нам ? ?-* 1 ? щ"* ? "~ 1 f ? 2*2 ?& ^! 2 2?? ??? kh .2 Значит, выбирая по одной функции для каждого набора {? (а)}, получаем ?-сеть для множества F(nf ?, В). 2. Оценим сверху число элементов в полученной ?-сети. Занумеруем точки решетки так, чтобы точки с соседними номерами отличались в одной координате. Существование такой нумерации легко доказать индукцией по размерности пространства. Оценим число всевозможных наборов {vj (а)}. Как следует из определе- 1ия числа vj (а) и ограниченности производных, это число может принимать не более 2Вг~\ значений. В силу A.14) 2Вг~~\<г~11р> поэтому число различных наборов {vj (а)}, которые соответствуют начальной точке решетки, не превышает ??,^?'7, A.15) где С\ = С\(п, р) — число производных до (р—1)-го порядка у функции от ? переменных. Пусть b и а — две точки решетки, отличающиеся в одной координате, скажем, первой. Напишем формулу Тейлора для ?>г/(Ь) в точке х = а, поделим левую и правую части на е\ц и учтем A-Й): 1 p-1-iii ? (*/—?,)* ?>'/ (Ь) = У erf. . . — DJD1/ (а) — — + ?,,, JX ' ?Q "|+* k\ 1 B??)* ^ (P— И I )!? 111 Если набор чисел {vj(a)} известен, то из A.16) можем определить все числа {vj (b)} с погрешностью, которая не превзойдет ?-?? -? 1 (b, — ?,?- *' I у - + В — - < eW" + & k\ Bп)к (р - | i | )! ? , ? +?~ (p-l)KCt ?1-111 /? согласно A.13) и A.14). 2!
Здесь С2 — константа, зависящая лишь от ? и р, но не от ?. Таким образом, при известном наборе чисел {vj(a)} различных наборов {vj (В)} может быть не более (C2+l)Cl = C3. Следовательно, число различных наборов {?(а)} для всех s точек решетки не превышает NiCh. Логарифм этого числа и дает верхнюю оценку для энтропии множества F(n, ?, В)· Принимая во внимание, что s^e~n/p, получаем #.(л, Р, 5)<sIogC3+Iog^<e-"/MogC3---^ logs< ? Таким образом, верхняя оценка, необходимая для теоремы, найдена. 3. Теперь остается установить нижнюю оценку для Н- {F(n, ?, ?)), совпадающую по порядку с верхней. Определим функцию ? {у): 9(y) = bl[({\+yj)il-yj)Y>+* /=? ПРИ 1Ы^1> /=1» ···) п, и ? (#)=0, если хотя бы для одного / l#i|>l· Здесь а —некоторая положительная константа; b — константа, выбираемая такой, что все производные функции ? не превосходят по модулю В. Выберем в кубе 1п точки х1, ..., Xs, попарно отстоящие друг от друга не ближе, чем на 2?, ? = = (?/??) 1/(?+«). Для числа s этих точек имеем 5> е_гг/(р+а). Рассмотрим множество ?? функций вида /м=2^8Р+0<р (~~т~) · где Yr^zfcl, г=1, ..., 5. Число таких функций равно 2s. Если две такие функции различны, то соответствующие им наборы (??... ..., ys) различаются хотя бы в одной своей компоненте, например первой. Но тогда в точке л1 эти функции отличаются не меньше» чем на 26^^ = 26. Значит, ? является 2е-различимым множеством, и согласно утверждению 1.2 He(F(n) ?, В)) не меньше логарифма числа точек ??, который равен S. Таким образом, Не (F(п, р, Я))>е-п'<Р+Ч Это последнее неравенство справедливо при любом а>0. Перейдем к пределу при а-Я), что не связано с увеличением константы В. В результате получим He(F(nt ?, B))>e~n/v. Теорема доказана полностью. § 1.3. ВЕРОЯТНОСТНЫЕ ИСТОЧНИКИ Конечным комбинаторным источником выше было названо произвольное конечное множество. Конечным вероятностным источником назовем произвольное конечное множество S <>" определенным на нем распределением вероятностей. Это множс 22 1 \я^
ство будем часто называть алфавитом, а его элементы — буквами. При определении энтропии вероятностного источника удобна воспользоваться понятием разбиения. Разбиением Л множества S (не обязательно конечного) называется совокупность попарно непересекающихся множеств Ль .., Л&, &^1, дающих в объединении S. Число k элементов разбиения А будем обозначать |Л|. Множества ?? называются атомами разбиения А. На множестве разбиений множества S определен частичный порядок: В^Л, если каждый атом А является объединением некоторых атомов разбиения В. В этом случае говорят, что В информативнее А. Для любых дзух разбиений А и В найдется разбиение, более информативное, чем каждое из них. Таким будет, например, разбиение, атомами которого являются всевозможные попарные пересечения атомов А и В. Оно обозначается A\fB, A\JB={AiBj}, где A={AU ..., ЛИ!}, B={BU ..., B]B\}. Наименее информативным является разбиение, единственным атомом которого служит само множество S. Наиболее информативно разбиение, атомами которого служат одноэлементные множества. Энтропией разбиения А пространства S называется число —^p{Ai)\ogp(Ai), где сумма берется по всем атомам А\ разбиения Л, р(Аг) равно вероятности Ль 01og0 = 0. Энтропией ?(S) конечного вероятностного источника называется энтропия его наиболее информативного разбиения: H(S)=—Zp(Ai)\ogp(Ai)y где ?? — элементы множества S; 5={ЛЬ ..., Л^}. Эти определения принадлежат Шеннону [59], а изложение следует книге Биллинг- слея [7]. Оправданием таких определений служат доказываемые в гл. 2 теоремы о стоимости кодирования: энтропия является точной нижней гранью стоимости. Кроме того, свойства энтропии, которые будут установлены ниже, хорошо согласуются с интуитивным представлением о количестве информации, которые несет буква. Введем понятие условной энтропии разбиения А—{А\, .... ..., А\а\ } при заданном разбиении В~{В\, ..., В\в\ }. На каждом атоме Bj разбиение Л индуцирует разбиение, атомами которого являются множества AiBj, ..., A\a\ Bj, /=1, ..·, |5|. Условная вероятность атома AiBj относительно Bj имеет вид ? (AiBj/Bj) = ? (AJBj) = p (AfijVp (Bj). Энтропией разбиения Л на атоме Bj естественно назвать число —2p(Ai/Bj)\ogp(Ai/Bj). Энтропией Л при заданном В назовем взвешенную сумму энтропии Л на Bj во всем /. Эту энтропию принято обозначать ? (А/В): H(AIB)^-^p(BJ)yp(Ai/BJ) \ogp(AiiBJ)^ - - 2/><?,?/) log PiAjBj). A.17) *./ 23
Разбиения А и В называются независимыми, если для любых двух их атомов вероятность пересечения равна произведению вероятностей: р(АйВд=р(А?р(В$,1=19...9 ! А | ; /==1, .,., \В\. Утверждение 1.3. Условная энтропия ? (А/В) равна безусловной ? (А) в том и только том случае, если разбиения А и В независимы. Всегда ? (А/В) ^.Н (А). Доказательство. Введем функцию ? (х) = —х log х, 0<х< 11 ?A)=?@)=0. Как легко видеть, г\"(х)<09 поэтому функция ? (л;) выпукла и для нее выполняется неравенство Иенсена: 2?л(*i)<чB??) · ? ?<?!-?*^- При этом функция ? нелинейна и неравенство переходит в равенство, либо если все числа ?* равны нулю, кроме одного, равного единице, либо все числа хг равны друг другу. Применим теперь неравенство Иенсена к формуле A.17): ? i ? \ i 1 Это неравенство переходит в равенство лишь в одном из двух случаев: а) один из атомов В имеет вероятность 1, а остальные — вероятность 0. Тогда, очевидно, разбиения А и В независимы; б) для всех / ? (Ad В j) не зависит от /, т. е. p(Ai/Bj)=cp(i). Тогда ? (Ад =· ^Р (?;) ? (AiIBj) - 9 W ?? (Bj) = ? (Ai/Bj)> ? i 1=1 I A ! ; /=1, ..., | ? | . Но это и обозначает, что А и В независимы. Утверждение 1.4 (аддитивность энтропии). Для любых трех разбиений А, В и С справедливо равенство ? (А V В/С) = ? (А/С) + ? (В/А V С). Если С пусто, то H(A\JB)=H(A)+H(B/A). Доказательство. Очевидно, р (Afij/Сд =Р (AJCt) ? (?,????. Отсюда H(A\JB/C) = - 2 PiAiBjCt) \ogp(AiBJ/Cl)^ = - ? P (AfijC,) log ? (AJCt)- 2 ? ^Afifi) l°g ? (Bj/AiCi) = 24
= ~??(??°?) log P(AJCi)- ? ?(AiBjct) I°gP№№&) = ^H(A/C) + H(B/AC) на основании определения A.17). Этим утверждение доказано. Утверждение 1.5 (субаддитивность энтропии). Для любых двух разбиений А к В имеем Н(А\/В)< Н(АУ+Н(В). Доказательство сразу следует из утверждений 1.4 и 1.3. Утверждение 1.6 (монотонность энтропии). Если А<^В, то Я(В /С) 55 ? (А/С). При пустом С имеем Н(В)^Н(А)Г т. е. чем информативнее разбиение, тем больше его энтропия. Доказательство. Так как А^.В, то А\/В — В. Согласно утверждению 1.4 Я (Л V 5/0 = Н {В/С) = ? (А/С) 4- ? (А/В V С). Но поскольку Н(А/В\/С)^0, то отсюда ?(А/С)^Н(В/С), и утверждение доказано. Утверждение 1.7 (монотонность условной энтропии). Если разбиение С информативнее разбиения В, то Н(А1С)<Н(А/В). Это является формализацией того факта, «что информированного наблюдателя труднее удивить, чем малоосведомленного. Доказательство. Напишем неравенство Иенсена для функции ? (л:) =—? log ?: ?? (CJBj) ? (? (AJCi)) <^{?? (CJBJp (A^C,)) , A.18) где 1</<|Я|. По условию С информативнее В, поэтому каждый атом В является объединением некоторых атомов разбиения С. Следовательно, для любых ?, /, 1<??<?|?|, 1<?/<?|?|, A.19) Умножим A.18) на p(Bj) и просуммируем по i от 1 до | А |, а по / — от 1 до [?|. Учитывая A.19), получаем тогда искомое утверждение. Все доказанные утверждения сохраняют силу и для энтропии ? смысле Хартли, которая равна просто логарифму числа элементов разбиения. Действительно, энтропия Шеннона равномерного разбиения превращается >в эитропию Хартли. 25
У марковского источника первого .порядка разбиение Sn зависит от 5n_1, но не от Sn~2. Здесь вычисление энтропии дает нам If(S*IS"-\\/... V S1) = Я (S«/S«-») = ? E2/50 = -^ />yi Io& ^ = Величина H(pjU ..., р#) является условной энтропией при условии, что появилась /-я буква. Энтропия источника является взвешенной суммой этих условных энтропии с весами, равными стационарным вероятностям. В заключение параграфа установим следующее простое утверждение. Утверждение 1.10. Для любого марковского источника 5 конечного порядка, за исключением источника Бернулли, существует такая положительная константа С, что для любого ? H{Sl V ·- V S")> nH(S) + С. Доказательство. Пусть источник S имеет некоторый конечный порядок /, т. е. вероятность появления очередной буквы зависит от t предыдущих. Рассмотрим числа ?(Sl)>?{S*ISl)>H{SZIS*\JS1)> ... ...>#(S'+7<s'V- vsi) = #(S). Если #(S1)>#(S), то согласно формуле A.22) H(S*\J ...\/S")>(H(Sx)-H(S)) + nH(S) и утверждение доказано: C=H(Sl)—H(S). Если же H(S*)=H{S)9 то H{S*)=H{S2ISl), т. е. согласно A.3) «S2 не зависит от S1. Аналогично S3 не зависит от S^S2, St+i не зависит от S1 V — V^. Но так как S — марковский источник порядка ty то Si+2 не зависит от S1 V -« \/Si+l. Следовательно, любое разбиение не зависит ни от какого предыдущего разбиения и S — источник Бернулли. Утверждение доказано. Марковские источники являются удобной математической моделью реальных источников информации и довольно часто используются на практике. В свое время создатель теории марковские цепей А. А. Марков, изучая текст «Евгения Онегина», заметил, что вероятность появления гласной или согласной буквы зависит от предшествующей буквы. Можно сказать, что он использовал марковский источник первого порядка с двумя состояниями в качестве модели текста пушкинского романа. Идея А. А. Маркова нашла продолжение в основополагающей работе К. Шеннона [59], который приводит примеры английских текстов, порожденных марковскими источниками различных порядков. При этом состояния* ми источника могут служить либо буквы, либо слова. 28
Приведем два примера использования таких моделей в практике факсимильного кодирования. Подлежащий передаче черно- белый документ предварительно подвергается бинарнОхМу квантованию, которое превращает его в .набор строчек из 0 и 1. В [28J для передачи печатных или рукописных текстов, чертежей, синоптических карт использовались -наборы 1024 строк по 1024 элемента, что соответствовало 5 эл.(/мм. Для описания источника использовалась марковская цепь первого порядка. Оказывалось, что вероятность появления белого элемента вслед за белым имеет наибольшее значение. Достаточно велика и вероятность появления черного вслед за черным. Вероятность изменения яркости невелика. Так, для печатного текста p(w/w)—0,991; p(b/w) = = 0,009; рF/Ь)=0,7; p(wjb) =0,3 (здесь w — белый, Ь — черный цвета). В Японии применяются методы факсимильного кодирования сразу нескольких строк. Это позволяет использовать зависимость между строками и добиться большего сжатия. В [62] в качестве модели изображения выбирается источник, имеющий четыре состояния: b/bt bjw, w/b9 w/b. Так, w/b обозначает, что элемент верхней строки белый, а нижней — черный. При использовании 6,6 стр./iMM и 6,6 эл./мм для текстов на английском и японском языках, таблиц и карт оказалось что р( —/ —)=0,98; \ w I w ] ? (-*¦/-=-)-ми т. д. Применяются и марковские цепи более высокого порядка. Эти модели дают возможность выбирать эффективную схему кодирования* ГЛАВА 2 СТОИМОСТЬ КОДИРОВАНИЯ § 2.1. ДЕРЕВЬЯ И ПРЕФИКСНЫЕ КОДЫ Особую роль в кодировании источников играют префиксные коды. Это объясняется тем, что соединение (конкатенация) таких кодов может быть однозначно разделено (дешифровано). Опишем здесь бинарные лрефиксные коды. Множество двоичных слов (код) называется (префиксным, если никакое его слово не является началом (префиксом) никакого другого. Так, множество {0, 10, 11} является префиксным, в отличие от множества {0, 10, 100}. Префиксному коду сопоставляется бинарное ориентированное дерево. Вершины такого дереза разделяются на три категории: корень, листья и внутренние вершины. Каждая нелистовая вершина соединена ребрами с двумя другими, которые называются ее сыновьями. Сама эта вер-
шина именуется их отцом. Сыновья одного отца называются братьями. Листья не имеют сыновей, а у корня нет отца. Левое ребро пометим 0, правое — 1. Тогда каждой вершине дерева будет приписано двоичное слово, описывающее, как добраться к этой вершине от корня. Самому корню соответствует пустое слово 0 (рис. 2.1). Вершины будем отождествлять с соответствующими им словами. Поддерево дерева ?, корнем которого служит вершина л, обозначим ? (ж), а множество листьев этого поддерева — LA(x) Листья любого бинарного дерева образуют префиксный код, и, наоборот, для всякого префиксного кода существует такое дере- во, что слова кода соответствуют его листьям. По длине соответствующих им слов все вершины дерева разбиваются на этажи или ярусы, начиная с корня, принадлежащего нулевому этажу. Число этажей дерева называют его высотой. Дерево ? считается равномерным, если количества листьев у любых двух поддеревьев с корнями на одном этаже отличаются не более чем на 1. Дерево, приведенное на рис. 2.1, является равномерным. Понятно, что для равномерного дерева |LA(*) | < | LA@) I 2-m + l. B.1) Здесь I LA {?) | — число листьев у поддерева, имеющего корнем х\ \х\ — длина слова ? (номер этажа). На множестве слов некоторого словаря определяется общеупотребительный алфавитный или лексикографический порядок Для двоичного алфавита он выглядит так: все слова, начинающиеся 0, младше всех слов, начинающихся с 1. Если имеются два слова, совпадающие вплоть до некоторой буквы, то слово, у которого следующей буквой будет 0, младше того, у которого следующая буква 1. Этот порядок с двоичных слов переносится на множество вершин дерева. При этом совокупность листьег оказывается линейно упорядоченным множеством, или цепью Цепью является и совокупность вершин одного этажа. Число листьев дерева ?, меньших вершины х_этого _дерева обозначим L{x). Так, для дерева на рис. 2.1 L@) = L(O) =L@0) * Рис. 2.1. Обозначение вершин бинарного дерева 30
^L@00)=0, L(l)=6, L(ll)=9. Для (произвольной вершины ? — ????, ..., x\x\, *i==0, 1, i=l, ..., \х\у нетрудно проверить равенство ?(?)?=?? I LA@) | +x2 | LA(^O) | + ... + *,,, j LA (^ ...^(.,,^0I. B.2) Из B.2) следует, что для х<Су L (у) >!(*) + I LA(x)| . B.3) Для любого я LW+ I LA(*)| < | LA@)| . B.4) Множество ?={??, ..., A\p\} непересекающихся поддеревьев дерева ? называется разбиением ?, если каждый лист ? является листом одного из деревьев Р. Так, {?@00), ?@01), ?@1), ?A)} образует разбиение дерева ?, изображенного на рис. 2.1. Корни поддеревьев, входящих в Р, являются листьями некоторого поддерева ?', которое называется базисом разбиения Р. Ясно, что ? ? I = | LA/ I , B.5) V j LA, I = | LA ! . B.6) ?-? Отметим также, что число листьев |??@)| и число вершин J ? @)j любого бинарного дерева ? связаны соотношением [LA@)| ^±(|?@)|+1). B.7) § 2.2. НЕРАВЕНСТВО КРАФТА. КОД ЛЕВЕНШТЕЙНА Утверждение 2.1. Пусть /ь ·.·, к — положительные целые числа, k^l. Для того чтобы существовало префиксное хмно- жество, длины слов которого равны 1и ..., 4, необходимо и дос- к -/ таточно выполнение неравенства Крафта ? 2 i^.l. i—1 Доказательство. Достаточность. Пусть дан набор чисел, удовлетворяющих условию утверждения 2.1. Построим префиксное множество, длины слов которого равны этим числам. Перепишем неравенство Крафта в виде 2v2-f'<l, B.8) где 5г· — количество чисел 1и ..., 4, равных /, l^i^Zk, /=тах/г·, Составим списки всех возможных двоичных слов длины 1, 2, ..., k, содержащие соответственно 21, ..., 2h слов. Включим в на- 31
ше префиксное множество любые s\ слов длины I, что возможно, так как согласно B.8) 5^21. Теперь для каждого i вычеркнем из описка слов этой длины Si-2i_1 слов длины iy началами которых служат взятые нами слова длины 1. Из имеющихся теперь 22—Si-2 слов длины 2 включим в наше множество любые s2 слов, что возможно в силу B.8). Вновь вычеркнем все слова, началами которых служат взятые, и т. д. В результате построим желаемое множество. Продолжение этого процесса вплоть до / = / обеспечивает неравенство B.8). Необходимость. Каждое слово длины U является началом 2/-/г слов длины /. Из условия префиксности вытекает, что вес слова длины /, началами которых являются слова префиксного k множества, различны между собой, т. е. ? 2/-/г ^2'. Сокращая на 21у получаем нужное неравенство. Префиксный код является дешифруемым. Действительно, любое слово, состоящее из написанных подряд слов кода, можно однозначно разложить на исходные. Однако существуют и непрефиксные дешифруемые коды, каким будет, например, код {0, 01}. Оказывается, что длины слов любого дешифруемого множества удовлетворяют тому же неравенству Крафта. Это утверждение доказано Макмилланом, а приводимое доказательство принадлежит Карашу [82]. Утверждение 2.2. Если 1и ..., h — длины слов некоторого де- k шифруемого кода, то ? 2~h ^1. Доказательство. Пусть ?? — слово нашего кода, имеющее длину 1и /= 1, ..., k. Обозначим через А алфавит, состоящий из букв аи ..., an. Число слов длины ? в алфавите Ау которые при замене букв этого алфавита сответствующими им кодовыми словами содержат t букв 0 или 1, обозначим через S(n, t). Число двоичных букв ,в любом та этих слов не превышает, очевидно, nl, где 1= max U. В силу дешифруемое™ кода замена букв алфавита А соответствующими им двоичными словами приводит к различным двоичным словам. Поскольку число двоичных слов длины / равно 2f, то S (п, 0<2<. B.9 k Положим х= ? 2~~h . Имеем при п^\ ?=1 \/=1 J 1<1,«...<??^? Сумма /^ + ...+/^ принимает значения, равные длинам, которые имеют двоичные слова, соответствующие словам длины ? в 32
д. Значение t будет принято этой суммой S(/?, /) раз. Поэтому из B.10) получаем *·* = 2S(/z, t)-2-<. B.11) Отсюда и из B.9) находим xn^nl. Поскольку это последнее неравенство справедливо для любых я>0, величина * не может превосходить 1, что и доказывает неравенство Крафта. Опишем сейчас префиксный код для записи натуральных чисел, открытый В. И. Левенштейном [29]. Дело в том, что обычная бинар-ная запись натуральных чисел не обладает свойством (префиксности. Например, число 3 в бинарной записи имеет вид 11, т. е. начинается с бинарной записи числа 1. Поэтому конкатенация бинарных кодов чисел не поддается дешифровке (разделению). Код Левенштейна позволяет избавиться от этого недостатка цеиой лишь небольшого увеличения длины кода. Положи/м л<°> = 0 и пЮ = 2п{(~]), /=1Э 2, ... Тогда /1^=1, п^^ = 2, я<3) = 4, я<4)=16, /z<5>=216, ... Определим при *^0 целочисленную функцию log**, полагая log** = i, если я<*>^*^:/1<*+1>. Функция log** растет чрезвычайно медленно. Так, log* 100=4, log* B1°4) - 5. Двоичную запись числа ? будем обозначать Bin*. Так, Bin3 = = 11. Поскольку двоичная запись всех слов начинается с 1, то удобно рассмотреть также слово Bin7*, которое получается из Bin* удалением первой цифры. Так, ???'2=0, Bin/3=1. Длина |Bin7*| слова ? равна [logл:J. Чтобы получить код Левенштейна Lev* слова *, необходимо к слову Bin'л; приписать слева слово Bin7 [log*], затем еще левее — слово [Bin/logi2)*J и т. д., ©сего log**—1 раз. Затем поставить 0 и log** единиц: log* ? Lev*=ii°g**o ? Bin' L l°eilog9x~l)xJ · Например, при* = 37 [log*J = 5, [\og^x] = 2t [logC)*J=l, log** = 4, Bin71-0, Bin72 = 0, Bin75 = 01, Bin7 37 = 00101, Lev* = = 111000100101. Приведем значения Lev* еще для некоторых *: Levi —10, Lev2= 1100, Lev4- 1110000, Lev8= 11101000, Lev 16=111100000000. В силу соотношения [log[*J] —[log*J (JogL log<'"-i>*j j = Liog<J>xJf J>1> X>U Поэтому в коде Левенштейна каждое подслово является укороченной на одну цифру записью длины следующего подслова. Это не относится к первому подслову llo&*^0, «по которому можно узнать, сколько раз итерировалась процедура приписывания подслова, равного длине предыдущего подслова. Из определения кода Левенштейна понятно, как из двоичного слова, начинающегося с Lev*, выделить *. Поясним это также на примере. 33
Пусть имеется слово, начинающееся 111100100010111101001. Здесь log*x=4. Теперь берем первую цифру после первого 0, приписываем к ней 1, получаем 10 = 2. Берем две последующие цифры, приписываем 1, получаем 110 = 6. Приписывая 1 к шести последующим числам, получаем 1001011=75. Число ?'=75, по- скольку наша процедура повторена log**—1=3 раза. log* ? Длина кода Левенштейна | Lev ? = log*x-f-1 + V log^x Для нее справедливы оценки: | Lev ? | ~ log ?, | Lev x I = logx + log!ogx(l +0A)). Этот код близок к оптимальному в том смысле, что для любого префиксного кода f для бесконечно многих натуральных ? /(*)>??(*)= logx+ log logx-f... + log^x, p>\. Это вытекает из того, что для любого префиксного кода, даж§ бесконечного, выполняется неравенство Крафта, а ряд ?2~??(?) ? расходится. Как -следует из алгоритма декодирования, произвольное двоичное «слово либо содержит префикс, являющийся кодом целого числа, либо само является префиксом такого кода. Отсюда вытекает, что для кода Левенштейна неравенство Крафта превраща- оо ется в равенство: ? 2"~lLevi!=l. ?=0 Некоторые приложения кода, аналогичного коду Левенштейна, описаны в статье [73]. § 2.3. КОДИРОВАНИЕ КОНЕЧНЫХ КОМБИНАТОРНЫХ ИСТОЧНИКОВ Исследуем возможности сжатия информации, порожденной простейшим из источников — конечным комбинаторным. Пусть S — такой источник, т. е. S — конечное множество слов. Кодированием и здесь, и всюду в этой книге будем называть инъективное (разнозначное) отображение S во множество двоичных слов. Инъективность обозначает, что для любых двух различных слов ? и у из S f{x)?zf(y)- Представляет интерес рассмотреть два случая: 1) длины всех слов f(x), x&S, одинаковы; 2) для некоторых двух слов ? и у \f{x) | = \f{y) |- Первое, самое лростое кодирование называется равномерным (по выходу). Естественно, в этом случае кодовые слова образуют префиксное множество. Рассмотрим вначале равномерное кодирование. Обозначим через т общую длину всех кодовых слов. Разность R(f9 S)=m— —log|S|, где \S\ — число слов, порождаемых S, назовем избыточностью кодирования / на источнике S. Помимо абсолютной избыточности удобно иметь дело с безразмерной относительной B.12) 34
избыточностью. Так, часто используемая относительная избыточность р'= (т—\og\S\)jm показывает долю избыточных символов среди т кодовых. Воспользуемся избыточностью ? (f, 5) = (m—log | о |) /log | S |. Она равна отношению числа избыточных символов к числу полезных. Понятно, что, зная избыточность р(/, S) отображения f на источнике S, нетрудно найти и избыточность р'(/, S): р'(/, S) — = p(f. -S)/[l—?(/, 5)]. Справедливо следующее очевидное утверждение. Утверждение 2.3. Избыточность равномерного кодирования конечного комбинаторного источника всегда неотрицательна. Существует кодирование, избыточность которого не превышает 1. Доказательство. Действительно, число слов длины т, равное 2т, не может быть меньше \S\ в силу инъективности. Это и доказывает >первую часть утверждения 2.3. Кодирование словами длины flog|5|] имеет избыточность, не превышающую 1. Равномерное кодирование источника является моделью поиска информации в памяти вычислительной машины. Пусть имеется некоторый словарь 5. Слова S иногда называют еще ключами. Ключ x^S размещается в машинной ячейке, имеющей адрес f{x), где f — инъектавное отображение S во множество {0, ... ..., 2W—1} целых чисел, m^l. Машинные слова с адресами от О до 2Ш—1 образуют таблицу, где размещается словарь S. Отношение |5| к 2W называется коэффициентом загрузки таблицы. Понятно, что для коэффициента загрузки a(f, S) справедливо равенство а(/, 5) = 2-*</·?>, B.13) где / — кодирование, называемое также преобразованием «ключ — адрес». Принято различать два типа преобразований «ключ — адрес». Для преобразований одного типа по значению f(x) можно установить, принадлежит ? словарю 5 или нет. Для этого достаточно, чтобы для всех х, не принадлежащих 5, f(x) принимало одно и то же значение, отличное от всех f{x), x^S. В качестве этого значения можно выбрать 0, и тогда появление 0 свидетельствует о безуспешности поиска, т. е. x^S. Такие преобразования будем называть сильными. Для преобразований же другого типа по значению f(x) невозможно понять, принадлежит ли ? словарю S ,или нет. Такие преобразования будем называть слабыми. Поговорим теперь о неравномерных кодированиях, когда не у всех слов из S длины их кодов одинаковы. Теперь появляются слова, длина кодов которых меньше энтропии, и утверждение 2.3 в этой ситуации уже не может быть справедливо. И все же справедлив модифицированный вариант этого утверждения, а именно, что в S должны найтись слова, длины кодов которых не меньше энтропии. Такие слова составляют большинство в S. Утверждение 2.4. Для любого инъективного отображения f множества S существуют слова х, для которых \f(x) \ ^ [log|S| J. 35
Слова x^S, для которых jf (x) j =^ [log JS J J—t составляют менее чем 2^-1) — часть всего множества S, где llog|S|J^/^l. Доказательство. Число двоичных слов, длина которых меньше или равна [log|S|J—f, равно 24- ... + 2Li<*l5U-'< jS| -2м, что и доказывает вторую часть утверждения. Первая часть получается при ?=1. Важным примером неравномерного кодирования источника является вычисление функций из некоторого множества S с помощью компьютера. Роль кодов играют при этом 'Программы. Дадим вначале несколько разъяснений по поводу используемой модели вычислительной машины, которая называется РАМ (равнодоступная адресная машина [1]). Длиной машинного регистра называется число двоичных знаков (бит), которые он может хранить. Иногда нам будет нужно использовать машинные адресуемые регистры (ячейки) .различных длин. Однако обычно число этих длин будет невелико (две-три). В машине выделяются регистры, предназначенные для записи: входной информации, результата, программы, промежуточных вычислений. Машина снабжена набором арифметических и логических операций, который можно представлять себе сколько угодно обширным, но фиксированным. Наши результаты, носящие асимптотический характер, несущественно зависят от типа выбранной машины. , Пусть g — отображение некоторого конечного множества двоичных слов domg· в конечное множество двоичных слов Img. Поместим в регистры, отведенные для записи программы, некоторый набор ? двоичных слов, а в первый входной регистр — некоторое слово ? из domg. Если для любого такого ? машина спустя некоторое время остановится, напечатав в выходном регистре слово g(x)y то набор ? называется программой вычисления g, а сумма длин входящих в ? слов — длиной программы. Минимальная длина вычисляющих g программ именуется программной сложностью g и обозначается L(g)t Максимальное ло #edomg число двоичных разрядов машины, менявших свое значение в процессе вычисления g с программой Р, называется расходом памяти на вычисление g посредством ? и обозначается S(g, P). Максимальное по x^domg число операций машины обозначается T(g, P) и называется временем вычисления g с помощью Р. В терминологии книги [1] расход памяти подсчитываем в логарифмической шкале, т. е. в битах. При подсчете же числа операций ограничиваемся более грубой равномерной шкалой. Главное внимание будет уделяться программной сложности сжимающих алгоритмов, которая не зависит от используемого компьютера. Расход памяти и особенно время вычисления существенно зависят от набора операций машины и длины адресуемого регистра памяти. Обратимся к задаче вычисления булевых функций. Булевой функцией от п% я>0, аргументов называется отображение, ставя- 36
щее в соответствие каждому двоичнохму слову длины ? либо О, либо 1. Утверждение 2.5. Для каждой булевой функции g от ? аргументов существует вычисляющая ее программа Р, длина которой не превосходит 2n + C, C=const, время вычислений T(gy Р)~1, используемая память S(gy P)=0. Эта программа асимптотически оптимальна, поскольку существуют функции, программная сложность которых не меньше 2П. Доказательство. Выделим в программной части машины 2п однобитовых регистров. В регистр с номером valx, где ? пробегает все двоичные слова длины пу поместим g{x). Эти 2п разрядов назовем информационной частью программы. Информационная часть зависит от вычисляемой функции g. Далее .поместим машинные .приказы, предписывающие напечатать в единственное однобитовом выходном регистре содержимое регистра с номером val уу где у — слово, находящееся в я-битовом входном регистре. Эти машинные приказы можно назвать операционной частью программы. Операционная часть не зависит от вычисляемой функции. Обозначая длину операционной части через С, получаем оценки утверждения 2.5. Нижние оценки являются следствием утверждения 2.4. Изложенный метод вычисления булевых функций назовем табличным. Здесь роль источника 5 играет множество булевых функций, а кодом f(g) функции g является ее программа. Теперь из утверждения 2.4 следует существование функции, сложность которой не меньше [log|5|J =2n. Итак, табличный метод при всей своей тривиальности является асимптотически оптимальным и утверждение 2.5 полностью доказано. Утверждение 2.4 может быть использовано также для оценки сложности .программ, вычисляющих с точностью до ? функции, которые принимают вещественные значения. Существуют функции, порождаемые источником S, программная сложность которых не меньше Н6 (S). Для функций класса F(ny p, В) по информационной части их программ определяются коэффициенты тейлоровских полиномов, с помощью которых вычисляются функции. § 2.4. КОЛМОГОРОВСКАЯ СЛОЖНОСТЬ Если слово ? порождается источником S, то в качестве его кода (сжатого представления) можно взять слово длины [log|S|J. Однако хотелось бы знать максимальную степень сжатия слова х, которая носила бы инвариантный характер, будучи независимой ни от источника 5, ни от компьютеров, производящих сжатие. Абсолютным кодом слова служит его колмогоровс- кий код. Каждый согласится, что слово 0101...01 сложнее слова 0...0, а слово, где 0 и 1 соответствуют выпадениям герба и решетки при бросании монеты, сложнее их обоих. Компьютерная прог- 57
рамма, производящая слово из одних 0, крайне проста: печатается один и тот же символ. Для получения слова 0101 ...01 нужна чуть более сложная программа, печатающая символ, противоположный только что напечатанному. Случайная, не обладающая никакими закономерностями последовательность не может быть произведена никакой короткой программой. Длина программы, производящей хаотическую последовательность, должна быть близка к длине последней. Итак, простые последовательности — это те, которые порождаются короткими программами. Изложим эти интуитивные соображения несколько более формально. Введем в вычислительную машину некоторую программу Р. Допустим, что некоторое двоичное слово ? перерабатывается машиной в двоичное слово у. Тогда назовем слово ? кодом слова у относительно Р. Длина кратчайшего жода у относительно ? называется сложностью у относительно ? и обозначается Кр{у). Если же никакое ? не перерабатывается программой ? в у, то Кр{у) =°о. Недостаток такого совершенно естественного определения сложности состоит в его зависимости от «выбора программы Р. А. Н. Колмогоров ввел свободное от этого недостатка понятие сложности. Утверждение 2.6. Существует программа Ро, сложность любого слова относительно которой не больше сложности относительно любой другой программы с точностью до аддитивной константы. Это означает, что для любой ? существует константа С>0 такая» что для любого слова у будет выполняться неравенство Кр0 (у)^ <^Кр(у)+С. Доказательство. Если ? — слово х\... хПу то через ? обозначим слово, полученное дублированием букв ? и приписываем 01 на конце: x=X\Xiy ..., хпХп01. Использование слова ? позволяет разделять слова, не употребляя запятой: по слову ху можем восстановить ? и у. Пусть ? — некоторая программа, составленная из слов длины т, га>0, и пусть кодом слова у относительно ? является слова х. Поместим на входе вычислительной машины слово МРх. Программа Ро работы нашей машины состоит в том, что, во-первых, она переписывает ? в раздел своей памяти, предназначенный для записи програмхмы. Для этого извлекаются слова длины т, составляющие Р, из fhPx. Во-\вторых, машина начинает обрабатывать слово ? в соответствии с записанной программой Р. Кодом слова у относительно Ро является слово тРх, длина которого равна 2т+2\Р\ +4+|х| =С+ \х\. Здесь константа С зависит только от Р, но не зависит ни от х> ни от у. Значит, описанная программа Ро такова, что для любой программы ? существует число С, при котором для любого слова у верно неравенство KpQ {у) ^ зСКр(у)+С. Здесь подробно не расписываем работу программы Ро, имитирующей работу любой другой программы Р. В теории алгоритмов это составляет содержание теоремы о функции, универсальной для частично рекурсивных функций. 38
Итак, программа PQ хуже любой другой программы разве лишь на константу. При большой длине -кода эта добавка становится несущественной. Программа Л>, для которой выполняется утверждение 2.6, называется оптимальной. Переход от одной такой программы к другой .меняет лишь эту константу. Сложность слоеа ? относительно какой-нибудь фиксированной оптимальной программы называется колмогоровской сложностью и обозначается К{х). Колмогоровская сложность показывает, до какой степени можно сжимать слово, используя любые вычислительные средства. Однако следствием такого универсального характера колмогоровской сложности является ее невычислимость. Утверждение 2.7. Функция К(х) — нсвычислима, т. е. не существует программы, которая бы переводила любое слово ? в его сложность К(х) относительно некоторой оптимальной программы. Доказательство, Предположим противное, т. е. что функция х-^К(х) вычислима посредством некоторой программы Pi. Упорядочим все бинарные слова вначале по длине, а затем по численному значению представляемого ими слова: 0, 1, 00, 01, 10, 11, 000, 001, ... . Используя программу Ри построим программу Р2, которая перерабатывает произвольное число m в первое в смысле определенного выше шрядка слово х, сложность которого не меньше m9 K(x)^tn. Программа перебирает слова одно за другим и вычисляет их сложности, пока не встретит впервые слово х: KPl{x) = K{x)>m. B.14) Поскольку число слов, сложность которых меньше данного т, конечно, то такое ? найдется. Программа Р2 порождает слово ? из числа т, длина двоичной записи которого равна flogm]. Значит, т является кодом ? относительно Р2 и Крш(*)< Hog"г"|. B.15) В то же время К{х)—колмогоровская сложность, поэтому в силу утверждения 2.7 существует такая константа С, что для всех ? К(х)<КрЛ*) + С. B.16) Из формул B.14) — B.16) вытекает, что для всех т выполняется условие [log m]+C^m, что невозможно, так как .. [log ml ? lim — = 0, и утверждение доказано. m->oo /72 Невычислимость колмогоровской сложности делает невозможным ее применение в практических задачах сжатия информации. Однако она является весьма важным теоретическим инструментом. Утверждения 2.6 и 2.7 принадлежат А. Н. Колмогорову [19]. Если источник S порождает достаточно много слов, т. е. |S|-> --voo, то в силу утверждения 2.4 длина любого кода для большинства этих слов равна асимптотически энтропии. В частности, она 39
равна асимптотически энтропии H(S) и для колмогоровского кодирования. Но для тривиальной нумерации, ставящей в соответствие слову ? двоичную запись его номера, все коды имеют длину, равную log|S|. Итак, в случае, когда об источнике, породив* шем слово, неизвестно ничего, возникают трудности, если необходимо слово сжать. Ведь его колмогоровский код невычислим. Однако если известно, что это слово порождено источником S, то упомянутая нумерация оказывается хорошим заменителем колмогоровского кода: для большинства слов S она дает то же самое сжатие. Похожая картина имеет место и для других источников. Чем меньше колмогоровская сложность слова, тем более закономерным оно выглядит, тем легче его запомнить и передать. Так обстояло дело и в упоминавшихся в § 1.1 опытах с муравьями. На передачу «закономерных» последовательностей типа 000000 или 010101 они тратят существенно меньше времени, чем на передачу последовательностей типа 010010. Это использование закономерностей текста проявляется лишь для достаточно длинных последовательностей. § 2.5. КОДИРОВАНИЕ КОНЕЧНЫХ ВЕРОЯТНОСТНЫХ ИСТОЧНИКОВ Пусть S — конечный вероятностный источник, S== = {Ль..., Аи}у и p{Ai) —вероятность, с которой порождается буква Л г, /=1,..., k. Кодирование / ставит в соответствие букве А\ слово f(Ai) длины |/(Л*)|. При этом стоимостью кодирования f на источнике 5 называется средняя длина кодового слова, т. е. C(f, S)= ? P(Ai)\f{Ai)l Избыточность R(f, S)=C(f, S)-H{S)P l— I k где H(S)=— ? ? (Ai) log ? (Ai) — энтропия источника. Сжатие информации состоит в кодировании с небольшой избыточностью. Представляет интерес рассмотрение дешифруемых^ префиксных, взаимно-однозначных кодирований. Кроме того, рассмотрим кодирование, сохраняющее порядок, заданный на множестве S. Утверждение 2.8. Избыточность дешифруемого кодирования неотрицательна. Существует код, называемый кодом Шеннона Л*-*· -+f(Ai), \f(Ai) I =[logр(ЛгI, ?= 1,..., ky избыточность которого не превышает 1: 0^R{f, S)^l. Доказательство. Поскольку кодирование дешифруемое, то для него в силу утверждения 2.2 выполняется неравенство Краф- k та ? 2-lfMj)| <^i Имеем для избыточности произвольного коди- 1=31 1 рования / источника S: #(/, S)^C(f9S)-H(S)=ykp(Al)\og —f~ . B.17) 40
Функция log ?* выпукла вверх. Используя в B.17) неравенство Иенсена для этой функции, получаем k Л (Л S) > — log V 2-1 /i^)i. B.18) Из B.18) и неравенства Крафта вытекает неотрицательность избыточности. Если положить \f(Ai)\ = \logp(Ai)], то неравенство Крафта будет выполнено и, значит, в силу утверждения 2.1 существует код, длины кодовых слов которого равны \\ogp(Ai)]. Понятно, что избыточность этого кода не превышает 1, и утверждение доказано. Код Шеннона, доставляющий верхнюю оценку утверждения 2.8, строится в [59] таким образом. Занумеруем буквы алфавита S в порядке убывания их вероятностей. Не умаляя общности, можно предположить, что этот порядок совпадает с порядком возрастания номеров, т. е. что р{А\)^ ... ^р(Аь). Образуем нарастающие суммы этих вероятностей: ?? = 0, a2=p(i4i),..., ok=p(Ai) + ... ~\-p(Ak-\). Возьмем в качестве кода f(At) для Ах первыеf—\щр(А\)\ двоичных знаков числа ои /=1,..., k. Тогда ? (??) :^2-1/(^I и, значит, один из первых 1/(^01 знаков разложения числа ? (??) отличен от нуля. Числа Ог+ь .··, ok отличаются от всех предыдущих, по крайней мере, на р(Аг), поэтому кодовые слова /(Л г),·.., f(Ak) отличны от всех предыдущих, /=1,..., k. Следовательно, построенный код — префиксный. Метод построения кода, минимизирующего избыточность, принадлежит Д. Хаффмену [54]. Однако, в отличие от кода Шеннона, кодовые слова кода Хаффмена не выписываются явно. Построение двоичного кода Хаффмена опирается на следующую простую лемму. Лемма 2.1. Пусть вероятности букв алфавита упорядочены по убыванию: р(А\)^ ... ^p(Ak). Тогда существует оптимальный жод, длины слов которого не убывают, а две наименее вероятные буквы имеют коды одинаковой длины: I f(Ax) | ^ | f(A2) |< ... < | /(Ль-,) | = | f(Ah) | . Доказательство. Пусть в противоречие с утверждением леммы код некоторой более вероятной буквы длиннее кода буквы менее вероятной, скажем \f (??) | > |/(Л2) |. Но тогда, приписав ?? код 1(А2) и наоборот, получили бы новый код меньшей стоимости, что невозможно в силу оптимальности. Предположим, что \f (Ak~i) | ? \f (Ak) |. Тогда согласно доказанному \f(Ak~i) I < |f (Ak) |. Следовательно, в кодовом дереве брат вершины f(Afi) не является кодовым словом и f(Ak) будет единственным сыном своего отца. Если использовать этого отца в качестве кода для Л/i, то стоимость новой кодовой системы уменьшится. Итак, |f (Лд-ч) | = \f(Ak) |, и лемма доказана. 41
В качестве кода f(Ai) возьмем первые [—log p (Л*) 1 + 1 цифры числа ои *"== 1?.» ? к. Тогда /?(/, S) = ^p(Ai)((r-\ogp{Ai)^\ + l)+\ogp(Ai))<2. ?=1 Ясно из B.22), что при i<j valf(Ai)<valf(Aj). Осталось только показать, что построенный нами код будет префиксным. Как следует из B.22), при t</ oj >*?+?? (Л,) + ~^P(Aj) > ?, + 2-»f <A/> ? + 2- > f <A/J. B.23) Если р(Л,)<р(Л,)э то |f (Л,) | = [-log ? (Л,) ] + 1> |f (A5) |. Первые |/(Л?)| знаков числа ?* не могут совпасть с f(Aj)9 что видно из B.23). Если p(Ai)^p(AjO то /(Лг) не является префиксом f{Aj). Утверждение доказано. Методы кодирования вероятностного источника не сразу нашли широкое практическое применение. Считалось, что декодеры кодов Хаффмена требуют просмотра больших таблиц и слишком сложны. Считалось также, что эти коды слишком чувствительны к ошибкам. Должно было пройти более 20 лет, чтобы коды Хаффмена стали использоваться при реальной передаче данных и сжатии информации. Приведем несколько примеров. Калифорнийская фирма «Информатика» в Канога Парк разработала программную систему «Шринк» для сжатия баз данных. Эта система использует код Хаффмена для кодирования символов, причем код может быть изменен, чтобы соответствовать распределению частот символов. Достигается двукратное сжатие. Два следующих примера относятся к факсимильному кодированию. Они интересны тем, что их создатели идут на компромисс: строят код Хаффмена не для исходного, но для модифицированного распределения. Проигрывая при этом в избыточности кодирования, они выигрывают в простоте кодеров и декодеров. В [28] подлежащее кодированию изображение разбивалось на элементы, принимающие значение 0 или 1. Рассматривался прямоугольник размером пХт. Наибольшую вероятность имеет прямоугольник, состоящий из одних нулей. Использовался очень простой метод: кодом прямоугольника из одних нулей является 0^ кодом любого другого прямоугольника является пт соответствующих двоичных разрядов, перед которыми ставится префикс 1. Оказывается, что распределение вероятностей, для которого такой простой код оптимален, мало отличается от реального распределения. Моделируя реальное распределение марковской цепью, авторы нашли те значения размеров прямоугольника ? и т, для которых коэффициент сжатия их простой схемы максимален. Оказалось, что при кодировании синоптических карт и использовании прямоугольников вида ??\ целесообразно выбирать п==7 или 8, что дает коэффициент сжатия 2,5—2,7. Если же использовать квадраты пХд, то целесообразно выбирать я=4 или 44
5, что даст коэффициент сжатия порядка 5—6. При употреблении квадратов учитывается зависимость между строками изображения, поэтому они и обеспечивают больший, чем прямоугольники вида яХ1, коэффициент сжатия. В Японии [62] употребительна каскадная схема факсимильного кодирования. Здесь опять-таки код Хаффмена заменяется простым в реализации субоптимальным кодом. Кодер просматривает две строки, каждая из которых содержит по 128 элементов, и разбивает их на четыре прямоугольника размером 32x2. Если прямоугольник содержит, по крайней мере, одну единицу, то ему присваивается 1, в противном случае ему присваивается 0. На следующем шаге обрабатываются только прямоугольники, получившие 1. Каждый из них разбивается вновь на четыре размером 2X8, и вновь ненулевым присваивается 1, полностью нулевым— 0. На последнем шаге повторяем процедуру разбиения, приходим к квадратам размером 2X2. Нулевой кодируется нулем, а ненулевые — словом длины 4, указывающим расположение единиц в квадрате. Результирующий код пары строк является конкатенацией (соединением) присвоенных этой паре символов и кодов квадратов 2x2. Процесс кодирования описывается деревом, где все узлы одного яруса соответствуют прямоугольникам, полученным при разбиении на четыре части прямоугольников предыдущего яруса. Листья соответствуют кодам квадратов 2x2. Этот код просто реализуется на микропроцессорах с параллельным выполнением операций. Распределение вероятностей, для которого он оптимален, достаточно близко к реальному распределению. Как и в предыдущих примерах, это объясняется большой вероятностью нулевых прямоугольников. § 2.6. РАВНОВЕРОЯТНЫЕ БУКВЫ. ПОРОГОВЫЕ ФУНКЦИИ Простой пример на нахождение оптимального кода доставляет источник, порождающий равновероятные буквы: р(А\) = = ... =р(Аи) = l/k. Если этот источник рассматривать как комбинаторный, то задача состоит в нахождении кода, максимальная длина слов которого минимальна. Здесь же будем рассматривать его как вероятностный, и задача будет состоять в минимизации 1 * стоимости C(f, S) = V j f(Ai) | . * ??? Утверждение 2.11. Стоимость C(f, S) минимального кода для k равновероятных букв удовлетворяет равенству C(f, 5)= l log k J + -L(A_2Liog*J). k Доказательство. Пусть длины кодов некоторых букв, например первой и второй, отличаются больше чем на единицу· 1/И01— — \f(A2)\^2. Перебросим 1 от первого кода ко второму, т. е. рассмотрим набор чисел \f(Ai) — 1, |f(^2)! + l, |/C43)|,... 45
Сравнивая суммы, стоящие в левой части неравенства Краф- та для прежнего и нового наборов кодовых длин, находим 2-1 f (U ? 2~ i f <A*> l + У 2- ? ???> ? j— B- ? f <A'>? +1 + 2Hf (A2)|-i_j_ + V 2-1 / <л*> 4 = 2-1^ <^> i | 2~ ? ??«> ? + ? >Ma)' | > 0. ? 7 V2 / Таким образом, новый набор чисел удовлетворяет неравенству Крафта и может служить кодовым. Стоимость кода в результате операции переброски не меняется. Повторяя эту операцию, мы из любого кода получаем новый, у которого длины кодовых слов отличаются разве лишь на единицу. Пусть а слов оптимального кода имеют длину /—1 и k—а слов — длину /, 0^a<zk. Тогда стоимость кода равна — (kl—?), а неравенство Крафта k принимает вид k-\-a^2l. Отсюда следует, что l^\\ogk]t причем равенство достигается лишь для чисел А, равных степени двойки. При этом а=0, 2 С = l logk J -] (k — 2 ]°8k·))и утверждение доказано. Если /^ k ^[log&J+l, то a^2ilosfcJ-н-ь и, как нетрудно проверить, стоимость не превышает указанной в утверждении границы. Если же kl^ ^ [log k\+2, то код не является оптимальным, так как его стоимость будет больше стоимости кода при [logfe]^/^ [log?J + l. Утверждение доказано. Если рассматриваем десятичные равновероятные цифры, то fc=10. Находим, что [log^J ==3, ? = 6, /=4. В качестве кода можно взять отображение 0-ЯЮО, 1-^001, 2-Я) 10, 3-ИШ, 4-Я00, 5-И01, 6-И 100, 7-И 101, 8-И ПО, 9-П111. Согласно утверждению 2.11 на одну цифру приходится 3, 4 бита. Кодируя не десятичные цифры, а блоки цифр, можно добиться лучших результатов, приблизившись сколь угодно к log 10. Источник, порождающий равновероятные буквы, связан с по- роговыми булевыми функциями, которые в свою очередь связаны с задачами сжатия информации. Пусть N и ? — натуральные числа, хи..., ?? — булевы, т. е. принимающие значения 0 и 1, переменные. Функция Thp(X\t...txN) называется пороговой с порогом р, если она равна 1 лишь тогда, когда, по крайней мере, ? ее переменных обращаются в 1. Очевидно, Thp(xu ..., ??)?=? \/ ?1? ... ?{ где дизъюнкция берется по всем наборам, состоящим из ? различных натуральных чисел, не превышающих N. Ясно из определения, что Thp(xu ..., ^) = ^77^-1(?. .··, ¦%) V XiThp(x2 ^).B.24) 46
Очевидно, Thp(xu..., xN) =Thp(xu ···» xn), поэтому всегда можно считать, что p^iV/2. Сложность простейшей формулы в базисе «дизъюнкция (V)> конъюнкция (Л), отрицание (—)», реализующей пороговую функцию с порогом ? от N переменных, обозначим через ??(?). Сложность формулы равна числу вхождений переменных. Утверждение 2.12. ([24, 79]). При 2<?.?^?—2 сложность ??(?) простейшей формулы, выражающей пороговую функцию Thp(xu...i ??) через операции дизъюнкции, конъюнкции и отрицания, удовлетворяет неравенству ??(?) ^СNlogN. Доказательство. Докажем вначале утверждение для пороговой функции с порогом 2: ТН2(хи .... Хл)= V ХЛ· Дизъюнкцию непустого множества переменных назовем формулой типа ??. Произведение двух формул типа ?? при условии, что никакое переменное не входит одновременно в оба сомножителя, назовем формулой типа Л2. Наконец, дизъюнкцию формул типа Л2 назовем формулой типа Лз. В частности, всякая формула типа Л2 будет и формулой типа Лз- Пример формулы типа Лз*. *1*2 V (?? V *2? Х3 V (ХА V ??) (Xl V *з)· Можно доказать, что функция 77? (#?, ..., ? ?) имеет минимальную формулу типа Лз. Если запретить использование знака отрицания, то доказательство существенно упрощается. Каждой формуле типа Л3 поставим в соответствие матрицу, число столбцов которой равно числу переменных ?, а число строк — числу их дизъюнктивных членов. На пересечении r-й строки и /-го столбца стоит символ 0, если у-е переменное входит в левый сомножитель ?-го дизъюнктивного члена; 1, если в правый сомножитель, и символ а, если /-е переменное не входит в i-?? дизъюнктивный член. Так, приведенной выше формуле соответствует матрица 0 1 а ? ? 0 0 1 ? ? 1 ? 1 0 0 Обозначим через d число дизъюнктивных членов в некоторой формуле для Th2{x\y ..., ??)\ через U обозначим число вхождений i-ro переменного, i=l,... , N. В соответствующей матрице i-й столбец содержит d—/г· знаков а. Заменяя их всеми возможными способами на 0 и 1, получаем 2d~h столбцов длины d из 0 и 1. Поскольку формула реализует функцию 7/i2(Xi,... , Xn), to для любых двух переменных найдется такой дизъюнктивный член, что одно из этих переменных входит в его левый, а другое — в правый сомножители (или наоборот). Значит, для любых двух столбцов матрицы найдется строка, имеющая в одном из них 0, а в другом— 1. Следовательно, столбцы из 0 и 1, получаемые из столбцов 47
матрицы, попарно различны, а их общее число не превосходит 2d: N 2d~4 < 2d. Сокращая на 2d, обнаруживаем, что числа 1\у..., In ? удовлетворяют знакомому неравенству Крафта: \2~li < 1. Сложность ?2(??) формулы оказывается совпадающей со СТОЯТ имостью префиксного кода: ?2(?/) = У*'/· ^ СИЛУ утверждения 2.8. ?2 (/V) > AHog W. B.25) Распространим это неравенство на функции с произвольным порогом ?, 2^p^N/2. Если в любой формуле, реализующей Thp(xi ..., xN), положить ??= ... =Хр_2 = 1, то в силу B.24) получим формулу для Th2 (Хр-2+ь..., *n). Поскольку при замене переменных константами формула может лишь упроститься, то \№»ъ{М-р + 2). B.26) Из B.25), B.26) и неравенства ?^.?/2 вытекает утверждение 2.12 при подходящей константе С. Утверждение 2.13. Любому коду для равновероятных букв соответствует формула, реализующая функцию Th2(xu..., Xn). Сложность такой минимальной формулы равна стоимости минимального кода для равновероятных букв: ?2(?0 = ?4_ logArJ+2(W — 2 к*лг-1)в Доказательство. Запишем кодовые слова в виде столбцов матрицы, дополнив их до максимальной длины символами а. Этой матрице соответствует формула по правилу, указанному в доказательстве утверждения 2.12. Отсюда и из утверждения 2.11 вытекает равенство для Яг (N). § 2.7. БЛОЧНОЕ КОДИРОВАНИЕ СТАЦИОНАРНЫХ ИСТОЧНИКОВ Пусть 5 — некоторый вероятностный стационарный источник и ? — натуральное число. При блочном кодировании f порождаемая S последовательность расчленяется на слова (блоки) длины п. Каждое слово х, \х\=п, закодируем двоичным словом f(x). Слова {f(x)} должны образовывать префиксный код. Это требование объясняется тем, что по последовательности следующих друг за другом кодов должны восстановить последовательность слов источника. Конечно, можно было бы использовать и непрефиксные, но дешифруемые коды, однако в силу утверждения 2.2 это не привело бы к снижению стоимости. Стоимость кодирования f здесь следует пересчитывать на одну входную букву, т. е. С(/, 5) = — 2 1/М1Ж. Я *, | ? \ - ? 48 ?
где Р (^) — вероятность слова ?. Избыточность равна разности между стоимостью и энтропией: Следующее утверждение принадлежит К. Шеннону. Утверждение 2.14. Избыточность блочного кодирования стационарного источника неотрицательна. Существует блочное кодирование со сколь угодно малой избыточностью. Для источника Бер- нулли избыточность кодирования блоками длины ? не превышает II п. Доказательство. В соответствии с § 1.4 множество последовательностей, порожденных 5, у которых на /-м месте стоит /-я буква алфавита источника, обозначается 5'г-, а через S·? обозначается разбиение {Sj2}, /=1,..., &, где k — мощность алфавита источника S. Слова ? длины ? являются атомами разбиения SlV ··· V5n, я>0. Эти атомы можно считать буквами некоторого конечного вероятностного источника. В силу утверждения 2.8 для любого префиксного кодирования f ? ? W ? / ? I - H (Sl V - V 5я) >0, B.27) ??, [ ?' ? —? а для шенноновского кодирования 1> 2 Ptol/tol -ЯE1\/-. V 5я). B.28) Из B.27), B.28) и утверждения 1.9 следует, что C(f, S)^0 и Ж/. S) ^ —+ — (#(S'V - V5-)-//E)). ? ? Для источника Бернулли отсюда вытекает, что /?(/, S)^.l/n. Из утверждения 1.9 и этих двух неравенств следует утверждение 2.14. Для стационарного комбинаторного источника справедливо утверждение, аналогичное утверждению 2.14: стоимость (на входную букву) кодирования не меньше энтропии, но приближается к энтропии с ростом п. Теперь изучим, как быстро убывает избыточность /?(/, S) с ростом длины блока п. Оказывается, что, как правило, 1/я< 5 ^(fi 5) < 1/я, если / — кодирование блоков длины п. Единственным исключением является бернуллиевский источник с согласованными вероятностями. По определению бернуллиевский источник S, порождающий буквы Ль..., Л&, имеет согласованные вероятности, если все числа log —целые, 1^/, j^k. ? Ш Вначале докажем следующую лемму, принадлежащую Г. Л. Ходаку. Через \\х\\ в ней обозначается расстояние от числа ? до ближайшего к нему целого числа. Лемма 2.2. Пусть 5 — конечный вероятностный источник, порождающий буквы Ль..., Ak с вероятностями ? (Л i),..., p{Ah), 49
Тогда для избыточности R(f, S) дешифруемого кодирования на 5 справедливо неравенство 1п2 « ? 1 Ж/. S)> — 2л l°g — 2^2 S Ре Доказательство. Положим Г-1/2, х< -1/2, *={ х> \ х\ < 1/2, ( 1/2, х> 1/2. Тогда |х = 1М1 при |*|<1/2, И = 1/25*11*11 при |х|>1/2, поэтому x2i^\Xi\\2, где *?= 1 /Ш\ + log ? (?-). 1 B.29) Число \f(Ai)\ — целое, значит, ll*tl! = ||log——-|| и неравенство (рМ) B.29) может быть переписано как */> II — logp(^) || , /-=1, ..., ft. B.30) Определим функцию ?(?) равенством ? (д;) = 2-' + ^ 1 ? 2 — 1 - B.31) Найдем первую и вторую производные этой функции: ?' (?) = In 2 A — 2-*), ?" (?) = 1?22.2-х. Производная ?'(?) положительна при ?>0 и отрицательна при х<С0. Сопоставляя это с неравенствами х^х при х>0, х^х при х<0, находим, что ?(*)>?(*). B.32) Разложим ?(?) по формуле Тейлора с остаточным членом в форме Лагранжа ?(?) — —1?22·2~*?2. Здесь |?|<1/2, так как \х\ 1/2. Это разложение вместе с неравенством B.32) дает Ч*)> — 1?22·—I- x\ } 2 V2 B.33) Теперь воспользуемся неравенством Крафта0> 1 -—V2—l/<Ai>it /=1 определениями хг·, ?(.?) и получим такую цепочку равенств: k k k i=l /=1 + ? (хд)? (?,) = In 2 j\v,p (?,) - 2/> (Д) ? (?,). B. 34) ?=1 ?=1 50
Применим в B.34) неравенство B.33) и определение избыточности. Это приведет к неравенству I k 0l>ln2RifJ S) — In2 2 ^?*?(??)* B.35) Наконец, B.35) вместе с B.29) приводят нас к искомому неравенству R (/, S) > 1п2 k V А 2Г2 ? log 1 ?/ Утверждение 2.15. Для любого марковского источника 5 конечного порядка, за исключением источника Бернулли с согласованными вероятностями, избыточность (на букву) любого префиксного кодирования / с длиной блока ? удовлетворяет неравенству R(ff S)> l/n. Для источника Бернулли с согласованными вероятностями lim nR (/, 5)==0. П~>оо Доказательство 1. Вначале рассмотрим произвольный марковский источник конечного порядка, отличный от источника Бернулли. Тогда в силу утверждения 1.10 существует константа С>0 такая, что для всех ? H(SX V- V S») > nH(S) + С. Для любого префиксного кодирования / 1 „ R(f, S) ? f(x)\p(x)-H(S), B.36) B.37) где ? — слово длины ?, являющееся атомом разбиения Sl\J ... \/Sn. Неравенство утверждения 2.12 вытекает из B.36), B.37) и B.27). 2. Перейдем к рассмотрению источника Бернулли. Здесь неравенство утверждения 2.15 вызвано совсем другими причинами. Это неравенство является следствием того, что логарифмы вероятностей слов источника Бернулли в среднем достаточно далеки от целых чисел. Если S — источник Бернулли, то ?, \х\=п Р\Х) tf(S* V- VS«) = nH(S). Согласно лемме 2.2 для произвольного префиксного кодирования / с длиной блока ? имеет место неравенство nR(f, 5)= 2 Pi*)(\f(x) I + log/>(*))> x, I x I =rt > In2 2/2 ? (?) loe ?, I Jf I =Л l_ ? (?) B.38) ¦61
Поскольку 5 — источник Бернулли, то для вероятности р(х) слова х имеем PW = PF = P(??)?·{?) -?(Ak)r*(x\ B.39) где р= (р(Л]),..., p(Ak)) ~ набор вероятностей букв алфавита; r=r(x) = (г\(х), ..., ^(х)) — вектор, ?-я компонента которого равна числу вхождений буквы Лг· в слово х, \г\ =п. Функция \\х\\— расстояние числа х до ближайшего целого—, периодична с периодом 1, непрерывна, кусочно-дифференцируема. Разложим IUH2 в ряд Фурье: ео || х || 2= 2 Ьеми. B.40) /=—со Здесь ?? — коэффициенты Фурье, /=0, ±1, ±2,... Нулевой коэффициент Фурье 1 1/2 ? ? Ряд Фурье сходится к ||х||2 равномерно и абсолютно [49]. Подставляя B.39) и B.40) в B.38), получаем, переставляя порядок суммирования, In2 ~ п\ ( 2«nog-- «*</fS)>__ 2 ?? 2 -?? И^)е '* ZJ/ ? ; = _«, г I r i =л ' * \ I 2m\ogJ-Y* ]n 2 ^, ? 4nll\og±- Z [/ ? /=_?? 2*11 log ±? + fte '*/. B.41) По неравенству треугольника 2??7 log — 2?/? log тг I Ае Pl +·¦·+/>* e *|<1. B.42) Возможны два случая: либо B.42) никогда не переходит в равенство, либо для некоторых I равенство достигается. В первом случае перейдем в B.41) к пределу при п-^оо. Предельный переход обоснован в силу равномерной сходимости. Получим nR{f,S) ^ _ In 2 1 ^ ._ .—, и наше утверждение доказано. *? у *L *.? Во втором случае комплексные аргументы ^зсех к слагаемых в B.42) равны, т. е. ? (At) ? (Aj) где 1<?, /<&; а и Ъ — целые. 52
Если а=Л или 6 = 0, то приходим к бернуллиевскому источнику с согласо- ^а'нными вероятностями. Этот случай рассмотрим позже. Поэтому сейчас считаем, что а>2, ЬФО. Введем в рассмотрение функцию целочисленного аргумента ?(/), которая равна 1 для /==0moda и равна 0 для остальных /. Нетрудно проверить, 'использовав формулу геометрической лролрееоии, что ? а—1 *?(/)=— ? е * . B.44) а ?=? р!меем limn./?(f, 5)> — ? ??*@? ?? ?-+°° 21/2 /=^?? B.45) поскольку при п-+оо в B.41) обратятся в нули все члены, кроме тех, у которых /===Omoda. Подставим B.44) в B.45) и переменим порядок суммирования: In 2 а~1 °° Hmn.tftf, S)>—— ? ? Vie ?-*00 2al/2 r=o/=^00 2rti f—+ log—) B.46) Из формулы B.46), учитывая разложение B.40), приходим к In 2 G— 1 limn-Я tf, S) > "'1 ? "-*00 2a~|/2 tM) 1 ? fog + — Pi ? B.47) Рассмотрим последовательность a-l ? 1 ^1 у ?? — ? ? + — [. ? = 2, 3,...; 0<?<1. Члены этой последовательности являются римановыми .интегральными суммами 1 Для f П*||2??л;, поэтому при а->оо эта последовательность имеет предел: о 1 j ???2?/?:. Очевидно, при а>2 1 а-\ inf —? Следовательно, inf inf — c^2 O^i^l a a—\ v—Q V i + — a ? a >0. >0. обращаясь к B.47), получаем lim n-R(f, S)>C, C>0, и в этом случае ут~ радение установлено. 3. Остается рассмотреть случай согласованных вероятностей. Если длина блока ? равна знаменателю подходящей дроби числа log(l/Pi), то nR(ff S)<l/n -согласно [55]. Утверждение 2.15 доказано. 53
§ 2.8. НЕБЛОЧНОЕ КОДИРОВАНИЕ При блочном кодировании порождаемая источнике последовательность разделяется на слова равной длины (блоки) каждое из которых заменяется кодом. Возможны гораздо бол* сложные виды кодирования. Однако требование инъективност влечет всегда неотрицательность избыточности. Широкие класс кодирований были рассмотрены в [43, 57]. По-видимому, само общее кодирование изучено Б. Я. Рябко. Он изучал и нестацис ларные источники, для -которых роль энтропии играет размерное! Хаусдорфа. Здесь же ограничимся простейшим случаем небло< ного кодирования источника Бернулли. Пусть имеется источник Бернулли S с ^-буквенным алфавитов, Аи ..., Ah и вероятностями p(A\)f ..., р(Аь) появлений букв. За дадим некоторое дерево ?, у которого каждый нелистовой узе, имеет k сыновей. Каждому узлу дерева соответствует слово, апи сывающее путь к этому узлу от корня, в полной аналогии с тем как это делалось \в § 2.1 для бинарного дерева. Не будем раз личать узел и соответствующее ему слово; их вероятности такж равны. Закодируем лист ? бинарным словом f(x) так, чтобы слов: {f{x)} образовывали префиксное множество. Кодирование источника 5 в соответствии с деревом ? и отображением / происходит следующим образом. Поскольку листья дерева ? образуют префиксное множество, то любая порождаемая S последовательность распадается на поо ледовательно идущие слова этого множества. Заменяя каждое Ш них его кодом, получаем код последовательности. Если длины путей от корня до каждого из листьев равны друг другу, то приходим к уже рассмотренному блочному кодированию, или, как ел еще называют, кодированию типа BV (блоки кодируются словами переменной длины). Если не все расстояния листьев до корня равны между собой; то приходим к неблочному кодированию. При этом если не все длины кодов f(x) равны между собой, то получаем кодирование типа VV (слова переменной длины кодируются словами переменной длины). Кодирование слов переменной длины словами одинаковой длины называется кодированием типа VB. Такое кодирование обладает рядом достоинств. Случайная ошибка декодирования в одном слове не повлечет за собой ошибок в других словах, как это может произойти в кодах типа VV или BV. Вначале лужно определить стоимость неблочного кодирование /. Возьмем слово и некоторой длины т, и пусть ? (и) — вероят* ность его порождения источникам S ; f(u) — кодовое слово, соответствующее и. При этом начало слова яв яется конкатенацией слов, соответствующих листьям кодового дерева ?. Конец же епощ ва и соответствует какой-то, вообще говоря, нелистовой вершине ?. Этот конец не оказывает влияния на f(u), но при появление вслед за и еще нескольких букв окажемся в листе дерева ? И
найдем соответствующий код. Стоимость кодирования С естественно определить как предельное среднее число кодовых букв, приходящихся на одну входную, т. е. С (/, S) = lim — 2 ? И I / (? I ¦ B.48) т-*оо т и, | и | =т Для бернуллиевского источника найдем сейчас простое явное выражение стоимости. Определим задержку, или среднюю длину 4 дерева ?, как d=^p(x) 1*1, B.49) X где сумма берется по всем листьям ? дерева ?. Для дерева, изображенного на рис. 2.3, его средняя длина d = 2?2 + 2pq + Ър*щ + Apzq + 4p\ Утверждение 2.16. Стоимость С(/, S) кодирования f бернуллиевского источника S может быть вычислена по формуле С(/, 5) = ^- 1/(*IР(*). a jreA где суммирование ведется по листьям ? дерева ?, определяющего /; d — средняя длина кодового дерева. Избыточность R (/, S) = = C{f, S)—H(S) такого кодирования неотрицательна. Доказательство. Вначале установим формулу а= 2 ? (?) \? ? = ? ? (у)· B·5°) ?, ?—лист ? у, у—узел ? Ее нетрудно доказать по индукции. Дерево ? получено из некоторого дерева ?' включением k его сыновей. Так, дерево на рис. 2.3 полу- 2 чено добавлением двух сыновей уз- ^ ла а к дереву ?7, имеющему пять листьев. Для дерева, состоящего из N. у^ Ч=р@) корня и его k сыновей, обе части уг р=рA) > формулы B.50) равны I. Допустим, Рис 23. Неблочное кодирование что B.50) верна для некоторого дерева ?'. Докажем, что она верна для дерева ?, полученного из ?' Добавлением k сыновей некоторой вершины а. Очевидно, для источника Бернулли ? P{x)=Pia)P(Ai)+ .:+Р(а)рШ = Р(а)· B-51) х—сын а Из B.51) имеем у, у—узел ? у—узел ?' х—сын а у—узел ?' (^.?^\ 55
Формула B.50), справедливая для ?', преобразует B.52) в ? Р(У)= 2 ?(?)\?\ +?(?)\?\+?{?). B.53) у—узел ? л—лист ?' ??? Равенство B.53) вместе с B.51) дает равенство B.50) для ?. С помощью такой же индукции доказываются равенства: --Т ? P(*)logp(x) = H(S); B.54) ** х—лист ? 4" ? ? (*) ? (*) =/7 (Aj), /=1,...,^, B.55) где r;· — число появлений буквы Aj в слове х. Теперь перейдем непосредственно к доказательству утверж дения 2.16. Процедуру кодирования порождаемой источником S последовательности определяет случайное блуждание по дереву ?, начинающееся с корня. Если Ai — первая буква последовательности, то переходим к ?-му сыну корня и т. д., лока не достигнем листа х, где происходит кодирование. Это блуждание описывается марковской цепью, состояниями которой являются некорневые узлы ?. С вероятностью p(Aj) цепь переходит из узла ? в узел xAj если ? — не лист, и в узел Д?·, если ? — лист. Обозначая через р*{х) стационарную вероятность узла xt получаем для этих вероятностей -систему уравнений: ps(xAJ) = p(Aj)p'(Aj); B.56) ? — узелА, /== 1, ..., k х—узел ? Положим Ps(x)^^-P{x), B.58) d где d — средняя задержка, определяемая B.49). Тогда все уравнения B.56) будут удовлетворены, поскольку S — источник Бер нулли. Нормировочное уравнение B.57) будет выполнено соглас но B.50). Поскольку стационарная вероятность ps{x) равна доле времени, которую цепь проводит в *, то получаем, что С(/, 5) = 2^(X)I/WI * Отсюда и из B.58) вытекает формула утверждения 2.16. Из этой формулы, формулы B.54), префиксности множества {/(-*^| и ут-* верждения 2.8 следует неотрицательность избыточности. Следующее утверждение, принадлежащее Г. Л. Ходаку [56, 57], было затем опубликовано также Джелинеком и Шнейдером [81]. 56
g нем локазьивается, что существует равномерное по выходу кодирование, избыточность которого убывает так же быстро, как и у блочного. Утверждение 2.17. Для любого бернуллиевского источника S существует кодирование / типа VBt длины всех кодов которого равны между собой, а для избыточности справедливо неравенство R(f> S)<l/d, где d — средняя длина кодового дерева. Доказательство. Считаем, что буквы алфавита источника S упорядочены согласно убыванию вероятностей: ?(??)^ ... ^p(Ak). Зададим некоторое число m, m-^oo. Построим дерево ?, листьями которого являются такие узлы х9 что — log ? {?) < m, B.59) но, по крайней мере, для одного из сыновей ? логарифм его вероятности меньше —пг, т. е. - log ? {?) - log p (Ak) > m. B.60} Как следует из B.59), число листьев дерева ? не превышает 2W. Поэтому каждому из них можно взаимно-однозначно поставить в соответствие двоичное слово длины т. Утверждение 2.16 и формулы B.54), B.60) дают неравенство /?(/, S) < _-1 log/; (ЛА), d что и требовалось. В цитированной работе Г. Л. Ходака строится и кодирование типа VV для источников Бернулли. Его избыточность убывает как d~5/3. Вероятно, самой распространенной схемой сжатия дискретных данных является кодирование длин серий. Листьями кодового дерева в этом случае являются 1, 01, 001, ... (алфавит бинарный). Иначе говоря, ждем появления первой 1 и передаем по каналу длину предшествовавшей ей серии 0. Кодовое дерево здесь бесконечно* Используется и усеченная схема длин серий, ожидание продолжается не более некоторого заданного времени Г. Затем сообщается о поступлении ? нулей и процесс возобновляется. Для кодирования длин серий нулей можно использо^вать код Хаффмена, построенный в соответствии с вероятностями появления 0 и 1. Может быть употреблена также предложенная еще в первой работе Шеннона схема. Согласно ей одно кодовое слово выбирается для маловероятного символа —1, играя роль запятой. Для обозначения длин серий выбираются двоичные слова в порядке возрастания, но с пропуском выбранного для единицы слова. Шеннон показал, что при росте длины слова, обозначающего 1, и при стремлении вероятности появления 1 к 0 избыточность такого кодирования стремится к 0. Приведем несколько примеров практического применения методов кодирования длин серий. Они легли в основу разработанных исследовательской группой XIV МККТТ стандартов для фак- 57
«имильнои передачи документов ш> телефонной сета. Стандарт* обеапечивают передачу со скоростью 4800 бит/с двухтонойвд до кументов, сканируемых со скоростью 3,85 строк/мм и 1728 отсче- тов на строку. Эти стандарты описаны в [50J. В качестве модели источника сообщений используется марковская цепь первого но. рядка. Каждая строка рассматривается как чередующаяся последовательность серий черных и белых элементов. Коды для длил черных и белых серий близки к кодам Хаффмена. Вероятности длин рассчитываются на основе модели с учетом представитель* ной статистики. Код длины серии состоит из основного и завер* шающего кодовых слов. Основные кодовые слова представляют кратные 64 длины от 64 до 1728 F4, 128, ..., 1664, 1728). Дополнительные слова представляют длины от 0 до 63. За каждой строкой следует слово, обозначающее конец строки. Оно не может быть получено конкатенацией других слов. В цитированной статье указываются хорошие результаты, полученные при использовании такой схемы факсимильного кодирования. Интересный пример кодирования длин серий излагается в [89]. В 1973 г. на лунную орбиту был за/пущен спутник RAE-B. Он имел четыре антенны длиной ?? 229 м. С целью своевременного предотвращения возможных деформаций антенн на борту имелась камера, которая делала панорамические снимки антенн. Камера ^производила информацию со скоростью 20 кбит/с. Между тем канал передачи данных пропускал лишь 625 бит/с. Необходима была система сжатия данных. Она была сконструирована Линчем (И Миллером. В этой систе)ме из каждых четырех строчек, полученных сканированием, три просто опускались, а при декодировании полученная строчка повторялась еще трижды. Для кодирования же оставшейся строчки ^использовалось «кодирование длин серий. Темные серии кодировались 12-битовыми словами, а свет- лые — 4-битовыми. Большую часть времени камера была направлена <в темное пространство, поэтому черные серии доминировали. Светлые серии появлялись, когда камера была направлен на антенны или луну. Это кодирование давало восьмикратное сжатие, а общее сжатие с учетом выбрасывания строчек было равно 32, и пропускная способность канала достигалась. Сжимающее устройство было реализовано на интегральных схемах. ГЛАВА 3. УНИВЕРСАЛЬНОЕ КОДИРОВАНИЕ § 3.1. КОДИРОВАНИЕ КЛАССОВ ВЕРОЯТНОСТНЫХ ИСТОЧНИКОВ В предыдущих главах было рассмотрено кодирование информации, порождаемой определенным источником S. Теперь нас будет занимать несколько более сложная, но и болсб реалистичная ситуация. Источник S нам неизвестен, известно лишь, что 58 о
таким источником может быть любой элемент некоторого множества ?. Нужно построить кодирование, которое было бы хорошим для всего множества ?. В качестве примера можно представить себе, что необходимо сконструировать бинарный префиксный коя (типа кода Морзе) для латинского алфавита. Однако этот код будет применяться для .передачи сообщений на английском, французском и немецком языках. Здесь множество ? состоит из трех источников. Избыточностью R(f, ?) кода f на множестве ? назовем верхнюю грань его избыточностей на источниках 5, входящих в ?: R(f, S) = sup/?(/f 5). В этом параграфе сосредоточим внимание на вероятностных источниках .и префиксных кодах. Не ограничивая общности, считаем, что все «источники имеют один и тот же алфавит Л=={ЛЬ... ,.nAk}. Кодовое отображение f:At-**f(Ai), /=1, ..., k, будем идентифицировать с набором кодовых длин f=(\f(Ai)\, ..., 1/4^?) |),. который будем обозначать той же буквой f. Для префиксного кода выполнено неравенство Крафта V 2-,м^'<1. C.1) Будет удобно рассмотреть множество всех, не обязательно целочисленных векторов, удовлетворяющих C.1). Это множество обозначим F. Как сразу .вытекает из выпуклости и непрерывности функции х-+2~х, это множество — вьшуклое и замкнутое. Множество векторов с целочисленными координатами, .принадлежащих F, обозначим через \F], а для любого вектора f = (/?, ..., fh) поло- Жим [f]=(i/il, ..., f/fel). Понятно, что если feF, то Ifle[f]. Определение избыточности из § 2.4 распространяем на .произвольные вектора f по формуле R (f, S) « У ps (At) (log ps (A,) + f,), C.2) где ps(Ai) — вероятность порождения буквы Лг-еЛ источником S, ?=1, ..., ?=|?|,5^?. Легко видеть, что /?(f, 5)+1>/?(???. S)>R(t S). C.3) Избыточность оптимального для класса ? кодирования #(?)= inf RV> ?). Код f, избыточность которого R(i, ?) на множестве ? равна ^(?), называется оптимальным для ?. Задача построения оптимальных или близких к ним кодов является для нас основной в Этой главе. Покажем, что эта задача эквивалентна другой задаче Теории информации: нахождению пропускной способности канала <*язи. 59
Зададим на .множестве ? некоторую вероятностную меру Q Тогда средней относительно Q избыточностью кода f будет слу. жить величина KQ(f) = i#(f, S)dQ(S). Нижнюю грань jRq (f) по всем векторам f из F обозначим через/?? Множество источников ? с определенной на нем мерой Q on. ределяет канал без памяти (см., например, учебник [10]). Вход лыми символами канала являются источники ?^?, выходными -. буквы алфавита А. Если на входе канала появляется символ 5 то с .вероятностью Ps(Ai) на выходе возникает буква А\, i=l, Jt ..., k. При этом вероятность появления буквы Лг- на выходе Информация между входом S и выходом /Q(S, A)=yip(Al)log ???-??. Si Pi Информация между входом и выходом получается усреднением /qE, А) ло мере Q: ??· A) = $Iq(S* A)dQ(S). Наконец, пропускная способность канала С = supIQ (?, Л), Q где супремум берется по всевозможным вероятностным мерам 0 определенным на ?. Все эти понятия, восходящие к Шеннону можно найти в цитированной книге Галлагера. Лемма 3.1 [70]. Пусть А — конечный алфавит, ? — множество источников, Q — мера на ?, Rq — минимальная средняя относительно Q избыточность, ??, А) — информация между вха- дом и выходом соответствующего канала. Тогда Rq и ??, А) совпадают: 7?^ = /?(?, Л). Доказательство. Действительно, из C.2) следует, что k k Rq (f) = j R (i. S) dQ (S) = 2 J Ps (A) l°g Ps (A,) dQ (S) + ^ fj>i- C.4) Минимум C.4) no i^F достигается при f=f°, где /°г=— log рг-, Рг= j* ps{Ai)dQ(S), ?=1, ..., k. Подставляя f0 в C.4), находим #Q = min#Q(f)= f #(f°> S)dQ(S) = /Q{%9 Л), f€=F S что и требовалось. 60
Следующее утверждение было опубликовано Б. Я. Рябко в 1979 г. в [39], а Дэвнсоном и Леон-Гароиа \в 1980 г. в [70]. Утверждение 3.1. Пропускная способность С канала, соответствующего некоторому множеству ? источников, равна избыточности оптимального для ? кодирования с точностью до аддитивной единицы: C<^R&)<^C+l. Доказательство. Пусть k — мощность алфавита источников. Обозначим через h куб со стороной k: 4={f:f = (/lt .,., ?), 0< fi<k, /==1, ..., к}. При построении кодов для источников из ? можем ограничиться векторами f, обращающими неравенство Крафта C.1) в равенство. Такие векторы принадлежат /?. Поэкшу min/?(f, S) = min R(U S). Рассмотрим игру двух партнеров с нулевой суммой [8]. Стратегиями первого игрока являются источники 5^?, стратегиями второго — векторы из F[\Ikj а функцией платы служит R (f, 5). Эта функция непрерывна и выпукла по f, а множество стратегий F{]Ik выпукло, замкнуто и ограничено. Согласно теореме 2.15 из [8] существуют цена игры и оптимальная чистая стратегия у второго игрока. Это значит, что sup inf [R{\, S)dQ(S)= inf sup f R (j, S)dQ(S). C.5) Поскольку Q — вероятностная мера на ?, то sup[/?(f, S)dQ{S) = supR(i, S). C.6) Q i S^S Из C.3) и определения /?(?) имеем inf sup/?(f, S)</?B)= inf sup/?(f, S) < inf sup/?(f, 5)+1. C.7) Из выражений C.6), C.5) и определения пропускной способности С находим, что C=inf inf R(t, S). Это последнее равенство вместе с C.7) и дает утверждение. Таким образом, задача нахождения избыточности кода, оптимального для класса источников ?, эквивалентна задаче нахождения пропускной способности соответствующего канала с точностью до 1. Задача вычисления пропускной способности изучалась в теории информации. Известен алгоритм Блэхута [64] для ^е численного решения. В следующих параграфах найдем явное Решение этой задачи для некоторых интересных частных случаев. Как следует из утверждения 3.1, для любого распределения Q величина /q(S, А) служит нижней оценкой оптимальной избыточ- 61
ности i?B). Выбирая Q, можно сделать такую оценку сколь угодно точной. Именно так .и были получены в 1968 г. в [23] асимптотически точные значения величины /?(?) для бернуллиев> оких л в 1973 г. в [44] для марковских источников. Как установлено в теореме 4.5 из [10], на распределении Q достигается sup/g(E, А) в том и только том случае, если /q(S) А) равно одной и той же величине для всех SeE, имеющих не. нулевую Q-вероятность. Для источников, имеющих нулевую Q-ве. роятность, /q(S, А) не должна превосходить эту -величину. Этот факт полезен при нахождении оптимальных кодов для классов каналов. Такие коды называют еще универсальными. § 3.2. УНИВЕРСАЛЬНОЕ КОДИРОВАНИЕ ИСТОЧНИКОВ БЕРНУЛЛИ Приложим результаты предыдущего параграфа к построению асимптотически оптимального кода для источников Бер* нулли, порождающих буквы некоторого алфавита В, В={Ви ... ..., В\в\}. Источник 5 задается набором $=(SU ..., S\b\) верояъ ностей, с которыми он порождает буквы алфавита В. Будем отождествлять источник и вектор S. Алфавитом источника является п-я степень алфавита В, п>0: А = Вп, т. е. считаем, что источнику порождают слова длины ? в алфавите В. Эти слова играют роль букв k=^\B\n — буквенного алфавита А. Если а — такая буква из А, т. е. слово длины ? в В и г^(а) равно числу появлений буквы В1у /=1, ..., \В\У в а, то для вероятности ps(a) порождения а источником S имеем ps(a) = S*M9 C.? где ?(?) = (/?(?), ..., riB\(a)). Два тождества: 2 Pa(a)r(a)=>nS; C.9) а, | а \ =п 3 Ps (a) r) (a) = n?S* + Sj A - Sj) n C.10) ?, J ? J ssr/? — легко проверяются. Они могут быть найдены, например, в [47]. Буквой F(a) будем обозначать эмпирическую (частотную) энтропию слова а: F(a) = H(^)==-y!^-\og^. C.11) \ ft ) —* ? ? Для F(a) принят также термин «квазиэнтропия», введенный Б. М. Фитингофом, которому принадлежат первые результат^ теории универсального кодирования. Множеством ? является теперь совокупность всех |?|-мерны-4 векторов S=(Sj, ..., S\b\) с неотрицательными координатами Jl 62
удовлетворяющих равенству Sx+ ... +S\b\ = 1, т. е. ? — это |?|- ^ерный симплекс. Наша задача — найти асимптотику избыточности R(%) оптимального кодирования источников Бернулли. Лемма 3.2. Среднее значение эмпирической энтропии равно энтропии источника с точностью до ?(—) равномерно по ?: sup 2 Pa(a)F(a)—M(S)\< — . j a | —n I ^ ft Доказательство. Из тождества C.9) и определения эмпирической энтропии C.11) получаем \в\ г (а) г (а) У. ?3(?)?(?)-?(8) = -2??^?)—?^1?§-1^-· C.12) В этом тождестве воспользуемся неравенством Иенсена для функции —log x: 1 в ? г2 (а) У Ps(a)F(a)-H(S)>-\og У У Pa(a)—L·—. C.13) Jimd J—d лша /? S · С, I a | = л /=1 fl, | fl | =л ^7 Применяя к C.13) тождество C.10), приходим к неравенству 2 Ps (a)F(а) - ?(S)>- log (l+ ' Bl~~~l ). C.14) Хорошо известное неравенство ????^?:—1 позволяет перейти от C.14) к неравенству ? Ps(a)F(a)~H(S)> LLnL log e. C.15) ?, |а|=л ^ В то же время применим неравенство Иенсена на этот раз к функции —л: log л:: 2 Ps (a) F(a)—H (S) < 0. C.16) а, \ а \ —п Неравенства C.16) и C.15) эквивалентны утверждению леммы. Перед тем как перейти к доказательству основного утверждения параграфа, -введем еще некоторые обозначения. Обозначим Через D(S/l) плотность распределения Дирихле на \В\-мерном симплексе с |fi|-мерным параметром ?=(??, ..., К\в\): Г( ? ? | ) ??' ДE/Х)= |Д| ? S4-*. C.17) ? Г (?,) /=? ; /-? ЦеРез Еь будем обозначать усреднение по симплексу ? с плот- 0стью D(S/X). Особую роль будет играть параметр, все коорди- 63
иаты которого равны 1/2. Обозначим его 1/2, 1?/2=A/2, ..., 1/2), Нетрудно видеть, что для любых двух слов длины пу а и с спра. ведливо равенство Ps(a)Ps(c) Е-±—= ——~Е -*ps(a). C.18 12 E->Ps(C) r (с) +12^°V ' V ]/2r v ' Для слова а верно равенство / ? Я1 \ 'п Г (г,-(a)+1? E^ps{a) = T[ J-?J_] Щ C.19 V 2 у Утверждение 3.2 [87]. Пусть ? — множество | В | -буквенных источников Бернулли, порождающих слова длины п, я-^оо. Асимптотически оптимальным является квазиэнтропийный код, который слово а длины ? переводит в слово длины Ро (a) = nF (?) + J— L logn + C, где F(a)—эмпирическая энтропия. Избыточность 7?(?) универ- I В ? — 1 , сального кодирования равна асимптотически '¦ log/г. Доказательство, Возьмем формулу Стирлинга в виде [49] I log ГB) — z\oge~(г- 1/2) logz | < С, г>1/2. C.20 Эта формула вместе с вытекающей из неравенства Иенсена для log л: оценкой i*i Tj(a) Tj(a)+\I2 ( \B\ О < у J-— log —i- h F(a) < log 1 + —-— j™ ? ? \ 2n позволяет нам преобразовать C.19) к виду - log ?|?2 ps (a) = hF (а) + ' В ' ~ 1 log д +0A). C.21 Информация Id(S, ?) между источником 5 и выходом относительно меры Дирихле равна Id(S, A) = J /?(?) (log /? (?) - log ErJ>s(a)). C.22 Подставляя в C.22) равенство C.21) и пользуясь леммой Заполучаем для любого источника S Id(S, Л)= ,Б^" l logn + C, где константа С не зависит от п. 64
Итак, при выборе меры Дирихле информация становится не зависящей от входа. Значит, в силу упомянутой в конце § ЗЛ теоремы Галлагера пропускная способность канала равна асимптотически^--^ log п. Согласно утверждению 3.1 пропускная спо- ?? собность совпадает с избыточностью универсального кодирования. Длина кода слова а определяется формулой C.21). Утверждение доказано. Замечание. Если объем \В\ алфавита не постоянен, но возрастает с ростом длины блока ? так, что |Б|/п->0, то утверждение 3.2 остается в силе и избы- |В|— 1 точность #(?) равна по-прежнему ~ Iog/i(l+o(l)). Подсчитывая избыточность при |?|->??, надо заметить, что слагаемые, которые были постоянными при |5|=const, теперь стремятся к бесконечности. Однако они будут малы по сравнению с #(?). Заслуживает внимания тот факт, что наилучшей является мера Дирихле с параметром 1/2, а не равномерная с параметром 1, которая кажется на первый взгляд более подходящей. Чтобы лучше понять структуру оптимального квазиэнтропийного кода, построенного в утверждении 3.2, разобьем множество Вп на подмножества G(r), r=(ri, ..., г\в\), каждое G(r) состоит из слов а, для которых г(а)=г. Понятно, что число |G(r)| слов, ]г|! содержащихся в G(r), равно ——. Применим формулу Стирлин- г! га к |G(r)|: | G(r) I =яЯ(г)-— 2 lQg — + ' В ' ~ l log я + С, C.23) где i=max (xy 1). Сравнивая C.23) и C.21), находим ~ log Etfsia) = log ] О (г (а)) | + ( | В | - 1) log ? + + — У log Л . C.24) 2 y-?? п Из формулы C.24) следует, что оптимальный код для множества источников Бернулли состоит из двух частей. Первой частью является общий для всех слов из G(r) префикс, 1 ?*? ??? ? Длина которого равна ( | В \ — 1) log ? -\ > ^-^ + С> 2 1U п гДе константа С выбрана с расчетом выполнения неравенства Крафта. Вторая же часть является номером слова а во множест- Ве слов G(r(a)). Длина этого номера равна flogG(г(а))]. 65
В [95] были предложены комбинаторные коды. Комбинаторный код слова а состоит также из двух частей. Префикс является номером множества G(r) среди всех таких множеств, а вторая часть кода представляет собой номер слова а в G(r(a)). Число множеств G(r) равно числу разбиений ? на \В\ слагаемых, что равно С^\^_} [9]. При /г-*-оо и |jB| =const logC^f-J^^i I ? i -1) log/г + С. Поэтому длина префикса равна асимптотически (\В\ — 1) ? Xlog/z-fC. Избыточность этого кода для каждого фиксированно- го источника S равна —— log ? аспимтотически, однако макси- мум этой избыточности равен (\В\ — 1)logn. Верхняя оценка величины ??(?) получена в [24], нижняя — в [23]. Важный факт, что /?(?)/?->0, был обнаружен Б. М. Фи- тингофом в [48]. Для марковских источников произвольного порядка асимптотически точные оценки избыточности найдены В. К. Трофимовым в [44]. Приведем его результат без доказательства. Для двух слов и — щ ...ип и v^Vi ...Vk, k=\v\^\u\ =ft, через г^(и) обозначим число встреч слова ? в последовательности щ... «&#2... ... Uk+t... Ип-м-i... ип- Если ? — однобуквенное слово, v~Bh j^.\B\} то rv(u) =г3~(и). Для марковских источников с памятью k оптимальным будет код, который слову и, \и\=п, ставит в соответствие слово рк(и) длины Г(|Д|/2) п J/(rMtt)+l/2) i Р*(й) 1 - log (?(?/2))'?? ? ? Г о i Г(г («') + I B I /2) ' Здесь через и' обозначено слово, полученное из и вычеркиванием последней буквы. Избыточность этого кода равна асимптотически \B\s(\B\-l) 1—-^—-——log п. § 3.3. АДАПТИВНОЕ КОДИРОВАНИЕ В § 3.1 и 3.2 считали, что об источнике, /производящем информацию, известно лишь, что он принадлежит некоторому множеству ?. Если мощность множества ? равна 1, то возвращаемся к изученному в гл. 2 случаю сжатия информации, порождаемой единственным вполне известным источником. Представляет интерес и следующая схема, когда об источнике известно несколько больше, чем просто его принадлежность к некоторому множеству ?. Будем считать, что перед принятием решения о коде наблюдаем источник в течение некоторого времени L, т. е. в нашем распоряжении имеется порожденная источником S выборка w. Длина \w\ слова w равна L. Ограничимся здесь рассмотрением только бернуллиевских источников. Кодовое отображение должно за- 66
висеть от выборки wf обозначим его fw. Семейство отображений {fw}7 где w пробегает всевозможные слова длины L в алфавите источника 5, обозначим ?, q>={/W;}, w^Bh. Бернуллиевский источник S=(Sb ..., S\b\) порождает слова длины пу я>0, »в алфавите В. Согласно § 2.5 избыточность R(fw, S) кодового отображения fw на источнике S определяется по формуле Я (/„, 5) = ? Ps И I U («) I - ? E). C·25) о, | а j =/г где Ps(a) находится по формуле C.8). Избыточность R{cpt S) семейства ? на источнике S получается усреднением R(fw, S) в соответствии с вероятностями выборок ш: ? (?. S) ? Ps(w)R{fw9 S). C.26) w, I w I = L Теперь аналогично тому, как это было сделано для универсального кодирования в § 3.1, определяем избыточность семейства ? на множестве ?, беря верхнюю грань #(?, S): Rib ?) = sup/?(?, S). C.27) Избыточность наилучшего семейства кодовых отображений, зависящих от выборки длины L, равна нижней грани /?(?, ?) по всевозможным семействам ?= {fw}t где w — слово из BL : Rl (?) - inf R (?, ?)· C.28) Если в нашем распоряжении нет никакой выборки, т. е. L = 0, то возвращаемся к уже рассмотренному в § 3.2 случаю универсального кодирования, т. е. /??(?) =#(?). Задача адаптивного кодирования состоит в построении такого семейства отображений ?, для которого избыточность /?(?, ?) равна асимптотически наилучшей возможной, т. е. Rl (?). Утверждение 3.3. Пусть ? — множество источников Бернулли, порождающих слова из Впу я->оо, RL (?) — избыточность наилучшего кодирования на основе выборки длины L, L->oo. Тогда ЯьОЗ) ^Ji=Ll-log T+f""*'00^ где 0A) равномерно ограничено на ?. Избыточность кода г*={/й. ? /:ти ? = г к*я,(ш)+r/sи? равна асимптотически Rl (?). Доказательство. Докажем вначале верхнюю оценку для Rl (?). Оценим избыточность кода /1/2, который ставит в соответствие слову а при выборке w слово длины [—log? —*Ps(aI· Выполнение неравенства Крафта для этого кода очевидно. Ис- 67
пользуя соотношения C.18) и C.21), а также ps(o)ps(w) = ps(aw) получаем формулу Г - log Et (wy+i72Ps (a)  = (я + L) /=" (aw) - LF(w) + I L -|- I С помощью C.29) находим из определений C.25) — C.28) /?ьахс + —-—log -Щ7Р+ + sup 2 (p5(a)/'s(w)(« + L)F(aTOI-L/:-(ze»)— //E)).C.30) Из леммы 3.2 находим: 2 ps(a)ps(w)(L-\-n)F(aw) = (L-\-n)H(S) + 0(\), a,w, \ а \ =n, \ w I =L C.31) 2 Pala)P8(w)LF(w)~Yf(S)L + 0(l). C.32) Здесь 0A)—величины, равномерно ограниченные на ?. Учитывая равенства C.31) и C.32), получаем из C.30) Rl (?) < —— log — l· с. 2J L + 1 что и составляет верхнюю оценку утверждения. Для получения нижней оценки воспользуемся тем, что верхняя грань функции не меньше ее среднего значения: #LB) = infsup/?(cpf 5)>1???-/?(?. S). C.33) Теперь воспользуемся в C.33) определениями C.25) и C.26), а также формулой C.18): *L(E)>inf 2 LVe(») ? ^,? ? X /fc (a) I fw (a) | - ?-// (S). C.34) Слова fw(fl) образуют префиксный код. Как следует из § 2.4, сумма по словам а, \а\—п примет свое минимальное значение, если длины слов этого кода равны минус логарифмам коэффициентов, с которыми они входят в сумму, т. е. при I fw(a) I = - log Я w +r>/?s (a). C.35) 68
/о оо?ПеРЬ ОСТаетсЯ' кж и nP« выводе верхней оценки, преобразовать C 35) в (о Я) и воспользоваться равенствами C.31) и C.32). В результате получим из C.34) RLG)> bg-j-^ + C. Заметим в заключение, что константа С в нижней оценке неотрицательна. Действительно, из C.25)-C.27) ясно, что избыточность /?(<р, ?) не меньше, чем избыточность любого конкретного источника 5' с несогласованными вероятностями. А эта последняя (в расчете на слово длины п) не меньше С, как следует из утверждения 2.12. В случае одного конкретнюго источника имеем /i=const, L->oo. Утверждение 3.3 доказано. Из утверждения 3.3 следует, что если построить код, имея в своем распоряжении выборку длины L, то нет смысла брать L много больше, чем длина ? кодируемого слова. Действительно, при L=n #?(?)=0A). Но как бы ни увеличивать длину L, /?L (Е)^С>0, т. е. Rl (?) существенно не уменьшается при этом. Полагая в утверждении 3.3 L=0, получаем новое доказательство утверждения 3.2. Впервые задача адаптивного, или зависящего от выборки, кодирования была рассмотрена в 1968 г. в [23]. Затем она изучалась в [24, 67, 78]. Следует заметить, что здесь строим код fw непосредственно по выборке w. Если же, как это предлагается, например, в [78] сначала по w находить оценку для неизвестных вероятностей, с которыми порождаются буквы, и лишь затем строить код, то он будет уступать по качеству коду утверждения 3.3. Адаптивное кодирование потоков Пуассона изучалось В. К. Трофимовым [46] .и Ю. М. Штарьковым [61]. § 3.4. МОНОТОННЫЕ ИСТОЧНИКИ Рассмотрим следующий частный случай общей ситуации, изучавшейся в § 3.1. Будем считать, что задано некоторое множество источников ?, имеющих общий алфавит А—{Аи ... ..., Ak}9 причем для любого источника S^2 ps(Ai)^.... ^.ps{Ah). Такое множество ? называется классом монотонных источников. Другими словами, если S&S, то известна упорядоченность букв S по вероятности, хотя и не известны точные значения этих вероятностей. Оказывается, что одно лишь знание этой упорядоченности позволяет существенно уменьшить избыточность кодирования по сравнению со случаем полного незнания вероятностей. Обозначим через t4 А-мерный вектор, у которого i первых координат равны 1/i, /==1, ..., k, а остальные равны нулю. Так, t! = = A, 0, ..., 0), t2=(l/2, 1/2, 0, ..., 0). Источник S, как обычно, отождествляем с вектором (Ps(Ai), .·., Ps(Ak))- Лемма 3.3. Множество ? монотонных источников, порождающих k букв, &>»1, является выпуклой оболочкой векторов t1, t2,... .. th ... ·. . 69
Доказательство. Пусть S—(Si, ..., Sh) — произвольный вектор из множества ?. Положим yi = i(Si—Si+i), i=l, ..., k—1; yh^=hSk. Тогда в силу определения множества ? все числа у% неотрица* k tt тельны. Как нетрудно проверить, ^ ?^ = ^\S? —1. k Далее ? Vi^^S. Но это и означает, что ? является выпук- лой оболочкой векторов t1, ..., tk и лемма доказана. Утверждение 3.4 [38]. Пусть ? — множество монотонных источников, /?(?) — избыточность универсального кодирования этого множества. Тогда k ? / ? \/-? Si ' <1, а при k—* /?(I)<log(l+log*)+l, или /?BD~ log log &, Оптимальным с точностью до аддитивной единицы является код' /, для которого 1/(ЛI = Г-1од (??'^?)''2^^I, \/(At) | <: logi + log(l+ log*) 4-2= log/+ log log k + О A). Доказательство. Избыточность R (?) универсального кодирования определим в соответствии с утверждением 3.1. Нужно найти пропускную способность канала, входами которого являются истошики 5^?, выходами — буквы алфавита А, а переходные вероятности равны ps{A). В данном случае эту пропускную способность удается вычислить потому, что множество является многогранником, а избыточность /?(/, S) кода / на источнике 5 выпукла по S: /?(/, S) = 2 5«·<1?^5«+/<¦>· Следовательно, своего максимума i?(f, S) может достигать лишь в вершинах многогранника ?. Поэтому при построении канала достаточно ограничиться лишь этими вершинами, опустив внутренние точки ?. Но вершинами ? в силу леммы 3.3 являются точки t1, ..., tfe. Итак, рассмотрим канал, входами которого являются точки t\ ..., tk, вы* ходами — буквы Л, переходными вероятностями — ps(A). Пусть Q=(#i, ..* 70
..., Qh) -— некоторое распределение вероятностей на входных векторах t\ ..., t*. flp« этом вероятность появления буквы Лг на выхоие k Pt= ? яз*[> C.36) где Vi равно t-й координате вектора V, 1<?, /</г. Очевидно, k ???=1· C.37) Согласно приведенной в § 3.1 теореме 4.5 из [10] нужно найти такое число С и такое распределение Q, что для любого входного вектора информация между ним и выходом равняется С: IQ (V\ A)=J?ti( log t{ - log Pl) = С C.38) Векторы ft найдены в лемме 3.3. Система уравнений C.38) является линейной относительно (logpi, ..., \ogPk). Из .нее выражаем вектор ? через константу С. Затем из C.36) находим вектор Q и из нормирующего условия C.37) саму константу С — пропускную способность канала. В результате получаем: С = log ? — ( 1 - —V ; ^ = 2^A-1)^/^ I м ? \ ? J \ C.39) 4i = Pi—Pi-\\ Pjfe+i = 0, t = 1,..., ^- J 1 ( 1 \?-? Из монотонности функций — и I 1+ следует, что определенные C.39) i \ i—1 / ч ла #г положительны, ?=1, ..., ?. Следовательно, на распределении Q дейст- в тельно достигается пропускная способность канала. Утверждение 3.4 дока- з но. Префиксные коды, построенные для множеств монотонных источников согласно утверждению 3.4, изображены на рис. 3.1. Приведем заимствованный из [89] пример использования утверждения 3.4 для построения определителя родов стрекоз. Определители вида растений и животных строятся обычно по Дихотомическому принципу, и им соответствуют бинарные деревья. Смотрим, обладает ли идентифицируемый объект некоторым признаком. Если да, то идем к правому, а если нет, то к левому сыну узла дерева. Таким образом, каждый такой определитель эквивалентен префиксному коду, как это описано в § 2.1. На рис. 3.2 изображен определитель родов стрекоз подсемейства Libellulinae [4]. Известно, что наиболее многочисленным в Сибири является род Sympetrum F). Далее в порядке убывания численности роды следуют так: 1^2^41^3^5. Разумеется, вероятности появления Стрекоз этих родов неизвестны. Поэтому приложимо утверждение 71
Рис. 3.1. Кодовые деревья для монотонных источников с числом букв не более 9 3.4: вероятности появления родов неизвестны, но известен порядок их убывания. Возьмем изображенное на рис. 3.1 кодовое дерево с шестью листьями, построенное согласно этому утверждению. Тогда род 5 (Neurotemis) потребует четыре атрибута дл^ идентификации, так же как и род 6, роды 3 и 4 потребуют по три атрибута, род 2 — два и род 1 — один атрибут. Чтобы сравнить два определителя — из [4] и построенный согласно утверждению 3.4 —- были взяты результаты одной из экспедиций Б. Ф. Белышева, описанные им в [5]. Во время реального фаунистического обследования в сачок попалось 226 стрекоз Libellulinae, 146 из которых относятся к роду 6, 69 — к роду 1, 5 — к роду 2, 6 — к роду 3. Общее число атрибутов, которые необходимо изучить для идентификации этой коллекции согласно определителю рис. 3.2, равно 146x5 + 69x2+5x3 + 6X4 = 907, тог- 72 Рис. 3.2. Определитель родов стрекоз подсемейства Libellulinae. Примечание. Номером / обозначен род Len- coifhinia; 2 — Libellula; 3 — Pantala; 4 — Orthe- tium; 5 — Neurotemis; 6 — Sympetrum. Символом ? обо f чен атрибут «последняя жилка крыла полная», аг—«в вершине секторов имеется стержень» и т. д.
да как при использовании определителя, построенного согласно утверждению 3.4, это число уменьшается до 146X1+69X2 + 5X4+] + 6X4-328. § 3.5. КОДИРОВАНИЕ КЛАССОВ КОМБИНАТОРНЫХ ИСТОЧНИКОВ Рассмотрим ту же задачу, что и в § 3.1, но применительно к комбинаторным источникам. Будем считать, что нам дано некоторое множество ? = {5} комбинаторных источников. Каждый источник 5 является подмножеством некоторого множества А. Если А — конечное множество, то .избыточностью кодирования f .на S называется число К(/, 5) = sup|/(jt) 1-//E), если же А — метрическое пространство, то ?-избыточностью / называется /U/, S) = sup|/(*)| -//.*(S). при этом / ставит ,в соответствие элементу x^S двоичный код f{x), по которому ? может быть восстановлен с точностью до ?, ?>0. Кроме того, ?-избыточностью отображения f на ? называется число Rjft V) = sup/?.(/. 5), а избыточностью оптимального для множества ? кодирования /?.d) = infR.(/. ?). f где f — префиксный код. Подобным же образом определяются /?(/, ?) и /?(?), если А — конечное множество. Все эти определения совершенно аналогичны тем, которые были даны в § 3.1. Если А — конечное множество, то для каждого дгеЛ определим числа *>(*) = min|S| , ?= 2 (?(?))-1. C.40) *gS a, a^A Найдем на А распределение вероятностей р, полагая p(x) — (v(x)$)-1. Очевидно, ? р{х) = 1. Построим для распределения ? код Шен- xes нона. Полученный код f назовем кодом Рябко для семейства ?. Если А — компактное метрическое пространство, то код Рябко определяется несколько иначе. При заданном ?>0 полагаем, ??? ?(?) = ??? Не (S). Для г = 0, ..., \Не (А)\ определяем множе- ства Ф<э ??={?:[?(?)\=?}. На каждом из множеств Ф* строим 73
минимальную ?-сеть, элементу ? которой приписываем вероятность р (jc) = 2-1"?, где нормирующий множитель ? ==¦ V 2 ?( i)W. /«О Нетрудно видеть, что так действительно задано распределение вероятностей на объединении ?-сетей всех множеств Ф*. Для этого распределения строим код Шеннона. Очевидно, если g — элемент ?-сети для Фг·, то /(g) < logP + i + 1. C.41) Чтобы найти код Рябко элемента дгеЛ, вначале найдем по ? множество ??, ?~?(?), затем найдем в Фг· ближайший к ? элемент ?-сети. Определенный выше код этого элемента и называется кодом Рябко элемента х. Утверждение 3.5 [40]. Пусть ? — семейство комбинаторных источников E={S}, U S = A. Тогда оптимальным для семейства ? с точностью до достоянного слагаемого служит код Рябко. Избыточность наилучшего префиксного кода J?(E) равна log ?±1, если А — конечное множество. Если А — компактное множество, то logp^i#8 (?)^????—2. Доказательство. Рассмотрим случай компактного множества А (случай конечного Л рассматривается аналогично). Если [f(x)j = = /, то минимальная по 5^? длина двоичного кода х, по которому x^S восстанавливается с точностью до ?, равна /. Код Рябко лишь на log ?+1 превосходит эту величину. Значит, его избыточность не превышает log ?+1 ш верхняя оценка установлена. Пусть теперь / — произвольное кодирование. Положим ?/== U Ф/э / = 0, ..., L#.(A)J. Из определения множеств Фг, ?* и числа Rt>(f, ?) ясно, что если слово w является кодом некоторого ?^??, то Поскольку f — префиксный код, то выполнено неравенство Крафта 22-»«? <1, C.43) W где сумма берется по всем словам ш, являющимся кодами слов А. И (?) Число слов, являющихся кодами элементов ?^??, равно 2 ? / . Не бо- Н (?) лее 2 ? i ел об могут служить одновременно кодами и слова ?^??, и слова |/??{-?. Учитывая этот факт и C.42), получаем из C.43) LHe {A) J C.44) 74
03 {3.44) легко находим, что R. U. ?) > . LHe(A)J 1 - 2"е (^)-1 4 ? Теперь остается только заметить, что Н% (?*)>#? (Фг), t—О, т. е. получена нижняя оценка утверждения 3.5. C.45) Приведем несколько примеров применения утверждения 3.5, Первый из них относится к построению определителей видов растений или животных, которыми уже занимались в предыдущем параграфе. Но там считалось, что подлежащие классификации объекты упорядочены по частоте. Теперь же рассмотрим ситуации, когда и эта упорядоченность неизвестна. Считаем, что имеются множество А объектов и семейство ? подмножеств А. Необходимо построить такой определитель /, чтобы максимум его избыточности \R(fy S) noSe=X был минимальным. Рассмотрим опубликованный в [85] реальный пример, когда А — множество муравьев подрода Serviformica. Это семейство распространено по всей территории СССР, однако разные его виды обитают в разных природных зонах. В табл. 3.1 для каждого из 11 видов этого поирода указано, в какой из пяти зон СССР он обитает. Таблица 3.1 Распределение видов подрода Serviformica по территории СССР ( + вид встречается) се 1? as Номер 1 2 3 4 5 6 7 8 9 10 11 Вид Fusca Lemani Picla Gagates Koslovi Cinerea Subpilosa Cunguinea Rubifarbis Gagates Uralensis X >, — — + — — — — — — — ? + + + + + + + + + ? С ? ?* ? ? ? ? + + — — + + + + + л с cu ? — + — — + + + + — + к 3 ? ? >, С ¦— — — — — + + + — — Число признаков для идентификации Определитель рис. 3.2 4 3 4 3 4 4 4 3 3 4 3 Определитель рис. j.3 7 7 4 6 6 2 4 5 5 6 1 Таблица составлена на основе данных, представленных новосибирским мирмекологом Ж. И. Резниковой. В настоящее время для идентификации муравьев этого подрода используется определитель из [15], изображенный на рис. 3.3. Какие-либо данные о частотах встречаемости муравьев неизвестны, да и трудно их ожидать, учитывая обширность территории 75
10 Рис. 3.3. Определитель муразьев стодрода Serviformica В 1 ? 11 в Советского Союза и переменчивость климата. Построим новый определитель с почти минимальной избыточностью на основе утверждения 3.5. Множество А состоит здесь из пяти подмножеств: обитателей тундры, леса, лесостепи, степи и пустыни. Найдем для каждого из 11 видов мощность ? (х) наименьшего содержащего его подмножества. Получим следующий набор чисел: G, 9, 6, 1, 9, 6, 3, 3, 3, 7, 6). Затем вычислим $= ? ?(?)~{ и вероятности ? р(х) = (?(?)$)~?. Для этих вероятностей строим код Шеннона и для него—дерево. Следует сказать, что по этому дереву специалисту предстоит подбирать соответствующие атрибуты для определителя. Поскольку выбор атрибутов не в нашей власти, то окончательно построенный определитель слегка отличается от дерева для кода Шеннона. Этот определитель изображен на рис. 3.4. Определители, показанные на рис. 3.3 и 3.4, были сравнены на коллекциях муравьев Ж. И. Резниковой. Оказалось, что среднее число признаков, необходимое для идентификации, существенно уменьшается при использовании определителя рис. 3.4. В качестве другого примера рассмотрим кодирование точек из отрезка, верхняя граница которого неизвестна, но не превышает некоторого числа а>0. Здесь множеством А является отрезок [О, #], множество ? состоит из всевозможных отрезков 5= [О, S], Рис. 3.4. Определитель муравьев подрода Serviformica, построенный на основе кода Рябко 76
5<?. Зададим ?>0 и обозначим через ?* отрезок [2%, 2?+1?], ?~~ -1.....( log-J]. Код f, избыточность которого на ? минимальна, состоит из двух частей: номера отрезка аг·, содержащего х, и номера ближайшей к ? точки ?-сети внутри щ. Номер отрезка а* содержит не более log log—бит. Номер же точки ?-сети содержит log——^ 2? 2е ???—1 бит, где |аг|—длина отрезка аг·. Избыточность Ra (/, ?) не превосходит в этом случае log log 1-2 бит. Если просто за- 2? нумеровать все точки ?-сети словами длины 1°?^т I» т0 избыточность равна log—1-0A), т. е. значительно больше, чем у ? кода /. Заметим, что вместо кода Рябко здесь можно использовать и код Левенштейна, однако его избыточность при не слишком больших а превзойдет избыточность кода Рябко. В заключение отметим, что код Рябко может быть использован для построения адаптивных систем сжатия непрерывных функций. Предположим, что имеется семейство ? источников F(?, ?, В), введенных в § 1.2. Это семейство может состоять из всех пространств, у которых число В пробегает некоторый интервал [О, Ь], &>0, или же число производных ? пробегает некоторый интервал [О, Р], Р>0. Иными словами, верхняя грань производных В или степень гладкости ? неизвестны. Код Рябко позволяет сжимать сигналы почти так же, как если бы эти параметры были известны заранее. Делается это так, как и в случае интервала с неизвестным концом [40]. Аналогично коду отрезка с неизвестной границей устроен код для точек куба с неизвестной длиной ребра. Пусть нужно кодировать целочисленные точки n-мерного куба, о длине ребра которого известно лишь, что оно не превышает некоторого целого числа А. Код n-мерной точки х=(хи...,хп) состоит из двух частей, префикса и суффикса. Префиксом является двоичная запись числа max xi9 на которую расходуется Г log Л J-И двоичных раз- рядов. Далее идут двоичные записи каждой из ? координат вектора х, причем длина любого из них равна Г" log max я* ?+ 1. Ска- жем, если А = 32, то кодом вектора A, 3, 4, 8) будет 001000 0001 ООН 0100 1000 Этот код положен в основу системы сжатия телефонных разговоров, которая разрабатывается Б. Я- Рябко и В. Р. Звонкови- чем в лаборатории кодирования речи Новосибирского электрического института связи. Телефонный разговор квантуется с частотой 8 кГц и требует 8 бит на отсчет. Используется система квантования, отвечающая международному стандарту и дающая вы- 77
сокое качество воспроизведения, которое оценивается экспертами 4,7... 4,9 по пятибалльной шкале. Квантованный сигнал обладает остаточной избыточностью. По оценкам энтропия его равна в среднем около 0,45 на двоичный знак. Энтропия существенно меняется на протяжении разговора и для разных типов разговоров. Скажем, для пауз она приближается к нулю, меняется при переходе от хМужского голоса к женскому и от одного абонента к другому. Кодирование позволяет существенно уменьшить избыточность, никак не изменяя качества. Код является адаптивным, он учитывает особенности абонентов. Для кодирования выбирается блок, состоящий из 16 отсчетов по 8 бит каждый. Находятся минимальное хтгп и максимальное Хтах значения отсчетов и их разность хша%—х-ты. Код состоит из записи числа ? = flog(xmax—Xmin)], на которую расходуется 3 бита, записи Хтгп, на которую расходуется 8 бит, и 16 записей разностей Хг—Xmin- Каждая из этих 16 записей имеет длину б, так что общая длина кода равна 3+8+166=11 + 166. Если 16 отсчетов близки друг к другу, то длина кода оказывается небольшой, а если разность Хтах—Xmin велика, то и код удлиняется. Оказывается, что такой код требует около 0,55 бит на двоичный знак исходного сообщения, что достаточно близко к энтропии. Такое кодирование предполагается применить в междугородной или спутниковой связи. Кодируются одновременно от 32 до 128 раз* говоров. Код каждого разговора имеет переменную длину. Однако суммарная длина кодов всех разговоров не очень сильно флуктуирует во времени. § 3.6. УНИВЕРСАЛЬНОЕ КОДИРОВАНИЕ СТАЦИОНАРНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ Посмотрим, как выглядят основные понятия теории универсального кодирования в применении к стационарным источникам. Пусть ? — некоторое множество стационарных источников, ? = {5}, причем в2 могут входить как комбинаторные, так и вероятностные источники. Все источники имеют один и тот же алфавит А. С другой стороны, пусть F={fu ... ,fn, -}—некоторое семейство кодовых отображений, причем fi — префиксное, блочное отображение с длиной блока /, т. е. U отображает А\ /=1, 2,..., в двоичные слова. Стоимость (в пересчете на букву) отображения fi на источнике S определяется как С (/„ S) = — 2 \f(x)\P (х), C.46) i ?, \? ? =/ если S — вероятностный источник, и как C(fh S)^— max I /(*) I , C.47) I jr. |?|=? 78
если S — источник комбинаторный. Избыточность отображения fi на S /?(/,, 5) = C(/If S)-H(S). C.48) Следуя Дэвиссону [69], назовем семейство F слабо универсальным для множества ?, если lim/?(/,-, S) =0 для всякого S^E, т. е. последовательность {#(/г, S)} сходится на ?. Если же последовательность {R(fi, S)} сходится на ? равномерно, то семейство F называется сильно универсальным. В этом случае limsup,R(ft, ?-»?? sez S)=0. В следующем утверждении 3.6 основную роль будет играть квазиэнтропийный код из утверждения 3.2. Этот код слову а в алфавите В ставит в соответствие двоичное слово, длина которого \fi(a)\ = \a\F(a)+№=± \og\a\ A+оA)) при условии i?f -+Q 2 \а\ (см. замечание к утверждению 3.2). Здесь квазиэнтропия F(a) определена равенством C.11). Для произвольного натурального числа N положим /w = m(.V) = r log^V-2 log log TV]. C.49) Слово ? длины N в алфавите Л, общем для источников из ?, разобьем на подслова длины т. Последнее подслово, которое может оказаться короче, дополним до длины ту повторяя первую букву алфавита А. Будем рассматривать слова длины т как бук- вы алфавита Ат, а слово ? — как слово длины —I в алфавите т I Ат. Построим для этого слова квазиэнтропийный код, который обозначим /jv(*). Его длина /n(x) N т F(x)+ -1^ log —A +0A)). C3.50) 2 т I R I Здесь |?| = |Л|т, и условие Нт —- =0 выполнено в силу C.49). N->oo | X J Семейство отображений F={fi, ..., /jv, ...}, где /V определено выше, назовем квазиэнтропийным семейством. Составляющие это семейство отображения почти оптимальны, как это видно из следующей леммы. Лемма 3.4. Пусть некоторое слово ? в алфавите В кодируется побуквенно префиксным кодом, т. е. каждое вхождение любой буквы Ь^В в слово ? заменяется словом /(b). Тогда \f(x)\^ ^\x\F(x), rjieF(x) —квазиэнтропия слова х. Доказательство. Поскольку / — побуквенное отображение, то ь&в I х I где гь(х) — *шсло вхождений буквы b в слово х, Ь^В. Поскольку 79
код f—префиксный, то для него выполнено неравенство Крафта V 2~i/wi <L C.52) Минимум суммы, стоящей в правой части C.51), по всевозможным префиксным кодам / равен согласно утверждению 2.8 I ?-ев Ul 1*1/ и лемма 3.4 доказана. Утверждение 3.6. Квазиэнтропийное семейство кодов слабо универсально для множества всех стационарных источников. Если для некоторого множества ? существует сильно универсальное семейство, то и квазиэнтропийное семейство будет сильно универсальным для ?. Доказательство. 1. Слабая универсальность. Пусть 5 — произвольный стационарный, вероятностный или комбинаторный источник и ?>0. Как это следует из утверждения 2.11, существует такое число т(е)> что для всякого т>т(ъ) найдется отображение фт, избыточность которого на S не превышает ?/2: Ж?«. S)<e/2. C.53) Выберем теперь натуральное N так, что определяемое формулой C.49) число m(N) превосходит т(г). Пусть ?— слово в алфавите Л, |#|=Л/" и В— алфавит, буквами которого являются слова Ату m=m(N). Рассматривая ? как слово в алфавите В, в силу леммы 3.4 имеем F{x), C.54) где F(x)—квазиэнтропия ? в В. Сравнивая C.54) с определением квазиэнтропийного кода C.50), находим, что \ А \ т ? кг ? /? (?) I < ? ?„ (x) 1 + -1^1? log -i- . C.55) 2 m Поскольку C.55) выполняется для всех слов х, | лг} = iV, то соотношение, аналогичное C.55), выполняется и для пересчитанных на одну входную букву избыточностей отображений <рт и fN; ? А I т 1 Л/ R(/n, S)<R(?m9 S) + -1^LL L log il-(l+o(l)). C.56) 2N m Поскольку т выбирается по формуле C.49), второе слагаемое в C.56) стремится к нулю при N-^oo и лри достаточно больших N будет меньше ?/2. Для таких N в силу C.53) получаем /?(/W, 5)<?. Но это означает, что lim/?(/>, S)=0, т. е. семейство F N->oo слабо универсально. 80 9т (X) I > /V т
2. Сильная универсальность. Пусть ? — множество, для которого существует сильно универсальный код, т. е. для всякого ?>0 найдется блочный код срт, так что \R{(pm, S)<e/2 для всех SeE. Возьмем теперь квазиэнтропийное отображение /W, построенное для ц)т в пункте 1 доказательства. Для него справедлива оценка C.56). Второе слагаемое в C.56) не зависит от S, поэтому при достаточно больших N оно меньше ?/2 для всех 5^2. Это значит, что семейство jF сильно универсально для ?. Теорема доказана. Теорема о существовании слабо универсального семейства для класса вероятностных стационарных источников доказана В. Ф. Бабкиным и Ю. М. Штарьковым в [95]. Следствие 3.1. Для существования сильно универсального на множестве ? кода необходимо и достаточно, чтобы энтропия порядка ? на букву сходилась к энтропии источника равномерно на на ? lim sup — tfiS'V- VS'O-#(S)|=o. ? Доказательство. 1. Пусть f — блочное с длиной блока га кодирование, для которого sup/?(f, 5)<?, т. е. для любого SeE С(/, S)<H{S) + e. C.57) В то же время утверждения 1.9 и 2.8 дают неравенство С(/. 5)> — H(Sl V- V S«)^H(S). C.58) ? Из C.57), C.58) и следует необходимость следствия 3.1. 2. Пусть теперь, наоборот, дано, что —H{Sl\/ ... \/Sn) схо- п дится равномерно к #(S), т. е. для любого ?>0 найдется такое т(е), что при т>га(е) и для любого S^2 — H(Sl V ... V Sm) — H(S) < ?/2. C.59) m Рассмотрим квазиэнтропийное отображение /#, построенное по т(г) в утверждении 3.6. Для любого источника S обозначим через грт код Шеннона с длиной блока т. Тогда С (?Я|, 5) - — Я (S1 V ... V 5^)< — . C.60) m m Из C.59), C.60) и формулы C.55) получим е 1 I 4 I ю 1 А/ C(fNt S)<H(S)+-+ — +-^~ Llog—. C.61) 2 ?? 2 m Теперь, выбирая N достаточно большим, видим, что /?(/д-, S) = -C(fx, S)—H(S)<CBy т. е. квазиэнтропийное семейство F сильно Универсально для ?. 81
Следствие 3.2. Пусть ? — компактное множество в метрике относительно которой функции H(S) и H(SX\/ ... \/Sn) непрерыв ны для всех 5 и п. Тогда для ? существует сильно универсально семейство кодов. Доказательство. Непрерывные на ? функции —H(Sl\J ? ...\/Sn) сходятся к непрерывной на ? функции H(S) монотонн} в силу утверждения 1.9. Значит, по теореме Дини [49] эта сходи мость будет равномерной и можно применить только что доказав ное следствие 3.1, из которого и вытекает утверждение следст вия 3.2. Избыточность /??(?) наилучшего с длиной блока ? кодирова ния для множества ? определяется формулой /??(?) = inf sup Rn(\ ? ? ?), где inf берется по всем префиксным кодированиям с длино] блока п. Как установлено в следствии 3.2, для компактного ? число /??(?) определено. Оказывается, чем массивнее ?, т. е. чем больше его ?-энтропия #?(?), тем больше и /?„(?). В этом на правлении автором и В. К. Трофимовым установлено, что если ? — некоторое множество марковских источников порядка /, t^ ^0, то ? \ ? Здесь Нв (?)—?-энтропия ? как подмножества многомерног симплекса. Частными случаями этой формулы являются асимптс тические оценки избыточности источников Бернулли из § 3.2 полученные В. К. Трофимовым оценки избыточности марковски источников. Универсальный код слова и, \и\=п, в предположении, что порождено марковским источником порядка k, обозначен в § 3 через рь(и), А= 1,...,п. Рассмотрим для слова и последователь ность кодов Lev@)p0(^),..., Lev(n)pn(u), где Lev(k)—код Ле венштейна из § 2.2. Из построения кода Левенштейна ясно, что конкатенация Le\(k)oh(u) однозначно распадается на составляй; щие коды Lev(k) и р&(^)· Пусть k0 = k0(u)—то число, для к;ото рого длина слова Lev(k)pk(u), O^ko^n, достигает минимума Если имеем дело с марковским источником неизвестного порядка k, то избыточность на букву кода Lev(k0)pk (и) не превзойдет избыточности кода Lev(k)pk(u). Эта последняя лишь величина — |Lev(A)|^C/n отличается от избыточности кода р^, которая равна См—^- J. Таким образом, на множестве марковских источ ников любого порядка код «~^Lev(feo)pfe0 (u) асимптотически on тимален. Автор этого кода Б. Я. Рябко в [40] назвал его дважды универсальным. Используя данный код, можно отказаться от ап риорного знания не только вероятностных характеристик источни 82
ьа, но и его памяти (порядка марковской цепи). Кроме того, указанный код, как нетрудно видеть, слабо универсален на множестве стационарных источников. ГЛАВА 4. МЕТОДЫ ПОИСКА ИНФОРМАЦИИ § 4.1. ЛЕКСИКОГРАФИЧЕСКИЙ ПОИСК Равномерное кодирование источника является моделью поиска информации. Дискретный источник, как указывалось в 2.3, определяется некоторым конечным множеством S. Не ограничивая общности, считаем его состоящим из двоичных слов длины п, п>0. Метод поиска f ставит в соответствие слову (ключу) x^S его адрес f(x) в памяти. Простейшим из возможных методов поиска является поиск в неупорядоченной таблице. Слова множества S помещаются в память в некотором произвольном порядке, образуя там таблицу объема \S\-n бит. Чтобы найти адрес f(x) слова х, сравним ? последовательно с каждым из \S\ слов таблицы, что требует в худшем случае \S\ операций с «-битовыми словами. Информационной частью поисковой программы является упомянутая таблица, а операционная часть предписывает сравнивать слово ? со словами таблицы. Программная сложность равна \S\-n + C бит. 'Метод является сильным, т. е. он позволяет обнаружить отсутствие искомого слова. Ускорение поиска при сохранении программной сложности получается за счет предварительного лексикографического упорядочения слов 5. Запишем в памяти компьютера лексикографически упорядоченное множество 5. Отведем две специальные ячейки, в одной из которых записан начальный адрес образовавшейся таблицы, а в другой — конечный. Сравним слово ? с содержимым средней (или одной из двух средних) ячеек таблицы. Если ? совпадает с этим содержимым, то поиск окончен. Если ? лексикографически больше, то переходим к поиску в верхней половине таб- чицы, а если меньше — то в нижней. При этом заменим содержимое одной из ячеек, где хранились начальный и конечный адреса, на адрес средней ячейки. Эта процедура общеизвестна и описана, Например, в [20]. Иногда бывает целесообразно провести лишь несколько шагов Дихотомического поиска и перейти затем к другому виду поиска. Такой поиск удобно описывать с помощью деревьев. Множество ^ ставится в соответствие равномерному дереву ?, число листьев ILA@)| которого равно |S|, лекскографически минимальному Цементу S отвечает максимальный лист ?,..., f-му элементу — i-и -Ист ?, ?=1,..., \S\. Говорим, что поиск является р-шаговым, 0<? ^р< | log J S J J, если, получив слово xeS, алгоритм выдает ко- 83
рень того поддерева р-го этажа, которому принадлежит соотве ствующий ? лист дерева ?. Лемма 4.1. Программа, осуществляющая р-шаговый лексик< графический поиск во множестве слов S длины я, имеет длин п-2р + С, 0^р< L l°g|S| J. Время ее работы равно О(р) оперг ций с я-разрядными числами, С = const. Доказательство. Построим для множества S равномерное д< рево ?. Запишем в памяти компьютера таблицу объема п-2^ би состоящую из 2*> слов длины п. Для всех двоичных слов ш, соо ветствующих р-му этажу ?, т. е. |оу|=р, в ячейку с номере val w запишем максимальное из слов S, отвечающих листьям noj дерева А(ш) с корнем w. Программа имеет индексную ячейку которая вначале пуста, и ячейку г\ где записана длина слова, с< держащегося в ?. Как только содержимое ?' становится равно \ компьютер останавливается и на печать выдается содержимое Если же число в ?' меньше р, то сравниваем содержимое ячейки номером val(zOl... 1), |г01... 1|=р, с искомым числом xgS. ?? лагаем ? = 0, если первое из этих чисел меньше второго, а ина< ?=1. Прибавляем к ?' единицу, а к числу, хранящемуся в г, ??? писываем справа ? и продолжаем. Ясно, что, остановившись, ??? грамма выдает корень дерева, содержащего соответствующий лист ?. Ее длина равна длине таблицы плюс не зависящая от п. ? длина операционной части программы, а время работы рав! О(р) операций со словами S. Лемма доказана. § 4.2. ПОБУКВЕННЫЙ ПОИСК Поиск, ход которого зависит ог выбираемых в како то последовательности букв искомого слова, называется побу венным. Приведем формальное описание такого поиска. Оно зад ется деревом, вершины которого помечены номерами букв, подл жащих извлечению из слова. Пусть имеется бинарное дерево ?, каждая вершина ? ????? го помечена натуральным числом ?(?), причем для листа ?(?) = 0 и одна и та же пометка не встречается дважды ни на какс пути. Максимальное значение пометок дерева ? обозначим ?(? Бинарное слово w = W\,..., wn, |^|=?=?(?), определяет путь дереве ? по следующему правилу: находясь в вершине ? дереЕ| выбираем ?(?)-?) букву w и идем к левому сыну х, если эта бу ва равна 0, и к правому, если она равна 1. Начинать следует корня, а заканчивается этот путь в некотором листе. Обозначим через son (л:, 0) левого, а через son(A:, 1) право сына вершины х. Тогда определяемая словом w последовател ность х°у..., ?? вершин дерева ? находится следующим образо х0 — корень, ?? — лист, а х1 = son (a;'-1, wHxi-.]})f ?=1, ..., ?. D. Таким образом, помеченное дерево определяет отображение мй жества ??(?) двоичных слов длины ?(?) во множество сво! 84
устьев LOA, когда каждому слову w отвечает лист ??, согласно "D.1). Это отображение будем обозначать той же буквой ?, так что lw = ??. D.2) 5уквы слова w, которые не были использованы для нахождения листа Aw9 образуют слово r(w), называемое остатком. Чтобы получить r(w), следует вычеркнуть из w его v(x0)-K)f ..., ?(*?)-?> буквы. Если отображение, определяемое помеченным деревом ?, является биекцией некоторого словаря S, 5^??^?), на множество листьев L(A), то дерево ? называется поисковым для S. В табл. 4.1 приведен пример словаря, а на рис. 4.1 указано домеченное дерево ?, которое является для этого словаря поисковым. Рядом со словами словаря в табл. 4.1 указаны их остатки относительно ?. Отображение ? ставит в соответствие словам словаря S листья дерева ?. Отображение L, определенное в § 2.1, ставит в соответствие каждому листу его номер во множестве LA. Значит, композиция L ?? является биекцией словаря S на отрезок [О, \S\—1] натурального ряда. Лемма 4.2. Пусть ? — помеченное дерево, ^,(?)—максимальная из его пометок, |?|—число его вершин, L—нумерация его листьев. Тогда существует программа, вычисляющая отображение LoA множества слов ??(?) во множество листьев LA и имеющая длину О (| ? | log (j ? J ? (?)) бит. Доказательство. Занумеруем вершины дерева ? от 0 до |?|—1 и отождествим вершину с ее номером. Искомая программа состоит из таблиц следующих четырех отображений: 1) A;->-son(;c, 0). Таблица состоит из |?| слов длины [log|A| + + 1] (одно слово выбрано для обозначения 0). На месте соответствующем вершине х, стоит номер ее левого сына. 2) x-^son(A;, 1). Совершенно аналогично. 3) x-*v(x), где v(x) —пометка вершины х. Эта таблица состоит из |?| слов длиныГ 1оё(Я(Л) + 1) . Таблица 4.1 Словарь 5 и остатки его слов относительно дерева ?, изображенного на рис. 4.1 0 0 0 1 0 1 0 1 I 1 X 0 1 0 0 1 1 1 1 0 0 1 0 I 0 1 1 0 1 0 1 I 0 0 1 0 1 0 1 1 0 0 0 г (х) 0 0 0 1 1 0 1 85
Рис 4Л. Поисковое дерево для словаря табл. 4.1. Примечание. Пометка вершины — в кружке. Поддеревья ??, ?2, ?3 образуют pa - биение с базисом ?', номера вершин ?( — в квадратах. Вершины ?' занумерованы or О до 4 4) x-*L(x), если ?— лист, и х-^0, если ? — не лист. Иначе говоря, по номеру вершины ? в нумерации всех вершин ? находим ее номер в нумерации листьев. Таблица содержит |?| слов длины log|LA@)|. Суммируя длины всех таблиц, получаем оценку леммы для длины программы. Алгоритм вычисления числа LoAx работает следующим образом. Получая число ? и пользуясь первой, второй и третьей таблицами, находим по формулам D.1) и D.2) определяемый ? путь в дереве ?. Лист, лежащий на этом пути, и есть Ах. Теперь, пользуясь четвертой таблицей, находим номер этого листа в нумерации листьев и получаем Lkx. На рис. 4.2 изображено помеченное дерево. В табл. 4.2 приведены четыре таблицы, о которых идет речь в доказательстве лем- Таблица 4.2 Поисковые таблицы для дерева рис, 4.2 X 0 I 2 3 4 son (jc, 0) 1 0 3 0 0 son {?, 1) I 2 0 4 0 0 ? (?) 1 0 3 0 0 L(x) 0 0 0 1 2 Рис. 4.2. Помеченное дерево. Примечание. Пометки вершин и*' ходятся в кружках, вершины з*кГ мерованы от 0 до 4, листья от 0-Г" до 2 го слева направо 86
jvibi 4.2._Используя их для слова х—11101, находим путь: 0, 2, 4, Дх=4, LAx*=3. Описанный в лемме 4.2 поиск можно назвать одноступенчатым: все вершины дерева нумеруются, и поиск ведется во всем дереве. Укорочения программы можно добиться с помощью двухступенчатого поиска: добравшись до листьев некоторого дерева д', переходим в новые деревья и начинаем нумерацию сначала. Это сокращает длину номеров вершин. Пусть Р= {??,..., А|я|}—разбиение дерева ? (см. определение в 2.1). Составляющие ? деревья занумерованы монотонно, т. е. если х^Аи У^Аи /</, то х<Су. Для дерева, изображенного на рис. 4.1, деревья с корнями 1, 3 и 4 образуют разбиение. Обозначим через d=d(P, ?) максимальное число вершин в поддеревьях разбиения ? дерева ?. Лемма 4.3 (о двухступенчатом побуквенном поиске). Пусть Д — помеченное дерево с разбиением ?, А'— базис ?, ?(?) — максимальная из пометок ?, |?| —число его вершин, L — нумерация его листьев. Существует программа, вычисляющая отображение LoA и имеющая длину О(|??|log|?| + \A\\ogd-K(A)) бит. Доказательство. Пусть Р= {??,..., ? ? ? \ } — разбиение дерева ?, ?'—базис этого разбиения. Занумеруем вершины А' от 0 до \У\ — 1 и вершины А* от 0 до |А?:]—1, ?= 1,..., \Р\. Программа вычисления Lo ? состоит из пяти таблиц для А' и четырех таблиц для каждого дерева Аг·. Таблицы для деревьев ?* делаются в точном соответствии с леммой 4.2. Их общая длина составляет О (| ? | log (rf· ? (?))) бит. Первые три таблицы для базиса А' делаются таким же образом. Четвертая таблица опускается, а ее место занимают таблицы следующих двух отображений: а) листу ? базиса А' ставится в соответствие номер j(x) того поддерева разбиения Р, для которого ? является корнем. Если же ?—внутренняя вершина А', то jc-H2f. Таблица содержит |?'| слов длины log (| ? | + 1); б) отображения х^| LAi| + ... + | LAj^-i |, где ? — лист А', j(x) определено в a), |LAi| —число листьев в дереве A*, i=l,... ·¦·>./(*) —1> т· е* по вершине ? находим суммарное число листьев в деревьях Р, расположенных левее х. Таблица содержит |?? слов длин log??|. Очевидно, суммарная длина всех таблиц отвечает оценке леммы. Получив слово х, вначале движемся по дереву А7, как это было в лемме 4.2. Добравшись до листа А'х этого дерева, находим Номер j(A'x) того дерева из Р, для которого А'х является корнем. Это делается с помощью таблицы а). Теперь нужно перейти к таблицам, относящимся к дереву Aj, /=/(А'ш). Продолжаем двигаться по дереву Aj, пока не окажемся в его листе Ах. Номер ?-??? этого листа в нумерации всех листьев дерева, очевидно, ра- &ен | LAi | + ... + | LAj_i | + V {Aw). Здесь последнее слагаемое, Равное номеру листа Aw в дереве Aj, находится из соответствую-
Таблица 4.3 Поисковые таблицы для дерева рис. 4.1 Поддерево Д' ?? Да ?3 X 0 1 2 3 4 0 1 2 0 1 2 0 1 2 3 4 5 6 son (xt 0) 1 0 3 0 0 1 0 0 1 0 0 1 0 3 0 5 0 0 son (?, 1) ? {?) 2 0 4 0 0 2 0 0 2 0 0 2 0 4 0 6 0 0 1 2 3 5 2 2 0 0 5 0 0 2 0 4 0 5 0 0 /(^) 111^4 1+...+1LA/«i | 0 1 0 2 3 0 0 0 2 4 ??<<*) 0 0 0 0 1 0 0 0 1 0 2 3 щей таблицы для этого дерева. Сумма первых слагаемых содержится в таблице б). Таблицы для дерева, изображенного на рис. 4.1, приведены в табл. 4.3. Поддеревья ??, Дг и Аз, образующие разбиение Р, имеют корни 1, 3 и 4. Для слова л:= 11101, используя таблицы для ?', находим А'х=4, /=3, | ???| + | LA2| =4. Переходим к таблицам для Аз. Номером в ?3 листа Ах является Ь А номер этого листа в ? равен 1 +-1 LA\ | + j ?-?21 =5. § 4.3. НУМЕРАЦИОННЫЙ ПОИСК Нумерационный поиск является разновидностью побук- венного. Буквы нумеруемого слова извлекаются в порядке н% номеров: первая, вторая и т. д. Поэтому нет необходимости помечать вершины поискового дерева. Если ? — поисковое дерево для источника 5, Ах — лист, соответствующий слову х, |1А*;| -*" число листьев в поддереве ? с корнем х, то номер ? находится по формуле B.2): hx~xx | LA@) j + ...+-*Wi I LA(x1 ...л:|Дх,-1. 0) |. Необходимо составить таблицу, состоящую из |?| слов, каждое из них log|LA|-разрядное. Вершине хи ..., Хг при этом соответс^ 88
,вует число |ЬД(л;1...л;г_1, 0) |. Выбирая эти числа из таблицы и суммируя их по приведенной формуле, получаем номер слова х. При этом расход памяти равен |A|log|LA|. Если через п$(х\ — Хн) обозначить число слов, порождаемых S у\ имеющих в качестве префикса слово хх... Xk, то формулу B.2) можно переписать как _ ?-*? Lx - 2 Xins{xi ... ??-u 0)· D·3) Она легко обобщается на произвольный алфавит, состоящий из kf /^2, букв: Если дано некоторое число L, то для нахождения порожденного источником S слова х, номером которого является L, следует вначале сравнить L и ns(O). Если L>ns@), то полагаем Х\ = \ и заменяем L на L—ns@). В противном случае полагаем Xi = 0, число L оставляем без изменения. Далее находим Х2У сравнивая новое значение L с ns(x\> 0), и т. д. Приведем несколько примеров на применение нумерационной формулы B.2) к различным источникам. Все они заимствованы из [68]. Нумерация двоичных слов заданного веса. Источник S порождает двоичные слова длины /г>0, содержащие w единиц, 0<^<С <Сп. Здесь ns(xu .... xk-u 0) = Ся_/=! , поскольку ровно таким числом способов можно разместить оставлю ? шиеся w— ? Xj единиц на последних ?—k местах слова, \??.}?«?. 1=1 ^я. Формула для нахождения номера принимает вид k— 1 |jr| w~ "V, х i Например, при w = 3, п = 7 L A000101) = С36 + С\ + С]0 = 21; ГAП0000)-Сб + С5+С4 = 20+10 + 4 = 34. Заметим, что сама формула D.5) была известна и до работы Ковера. Например, она имеется в [34]. 89
Нумерация перестановок. Пусть 5 — множество перестановок чисел 1, ..., n, Lx — лексикографический номер перестановки д== = (^1, ..., Хп)· Для перестановки ? и числа i, 1\^л^я, обозначим через Гг число стоящих правее j-го элементов, которые меньше ??. Тогда формула D.4) примет вид ? Lx= "V rt(n — i)\ Нумерация монотонных функций. Через F(mf n) обозначим множество всех отображений из множества {0, ..., т} во множество {0, ..., п}у где га>0, п>0. Каждое такое отображение представляется словом длины т+\ в алфавите мощности п+1. Через Fi(m, n) обозначим множество всех монотонно неубывающих функций из F(m, ?), через F2{tny n) — множество строго монотонно возрастающих функций. Функцию f^F(m, n) назовем функцией распределения, если f(m)=n. Через Fz(mf ?) и F^(mt n) обозначим множество монотонно неубывающих и строго монотонных функций распределения из F(m> n) соответственно. Определим скачок щ в точке i для функции / равенством tii = f(i)—f(i— — 1), i=l, 2, ..., т. При i = m+l положим пт+\=п—f{tn). Для неубьивающих функций скачки неотрицательны, для строго монотонных — положительны. Для функций распределения nm+i=l. Мощности множеств Fk(tn, n), k=l, 2, 3, 4, равны соответственно числу целочисленных решений систем: т+\ k = 1: V tij — /г, fij > 0; т m + l k = 3:S nj = n+ 1, rij > 1; m Числа решений этих уравнений хорошо известны из комбинаторики. Они могут быть найдены, например, из [47]: | /ч(/и, п) | = С-и+11 | F2(m, ?) | = C«+ml | ^з (/я, л) | = C*+'lf | FA (м, п) | = С*. Заметим теперь, что число монотонных функций f^Fi{mt я), для которых f@), ..., /(A—1) фиксированы и f(k)>r, равно числу функций в Fi(m—kf n—r—1). Применим формулу D.4), чтобы сосчитать число функций в Fiy номер которых превосходит но- 90
^ер данной функции f. Вычитая полученное из общего числа |Л (т, л) | функций, получаем для номера функции / в Fk(m, n) ' т ?/) = I Fk(m, ?) - 1 - 2 I F*(m - '· n -/^ - ') I· /=0 Нумерация марковских источников. Пусть ? — двоичное слово, ?=??9 ···, Хп. Обозначим через v0o, voi, ???, vn число появлений соответствующих двухбуквенных слов в слове х. Ясно, что ??? = «-? _ — - = ? XiXi+u 0—1, 1=0, и аналогичные соотношения справедливы для остальных двухбуквенных слов. Вектор (???, ???, ???, ? ?) обозначим буквой ?, а множество всех двоичных слов, у которых числа появлений двухбуквенных слов определяются этим вектором,— Sv . Выведем формулу для подсчета номера слова в 5V . Обозначим через g(v) число слов в Sv, у которых первая буква равна 0. Заметим, что число элементов в Sv равно g(voi, v10, voo, vn) + +g(vio, voi, vn, voo), как легко видеть, заменяя 0 на 1 и 1 на 0. Для числа g(v) справедлива формула g(vou v10, v00, vn) = rev с**-1 ,, v + *10 Vll+V I если v01z=v10 или v01 = vl0+l, D.6) ,0 в других случаях. Действительно, если xeSv и Xi = 0, то в слове ? имеется vio+1 серий из 0 и voi серий из 1. Эт(и серии чередуются, начиная с серии нулей. Значит, либо ???=???, либо ?0?=??? + 1 в зависимости от ?????, будет ли слово ? кончаться серией единиц. Общее число нулей в ? равно vio+voo+?, а число единиц равно voi+??. Из уже цитированной книги [47] следует, что имеется Сг~1т-\ почо- жительных целых решений уравнений г\+ ... + гт=г9 где ru ...,г — длины серий нулей (единиц), г — общее число нулей (единиц). Следовательно, .имеется CviJ+voo способов выбрать .ненулевые длины серий нулей и Cv"+Vll_i способов выбрать ненулевые длины серий единиц. Перемножая эти числа, получаем равенство D.6) для g(v). Чтобы получить желаемую формулу для номера ? в Sv , заметим, что слово XkZh+u ···» zn будет допустимым продолжением слова xix2...Xk (т. е. ?? ...Xft2ft+i ...2nGSv ) в том и только том случае, ?сли v(Xk, Zk+i... zn) =v—?(??... ??). Отсюда следует, что номер L.t слова ? во множестве Sv равен ? Lx = V^(v- *(*, ...xk-u xk)). Рассмотрим для примера последовательность @, 1, 1,_0, 0, 1, 1, 0). Здесь ?(*) = (???, ???» ???, ??) = B, 2, 1, 2). Номер Lx этой последовательности во множестве S2 2,1,2 равен ^B,2,0,2) + ^^A,1,1,2) + ^^A, 1,-1, l) + x7g@,0,0,1) = = qq+cjc° +0 + 0=5. 9!
Вычисление номера слов для произвольного источника по формуле D.1) может потребовать запоминания всех чисел ns{xi..t ...Хг), /=1, ..., пу лгг = 0, 1. Ситуация упрощается для источников с конечным числом состояний, введенных в § 1.1. Такой источник определяется матрицей S, элемент Sij которой равен единице, если из /-го состояния источник может перейти в /-е, l^t, j^k. Обозначим через v*t· число слов длины i, / = 0, 1, ..., порождаемых источником S, исходя [из состояния ?, i=l, ..., k. При ? = 0 v°i=l, если i-e состояние заключительное, в противном случае v°f=0. Если ввести вектор Ni=(vit·, ..., ?*&), то нетрудно видеть, что N'^SN'-1, N' = SW°. D.7) Если у — /г-мерный вектор, а — натуральное число, то через ? (?, у) обозначим ?-ю координату вектора у. При а=0 полагаем ? (?, у)=0. Через S(x\„.Xi) обозначим состояние, в которое источник S перейдет из начального, огородив слово х\...хи t=0, 1, ..., п. Через Si(xu ..., ?? обозначим левого (младшего) брата состояния S(xu ..., ??. При этом следует считать, что вершины, являющиеся или левыми, или единственными сыновьями, или вовсе не имеющие отцов, не имеют и левых братьев. В этих обозначениях формула D.3) примет вид Ъс - J х% ? (Sl (хг ... ^), №-')· D.8) При не слишком большом числе состояний источника вычисления по формуле D.8) несложны, как показывает следующее утверждение. Утверждение 4.1. Пусть имеется источник с некоторым числом k состояний, порождающий бинарные слова длины л, п>\. Программа, находящая по слову ? его лексикографический номер, имеет длину Ck(n+\ogk). Время ее работы равно Ck. Доказательство. Программа проводит вычисления по формуле D.8). Занесем в память машины две таблицы, каждая из которых состоит из k слов по [log&] бит. В первой из них i-e слово является двоичным номером состояния, в которое источник перейдет из t-го, породив 0, а во второй — породив 1. Запишем также ^-битовый вектор №. С помощью этих таблиц для заданного слова ? вычисляем траекторию S(xi), ..., S(xi, ..., xn) и траекторию левых братьев S/(*i), ..., Si{xu ..., xn). Для нахождения левого брата S/(#i, ..., Хг) следует взять состояние S(xu —, **-i) и с помощью упомянутых таблиц найти 5(xi, ..., x%~u 0) и S(xi, ..., хгм> 1). Если эти два состояния различны, то Si(x\, ..., ?? ~S(xu ..., х^и 0), в противном случае Si(xu ..., x%)=0. На запись обоих травК' торий потребуется п слов по [log(fe+l)l бит (учитывается возможность появления 0). Составим подпрограмму вычисления N' по N'-*1 путем умножения N*-1 на S, t^n. Координаты вектора N* получаются путем сложения некоторых двух координат вектора N'~\ поэтом/ 92
?'?^2* и на запись вектора N' достаточно истратить k «слов по Согласно формуле D.8) берем хо и Si(xi9 ..., хп), вычисляем XnII(Si(x\, ..., хп), №). Находим N1, записываем этот вектор на место, ранее занимаемое №, и т. д. Суммируя расход памяти, получаем утверждение 4.1 [3]. Иногда бывает полезно использовать двухступенчатый метод вычисления нумератора: добравшись до некоторого этажа р, начинать счет сначала. Одной из первых работ, где лоиок прерывался, не дойдя до конца, была [18]. Здесь идея двухступенчатого поиска используем лля вычисления нумератора листьев равномерного дерева. Подходящий выбор параметра ? сделает этот метод проще одноступенчатого. Лемма 4.4, Пусть ? — равномерное дерево высоты h\ R и ?— некоторые числа, Q<Cp<R<Ch, Тогда существует программа вычисления отображения x-*~Lxf где |*|— Rt длина которой равна (log | ? (?) 1 + 1J* 2^1og-^>- + /? р^и Доказательство. Искомая программа состоит из двух таблиц. Первая состоит из 2^ [log|?@) |]-разрядных чисел. В ее ячейке с номером val(xi, ..., xv) записано число #i|LA@)| ...+ + ??\??(?\, ..., xP 0)|. Вторая таблица содержит 2R слов. В ее слове с номером val(xi, ..., xR) записано число хр i|LA(xi, ..., xP, 0) | + ... +xr\ LA (? , ..., xR ?, 0)|. Поскольку дерево ? является равномерным, то из A.1) вытекает, что для записи этого числа достаточно log ^ hR p разрядов. Суммируя длину этих таблиц (в битах), получаем утверждение леммы. Имеется еще один нумерационный алгоритм кодирования комбинаторных источников. Прежде всего поставим в соответствие источнику S его характеристический вектор, т. е. такой вектор длины 2 , \а1х-я координата которого равна 1, если x&S, и равна 0, если x^St \x\=n. Далее занумеруем все бинарные слова длины 2 , содержащие \S\ единиц, числами от 0 до С^п —1. I с I Длина номера асимптотически равна logC 2П\ что с учетом ус- лов 1я асимптотической нетривиальности источника (—~—->0 I рав о асимптотически \S\(n—logE|) бит. Эта длина асимптотически равна энтропии, и в этом отношении нумерационный алгоритм превосходит лексикографический и побуквенный алгоритмы. Чтобы найти номер слова ? в словаре 5, необходимо вначале Hai и характе исти ескии вектор оваря S, которь ? име ? длину 2??, пересчитать число един того вектора, распочоже шых левее val х-& по иции. Знач it, время работы и необходимая для вы слении па ять этого алгоритма эк поненциально велики, будучи равными 0B1). Этот алгоритм является сильным, поскольку позволяет обнаружить отсутствие слова в словаре. 93
§ 4.4. ХЕШИРОВАНИЕ. ИНДЕКС СКЛЕИВАНИЯ До сих пор речь шла об инъективных преобразованиях слово — адрес, когда разным словам ставятся в соответствие разные адреса в памяти компьютера. Однако на практике применяются и неинъективные преобразователи, называемые хеш-функциями. Здесь допускается, чтобы разные слова словаря S получали одинаковые адреса, т. е. чтобы происходили коллизии (склеивания). Одной из первых работ, где используется идея хеширования, была [17]. Множество слов словаря S, которые при отображении /: Еп~-^ -+Ет получат один и тот же адрес, т. е. множество {f~l(k)f\S}r называем кластером. Вектор i= i(/, S), координатами которого являются мощности кластеров, называется сигнатурой отображения f на словаре S: i = i(/, S) = (?0, ..., i^), ik= \f-l(k\ClS\% ? = 0,...,2^-1. D.9 При этом i(/, 5)|= 2 '*= |S|· D-W) ft=J Число >m. J(f,S)=-±- У i\~\ D.11) 5| fc='J называется индексом склеивания (неинъективности) отображения / на словаре 5. Если f является инъекцией, то /(f, S) принимает свое минимальное значение, равное 0. Если же / является «самым неинъективным» отображением, т.е. приписывает всем элементам S один -и тот же адрес, то /(/, S) принимает свое максимальное значение |S| — 1. Итак, индекс показывает, насколько далеко отстоит отображение от инъекхивного. Инъективные отображения, индекс которых равен 0, называются еще совершенными хеш-функциями. Отображения с ненулевым индексом следующим образом используются для размещения словаря в машинной памяти. Слова &-го кластера образуют в памяти компьютера список длины ik, k = 0, ..., 2m—1. Эти списки содержатся отдельно друг от друга. Чтобы разыскать первое слово k-ro описка, нужно затратить единицу времени, коль скоро располагаем номером f(x) самого списка. Для обнаружения второго слова списка затратим две единицы и т. д., всего 1 + ... + 4=4Х ? D+1)/2 единиц времени. Общее время на поиск всех слоз равно У *"*('*+1)/2, а среднее время t{f,S) = —— У ik{lk+^J· *=о 1 6 I * - о 94
Среднее время поиска и индекс связаны линейно: <tf,S) = y/(f,Sj+l. D.12) Итак, при хешировании вначале находим номер f(x) списка, которому принадлежит слово х> а затем разыскиваем ? в этом списке, затрачивая в среднем время t(f, S). Кодом слова ? следует считать f(x) в объединении с номером ? внутри описка. Расположение слов с одинаковым адресом в виде отдельных списков называется «методом цепочек» для разрешения коллизий. Существуют и другие методы организации 'памяти при использовании хеш-функций. Они описаны, например, в [20]. Хеш-функции могут быть использованы и для целей кодирования источника. Списки кластеров должны храниться на приемном и передающем концах. При появлении слова x^S передаются, во-первых, f(x), т. е. номер кластера, и, во-вторых, номер счова ? в этом кластере. Одна и та же хеш-функция может быть использована для кодирования нескольких источников. Преимущество такого метода — простота вычисления функции f. Методы хеширования весьма распространены в практике программирования. Для выбора хеш-функции пользуются методами [32]: квадратов, при котором слово (ключ) возводится в квадрат, извлекается несколько центральных цифр. После умножения на нормализующую константу получается адрес; деления чисел, который считается предпочтительным. Представленный в числовой форме ключ делится на число, близкое к объему таблицы. В нашем случае этот объем равен 2т. Рекомендуется, чтобы число, на которое производится деление, было или простым, или не содержало небольших множителей; сдвига, при .котором разряды ключа разбиваются на две части — старшие и младшие. Эти части сдвигаются относительно друг друга, чтобы число перекрывающихся разрядов соответствовало длине адреса. Цифры, содержащиеся в перекрытии, суммируются. Результат, после умножения на нормализующую константу, дает адрес; выделения разрядов, при котором выделяется несколько разрядов ключа, дающих в совокупности адрес. Можно предварительно представить ключ в системе счисления со специально подобранным основанием, В [32] рекомендуется основание 11; деления· полиномов, при котором цифры ключа рассматриваются как коэффициенты полинома. Производится деление этого полинома на некоторый специально подобранный полином. Остаток дает адрес. Эти методы хорошо себя зарекомендовати. И все же у них е ть один недостаток. Предлагаемая ими хеш-функция либо вовсе Не зависит от словаря, как в методе квадратов, либо зависимость эта является очень слабой и неопределенной, как во всех 95
остальных. Ни для одного из этих методов нельзя гарантировать, что построенная хеш-функция будет хороша. Для любого из них можно построить неудобные словари, такие, что хеш-функции будут их сильно склеивать. Разумеется, такие словаре возникали и на практике. Стали разрабатываться алгоритмы, которые для заданного словаря строят хеш-функцию, которая не очень сильно его склеивает, т. е. имеет на нем небольшой индекс. Один из первых алгоритмов такого рода содержится в [96]. Упомянем здесь интересные результаты Чанга и Ли [65]. Они рассматривают случай, когда словарь состоит из двухбуквенных слов, и ищут хеш-функцию в виде /(*)= d(xt) + С(х1)тойр(х2). Здесь ?? и Х2 — первая и вторая буквы х, a dy с и ? — функции, подбираемые с помощью разработанного авторами правила, опирающегося на китайскую теорему об остатках. Приведем их результаты для примеров, когда S состоит из названий 12 месяцев или же из 36 выделенных слов языка Паскаль. В первом примере надо выбрать вторую и третью буквы названия месяца, найти значения d, с и ? \??? табл. 4.4 и вычислить f(x). Например, для апреля выбираем ? и R: f{APRIL) = f(PR) = d(p) + с (p)modp(R) = 8+ 1 mod 3 = 9, во втором примере имеем дело с выделенными словами: array, and, begin, case, const, downto, do, div, end, else, function, file, for, goto, if, in, label, mod, nil, not, otherwise, of, or, procedure, program, packed, repeat, record, set, type, then, to, until, var, with, while. Следует выбрать первую и четвертую, а для более длинных слов — первую и последнюю буквы. Значения d, с и ? находятся вновь по таблице. Скажем, f(WHlLE)=f(WL) = d{W) + c(W)modp{L)== = 34+ 668 mod 23 = 35. Хеширование Чанга и Ли является совершенным с коэффициентом загрузки 1. Если Чанг и Ли имеют дело только с двухбуквенными словами, то Яшке [80] рассматривает общую ситуацию. Он показывает, что для любого словаря 5 существуют такие три константы С, D, ?, что отображение va\x~*[C: D-va\x+E\mod\S\ является совершенной хеш-функцией с коэффициентом загрузки 1. Эта функция инъективно отображает словарь S на множество [0, 1, ... .... |s|-i]. Для вычисления хеш-адреса по методу Яшке необходимо записать в памяти компьютера числа С, D и ?, а по методу Чангя и Ли — числа d, с и р. Эти числа оказываются весьма большими. Кроме того, процедура поиска этих чисел занимает довольно много времени. В гл. 6 опишем метод хеширования, свободный о? этих недостатков: объем программы хеширования и время ее по* 96
я CQ ^ >> (Q мечание ?. с >- ? > ? ?? с* ? си о ? 2 •J tf м К О о. ? Q и со < Коэффициент <л 00 t- ^?* со о •tt месяцев см Щ-щ см ~* *-ч СО 1—1 ?> »—» *~* V» см со см ел со ^ ?—( см со ^^ _-1 ~^ f- Ю <, Tt< со со со СМ со ?> <м 00 см со см см ^^ о см оо """, f^ СО "Ч ^ со »—* о оо ю со см о •хз Выделенные слова языка Паскаля ОО СО СО 1—1 ^м г- *¦"* t—1 ю __| ^ "* ^-И ~^ СО со СО со »-Н «•н «—1 *"¦* со со ^¦ч _ см N. ^н 268 СП ^ •—4 СО см ·—ч о со ю СЛ см I4* ** ? со t^. СО см со ч* СП f^ со _ ч* f^ см ю со СО ? ? *г ** сз а Я Ч о а ? ю' СО 1—J л ч «i » о ей с еб X 3 rt к ?9 о *5 V) X 2 S S о ч о 1=С 2 и К ю 0) =? К О о 2 ¦в S X Cj со « cd я о я ж ев CQ о о. я в 4) 4> о S Я в си 0> о и 97
-иска будут близки к оптимуму. Правда, коэффициент загрузку не будет равен 1, а индекс — 0. В заключение докажем две леммы о свойствах индекса склеивания. Для удобства ссылок сформулируем следующее неравенство, которое легко доказывается, например, методом множителей Лагранжа: если х\+ ... +хт~А, то х* + ... + х*т^АУт. D.13) В элементе x^S отображение / приводит к коллизии, если существует такой элемент xi^S, что f (x\) —f(x). Лемма 4.5. Пусть S — словарь, f — отображение, приводящее к коллизии в е элементах S, 0^e^|S|. Тогда для индекса /(/, 5) отображения / на S справедливо неравенство I(ft S)^ >e/\S\. Доказательство. Обозначим через -Л? и А2 множества образов относительно f элементов S, в которых соответственно f не приводит и приводит к коллизии, т. е. \f-Hk) | = 1, k^Al9 D.14) \f-l(b)\>2, k^A2. D.15) По условию леммы 2 |/-*(*) I =е. D.16) Из D.15) и D.16) вытекает, что | А2 | <е/2. D.17) В наших обозначениях определение индекса склеиваемости D.11) приобретает вид 7(/>5) = 7Vr( \S\~e+ ? ?/-!(?)|2>|-1. D.18) Из D.18), D.15) и неравенства D.13) получаем Использовав в D.19) неравенство D.17), придем к утверждению леммы. Лемма 4,6. Если отображение / неинъективно на некотором словаре 5, то индекс /(f, S) отображения / на 5 больше 1/|5|. Доказательство. Поскольку / неинъективно, то для некоторого I /-1 (Аб) I 3* 2. D.20) Применим неравенство D.13) к определенному формулой D.11) индексу /(/, 5), учитывая, что 2 1/-4^I = 151-1/-1(^I. 98
В результате получим /(/. S)> -±-\\f->(W + '^"s'fl^M-1- D·21) Как нетрудно убедиться, правая часть D.21) является возрастающей функцией от |/-1(^о)|. Ее минимум при условии D.20) равен 1/(|S| — 1), откуда и следует лемма. В гл. 6 займемся задачей подбора для источника S функции f9 индекс /(/, S) которой на 5 не очень велик. ГЛАВА 5. УНИВЕРСАЛЬНЫЕ МНОЖЕСТВА СЖИМАЮЩИХ ОТОБРАЖЕНИЙ § 5.1. РАСПРЕДЕЛЕНИЕ КЛАСТЕРОВ Попользуем мультииндексные обозначения. Если а= = (??, .·-, as)у b=(bi, ..., bs) — векторы, то a! = ai!... ??!, bI=Ai!... ...bsl, ab=ai6l...asbS, \а\=аг+ ...+a8. Пусть X — некоторое подмножество множества Еп двоичных слов длины п, /: Х-*~[0, ?— ?], Af^l, S^X, и M1==71. Сигнатурой i(f, S) отображения / на словаре S назван набор мощностей прообразов чисел из [0, ??—1] (кластеров): i = i(f, *S) = (|/—3@)f| flS|, ..., \f~l{M—1)Г|5|). В частности, сигнатура f на X равна (|?_1@I» —? \^гЩ—1I). Сигнатуру на X равномерного отображения, для которого [/—х@) | = ... == |/ 2GVi—1)|, обозначим буквой и= (\Х\/М, ..., \Х\/М). Для двух ??-мерных векторов ? и i через рх (i) обозначим вероятность встретить словарь S, на котором отображение с сиг- натурой ? на X имеет сигнатуру i. Все словари S, |S|=T, S^Xr считаются при этом равновероятными. Эта вероятность зависит не от отображения, но лишь от его сигнатуры х. Через рх (i) обозначим вероятность встретить отображение, имеющее сигнатуры ? на X и i на некотором словаре S. При этом все отображения сигнатуры ? считаются равновероятными. Лемма 5.1. Для любых множества X, чисел ? и ??, ??-мерных векторов ? и i, где |х| = |Х|, |i|=7\ вероятности рх (i) и рх (i) равны между собой: il(x — ?)! ? ? |! Доказательство. Пусть f — отображение X в [0, ?—1] с сигнатурой x=(jco, ..., хм-?). Чтобы лолучить словарь S^X, на котором f имеет сигнатуру i=(*o, .·., *m-i), нужно выбрать ik слов из общего числа хи слов k-vo кластера, k = 09 ..., ??—1. Следовательно, число таких словарей С? ... СХм_г= „, _^ * Разде- 99
лие его на общее число С\х\ всех словарей мощности 7\ получим /?х (i). Отображение f, имеющее сигнатуры ? на X и i на S, переводит ik слов S и Xk—ik слов Х\5 в k, ? = 0, ..., ?—1. ?? Существует - способов разделить S на ? кластеров с мощностями i=(to, ..., tjvf-i). Аналогично имеется —¦ — способов (х—i)! разделить X\S на ? подмножеств с набором мощностей х—i. Перемножив эти два числа и разделив произведение на число отображений сигнатуры х, найдем искомое (число р% (i) и х! обнаружим, что рх (i)=px (i). Лемма 5.2. Пусть X — множество, ? и ? — числа, ? и i — ? ?2 ??-мерные векторы, ?= —?, ^0. Тогда распределение клас- \?\ \Х\ теров рх (i) мажорируется распределением Пуассона с точностью до множителя Т\етТ~т: рЛЦ<^-е-т(Т\еТТ-Г). ?! (\х\ 1*1 \ Если вектор х-—равномерный, т. е. x = u= I -—L, ...,-—L J , и вы- | М — \ полнено условие тр- 'У i\ < С, то ^(i) = Pu(i)-^e^(l+o(l))(T!e^r-0, ?! где оA) — равномерная во всем i бесконечно малая. Доказательство, Из леммы 5.1 имеем Т\ х0(Хо— 1).·. (*0 —4 + 1)...(Хж-|—??-?+ 1) ,с ·? р%\\)— ~~ · (ол) ?! |?|(|?|_1)...(|?|_?+1) Из равенства E.1) вытекает, что где Ъ = | I 1 — ~—- I ...[1 — ? ? Если же ? — равномерный, т. е. лг0= ... = Лл1-1 = , то *«-»«=^ШЧ^Г™· ,5·3' '-*- ('-йН'-^М'-шН'-^ 100
Воспользуемся легко проверяемым неравенством —Jt^ln(l— .—?)?3=—2х, которое справедливо при 0^^^1/2. Оно дает нам 2 ?-1 Т(Т— 1) ?<???1<?7?2^=—т— E·4> То же самое неравенство позволяет оценить и число уъ'. у м—\ 1? ?2 ? < С —- J ?, С = const. E.5) ' ' ft=o Из неравенства E.4) и условия леммы Г2/|Х|->0 получаем ??-1. E.6) ??—1 То же условие леммы, неравенство E.5) и неравенство ? i2k^ <СТ, которое выполняется по условию леммы, дают нам ?2-*1. E.7) Формулы E.2) и E.6) доставляют первое, а формулы E.3), E.6) и E.7) — второе утверждения леммы. Заметим также, что согласно формуле Стирлинга ЛетГ_т~ ?2??. Зная распределение кластеров, можно решить, какая хеш- функция является предпочтительной. Утверждение 5,1. Математическое ожидание индекса минимально у равномерного отображения. Это математическое ожидание стремится к ? = ?/?? при Г/|Х|->-0, где X—множество двоичных слов; ? — мощность словарей; ? — число значений, принимаемых хеш-функциями. Доказательство. Положим 1 = A, ..., 1) (?? раз), у= {у0у ... 1 ···, Ум-?), ? (у) = A+у)х ~~г ? ?== (*о> ···> 'м-?). Заметим, что веро- с\х\ ятность рх (i) равна коэффициенту при уг в полиноме ? (у). Математическое ожидание Ei2h квадрата координаты ik равно коэффициенту при ?? в д д yk~—Ук——р (у) dyk дУи У(г=У1=-=УЛ1-1=г Дифференцируя, находим ft |x| \ |х|-1 ^ ) Подставим это выражение в определение индекса D.11), где следует считать 2m=Mt |S|=7\ В результате получим Т—1 /м-;1 \ 101
где f:X-^[09 ?—1] — функция, сигнатура которой на X равна Л1—1 х=(*о, ..., хм-?). Минимум выражения ? x2k при условии fe=0 Af—1 ? #ь=|Х| достигается, очевидно, при х0= ... =^-1=1^1/^. Да* лее легко находим, что lim min?7(/, S) = 0. 77|Х|-»0 Итак, равномерное отображение имеет минимальный средний индекс. Это значит, что равномерные отображения в среднем меньше склеивают слова, чем любые другие. Поэтому отдаем им предпочтение и ограничиваемся рассмотрением только таких отображений. Хеш-функции, применяемые на практике, также являются равномерными. § 5.2. ВЕРОЯТНОСТИ БОЛЬШИХ УКЛОНЕНИЙ Для данных множества X, чисел ? и ? и вектора х= = (хо, ..., Хм-\) обозначим через рх (I^b) вероятность встретить словарь S^X9 |S|=r, на котором некоторое отображение f:X~* -^[0, ?—1] имеет индекс, не превосходящий числа Ь: Рх(!>Ь)= 2 ^(?)· E8) М—1 |.| il = 7". 2 i2k>bT + T fe=0 Здесь i=(io, ..., ьм-?) — сигнатура f на S. Определенная тают образом вероятность зависит не от отображения /, но лишь от его сигнатуры ? на X. Аналогично определяются рх (I^b) и Рх A>Ь). Лемма 5.3. Пусть ?, ?, \Х\ стремятся к бесконечности так, что Т/М = ?=const, Т21\Х\->-0. Тогда для всякой положительной константы С существуют положительные константы С\ и С2 такие» что: a)/U/<P-Q<e-c'r; б) р„(/>р + С)< е'с^т *т. м — Здесь и= 1 — сигнатура равномерного отображения. ? Доказательство. Пусть ?=—u= (?, ..., ?) (? раз). Из лем- \?\ мы 5.2, определения E.8) и формулы Стирлинга получаем jM/<P- С) = V2*Т A + 0A)) e~T 2 т^* E·9> ??—? i! Будем производить в правой части суммирование по всем векторам i, удовлетворяющим второму условию, даже если условие 102
|i|=r и не удовлетворяется. Это может только увеличить правую часть: М/<Р-С) = е-Г 2 -^-1/2??~A +0A)). E.10) М-\ 1! Рассмотрим последовательность независимых, одинаково распределенных случайных переменных |0, ·.·, \м-и имеющих распределение or ?(Ь = г2) = e-V-fj-, г>0, 0</<??-1. E.11) Найдем первые два момента этих случайных величин: ?|/ = ? + ?2. Я (?7· — ? ?7·J = 4?3 + 6?2 + ?. E.12) Из E.11) и E.12) получаем \/=0 / ??-1 ?1 2 i\ ^$T+T-CT k=0 E.14) Теперь отдельно рассмотрим уклонения влево и вправо. Уклонения влево. Рассмотрим функцию ? : [О, 1 ]->-/?: Я»@ = ?е-'(^^) = е-Р5е-^-^)-^, / = 0 ??-1. Ряд E.14) сходится равномерно на [О, 1]. Нетрудно найти, что ? @) = 1, ?' @) = 0, ?" @ = е- Z^~t{r2"Els) ('2 - ? Itf ^- < е'?^ ? &j - ? ?7·J < С, г=0 rI C'=const, 0</<l. E.15) Используя найденные производные, напишем два члена разложения Тейлора для ?(/) с остаточным членом в форме Лагранжа: ?@<1+-?-?'. E.16) С t 2 Теперь из E.16), E.14) и очевидного неравенства ес'<2/2>1-)- — получаем 2 неравенство Применимы неравенства С. Н. Бернштеина [6] и В. В. Петрова [37] о больших уклонениях. Они дают нам ( С2 Т2 (М~1 \ — 2МС —С»Т ? &-Я?/)<-СП<{е =e . если СТ<МС; f=° ' { е-ст'2, если СТ>А1С. Полагая Ci=min(C", С/2) и учитывая E.10) и E.13), получаем из этого еравенства утверждение леммы. 103
Уклонения вправо. Воспользуемся здесь теоремой 2.3 С. В. Нагаева, из [91]. Положим g{x)=C^/rx\nx, C=oonst, и «айдем обобщенный g-момент Ь переменной |j: bg=~c Yk^Wj in (»-«,, JL< ?-? ?е<с«*'»*-*ln*> <'+» «». Этот момент существует, если число С выбрать достаточно маленьким. Воспользовавшись разложением Тейлора для экспоненты с остаточным членом в форме Лагранжа и формулой Стерлинга, получим р к рр ^гт\-?-? V ?*^ .-? .? Р/СГ+*8' <е-с^?1п r Pudj — Elj>CT) = e ? 2? "?: <e ? ep -^ e (буквой С обозначены не обязательно одинаковые константы). Для выполнения неравенства Нагаева достаточно существования g-моменга и справедливости этого последнего неравенства. Неравенство Нагаева дает нам Ри ? (Ь - Elj) > С7 < е~с* Ут 1п т. E.17) \/=о Неравенство E.17) вместе с аналогичным неравенством PuV>t + Q<*~T ? \~ ? + оA)) 1/2??? ??— 1 ? i?>&T+T+CT fc=0 k и аналогичным E.13) неравенством /?1-1 \ /U ? F/-??/)>.сг) = е-г ? \ /-о / ? ?1 il ??— 1 составляют утверждение леммы. Лемма полностью доказана. В лемме 5.3 оценивалась вероятность встретить словарь, индекс которого относительно равномерного отображения значительно отклоняется от своего математического ожидания. В лемме 5.5 решим аналогичную задачу для произвольного отображения. Естественно, оценка получается менее точной, однако она достаточна для использования в теореме 5.2. В лемме 5.5 нам понадобится неравенство, которое предварительно докажем. Лемма 5.4. Пусть имеется М>0 чисел ??, ..., %м-и причем ??-1 ??+...+?^-? = 7\ где Г>0, и ?=?/??, ah= ? ?*<, k>0. Тогда ?3 < (?2 - ?? ?2K 2 + 3? (?2 - ?? ?») + ??3. Доказательство, Найдем максимум функции аз при условиях ?? = ?, ?2=const. Функция Лагранжа равна аз—????—у&ъ, ее частные производные равны 3?2?—2????—V2=0, i=0,..., ??—1. Таким образом, получено уравнение второй степени. Значит, в экстремальных точках переменные ??,..., Ялм принимают не более 104
двух значений. Обозначим эти значения через ?+? и #+?> и пусть первое из них принимается в 5 точках, а второе — в оставшихся ?—s точках. С учетом этих обозначений наши условия примут вид: sx+(M-s)y = 0\ E.18) sx2 + (M — s)y2 + M?2 = a2 = const, E.19) а максимизируемая функция с3 = sx* + (М - s) у3 + Зр (sx2 + (M — s) у2) + М§\ E.20) Если 5=0 или s=Ai, то неравенство леммы C.4), очевидно, выполняется, превращаясь в равенство. Если же 0<Zs<Mt то из E.18) и E.19) находим ? s Г ? 9 г — *. х=± У —Щ^У°г-М$2- E'2J) Подставим E.21) в E.20): аз = ± (У°2-МРГ y2s Щ-S) + 3? ^ ~ W) + W' E'22) Функция (?—2s) IУ s(M—s) симметрична относительно точки s= =Af/2 и убывает, l^.s^M— 1. Следовательно, (? - 2s)/VMs (Ms) < (? — 2I V? (? — 1). E.23) Как нетрудно видеть, при ??^2 (? - 2)/)/011 (? — 1) < 1. E.24) Используя E.23) и E.24), получаем неравенство леммы из E.22) при М^2. При М=1 неравенство очевидно и лемма доказана. Лемма 5.5. Пусть X — множество, ? и ? — положительные числа, ?—??-мерный вектор, ??, ?, |Х|, \X\jT2 стремятся к бесконечности, a=const, СГ/12^Г/М=р^а+СГ-1/3. Тогда для опреде- деленной в E.8) вероятности рх(/^ а) имеем: Рх {1 < а) < СТ-{1\ С = const. Доказательство. Из E.8) и леммы E.2) находим, что Рх(/<а)<е-?· 2 ^-(TlTTe-?, E.25) ??-? l! i,UI=r, J ????+r где ? = ? = (?0, ..., ?^?—i)t ? ? ] = ?. ! x\ 105
Рассмотрим случайный вектор ?= (?0,..., цм-?) с распределен нием / ч -2ч f— е-г(Т\Т-тег), если |i|<Т; I 0, иначе. E,26> Пусть ?=:?(^0 Ум-0= 2< -~-Л F=e(UO! F, где у= i, |i|=f 1? = (#o, ..., Уч~\)' Чтобы получить математическое ожидание tr\k, нужно найти yk yk ?, положить уо— ... =ум-1—г дУк дУи и взять коэффициент при zT, k=0,..., ?—1. Тогда Аналогично '* И (Г-4)! *G--3)! ??-2 ??-1 - + хй (?—2I (?—1)! ?-?? < (? + ?») ?2 + ?,), k^L E·29> Оценим дисперсию D суммы переменных ?0,..., г\м-и ??—1 ??-1 + 4-^-^. + ?*7ЧГ-77, )<Ч + 6Ч + Ч + ?*5 E.28) d=^2 (^-^?J=2 w-(^*)8)+ + 2(^?*??-^?*^?)· E.30) Подставим в E.30) неравенства E.27) — E.29): jM-1 ? ?—1 . ??-1 ^> < 2 D?»+6?»+L)+~ 2 (^+?» + y- 2 <xK+w fc=0 ?=0 ft=0 M-l ? /??-1 \2 < 2 D?3 + 6?» + ??) + -f- J ?1 + 4 - E.31) fc=0 \ ft=0 / Неравенство Чебышева, а также E.25) — E.27) дают нам оценку ?(/<«)< ^Ц ?,- . E.32) ?2 — ct/ ?2 где ?2 = У ?|. 106
Воспользуемся в E.32) неравенством E.31) и неравенством леммы E.4): Рх (/ <С а) < (?2-??2K/* + (*2-???2)^ ((а2 - ??2) + ? (? - а) _ J- (а2 - ?? ?2) - ? V E.33) Как известно, при условии ?? = 7 верно неравенство 7?^02^?. Отсюда ? (? - ???2J < (?2_ ??2K'2. E.34) Перепишем условия леммы 5.5 в виде ? (? — ?) > СГ2·3, ? = О (?1/12). E.35) Могут представиться два случая: (аг—?1?2K/2^??2 или же (?2—???2K/2>??2. В первом случае, используя неравенства E.34) и E.35), получаем из E.33) Px(f<*)< const ^ <СТ-ч*. ^х ч G2'3 + о (Т2'3)J Во втором случае, пользуясь теми же неравенствами, находим ^ (?2~???2JA + 0A)) ?^?4'3 Лемма доказана. § 5.3. УНИВЕРСАЛЬНЫЕ МНОЖЕСТВА НУМЕРАТОРОВ Фиксируем числа /г, ?, ? и ?. Пусть F — некоторое множество равномерных (принимающих каждое значение одинаковое число раз) отображений из Еп во множество целых чисел {О, 1, ..., ?—1}. Число ? выбрано так, чтобы избыточность этих отображений на словарях с энтропией на букву ? равнялась р: (log ? — ??)/(??) = p. E.36) Множество F называется универсальным ?-хеш-множеством для словарей с энтропией ?, если для всякого словаря S^En, /i(S)=t, существует такое f^F, что /(/, S)^a. Минимальную мощность универсального ?-хеш-множества при заданных /г, ? и ? обозначим через ?(?, ?, ?, ?). Значение таких множеств разъясним в следующем параграфе. Сейчас займемся изучением их важного частного случая — о-хеш-множеств. Множество U(En, ?, ?) называется универсальным о-хеш-мно- Жеством, или универсальным множеством нумераторов, если для 107
всякого S&En, |S|=2nt=T в U(En, ?, ?) существует отображение /: ?n->{0, Tj/a— 1], ??=?/?, инъективное (разнозначное) на 5. Число ? связано с ? формулой E.36). Минимальную мощность универсального ?-хеш-множества обозначим через ?(?9 ?, ?, a), а минимальную мощность универсального множества нумераторов— через ?{?, ?, ?), так что iV(nfTfPf0) = N(/ifTfP). E.37) Понятие универсального множества нумераторов было введено автором в 1976 г. в [25]. Изложим здесь оценки для ?(?, ?, ?), содержащиеся в этой работе. Уточнения этих оценок могут быть найдены в [75], где универсальные множества нумераторов названы разделяющими множествами. Связь между этими множествами и понятием энтропии графа обнаружена Кернером в [83]. В следующей теореме, оценивающей число функций в универсальном нумерующем множестве, главными являются условия асимптотической нетривиальности словарей: 0<?<1 и малости числа значений ? по сравнению с 2П. Это последнее условие эквивалентно неравенству ?A+?)<1, как следует из E.36). При доказательстве нижней оценки подсчитываем, для какого числа словарей отображение служит нумератором, т. е. является инъективным. При доказательстве верхней оценки используем метод случайного кодирования. Теорема 5.1. Пусть п-^оо, а числа ? и ? удовлетворяют неравенствам 0<?<1, 1>?^0, ?A+?)<1. Тогда для мощности ?(?, ?, ?) универсального множества нумераторов справедлива оценка \og?(?9 ?, p)~loge(i + B»i»— 1) In A -2-^))-2^. В частности, при р>0 имеем \ogN(n, ?, ?) ~ °ge 2??A~?). Доказательство. Сначала найдем оценку снизу. Для этого определим ? через ?, ? и ? из E.36), считая согласно определению E|=2??. Пусть f—произвольное отображение Еп в [О, ?—1]. Если / инъективно на некотором словаре S^En, то в S может входить не более одного слова из каждого кластера f~l[i), /== = 0,..., M—\. Поэтому для числа 1(f) множеств 5, |S|=2nx, S^ ^Еп, на которых сужение / инъективно, имеем неравенство ?/? ? 1/-4^I.-. ?/-!(???? E.38) Суммирование в E.38) ведется по всевозможным наборам, состоящим из \S\ попарно различных чисел, выбранных из интервала [0, ?—1]. С помощью неравенства Ньютона — Маклорена из [51] для симметричных сумм и соотношения 1/^@)+- + + \tl(M— 1) |=2» получаем из E.38) l(fl<C$B«/M)W. E.39) Очевидно, Л/(я,х,Р)>СЙ/1(/). E.40) 108
Поскольку число всевозможных \S\-элементарных подмножеств Еп равно С '2n , из E.39) и E.40) находим нижнюю оценку: "(«.'.й>-г|г(-5Г) · <5«> Теперь найдем оценку сверху. Для этого, не ограничивая общности, будем считать, что 2П делится на М. Мощность множества всех равномерных отображений из Еп в [0, ?—1] равна 2П! ( — ! \ . Подсчитаем число таких равномерных отображений, сужения которых инъективны на некотором словаре S. Элементы должны принадлежать разным кластерам. Разместить элементы по кластерам можно М(М—1) ... (М—|S| + 1) способами. Элементы En\S разместить на оставшиеся свободными места можно / / / 2п \ Msl / 2п \m-\s\ Bп—IS 1I/(( 1 |! I И способами. Значит, доля /IU )) [м ) равномерных отображений, инъективных на S, сга \ ? ? Далее прибегнем к методу случайного кодирования. Выберем случайно (с возвращением) некоторое число k равномерных отображений. Вероятность того, что все они неинъективны на данном S, равна A—p)h. Вероятность их неинъективности хотя бы на одном 1 ??? t сI из С\п |S|-элементных подмножеств не превышает С у A—р)к. Воспользовавшись неравенством A—p)k^e~hp, найдем, что при k> —In СИ1 E.43) ? эта вероятность меньше единицы, т. е. существует ^-элементное универсальное множество нумераторов. Из E.42) и E.43) получаем Оценки теоремы получаются из E.44) применением формулы Стирлинга. Пример. Положим я=2, р = 0. Тогда при т=0, |5| = 1 минимальное мно- множество нумераторов состоит из единственного отображения, тождественно равного нулю. При ?= 1/2, |S|=2 оно состоит из отображений: щ : 00-4H, 01-4H, 10-4I, 11-4I и щ :00-4H, 01-40, 10-4H, 11—»-10. Действительно, на любой паре двухбунвенных слов либо щ, либо щ принимает разные значения. При ?== -—log3, |5|=3, таким множеством будет совокупность отображений 2 t/2:00-4H, 01-4Ю, 10-4I, 11-40 и ы3:00-4I, 01-40, 10-4H, 11-4H. 109
Между универсальными нумерациями и введенными ранее по~ роговыми булевыми функциями существует связь. Будем считать, что булевы переменные занумерованы ?-разрядными двоичными числами, так что число переменных JV=2n. Пусть ?— некоторое число, l^p^Af/2, и U(Eny °^р , 1)—универсальное множество нумераторов: Этому универсальному множеству нумераторов соответствует формула и п, ]оер, Л ? V Л V Ха. ?=1 7 = 1 ?— 1,. E.45) .2п — N [ /г, °^Р , 0) ·2п вхождений перемен- п Поскольку U(En, °^р , 1) —универсальное множество, то всяко- ? му набору из ? переменных ??? ,..., хар соответствует функция fi^U(En, -5^-2-, 1), принимающая на них различные значения из ? интервала [1, р]. Функции fi отвечает /-й дизъюнктивный член в E.45), являющийся произведением ? сомножителей, причем #а, ,..., Хар входят в разные сомножители. Значит, формула E.45) реализует функцию Thv(xu...y x2n). Эта формула содержит V ft ных. Подставляя оценки для ?(?, ?, 0) из теоремы 5.1, получаем оценки сверху функции ??(?). При ? = const следует воспользоваться неравенством E.44), где M=\S\=p. Получим ??{?)^ ^.CN log N. Видим, что верхняя оценка совпадает с точностью до постоянного множителя с ранее выведенной нижней оценкой. Оценки функции ??(?) принадлежат Л. С. Хасину [53]. § 5.4. УНИВЕРСАЛЬНЫЕ ХЕШ-МНОЖЕСТВА Хеш-метод поиска информации описан в § 4.4. Для заданного словаря S и данной избыточности ? необходимо найти несложную функцию f, осуществляющую преобразование ключ — адрес. При этом индекс склеивания /(/, S) не должен превышать заданный уровень а, тогда и определяемое формулой D.12) время поиска не превысит 1+а/2. Такую функцию f можно подбирать специально для словаря S. Но обычно ее выбирают случайным образом. Если могут появиться любые словари S заданного объема Г, то множеством, из которого следует выбирать хеш-функцию /, является универсальное хеш-множество. Чем меньше мощно
ность такого множества, тем больше вероятность того, что случайно выбранная хеш-функция будет иметь небольшой индекс на S. Итак, оценки мощности универсальных ?-хеш-множеств представляют интерес. В теореме 5.2 находятся такие оценки для постоянного коэффициента загрузки а. Напомним, что ?=2~???. Помимо обычного требования асимптотической нетривиально- сги словарей @<?<1) требуется еще, чтобы ?<1/2. Дело в том, что тогда можно воспользоваться выведенными в § 5.1 пуас- соновскими приближениями для распределения кластеров, что сильно упрощает рассмотрения. За исключением нижних оценок пунктов б) и в) теоремы 5.2, юказательства проходят так же, как и в § 5.3. Нижняя оценка пункта а) получается подсчетом числа словарей, на которых данное отображение имеет индекс, не превышающий а. Для верхних оценок используем метод случайного кодирования. Однако в случае б) одна функция имеет требуемый индекс примерно для половины всех словарей, а в случае в) почти для всех словарей одна функция является подходящей. Приведенные выше соображения дали бы здесь тривиальную оценку ?(?, ?, ?, а) ^2. Поэтому, чтобы получить приводимую в теореме более сильную оценку, прибегнем к более кропотливым рассмотрениям. Смысл теоремы в том, что значение избыточности р=—log ajnx9 которой соответствует коэффициент загрузки а, равный требуемому значению индекса а, является пороговым. При переходе ? через это значение величина N(ny ?, ?, ?) резко уменьшается. Теорема 5.2. Пусть /г-ьоо, 0<?<1/2, коэффициент загрузки а постоянен. Тогда для мощности ?(?, ?, ?, а) универсального ?- хеш-множества справедливы следующие оценки: а) если избыточность р<—loga/(/n), то Ci-2nT<logAf(/z, ?, ?, a)<C2-2nT; б) если р =—\ogaf(m)y то C3-m;<log?(?, ?, ?, ?)<??A + +?A)); в) если ?>—logaf(nx), то log n<.log ? (я, ?, ?, ?) <—/??(? + +?A)). Доказательство. Определим нижние оценки. а) В этом случае а<Са. Положим а=а—С, C = const. Обратимся к лемме 5.3а), где Х=Епу ?=2??, ??=2??A+?>, ? = ?=2~???. Получим ргЛ/^?—C)<e~Ci-2 . Это значит, что индекс любого равномерного отображения меньше a—С самое большее для e-CiT-й части множества всех словарей мощности Т. Следовательно, мощность ?(?, ?, ?, ?) ?-универсального множества не может быть меньше, чем (e~CiT)~\ и нижняя оценка а) доказана. б) Здесь а = а. Докажем от противного, что ?(?, ?, ?, ?)^???/?. Это эквивалентно нижней оценке б) теоремы 5.2, поскольку мощность словарей 2?? и число значений ??, принимаемых хеш-функцией, связаны отношением ??/7=?=const. Итак, пусть F—неко- 111
торое ?-универсальное множество для словарей мощности 2пх и предположим, что | F | < /И1/7. E.46) Занумеруем функции, содержащиеся в F, от 0 до \F\—1: F== ?{/о,..., f\F\-i}- Построим индуктивно последовательность ?п= ==Jfo3^i^= ». ^X\f\ . Допустим, что множества 0<;?<; |/*?, уже определены. Множество Х%-\ содержит самое большее ? непустых кластеров по отношению к отображению fa, причем слова одного кластера переводятся fa в одно и то же число. Возьмем кластер из Хг·-! с наибольшей мощностью, затем кластер с наибольшей мощностью из оставшихся и т. д.; всего \М—М2/3] кластеров. Положим Х{ равным объединению выбранных кластеров. Если же в Х{-\ не найдется необходимого числа кластеров, то положим Xi=Xi-i. Выбранные и включенные в Х{ кластеры составляют не менее чем—\М—Л12/3]-ю часть всех клас- М теров в Хг-\. Поскольку выбирались кластеры наибольшей мощности, то -1Ы— ^> _L(M _ 7И2/3) _ ! _ м-цгв E,47) \??~?\ ? Используем последовательно E.47), а затем E.46): 1*Н > 1Ы . .... JZiaL > A _ Af-i/B^ > ± . E.48) |*ol |Xol l*|F|-il 2 Из неравенства E.48) и условия 0<т<1/2 теоремы имеем lim(X,F,/r2)=oo, E.49) где Т=2п\ Хо=Е". Обратимся к лемме 5.5. Роль множества леммы будет играть построенное множество X\f\. Любая функция fi^F принимает на X\f\ самое большее [??—??2/3] значений. Для отношения ? мощности словарей ? к числу значений имеем, с одной стороны, ? > ? К ? - М23+ 1) > ? + СМ-ч\ a = Т/М9 E.50) с другой стороны, все отображения на множестве Х0=Еп были равномерными и каждый кластер содержал вначале 2п/М слов. Затем мощность кластеров могла только уменьшаться. Значит, для каждой функции faeF множество X\f\ содержит не более \X\f\ \М/2п кластеров. Вместе с E.48) это дает нам для отношения ? числа ? к числу кластеров оценку т. 9л В < —— < 2а. E.51) \X\pi\M Из формул E.49) — E.51) видим, что все условия леммы 5.5 выполнены. Значит, Рх (/<«)< CT-W, E.52) 112
где ??(/=??)—доля таких словарей S^X\f\ , для которых /(/г, 5)^а, i=0,..., |F|—1, ? является сигнатурой f* на X|Fj . Вероятность найти словарь S^X\f\ , для которого найдется i0, O^io^l/7! — 1, такое, что I(fio, 5)<?, не превосходит \F\ maxpx G<?). Как следует из E.46) и E.52), эта вероятность X стремится к нулю при М-^оо. Следовательно, существует словарь S, M1=7, S^X[f], на котором I{fi, S)>a для всех i, ?^??? ^\F\ — 1. Однако это противоречит тому, что F является ?-универсальным. Следовательно, наше предположение E.46) неверно, а оценка б) доказана. в) Этот случай соответствует неравенству a>a. Выберем число аи ??>?>?, и пусть 1>? = ?/?!. E.53) Поскольку 7=2tn, 0<?<1/2, то существует константа Ci>2, для которой Тс->2Л. E.54) Пусть F—?-универсальное множество, F={fo, ..., /[fj-i}· Докажем, что | F , > ? »-21оКГ , E.55) log ?/? где 8 = mini—, ? V E.56) \ 2 12 (С,-2) / Отсюда и вытекает неравенство в) теоремы (нижняя оценка). Предположим, что, наоборот, \F\<* V*y . E.57) log (?/?) Построим последовательность ??=?0^^?^ ... ^^jfj подобно тому, как это было сделано в пункте б). Множество Хг состоит теперь из \уМ] наибольших по мощности кластеров множества ??-?, если в Xi-? найдется столько кластеров по отношению к fu ?=0,..., \F\—1. В противном случае Xi=Xi~\. Понятно, что | Х1П | = 2^1«. E.58) Из соотношений E.57), E.58) и условия 0<?<1/2 вытекает, что lim lX{F{] =oo, E.59) Рассмотрим отношение ? мощности словарей ? к числу значений, 113
принимаемых отображением f*, t=0,..., \F\— 1. С одной стороны,, Hci E.53) следует, что ? а ?> = — = ^ = ^+(^1 — я)· E.60) С другой стороны, X\F\ состоит из не менее чем X\f\ M/2n кластеров по отношению к любому отображению из F аналогично тому, как это было в пункте б). Значит, в соответствии с E.54)у E.57) и E.58) Т-2п В < —— < ?· Г 12. E.61) M\XiF Из E.59) — E.61) видно, что все условия леммы E.5) здесь выполнены. Следовательно, независимо от сигнатуры ? отображения fi на X\f\ справедливо неравенство рх {1^а) <СГ~1/б. Отсюда и из неравенств E.54) и E.57) следует существование словаря S^X\f\, |S|=7, на котором все отображения из F имеют индекс, превышающий а. Это противоречит определению ?-универсального множества, каким является F. Значит, предположение E.57) неверно и нижняя оценка в) теоремы установлена. Теперь определим верхние оценки. Для этого воспользуемся методом случайного кодирования, который уже применялся в доказательстве теоремы 5.1. Если, по крайней мере, ?-я часть отображений имеет на словаре индекс, не превышающий некоторого а, и Cifli(l -pf< 1, E.62) 2 ?? ? (?, ?, ?, ?)<&, где |S|=2nx=7\ a p — избыточность отображений. Из формулы Стирлинга ?Г 2^0--00+011)). E.63) 2 Рассмотрим следующие три случая: 1. Если коэффициент загрузки ?<?, то требуемая верхняя оценка получается из леммы 5.3а). 2. Пусть а=а. Из второго утверждения леммы 5.2 в этом случае следует, что для любого равномерного отображения [: Еп~* ? м'1 -*[0, ?—1] справедливо равенство-™- N /2 = 7"+ Х2» где ?2 есть Х2-статистика Пирсона, a i=(io,..., ??-\)—сигнатура f на некотором словаре. Как показано в [33], х2-статистика в условиях теоремы асимптотически нормально распределена. А это значит, что для любого е>0при/г-^оо для определенного выше числа р справедливо неравенство р>1/2—?. Отсюда из E.43) и E.62) следует, что N(ny ?, ?, a)<zCTn(l—?). Это равносильно верхней оценке пункта 2. 114
3. Пусть ?>?. Здесь для доли ? справедлива нижняя оценка б) леммы 5.3: р^\—е-оГт\птл E.64) Отсюда из E.62) и E.63) ясно, что &=Ci^_L(n—log Г) функций образуют ?-универсальное множество. Верхняя оценка теоремы 5.2 доказана. Теорема полностью доказана. § 5.5. УНИВЕРСАЛЬНЫЕ МНОЖЕСТВА НА ОСНОВЕ КОДОВ Верхние оценки теоремы 5.2 доказывались методом случайного кодирования. Это значит, что нахождение хороших универсальных ?-хеш-множеств методом этой теоремы сопряжено с большим перебором вариантов. Возможность уменьшения перебора дает теорема 5.3. Она доставляет способ построения универсальных ?-хеш-множеств из кодов. Пусть ? и ? — натуральные числа, Ф={<рь..., ?{?| }—некоторое множество отображений из Еп в [О,..., ?—1], |Ф|—мощность Ф. Тензорным произведением ®Ф отображений ??,..., ?|?| называется отображение, которое переводит слово ? в конкатенацию (соединение) слов ?? (я),..., <$\ф\{х). Расстояние р(а, Ь) между двумя словами а и Ь в алфавите 0, 1,..., ?—1 понимается в смысле Хемминга, т. е. оно равно числу позиций, в которых эти слова различаются. Теорема 5.3. Пусть ?={??, ..., ?|?| } — множество отображений некоторого множества 5 в [0, 1,..., ?—1], М^% причем тензорное произведение ®Ф образует на S код с некоторым расстоянием г. Если /=/(??, S) равно индексу отображения ?? на S, то найдется такое ?????, что индекс h отображения, ставящего ? в соответствие конкатенацию ?? (?) и ?2·0 (?), удовлетворяет неравенству /2^/1A—>7|Ф|)· Доказательство. Поскольку расстояние понимается в смысле Хемминга, то |Ф| Р(®Ф*, ®Фу) = 2 ? (?,(*). ?* (у))· E*65) Здесь р(ф{(х), фг (i/)) ==0, если (Рг(*)=<Рг(*/), а в противном случае р((рг(х), ??(?/)) = 1. Обозначим через щ(а) мощность прообраза числа ?, ?^?^??—1, при отображении <р;·: щ(а) = Ч<РГ!(а)|. Через пи {?, ?) обозначим число слов S, которые переводятся отображением ?? в а, а отображением ?* — в ?, ?^?^??— ?: л«(«.Р) = |9Г1(«)П?Г1(РI- Понятно из определений, что для всякого i9 2^л^:|Ф|, ^1(а) = 2/г1г(а, ?). ? E.66) 115
Возведем E.66) в квадрат: П\ (а) = 2 л?, (а> Р) + 2 2 лн (а> Pi) пи (?, ?,)* E.67) В равенстве E.67) ?, ?? и ?2 пробегают интервал [0, ??—1], 2^ ^?^|?|, <хе[0, ?—1]. Рассмотрим 2 ? (?/(*)> <Р«(У))· JC. у, Vi(*)=9i(y)=a Из общего числа ?2?(?) пар ?, у, где ?? (?) = ??(?/) = ?, ровна ? я2н(а, ?) nap не дадут вклада в эту сумму попарных рас- стояний, 2^?^|?|. Учитывая E.66) и E.67), получаем 2 2 пи («, Pi) "w («, Р2) = 2 ? (Ь (*). Ъ (У))· E-68) ??, ?2. ???=?3 JT. У. <PiU)=«Pi(y)=a Согласно определению индекса /(9,,5)==/,= -1-2^)-1. E.69} I «Ь J а. Точно так же для любого i ^=7^2^(^ ?)-1· E.70) Меняя порядок суммирования, имеем: 2 2 ? P(9iW. ?*(У)) = /=2 0<Ca<Ai-i jc,y,91(jr)=91(y)=a |Ф| = ? ? ? p(?iW. Tiiy))= a.O^as^M—1 /=2 дг, у; <pi(Al=cp,(y)=a |?? = 22 ? P(?/W· <Р|(У))· E·71) Воспользовавшись формулой расстояния по Хеммингу E.65), перепишем J[5.71): 2 2 ? p(?iW-?i(y))= <=2 ?, Osiots?A<-l jr, у; ?,(?)=? ,(y)=a = 2 ? ?«?>?-?, ®Фу)· E.72) ?, 0^?<??—1 Л", у; <p,(.*)^cfi(y)=a Поскольку слова ®Фд: образуют код с расстоянием г, то ?? —1 2 2 p^w.Tl(y))>'-2rti(a)(/li(a)~1)· E·73) 0*^?<??—1 ?, y; 9i(^)=9i(y)=a ?=0 116
Из E.72) и E.73) вытекает существование такого числа i0, 2</о<|Ф|, что г м—? V 2 ? (?? (*Ь ?? (У))> ??? 2 «? («) (*?(»)~ О· С5·74) ?, О^о^М-1 дг, у; 'fit*)=9i(y)=a а==0 Подставим в формулу E.74) формулы E.67) и E.68). Это приведет к равенству г м-\ ? я?(о-2я1/.(а'Р)>Тфг2л,(а,(л,(а)_1)·EJ5) ?, 0<$?<???—1 а, ? ' ' ?=0 Теперь осталось только использовать в формуле E.75) определения E.69) и E.70), чтобы получить утверждение леммы. Следствие 5.1. Если ? — совокупность отображений Еп в {0,..., М~ 1}, /г>0, ??^?, причем ®Ф образует код с расстоянием г, то ? является универсальным ?-хеш-множеством для словарей мощности Т, где ???. (?—1)A—г/|Ф|). Доказательство. Следствие сразу вытекает из теоремы 5.3, если заметить, что максимально возможное значение индекса на словаре мощности ? равно ?—1, и в качестве отображения ?? взять пустое отображение. Для словаря S^En, |S|=7\ обозначим через S(/, ?) подмножество тех его слов, у которых на 1-м месте стоит буква ?, /= = 1,..., ?, ?=0, 1. Очевидно, I 5(/,0) I + I 5(/, 1)| = Т. E.76) Следствие 5.2. Для любого словаря 5, 7=|5|^2, справедливо неравенство |5| max min | 5(/, ?) | > - . l^i^n ?=0,1 4/? Доказательство. Рассмотрим множество отображений Ф — — {фь — , фп}, где фг- переводит слово ? в его i-ю букву, /== = 1,..., п. Тогда <8>Ф(х)=х и множество слов ®Фх образует код с минимальным расстоянием 1. Из следствия 5.1 вытекает существование такого отображения ?^, что 7(?у,5)< (Г-1)A- 1//г). E.77) Из определения индекса и отображения ?5· явствует, что /(?/, S) = у ( | S(j, 0) I2 + | S(J, 1) Р- 1. E.78) Из E.76) получаем, возводя в квадрат, |S(/\0)|2 + IS(y\ 1I2 + 2 1 5G,0)( . 15(/,1) 1 = 7^.E.79) Вычтем из E.79) неравенство E.77) и получим 2 I 5(у, 0)| . | 5G,1) i> Т{Т^]) . E.80) 2/z 117
Пользуясь формулами E.76) и E.80), находим |5(У,о)| > 5(У,о) S(/,a) ? ^ ? |5(у,0)Ц5(у. ?? Т2 > 2л E.81) где ?=0, если ?=1, и ?=1, если ?=0. Из E.81) видим, что су* ществует такое /, для которого |S(/, о) | ^Т/Dп). Это и составляет утверждение следствия. Лемма 5.6. Для всякого словаря S^En и числа р, |5|^р>1, существует поисковое дерево ? с разбиением ? такое, что: а) число вершин в базисе ?' разбиения ? не превышает 2|S|/p; б) максимальное число вершин в поддеревьях ? не превышает 8рп. Доказательство. Поисковое дерево ? для словаря S будем строить последовательно, начиная с корня. Каждая вершина ? дерева ? соответствует некоторому подсловарю X^S, корень соответствует 5. Если max min \X{i, ?) | =0, то делаем вершину ? ли- ?^?^? ?=0,1 стом дерева ? и останавливаемся. Если же это выражение положительно, то выбираем любое число /, для которого min | ?'(/, ?) I = max min | X(i, o) |, 0=0,1 l^i<n ?=0,1 и полагаем пометку ? (?) вершины х равной как раз этому числу /. Из следствия 5.2 вытекает, что min | Л (? (?), ?) | > | X | /Dл). E.82) ?=0,? Левому сыну ? ставим в соответствие подмножество ?(?(?)> ?), а правому — X(v(x)t 1). Продолжаем процесс построения дерева, пока не достигнем листа. На рис. 5.1 изображено такое дерево для словаря табл. 4.2. Пометкой корня может быть 4 или 5. Если корень помечен числом 4, то номером левого сына может быть 1, 3 или 5 и т. д. Во множестве разбиений построенного дерева ? существует обычный порядок: разбиение Р2 мажорирует разбиение Р1, если для всякого поддерева ??^?1 существует совокупность поддеревьев Р2, являющаяся разбие- Рис. 5.1. Поисковое дерево для словаря нием ? . Пусть Мр —* табл. 4.2 множество таких разбие- ? Поисковое дерево для словаря 118
АНИ, все поддеревья которых имеют неменее ? листьев. По условию следствия тривиальное разбиение, состоящее из дерева д, принадлежит Мр. Множество Мр индуктивно, являясь конечным. Значит, согласно лемме Цорна из [36] существует принадлежащее Мр максимальное разбиение P={Ab..., Ajpj}. Утверждение а) леммы 5.6 следует из неравенства |LAi|^p, /=1,..., |P|, а также формул A.7) — A.9). Пусть Хг — корень поддерева Аь Х% — множество слов S, соответствующих xit /=1,..., \P\. Если min \??(?{?), ?)|^?, то за- ?=?,? меним в разбиении ? поддерево Аг- на два поддерева с корнями son^, 0) и son(xj, 1). Новое разбиение вновь принадлежит Мр, но мажорирует разбиение Р. Поскольку это невозможно в силу максимальности Р, то min | ^(?(?), ?)\<?. E.83) ?=0,1 Теперь утверждение б) леммы 5.6 вытекает из E.82), E.83), равенства |Xi| = |LAi| и формулы A.9). Лемма доказана. Лемма 5.7. Пусть множество S^En, /г>1, является кодом в метрике Хемминга с минимальным расстоянием г, г^1. Тогда су- ществует не более чем — lrr J *S | позиций, в которых любые два слова из S различаются. Такие позиции называются тестовыми. Доказательство. Опять используем метод случайного кодирования. Зафиксируем некоторые два слова хи x2eS и число /3^1. Выберем из урны, содержащей ? шаров с номерами от 1 до я, / шаров с возвращением. Вероятность совпадения в словах х\ и Хч тех букв, которые стоят на местах с появившимися номерами, не· превосходит A—г/пI. Вероятность того, что хотя бы одна из C\s\ пар строк имеет на местах с появившимися номерами совпадаю- щие буквы, не превышает C\s\ A—г/пI. Воспользовавшись неравенствами A—r/n)l^e~lr/n и C\s\ ^|S|2, получаем, что при /^ ^—1п|5| эта вероятность меньше единицы. Другими словами, найдутся / номеров, в которых любые два слова различаются. Лемма доказана. § 5.6. УНИВЕРСАЛЬНЫЕ МНОЖЕСТВА НА ОСНОВЕ ПОЛЕЙ ГАЛУА Здесь используем одну из возможностей, предоставляемых теоремой 5.3, для построения универсальных хеш-множеств. Совокупность отображений, составляющих код, определим с помощью многочленов в полях Галуа. Сначала несколько слов о полях Галуа. Ограничимся двоичным случаем. Более подробные сведения могут быть найдены в [31]. Полем называется множество, для элементов которого определены операции сложения и умножения, удовлетворяющие обычным соотношениям: они коммутативны, ассоциативны и вы- 119
полняется дистрибутивный закон. Имеются элементы 0 и 1. Каждый ненулевой элемент ? имеет обратный по сложению —х, так что х+(—х)=0, обратный по делению хг1, так что jc-jr"I==l. Множество вычетов (остатков от деления) по модулю некоторого простого числа образует поле. Простейшим из полей является поле GFB), состоящее из элементов 0 и 1, где 0-1=0-0=0, Ы = = 1, 0+0=1 + 1=0, 0+1 = 1. Пусть g(x)—некоторый неприводимый (не равный произведению нетривиальных делителей) многочлен с коэффициентами из GFB). Множество вычетов по модулю g(x) образует поле. Число его элементов равно 2*\ где ? — степень g(x). Это поле обозначается GFB^). Если взять в качестве g(x) неприводимый многочлен х2+х+1, то вычетами modg(x) могут быть многочлены 0+0-л:, l+O-x, 0+1 ·?:, 1+я=х2. Таким образом, каждый элемент GFB^) соответствует некоторому многочлену степени ?—1 и вектору размерности ? — набору его коэффициентов. Это соответствие позволяет нам определить не только сложение, но также умножение и деление двоичных векторов. Например, @, 1)-A, 1)=я-A+х)Х Xmod(x2+x+1) = A, 0); @, 1):A, 1) = A, 1), так как (х+1)Х Х(х+\)=х2тоа(х2+х+1). Приведем еще в качестве примера построение поля GFB3). Возьмем неприводимый многочлен д:3+х+1. Тогда @, 0, 0) = = 0; A,0,0) = 1; @,1,0)=*; @,0, 1)=х2; A, 1,0) =1+х=х*· @, 1,1)=х+*2=х4; A,0, 1) = 1+*2=?6. A, 1, ?) = 1+?+**=**. Указанное соотношение между бинарными векторами и элементами поля Галуа вместе с теоремой 5.3 позволяют строить универсальные хеш-множества. Полиномиальное хеширование. Пусть имеется множество Еп двоичных слов длины /г, /г>0, и задано целое число ?, ?^.?. Произвольный n-мерный вектор w разобьем на Г—1 последова- 1 ? ' тельных подвекторов wb ..., Wfn/?? длины ?, дополнив последний из них, если нужно, нулями до длины ?. Выберем некоторый элемент b^GFB^) и определим отображение /ь: /r.(w)= J wibi'"!· E·84) При вычислениях считаем wt-f i= 1,..., [?/?], элементами GFB^), как было сказано выше. Отображение /ъ действует из Еп в ?>, й на словаре S его избыточность равна ?/logjSI — 1. Информационной частью программы /ь является вектор Б, а операционная часть предписывает выполнить вычисления по формуле E.84) и имеет постоянную длину. Значит, сложность L(fb) не превышает ?+C· Если b пробегает все векторы длины ?, по формуле E.84) определяем семейство ? отображений из Еп в ?*\ мощность |Ф| которого равна 2?. Расстояние по Хеммингу между двумя векторами длины |Ф| ?? (до') ... (Цф1 (до') и ?? (до") ... <р|<х>| (до") не мень- 120
jxie r=2^—[я/??+?, поскольку полином E.84) может иметь не более \?/?]—1 нулей. Обращаясь теперь к теореме 5.3, получаем, что для всякого словаря S существует такой вектор Ь, что /(/„,???+?????-?). 2? ? Итак, построено —\?/?]—хеш-множество для словарей, со- держащих ? слов длины п. Мощность этого множества 2?, сложность отображений в нем равна ?+C. Если выбрать ?=?21?§ 7^+ ? -\-logri\, то — \?/?\<.1/? и наше универсальное хеш-множество 2? превратится в универсальное множество нумераторов в силу леммы 4.6. Линейное хеширование. Выберем вновь параметр ?, как и при построении полиномиальных хеш-функций. Будем считать, что ? делит пу и точно так же разобьем фиксированный вектор b, b— =bi, ..., bf/?/?? . Отображение ? ь определим формулой cpb(w)= 2 biWi. E.85) Отображение щ действует из Еп в ??, его сложность равна ?+C Мощность |Ф| определяемого E.85) семейства ? равна 2П. Если для двух различных векторов w' и w" выполнено равенство ? (w')=q)b(w"), то Lj\ (*; + *#== о. E·86) Поскольку w'^w", то существует i0t 1^??^|[/?/??, такое, что w/iQ+w//itT^0. Если заданы ?/?— 1 векторов, кроме ??-го, то найдется ровно один вектор Ь*0, удовлетворяющий E.86). Следовательно, имеется 2^?/?-1) различных /г-мерных векторов Ь= = {Ь\... bn/?), удовлетворяющих E.86). Значит, кодовое расстояние определяемого E.85) семейства ? не меньше г = 2п — 2^п1*~1) = 2Л A — 2-v). Теорема 5.3 гарантирует для каждого словаря S, M1=7, существование отображения /ь: /(/ь, S) < (Г- 1) A - 1 + 2-^) < ?-2-t\ Сложность/ь равна |Ь|=я. В § 5.3 показано, как построить почти минимальную (с точностью до постоянного множителя) формулу для пороговой функции Thv (#i,..., Xn)> Эта формула строилась из универсального множества нумераторов, которое было получено методом случайного кодирования. Значит, для нахождения этой формулы требуется перебор большого числа вариантов. Изложенный в данном параг- 121
рафе метод построения универсального множества нумераторов дает почти минимальную формулу для пороговой функции с близ- ким к минимальному временем построения. Считаем T=const, полагаем ?=2?, ?=\2\???+\???\9 переменные ??,..., ?? занумерованы словами длины п. Определяем отображение /ь :En->GFB^) формулой E.84). Как было установлено, множество {/ь} является универсальным нумерующим дл? Т- элементных подмножеств Еп. Каждое отображение /ь определяет разбиение Еп на 2^ непересекающихся прообразов элементов из 0^B^) : {Нь(*Ь xeGfB^)}. Выберем некоторые ? подмножеств этого разбиения: f~lb(xiiy... , f"lb{XiT)· Они определяют конъюнкцию дизъюнкций переменных: (V *«)... V Xa = *btlx lr Беря дизъюнкцию таких формул по всем i\9..., г'г, а затем по Ь, получаем ТАт-(*„...,**)= V V ?ь. /, /г · E-87) beGFBu) 0<il<.,.<iT^2^ Действительно, для любого набора переменных Wjt,..., WjT найдется элемент b^GFB^1), такой, что fb(Wjt)=Xil9 ···, fb @^7-)= —XiT в силу универсальности. Но тогда функция (рь,*,....*^ ПРИ раскрытии скобок дает произведение Wjt ... WjT. Сложность формулы E.87) равна 2^С\ц ^N(\ogN)T+\ если положить ?=21og?+log/г, N=2n. Время ее построения равно N-2*CT2ll. В [77] построена формула сложности 0(N\ogN) для ThT(xu ..., х^), причем время построения полиномиально зависит от N. ГЛАВА 6. СЛОЖНОСТЬ КОДИРОВАНИЯ КОМБИНАТОРНЫХ ИСТОЧНИКОВ § 6.1. КОДИРОВАНИЕ КОМБИНАТОРНОГО ИСТОЧНИКА С БОЛЬШОЙ ИЗБЫТОЧНОСТЬЮ Общая задача кодирования комбинаторного источника формулируется следующим образом. Пусть имеется словарь S^En и задано число р^О. Через LE, p) обозначим минимальную программную сложность кодирования словаря S с избыточностью р, т. е. L(Sy p) равно минимуму L(f) по всем отображениям f из Еп таким, что p(f, S)^p. Если задано еще число т, 0<т<1, то через L(t, p) обозначаем максимальное значение L(Sy ?) по всем словарям, энтропия которых на букву равна %'· /гE)=—og =т. Интерес представляет нахождение функций ? 122
L(x> ?), которая показывает, как убывает сложность сжатия с увеличением избыточности. Отдельно рассмотрим два случая: постоянного коэффициента загрузки ? = 2_??? и постоянной ненулевой избыточности ? при длине слов п, стремящейся к бесконечности. Назовем их соответственно случаями большой и малой избыточности. Вначале исследуем первый из них, он будет использован в дальнейшем. В доказательстве существенную роль играет полиномиальное хеширование из § 5.6. Другие доказательства верхних оценок теоремы для р>1 содержатся в [12, 13, 60]. Тождественное отображение, сложность которого равна константе, осуществляет кодирование источника S, h(S)=% с избыточностью, равной ?=1/?—1. Будем рассматривать нетождественные отображения, для которых ?A+?)<1. Теорема 6.1. Пусть 0<?<1, ?>0, ?A+?)<1, ?=2??, ?-+??, L(t, ?)—сложность кодирования с избыточностью ? наихудшего словаря с энтропией ?. Тогда |Г1-р+оA> при р<1, [О (я) при р>1. Время работы и память, используемые сжимающими программами, равны 0(п). Для большинства словарей сложность кодирования равна L(xy p). Доказательство. Для доказательства установим нижнюю оценку, а затем верхнюю. а) При р<1 мощность множества F отображений, в котором для всякого S, ?E)=?, содержится отображение /, p(f, S)=p, не меньше ?(?, ?, ?). Согласно утверждению 2.4 в F найдутся отображения, сложность которых не меньше \ogN{ny ?, ?). Применяя теорему 5.1, получаем нижнюю оценку теоремы 6.1. б) Верхняя оценка при р<1 определяется следующим образом. Пусть pi — произвольное число из интервала @, р). Выберем в схеме полиномиального хеширования в § 5.6 параметр ? — [A +??)??]. Тогда согласно § 5.6 для любого словаря S, |S| = = 7", найдется полиномиальное отображение f\\ En-^E^t I(f\, S)^ <~ ?«/?]. В силу выбора параметра ? I(fi,S)<T-'*+°<l\ p(/„5) = p1 + o(l), L(ft) = О (?). F.1) Слова словаря 5 делятся на два множества, приводящих (Si) и не приводящих (S2) к коллизии относительно /ь Согласно лемме 4.5 и оценке F.1) i 5t | < r-P'+oW. F.2) С помощью теммы 4.1 проведем лексикографический поиск fco множестве S\. В результате вычислим одновременно две функции. Первая из них, /2: En-*EV°? Is*I l равна номеру слова x^Si ? 12а
Si. Вторая ?, равна 1 на Si и 0 на En\Si. Согласно лем* ме 4.1 L(y) + L(f2)<n\Sx\. F.3) Время вычисления /2 есть О (п). Положим f(x) равным кон* катенации %(х) и fi(х), если ?(*)=0, и конкатенации %(х) я ?2(?) и нескольких нулей до общей длины 1 + \%(х) \ + \}\{х) |. Тогда сложность /,(/) равна ?(?)+?(/?)+?+?· Эта сумма аь гласно F.3) и F.2) равна Т1~р 0A). Избыточность отображения / равна L(/, S) =pi+o(lXp. Таким образом, L(xy р) = ГьР+-°о> при р<1. в) Для нахождения верхней оценки при р>1 построим для словаря S и числа pi, l<pi<p, полиномиальное отображение f согласно § 5.6, выбрав ?= [ (l+pi)log T\. Для индекса /(/, S) этого отображения имеем /(/, S)< T-**+<™< 1/7. Согласно лемме 4.6 это отображение инъективно на S, а его сложность равна ?. Теорема доказана. Следствие 6.1 (эффект удвоения энтропии). Сложность нумерации почти любого источника S с ненулевой энтропией @< <Zh(S) = log |S|/n< 1/2) словами длины nBh(S)—?) экспоненциально велика по п, а словами длины nBh(S) +г)—линейна. Это следствие сразу вытекает из теоремы 6.1. Эффект удвоения энтропии был рассмотрен в [27]. § 6.2. КАНАЛЫ С ПРОИЗВОЛЬНЫМ АДДИТИВНЫМ ШУМОМ Такой канал описывается множеством S двоичных слов некоторой длины ? (шумов). Будем считать, что S содержит нулевой вектор. При передаче по каналу двоичного слова х к нему прибавляется по модулю два некоторый шумовой вектор из S. Множество ?\^?? называется кодом, исправляющим ошибки из S, если для любой пары векторов уь у2 из К и любой пары хь Х2 шумов из S уН-х^уг + хг. Другими словами, если передавать по каналу только лишь слова из КУ то на приемном конце их можно будет однозначно идентифицировать независимо от шума. Если S — шар радиуса г>0 в метрике Хемминга, то код, исправляющий ошибки из S, называется кодом, корректирующим г симметричных ошибок. Очевидно, для корректирующего кода К множества x+S для различных хе/С не пересекаются. Мощность каждого из этих множеств равна |S|. В результате получаем IU (x+S)| = ??? · |S|<2«, F.4) xs/C Логарифмируя неравенство F.4), приходим к следующему неравенству Хемминга: A(/Q + A(S)<1. F.5) Код К называется групповым, если он является ядром (множе- 124
?ТВом нулей) некоторого линейного отображения f: Еп-+Ет, /#;>0. Для того чтобы групповой код К исправлял ошибки из множества 5, необходимо и достаточно, чтобы соответствующее X линейное отображение f было ииъективно на S. Вектор f (х) называется синдромом, а число т — числом проверочных разрядов. Пусть передавался вектор хеД', а принят вектор x-t-y, где yeS. Синдром принятого вектора равен f(x+y)=f(y)> и по нему однозначно находим шум у и переданный вектор х=(х+у)+у. В пункте в) доказательства теоремы 6.1 для произвольного ?>0 и любого словаря S построили линейное отображение f: ? ->?m, инъективное на 5, ?(?, 5)^1 + ?. Для этого отображения 1+?^ (т—log|S|)/log|S| и, значит, т^ B + e)log|S|. Поскольку код К является множеством решений га линейных уравнений, то log|/Cj^l—т. Доказано, что для любого шума S существует корректирующий его групповой код /С, для которого выполняется следующее неравенство Варшамова — Гилберта: h(K)> 1-B + s)/iE). F.6) Этот факт был установлен ?. ?. Деза в [14]. Вопрос о том, какое же из двух неравенств точное: неравенство Хемминга F.5) или неравенство Варшамова — Гилберта F.6), — весьма важен для теории кодирования. Покажем сейчас, что, как правило, точным является неравенство F.6). Следствие 6.2. Почти для каждого шума асимптотически наилучшим из групповых является· код, лежащий на границе Варшамова— Гилберта, т. е. почти для всех шумов и ?>0 ядро никакого линейного отображения f: Еп-*Ет не является корректирующим кодом, если /и< B—e)log \S\, 0<? = ?E)<1/2, я->оо. Доказательство. Если га<B—?)log |5|, то для избыточности отображения f: En-+Em имеем p(f, S)<1—?. Согласно теореме 6.1 почти для любого сло- в ря 5 сложность L(f) сжатия f:En-**Em удовлетворяет неравенству L(f)> \S\l-^-°{l)> |«S|8, F.7) и е f — линейное отображение, задаваемое матрицей размера /гХт, которая и служит программой вычисления f: L(f)<n-/n<na. F.8) Из F.7), F.8) и условия |5|=2?? получаем «2>L(f)>2TnA-e)+0(,l) ^ противоречие, и следствие доказано. В заключение приведем новое доказательство для следующего Варианта теоремы Шеннона, приведенного В. Д. Гоппой в [13]: Д1я всякого шума S и ?>0 существует линейный код, исправляющий почти все ошибки из S и имеющий не более ? log | S J проверочных символов. В пункте б) теоремы 6.1 для словаря S построена функция f, Удовлетворяющая условиям F.1), где pi — произвольное число, ? <;1, |S|=7\ В силу F.1) и леммы 4.5 число ошибок, не испра- 125
вляемых с помощью отображения f, не превышает ri-Pi+ott)^ ~о(Г), так как коллизия соответствует неисправленной ошибку Выбирая ??<?, получаем утверждение сформулированной выщ^ теоремы. § 6.3. КОДИРОВАНИЕ КОМБИНАТОРНОГО ИСТОЧНИКА * С МАЛОЙ ИЗБЫТОЧНОСТЬЮ В этом параграфе рассмотрим сжатие информации при фиксированном коэффициенте загрузки. Эта схема сжатия суще* ственно проще предлагаемой в [25]. Отметим, что программа сжатия Г-словных источников, имеющая сложность 0(Т)У приво. дится в [90]. В той программе сжатия, которая будет описана, используются методы слабого сжатия из § 6Л, универсальные нумераторы из § 5.3, а также методы поиска информации из гл. 4. Теорема 6.2. Пусть 0<?<1, F=2nT, a = 2-nP = const, л-мх>. Тогда для сложности L(t, p) сжатия с избыточностью ? наихудшего словаря с энтропией ? справедлива асимптотическая формула L(x, ?)«_?_/? + (-1-???A-?)) In 2 \ \ a J I и, в частности, L(t, 0)~771п2=1, 4... Г. Время работы программы сжатия и используемая ею дополнительная память равны О(п). Доказательство. Нижняя оценка вытекает из теоремы 5.1 и утверждения 2.4, так же как это было для нижней оценки теоремы 6.1. Перейдем к построению программы, осуществляющей сжатие (нумерацию) с требуемой в теореме сложностью. Для заданного словаря S, содержащего ? = 2?? слов длины пг построим равномерное дерево ? с |LA@ )| листьями. Число листьев |LA(x)| у поддерева с корнем ? удовлетворяет соотношению B.1). Положим: r=Llogr-4 1og log Г J; F.9) R= L log Г — log logTJ + 2. F.10) Поддерево ? (?), корнем которого является вершина х, лежащая на г-м этаже, имеет | LA (?) | листьев, причем согласно B.1) и F.9) | LA(x) | = О (log ГL. F.11) Лексикографически упорядочим слова словаря S и определим следующее лексикографическое соответствие D из множества под- множеств S во множество вершин ?. Всему словарю S соответствует корень дерева ?, [LA@)|, младшим элементам S соответствует вершина 0, ]??A)|, старшим элементам — вершина 1 дерева ? и т. д. вплоть до г-го этажа дерева ?. 126
Каждое слово wgS принадлежит некоторой последовательности вложенных друг в друга подмножеств словаря S. Наименьшее из подмножеств этой последовательности соответствует некоторой вершине r-го этажа дерева ?, которую обозначим Длу. Обратимся к описанному в § 5.6 полиномиальному хешированию, выбрав ? = С log и, F.12) где С — достаточно большая константа. Пусть 5Х —подмножество S, соответствующее вершине х, |х|=г, при отображении D. Тогда в силу |LA(x)| = |Sx |, F.3) и F.4) существует вектор Ь(х) такой, что определяемое им линейное отображение fb(X): Еп-^Е^ имеет на S *гттцекс, не превосходящий 1/|SX I. В силу леммы 4.6, то отображение инъектив- но на 5Х . Слова каждого словаря Sx переупорядочим лексикографически в соответствии с вектором fb(x) . Продолжим отображение D вплоть до R-го этажа дерева ?, подобно тому, как это делалось и ранее, но теперь уже руководствуясь новым порядком. Если множество Sx соответствовало вершине х, то |LA(xO)| наименьших в смысле нового порядка слов этого множества соответствуют теперь вершине хО и т. д. Ранее каждому w^S соответствовала вершина Drw. Теперь соответствует путь DHrw от Drw до некоторой вершины Ar\v дерева ?, лежащей на R-ы этаже. Множество Sx, которое соответствует вершине х, |х|=/?, содержит вследствие равномерности дерева ? либо t—1, либо t элементов S. Число / удовлетворяет неравенству <=Г7-2^1 < ? log ?+?. F.13) Слова wgS, (Принадлежащие различным множествам Sx, имеют различные вершины Drw. Чтобы отличить друг от друга слова, принадлежащие одному и тому же подсловарю Sx , воспользуемся универсальными нумерующими множествами. Определим числа ?? и ? 2 соотношениями 2^Xi = tt 2^==/—1, а число ? соотношением а = 2~^Р, где а задано в условии теоремы. Построим по теореме 5.1 два универсальных множества: ?{??·9 ??, ?) и ?/(??, ?2? ?). Для любого словаря, содержащего t или t—1 слов длины ?, в объединении этих универсальных множеств найдется отображение, инъективное на этом словаре. Отображения, входящие в эти множества, занумеруем от 1 до некоторого числа ?: U{Е^, ть p)\jU(?*\ ?2, ?) = {??, ..., ?»}· Для числа ? элементов этих двух универсальных множеств имеем оценку теоремы 5.1: \ogv<t log e A +A/? —1I?A— ?)) + ?{?). F.14) 127
Каждой вершине x,jx[=i?, соответствует словарь Sx еще не* различенных слов. Кроме того, этой вершине соответствует вектор Ь(х) такой, что отображение Ь(х) инъективно на Sx. Значения fb<x) являются ?-мерными векторами. Совокупность этих значений об* разует на 5Х некоторый словарь, содержащий либо /, либо /¦— 1 различных слов длины ?. В наших двух универсальных множествах содержится отображение, инъективкое на этом словаре. Но- мер этого отображения обозначим через Numx, l^Numx^^. Рассмотрим теперь отображение ?: S->[—\S\—1,0], где для слова weS полагаем <Jw = 1 ?? ? + <^NumDRw (/btf^W). F.15) Это отображение инъективно на словаре S. Для слов W! й W2, у которых соответствующие им вершины DRWi и Dr\v2 различны, разнозначность достигается за счет первого слагаемого в F.15). Если же DrWi = DrW2, to разнозначность обеспечивается вторым слагаемым. Подсчитаем программную сложность отображения ?. Программа разбивается на несколько блоков. 1. Отображение w->~?>rw, w^S. Это программа дихотомического поиска, описанная в лемме 4.1, где p = r=|Arw|. Согласно лемме 4.1, условию F.9) и равенству |S|=7 = 2Tn сложность этой программы равна п-2г-\-С = о(Т). 2. Отображение х-ИЬ(х), где |х| =r|b(x) | =?. Каждой вершине r-го этажа дерева ? ставится в соответствие такой вектор Ь(х), что определяемое им по формуле E.84) отображение fb(x) инъективно на соответствующем ? подсловаре Sx . Это отображение задается таблицей, состоящей из 2' слов длины ?. Согласно F.9) и F.13) объем таблицы составляет о(Т) бит. 3. Отображение w-Hfb(Drw)W. На вход блока поступают Ь(х), где x = Z)rw, и w. На выходе появляется вектор h(D w w, определяемый по формуле E.84). Программная сложность постоянна, время работы О(п). 4. Отображение, переводящее вершину Drw и слово fb (d w> w в слово DRrvt. Для каждой вершины х, |х|—г, составляют таблицу для ведения дихотомического поиска вплоть до R-ro этажа. Эта таблица состоит из 2Л~Г слов длины ?, с которыми сравнивается слово h{D w)W. Общий объем всех таблиц равен 2?·2?^? = ?(?). 5. Отображение х-э-Lx, |х|=/?, которое вершине ? ставит а соответствие число листьев дерева ?, расположенных левее х. Программа вычисления этого отображения описана в лемме 4.4, Выбирая параметр р = г, находим, что сложность этой программы равна 0(Т og og )=о(Г). На вход поступает DRvt, на выходе имеем L(Z)flW). 128
6. Совокупность отображений ?\, ...^, входящих в универсальные множества U(E», ??, ?) и ?(??\ ?2, ?). Каждое из этих отображений дейс!вует из ?»* в отрезок [О,— ?—1]. Точки от- ? резка представляются словами д шны Flog (?/?) *|. Значит, таблица каждого из отображений имеет длину не более 2*1 log (?/?) бит. уценка для чис га отображений ? дается формулой F/14). Если учесть еще и простое неравенство 1+A/?—1I?A—?)<1, 0<?*?1, F.16) fO получим log о < ~^~ log Г + о (п) ^ 0,8 log Г, F.17) Общая длина таблиц дчя всех отображений не превысит ti-2ulog(—Г), что в соответствии с F.17) ь F.12) есть о (Г), ? 7. Отображение x-vNumx, где |?|~??. Вершине ? R-?? этажа дерева ? ставится в соответствие номер Numx того отображе- ш, которое инъективно на соответствующем ? подсловаре Sx . Таблица отображения содержит 2R слов длины flog v]. Из со- тношеиий F 13) и F.14) находим, что общая длина таблицы в битах pogtH-2*< riogeil+[— -l)ln(l -a)Uo(T). Таблица этого отображения дает основной вклад в сложность программы вычисления нумерующей функции ?. На вход поступает ^W, на выходе имеем Num Drw. 8. На заключительном этапе проводим вычисления по формуле F.15). Выход блока 5 делится на коэффициент а, берется целая часть. Берется подблок с номером Num DRw из блока 6. На ^о вход подается f(bz>rw)W. Результат складывается с [-~~-LDrw\9 ч^о и дает ?(\?). Суммарная сложность всех блоков равна асимптотически сложности блока 7, что и требуется. Время вычисления равно О(п). Теорема доказана. Схема вычисления нумератора изображена на рис. 6.1. Рассмотрим пример на построение нумератора. Пример носит иллюстратив- 1й характер, поэтому определяющие нумератор параметры г, R и ? выбира- Тся из соображений удобства и не удовлетворяют соотношениям F.9), FЛ0), 6·12). Возьмем /г = 6, источник 5 порождает слова {000OG1, 000011, 011011, °Ю0, 100101, 100111}, |5|=Г«6. Построим для этого множества нумератор коэффициентом загрузки а=1, действуя в соответствии с доказательством *°ремы 6.2. . Равномерное дерево ? с шестью вершинами изображено на Ч 6.2. Его вершины помечены двоичными словами. 129
w Дихотомический поиск. г этажей, 7 слоба длины ? -I)rw Вектор &,\x\=rt переходит б вектор ? длины ju b(Brwy Вычисление многочле на 6 поле Галуа у] по формуле EМ) fb(BrW)W LJ3Rw Ъ Счетчик листьеб л ? бее dRw Умножить на 1/*, взять целую часть •Bnw ¦2?>-«- Дихотомический поиск. Zr блоков no R-r этажей слоба длины /? Вычислитель номера отображения, инъективного на $* в>М 6. Универсальное множестбо отображений - Nam ?? w Сумматор YNumBR wV\> (Br w) w/ Рис. 6.1. Схема вычисления нумератора Рис. 6.2. Пример построения нумератора При описанном в тер- реме соответствии вершине 0 отвечает множество 50=@00001, 000011, 011011}, а вершине 1 — множество Si = {100100, 100101, 100111}. Множество So содержит три наименьших элемента S. Принадлежность нумеруемого элемента w множеству So или Si определяется путем сравнения w с наибольшим элементом 011011 из 50. В нашем примере выбираем г=1, ¦/? = -2, ?-2. Рассмотрим поле GFB2) с неприводимым многочленом л:2 + +л'+1, и пусть ? — корень этого многочлена. Имеет место следующее соответствие между элементами поля и двумерными векторами: 00-И), Ю~М, 01-^?, 11-МЭ2. Если выбрать b@) = l, bA)== = ?2, то отображение fb (w)*.W -* Wj + W2b (W) + W3b2 (W) оказывается инъективньгм на Sx, # = 0, 1. Здесь wb w2, w3 — последовательные двумерные подвекторы вектора w. Значения отображения fb(w) приведены в табл. 6.1. 130
Таблица 6.1 Пример вычисления нумераторов W 000001 000011 опои 100100 100101 100111 Dtw 0 0 0 1 I 1 fb (#!W)W 0 = 01 02=11 0 = 00 0 = 00 ?3 =11 1 = 10 D2 w 00 01 00 10 11 11 Num?>2w 2 0 2 0 2 2 9 0 1 0 0 1 1 LD2w 0 2 0 3 4 4 <PNum D2 w (fb(Otw)w) 1 0 0 0 1 0 -? (w) 1 2 0 3 5 4 Переупорядочиваем S0 и Si в соответствии со значениями fb(W) . Получим для вершин второго этажа дерева ?: S00 = {000001, ОПОИ}, 501 = {000011}, 510= {100101}, 5а = {100101}. Рассмотрим три отображения из Е2 в ?1: ?? тождественно равно нулю, ?? равно «первой, ?2 — второй букве слова w = wiw2. В табл. 6.1 указаны: номер NuhiDhw того отображения, которое инъективно на множестве DRwy число листьев LDRw и результирующий номер ijw, равный сумме LDRwt и значения cpNumD^w на fb (Dr w)· § 6.4. СЛОЖНОСТЬ ХЕШИРОВАНИЯ Поиск информации методом хеширования описан в § 4.4. Функция / преобразует слова словаря S в их адреса в памяти компьютера. Слова с одинаковыми адресами образуют список. Среднее время иоиска слов линейно связано с индексом функции f на словаре S. Нахождение простой хеш-функции для словаря S можно представлять себе двумя способами. Первый способ — это случайный выбор некоторого отображения из ?-хеш-множества, где а — желаемое значение индекса склеивания. Второй шособ — конструирование хеш-функции с заданным индексом специально для словаря S. При случайном выборе хеш-функций необходимо иметь ?-универсальное множество, из которого этот выбор производится. Вопрос о мощности универсальных множеств рассматривался в гл. 5. Сейчас рассмотрим, какова должна быть программная сложность хеш-функции, подобранной для данного словаря. Пусть заданы словарь S^Eny коэффициент загрузки ? и желаемое значение индекса а. Через L(S, а, а) обозначим минимальную длину программ равномерных отображений f:En~*-[09 ... ..., т—1], где m=|S|/a и /(/, S)^a. Через L(x, a, a) обозначим Максимальное значение L(S, a, a) по всем словарям S, имеющим 131
энтропию т, Иначе говоря* ?, (?, ?, ?) — сложность сжатия с индексом а и коэффициентом загрузки ? наихудшего из словарей; имеющих энтропию т. В следующей теореме, опубликованной % [84], оценивается величина L(t, ?, ?). Теорема 6.3. Пусть 0<?<1?/2, 77m = a=const, я-*с*>. Тогда: а) если индекс ?<?, то сложность L(t, a, a) экспоненциально велика относительно длины слов п: C2-2nx<.L(xi a, ?)<G?·2??; б) если индекс a = a, то сложность становится линейной: Сп< <L(t, a, a) <.n; в) если индекс a>a, то logn<L(?,»?, a)<Ln. Доказательство. Значение коэффициента загрузки, равное ау соответствует избыточности, равной —\oga/(n%) (ом. B.13)). Поэтому все нижние оценки для сложности хеширования следуют из нижних оценок для мощности a-хеш-множеств, содержащихся в теореме 5.2. В теореме 6.2 построено отображение, индекс которого на словаре S равен нулю, а сложность равна С-2пх. Это дает верхнюю оценку пункта а). Для нахождения верхней оценки в пунктах б) л в) обратимся к § 5.6. Там построено для словаря S отображение fb , индекс которого не больше ?·2~>\ а сложность равна ?. Выберем 2U —m = T/a и будем считать, что ? является делителем числа п. Тогда индекс /(fb> S)^?a, а сложность fb равна ? й верхние оценки б) и .в) установлены. Заметим, что если воспользоваться полиномиальным хеш-семейством из § 5.6, то для каждого словаря 5 построим хеш-функцию, индекс которой асимптотически равен ?/?, а сложность равна ??. § 6.5. ЭФФЕКТИВНОЕ ПОСТРОЕНИЕ НУМЕРАТОРОВ Нахождение нумераторов в теоремах 6.1—6.3 сопряжено с большим перебором. В теореме 6.4 предлагается очень простой метод построения близкого к оптимальному нумератора. Он был впервые описан в [26]. Теорема 6.4. Для всягого словаря S^Hn существует безызбыточное отображение /, ннъективное на S, сложность L(f) которого не превышает C|S|log/i, а время работы и используемая память равны О(п). Доказательство. Для заданного словаря S, состоящего из бинарных слов длины п, положим я^B. \S\<n\ Для словаря S и выбранного числа ? построим поисковое дерево с разбиением р, для которого согласно лемме 5,6 число вершин в базисе ?' разбиения ? не превышает 2|S|/p, а максимальное число вершин d в поддеревьях ? не превышает 8ря. Согласно лемме 4.3 нумератор LOA листьев дерева ? и слов словаря S 132
может быть вычислен программой, сложность которой равна О (| ?' | log | ? | + | ? | log Я (?) rf), где ?(?)=?, |A|<|S|. При выбранном значении параметра ? это дает оценку теоремы 6.4. Построенный в теореме 6.4 нумератор является слабым, т. е. с его помощью невозможно определить, принадлежит ли слово ? словарю S. Однако некоторая модификация превращает этот нумератор (в сильный. Через Lst(S) обозначим программную сложность шростейшего сильного (равного 0 на дополнении S) нумератора словаря S, а через Lst(x) — максимум Lst(S) по всем S^?n, h(S)=x. Теорема 6.5. Пусть ?-^co, 0<?<1. Тогда для сложности Lst(%) безызбыточного сильного сжатия информации, порождаемой источниками с энтропией ? при длине слов я, справедливо асимптотическое равенство Lst(z)~2^(\ — ?) л. Время работы и дополнительная память составляют О(п). Доказательство. Число словарей с энтропией ? ?2?? 02"-«<1-г) + оB"~) О ? —¦ ? 2 С помощью одной программы *можно сильно сжать только один словарь, поскольку вне словаря сильный нумератор равен 0 (одна программа может слабо нумеровать несколько словарей). Нижняя оценка теоремы является простым следствием этой оценки числа 'словарей и утверждения 2.4. Для нахождения верхней оценки поступим вначале, как в доказательстве теоремы 6.4. Полагаем ?(?) — ?, ?~?, выбираем согласно лемме 5.6 поисковое дерево ? для S с разбиением ?={??, ..., А\р\} и базисом ?' этого разбиения, так что |?'|<— |5|; F.18) ? ?/(?)== max ( ?, | <8/?2. F.19) Kt-z \ ? ? Отображение LoA ставит в соответствие словам x^S номера отвечающих им листьев дерева ?, причем для длины программы этого отображения согласно теореме 6.4 справедлива оценка Л (?? ?)=0( ? 5! log n). F.20) Отображение Lo ? — слабое. Определяем его на всех словах ?п, ставя каждому из них в соответствие, независимо от принадлежности к словарю S,_HOMep некоторого листа дерева ?. Распространим отображение L так, что на словах вне словаря 5 оно будет равно 0. В § 4.1 было определено понятие остатка r(w) слова w по отношению к ?. Это совокупность букв wt не 'встреченных на пути от корня к листу Aw, Пусть ? — лист дерева ?. Через А~г(х) будет обозначено то единственное слово w^S, для которого Лш = 133
=я. Назовем остаток слова ?ггх остатком листа ? и обозначим его через г(х). Для поддерева ?< обозначим (через г (?*) конкатенацию (соединение) остатков всех его листьев в возрастающем порядке, ?=1, ..., \Р\. Понятно, что | ?(?,)| <?(?)^(?). F.21) Соотношение F.19) позволяет переписать F.21) в виде |?(?,)|=*0(?3). ?=1, .... |Я| . F.22) Через г(Д) обозначается конкатенация всех слов ?(??), i=l, ... ..., \Р\9 взятых в порядке возрастания номеров поддеревьев. Длина >пути от корня ? до листа ? равна h—\r(x) |. Здесь применимо неравенство Крафта из § 2.2, которое принимает вид 2 2-<«-?'<*>«<1. F.23) Теорема Шеннона о бесшумном кодировании является следствием этого неравенства. Здесь она записывается как 2 /¦(*)< [ LA | (/г- log | LA ! )= | 5 | (/г- log \ S \ ). F.24) л*еьд В программу^сильного поиска для 5 будут входить программа слабого шоиока L/??, слово /*(?) и еще две вспомогательные таблицы. Первая из них является таблицей отображения %'-*¦ -* ? \г{у) |, где ? — вершина базиса ?'; х' — номер этой вер- у.у<х шины в ?'; #'^|?'|. В таблице записано |?'| слов длины [log|5|(n—log\S\]=0(n) бит согласно F.24). В соответствии с F.18) общий объем таблицы составляет 0(|5|) бит. Вторая вспомогательная таблица содержит \Р\ подтаблиц, i-я из которых является таблицей отображения *г-> ? |г(^)|, если ? — лист дерева ??, и Xi-^0, если х — нелистовая вершина дерева ??, i=l, ..., |Р|. Через х\ обозначен номер вершины ? <в нумерации всех вершин дерева ?<, |#i|^log|Ai|. Подтаблица с номером i состоит из |??| слов длины O(logn), как это следует из F.22). Значит, общая длина второй таблицы составляет ?! J 1д/1 log*) =0(| 5| log/г). Из F.20) и F.24) объем программы слабого поиска LoA и двух вспомогательных таблиц есть о(|5|(/г—log|5|). Главный вклад tB программу сильного поиска дает слово г (А). Это соответствует утверждению теоремы, так как получаем для суммарной длины программы / LSt(f)=\S\(n-log |5|)(l+o(l)). Имея слово w9 \w\=nf алгоритм сильного поиска / работает еле- 134
дующим образом. Прежде всего он находит лист А'ад базиса А' и лист Аад дерева ?, как это и делалось алгоритмом слабого поиска. Буквы слова ад, неиспользованные для нахождения Аад, образуют остаток гад. Пусть / — номер того поддерева разбиения Р, которому принадлежит А'ад. С помощью первой вспомогательной таблицы находим число букв слова f(A), соответствующих листьям г/<А'ад. Опустим иайденное число букв слова г(А), начиная слева. Подобным же образом с помощью второй вспомогательной таблицы найдем число букв слова г (А), соответствующих листьям дерева Aj, меньшим Аад. Опустим дополнительно это кисло букв слова г(А) и возьмем |г(^)| букв полученного слова, начиная слева. Получим слово .г(Аад). Теперь если г (ад) = г (Аад), то полагаем значение сильного нумератора равным значению слабого LoAw. Если же г (ад) =^/* (Аад), то сильный нумератор равен 0. Время и дополнительная· память равны О(п). Идея введения слЪва г (А) .принадлежит О. Б. Лупанову [30]. Для словаря 5 табл. 4.1 и его поискового дерева, указанного на рис. 4.1, слово г(А) равно 0001010110110. Вспомогательные таблицы изображены в табл. 6.2. Таблица 6.2 Длины остатков листьев, предшествующих ? Номер вершины х, *еА' ? \Г(У)\ —суммарная длина у, у<х, s/eLA остатков листьев, предшествующих ? Номер вершины"**, ? \Г(У)\ —суммарная длина ос- у,у<х,х&Ь&1 татков листьев ?^, t = 1, 2, 3 0 12 3 4 0 0 6 6 10 ?? 0 1 2 0 0 3 ?2 0 1 2 0 0 2 ?3 ^ 0 12 3 4 5 6 0 0 2 2 2 2 2 Пусть да=11-101. Тогда А'ад = 4 и АадеАз. В соответствии с таблицей для А' следует опустить первые десять букв слова /*(?). В нумерации вершин поддерева Аз лист Аад имеет .номер 3. Обращаемся к таблице для Аз. Опускаем еще две буквы ^(А). Поскольку | г (ад) | = 1, )возьмем одну букву полученного слова, что дает /*(Аад)=0. Видим, что 1 = г (ад) =^ r (Аад) =0, и, значит, сильный нумератор равен 0 на этом слове ад. Следствие 6.3. Для всякой частичной булевой функции g, определенной на множестве S^En, существует программа ее вычисления, имеющая длину 0(|S|log/z), при времени и используемой памяти, равных Q{n). Программа строится по функции весьма простым образом. 135
Доказательство. Возьмем дли словаря S слабый нумератор /, Щ)< <C|*5|logn, согласно теореме 6.4. Для функции g* определенной на 5, построим бинарное слово g длины \S\. На месте с (номером /(&>), |ш|=/г, этого слова стоит g(w). Программа вычисления функции g состоит из слеша g и программы нумератора /, так что ее общая длчна равна 0(\S\\ogn). Получая любое слово w, \w\ =#, программа находит букву слова g с номером f(w) и полагает g(w) равным этой букве. Программа вычисления функ г<ии g строится по теореме 6.4 весьма просто. Следствие доказано. Заметим, что, как следует из [35, 60, 93], для частичной функции g существует программа сложности |S|. Однако эта программа находится по функции g очень сложным образом. Следствие 6.4. Пусть имеется булева функция g, принимающая значение 1 на некотором множестве S, S^Eny 0<ЯE) = =т<С1. Тогда существует программа ее вычисления, имеющая сложность L(g)~2nxn(\—?), что является асимптотически наилучшим. Время вычисления и дополнительная память равны О (л). Доказательство. Нижняя оценка сложности 2nm(l—?) вытекает из того, что число булевских функций, принимающих единичное значение JS|=2n,f раз, равно С'Д'. Для вычисления функции g возьмем сильный нумератор f области S, где g равна единице. Нумератор построим ло теореме 6.5, его сложность равна требуемой следствием. Если изменить значение нумератора 0 на 0, а любое отличное от 0 значение на 1, то программа вычисления / превратится в программу (вычисления функции g, и следствие доказано. Программа вычисления функции g может быть построена из схем, приведенных в [30]. При этом длина программы будет асимптотически наилучшей, как и у программы следствия 4.4. Однако время работы будет существенно больше, чем время работы программы следствия 6.4. § 6.6. ЭФФЕКТИВНОЕ ПОСТРОЕНИЕ ХЕШ-ФУНКЦИЙ Хеш-функцию выбирают случайным образом из универсального хеш-множества. Однако, если неловезет, процедуру выбора придется повторять очень много раз. Опишем достаточно быстрый метод построения хеш-функции для данного словаря. Эту функцию будем искать в виде конкатенации полиномиальных, определяемых формулой E.84). Теорема 6.6. Пусть S — словарь, |5|=Г, 0<ft(S)<I, /г->оо (/г — длина слов). а) Для всякого р>0 и ?>0 существует линейное кодирование 5 с избыточностью не выше / и индексом ?-?+?^ Время нахождения этого линейного кода равно 7(logr)c, где С^С(е) -const. 136
б) Для всякого а>0 и ?>0 существует линейное кодирование с коэффициентом загрузки не менее ? и индексом, равным константе, зависящей только от ?. Время нахождения этого линейного кода равно ??+?. Заметим, что, как следует ,из теоремы 5.2, индекс, равный Т~р, является наименьшим, при котором можно рассчитывать на существование простой хеш-функции. Так что удаляемся от оптимума только лишь -на ? в показателе. Допустим, что упорядочили слова словаря 5. Адресом слова w^S объявляется его позиция в этом описке. Известно, что время, требуемое для упорядочения ? слов, равно CTlogT [1]. Для нахождения же хеш-функции нам потребуется немного большее время, а именно T(logT)c при p=const или ?1+? при ?=const. Однако если в первом случае, чтобы найти адрес слова, должны помнить весь список, содержащий Тп бит, то теперь — лишь программу хеш-функции, содержащую не более ? бит. Возникающие при хешировании коллизии невелики, как локазывает значение индекса. При р>1 наша теорема дает возможность строить совершенные хеш-функции (инъекции). Доказательство. Пусть ? — некоторый целочисленный параметр, точные значения которого выберем позднее отдельно для случаев а) и б). В обоих случаях должно выполняться неравенство \?/?]<2?· или даже более сильное неравенство ? + ?< ?>*2?·. F.25) Для каждого вектора Ь, |1>|=?, определим полиномиальное отображение fb :En-+GFBv) по формуле E.84). Выберем среди элементов поля GFBv) тот элемент, для которого индекс соответствующего полиномиального отображения на словаре S достигает минимума. Пусть это будет вектор Ьь Согласно § 5.6 для индекса полиномиального отображения ht имеем /, = / (fbi, S) < ? ? ?/? 1 · 2-?\ F.26) Теперь для любого вектора beGF{2^) определим конкатенацию отображения ht и f ь, которая переводит слово we5 в fbt (w) fb (w). Выберем такой элемент, для которого индекс этой конкатенации на 5 достигает минимума. Пусть это будет вектор Ь2. Согласно теореме 5.3 для индекса h этой конкатенации справедливо неравенство /2< U ???"?·2-?\ F.27) Фиксируем некоторое число k и повторяем нашу операцию k раз. На k-u шагу к уже выбранным векторам bi, ,.., Ьи~\ добавится тот Лектор Ьь, для которого индекс h конкатенации w-^fb, (w) ... — *?>?_? (w)fbfe(w) на S минимален. Согласно теореме 5.3, неравенствам F.26) к F.27) получим 4<(?^?·2~^. F.28) параметры ? и k будем выбирать по-разному в случаях а) и б). 137
а) Полагаем Л= p+1 log Г . F.29) Iх J Тогда, как и требуется в теореме, избыточность, равная ??/logT— — 1, не превысит заданного числа р. Положим ?—Clogn, где С — достаточно большая константа. Из F.28) и F.29) находим, что индекс результирующего отображения .не превышает ?~?+?, что и требуется. б) При заданном коэффициенте загрузки ? выбираем достаточно большое постоянное целое число k, полагаем ?=?-4-???G-/?I . F.30) k j По указанному выше правилу к—\ раз выбираем слова длины ?, а на последнем, А-м, шаге выбираем слово длины ?'=? log (?/?) ? - (А-1) ?. F.31) Длина результирующего кодового слова равна [log(?/?)], и коэффициент загрузки не превзойдет ?·2-?1°^?/?^?, как и требуется. Для результирующего индекса h имеем согласно F.28) h < (??? -2-^ Г ?/?' 1-2-^. F.32) Согласно F.30) и F.31) ?.'>?——\-С, F,33) k где x = log T/n, C = const. Из F.32) и F.33) /Л<ГС-2-П°*т/а1^с = =const (числа ? и k — постоянные). Значит, в результате получается отображение € постоянным, хотя, быть может, и очень большим индексом и не превышающим ? коэффициентом загрузки. Подсчитаем трудоемкость нашего алгоритма. Элементы Ьь ... ..., bfe выбираются из поля GFBv). Если уже выбрано некоторое число / этих элементов, то на очередном шаге для каждого из оставшихся элементов толя и для каждого слова weS надо сделать вычисления по формуле E.84), что потребует не более 7-2^ — ?2 = ???·2?? операций. Далее надо составить для каждого И- w и каждого b^GFB^) конкатенацию w-^fb, (w) ...Ц (w)fb (w) и подсчитать ее индекс. Для подсчета индекса надо упорядочить массив, состоящий из ? двоичных векторов, что потребует TlogT операций с векторами размерности п, т. е. ТпН операций. Затем надо выбрать тот Ь, для которого индекс минимален. Итак, число операций не превышает (?/?-2^+7^.2^) Л. F.34) Подстановка ^i = Clogn в случае а) и ?=— log— в случае б) 138
Таблица 6.3 Значения отображения fx (w) — W\ + w2x-\-WsX2 Слова w s 5 100100 100101 100111 100001 000100 000001 000011 011011 Индекс /(/*, 5) Запись слов w в виде w = wl3 w2, w3 &i W2 W3 1 ? 0 I 0 0 1 0 02 1 0 0 0 0 0 0 0 0 0 0 ?2 ? ? ?2 Значение fx(w) при х, равном 0 1 1 1 1 0 0 0 ? 9/4 1 02 1 0 О2 0 0 ?2 0 5/4 ? ? ?2 0 0 ?3 1 0 ? 5/4 ?* 0 ?2 1 ? 1 ?2 1 0 5/4 дает результат теоремы. В случае б) на последнем шаге имеем дело с векторами длины ?', что не меняет результата. Пример на применение этой теоремы записан в виде табл. 6.3. Слева в таблице помещен словарь S, содержащий 7 = 8 слов длины п = 6. В качестве ? выбрано число 2, так что вычисления проходят в поле GFB2). Неприводимый полином степени 2 в нашем случае х2+х+\> его корень обозначен буквой ?. Между двоичными векторами и элементами поля устанавливается соответствие 00-^0, 10-^1, 01->0, 11->?2. Для любого элемента ? поля GFB2) справедливо х2=х+1, х2=1 (теорема Ферма). Рядом с каждым словом wgS указана его запись в виде конкатенации ?/?=3 элементов GFBv). Далее идут четыре столбца, соответствующих четырем элементам GFB2). На месте, соответствующем слову weS и элементу хе ^?/^B2), стоит wi-fw2x-hw3x2 согласно E.84). Под каждым столбцом указан его индекс. Минимальные индексы 5/4 имеют отображения, определяемые элементами 1, ? и ?2. Возьмем, скажем, отображение, определяемое элементом 1. Тогда конкатенация w-vfi (w)fo(w) будет иметь индекс 3/2, конкатенация w->-fi(w)X Xfe (w) — индекс 5/4. Конкатенация w~>fi (w)fe-> (w) будет иметь пулевой индекс, т. е. это отображение ипъективно на 5. Его коэффициент загрузки равен 8/24= 1/2. Изложенный выше метод может быть использован в следующей схеме двойного хеширования, предложенной Фредманом, Комлошем и Семереди [76] (ФКС-хеширование). На первом шаге выбирается некоторая функция /, имеющая на словаре S конечный индекс и конечный коэффициент загрузки: -IfS|-l /{/, S] = ! * V /i'(*)~l=Clfai/, S) = C2. \ S k j 139
Здесь n(k) — мощность k-?? кластера, 0*?&?? — \S[—1. Далее <х для каждого кластера выбирается своя совершенная хеш-функция, размещающая слова этого кластера в таблице размера n2(k). Для этого используем линейное хеширование из § 5.6; параметр ? выбираем равным 21og|S|. Для любого кластера найдется хеш- функция индекса |5|/2^<1/|S|, т. е. инъективная. Суммар'ная машинная память, используемая для записи всех слов, не превзойдет (Ci + l)|S|. Память, нужная для записи вторичных хеш- функций, равна ? —- бит. Чтобы найти слово, нужно сделать ее всего два вычисления: найти первичную .и вторичную хеш-функции. Практическое использование двойного ? КС-хеширования описано в [66]. § 6.7. ОСНОВНЫЕ ВЫВОДЫ Основные результаты этой главы представлены в табл. 6.1. Там Для словаря, содержащего ? слов длины я, указаны время работы и асимптотическая длина программы различных поисковых алгоритмов. В таблице указан индекс склеивания, равный нулю для инъектвных отображений и положительный для хеш-функций. Если отображение различает слова, принадлежащие словарю, от слов, не входящих в словарь, то оно называется сильным. Длина наилучшей программы, осуществляющей сжатие с избыточностью р, равна 7,1~Р+0A) при р<1 и 0(п) при р>1; длина программы безызбыточного сжатия равна Г log е. Эти программы оптимальны, но их довольно трудно разыскать. Программа квазиоптимального поиска из § 6.5 более длинная, но легко строится по заданному словарю. Наилучшая программа сильного поиска имеет длину Т{п—log T). Такова же длина программы нумерационного поиска, но время работы программы нумерационного поиска существенно больше, чем у лаилучшей. Было установлено, что для любого словаря можно найти простую хеш- функцию, если индекс склеивания не меньше коэффициента загрузки. Эти хеш- функции строятся с помощью полей Галуа. Длина программ этих функций близка к наименьшей. Существует связь между сжатием данных, порожденных комбинаторным •источником, и исправлением произвольных аддитивных шумов. В силу этой связи многие результаты могут быть переформулированы для каналов с такими шумами. В частности, для них доказывается теорема Шеннона. Устанавливается, что для большинства каналов с аддитивными шумами оценка Варша- мова для объема группового корректирующего кода является точной. Для нахождения некоторых из оптимальных программ сжатия предлагаются довольно простые процедуры. Такие процедуры предложены для сильной нумерации и хеширования. В последнем случае время подбора хеш-функции для словаря близко к минимальному. 140
ГЛАВА 7. СЛОЖНОСТЬ КОДИРОВАНИЯ вероятностных источников § 7.1. ПРОИЗВОЛЬНЫЕ КОНЕЧНЫЕ ВЕРОЯТНОСТНЫЕ ИСТОЧНИКИ Конечный вероятностный источник порождает конечное число букв с заданным распределением вероятностей. Не ограничивая общности, считаем, что эти буквы представлены двоичными словами некоторой длины п, я>0. Вначале рассмотрим множество источников, каждый из которых порождает какие-нибудь ? слов с равными вероятностями. Это множество обозначим через ? (я, Т). Очевидно, | ? (я, Т) | =^ = 2^0-^)+° <Г\ G.1) * где 7=2™. Лемма 7.1. Пусть 0<?<??<1, T=2xnt n-^oo; f — префиксный код; С(/, 5) —стоимость / на источнике S. Тогда число источников S^A(n, ?), для которых С(Д S)^xi/z, не превышает 2??(?»~?+?>, где ?>0. Доказательство. Пусть для отображения f символ щ обозначает множество тех слов из Еп, у которых длина /-кодового слова равна k, ?=1,..., п. Для источника S^A(/z, T) множество порождаемых им слов обозначается той же буквой S, так что |S|=7\ Символ ?(/, ??,... ,хп) обозначает множество тех источников S^A(n9 ?), для которых |?&?M|~*?» &=1, ..., л, a Z(f) — множество источников, на которых С(/, S)^r\n. Ясно, что *?+ .·. +*я=7\ G.2) Для множества Z(f) имеем 2(/)= U Z(f* *u ···, *«), G.3) где объединение берется по всевозможным решениям (хи ..·, Хп) уравнения G.2). По определению множества Z(f, хи ..., хп) \Z(f, xu...9 xn)\=U Сх^. G.4) Поскольку число целочисленных решений уравнения G.2) не превышает (Г+1)п, то из G.4) и G.3) следует оценка сверху для ад.· \Z(f)\<(T+ 1)" max ? C*ft* . G.5) Xlt ..., Xn k=l 2 В G.5) произведение можно брать по ненулевым числам Хи, так как C^k =1. Кроме того, хк<2к в силу инъективности кода /. Итак, 0<xk< 2*. G.6) 141
Воспользовавшись формулой Стерлинга в виде Схппе~п ??<?\ < С2ппе-яVn, ?> 1, получим следующую оценку для числа сочетаний: С3<2а*"("»2*>( 2- У'2С< С.2*.2**"С***>. G.7) V xhB*-xh) J Стоящее в экспоненте выражение перепишем в виде 2*#(xJ2*)= **(*- log ^)-2^1- xk/2k) log A - xk 2*). Для стоимости кодирования С (/, S) согласно A.14) в нашем случае имеем С(/, S) = —2***<V*· G.8) Применим неравенство Иенсена для функции —#Iog.v, учитывая равенство G.2): - 3 *А log ** = ? I - У -? bg -J -Flog Г < — Г ^ log-^ Tlog ?=-???. G.9) Еще раз используем то же неравенство, приняв во внимание, что 2°+21+ ... +2*=2Л+1—1: X — liog|i-V 2Ч 2«+<_ lj ^ jj- 2ЙBЛ+1- 1) ==-B/.+1-1)A 1—^ log |l —\ . G.10) Поскольку Г=2™, ?>0, то lim (Г/2") = lim G^/B^+1—1)) = /1->?? tl->00 =0. Отсюда из G.10) и формулы —log(l— ?) =0(?), ?~+0, следует, что i^fl-^-l log (l- ±)=0<Г). GЛ1) 142
Теперь нужно лишь подставить в неравенство G.5) оценки G.7)—* G.9) и G.11): I Z(f) 1 < (? + 1)и.21 + --- + 'гСл-2-7'л('с'-''г)+0(Г)===2Гл^"^+0<г>. Полученное равенство эквивалентно утверждению леммы. Теорема 7.1. Пусть 0<?<1, ?^?, ?A+?)<1, п-^оо. Тогда для программной сложности №(п, ?, ?) кодирования наихудшего вероятностного источника с энтропиен ? при избыточности ? справедливы оценки logL^(ft, ?, ?) Ж п. Иначе говоря, любое нетождественное кодирование экспоненциально сложно. Доказательство. Для доказательства необходимо установить верхнюю и нижнюю оценки. а) При определении верхней оценки для любого источника S префиксный код задается деревом с 2п листьями. Число таких деревьев равно С2*1 [16], так что дерево может быть восстановлено по своему номеру, имеющему длину С-2п бит. Программа вычисления кодового отображения состоит из двух частей. Первой частью является номер кодового дерева. Вторая часть — таблица, содержащая 2П слов длины п. Для слова х^Еп в этой таблице указывается номер того листа кодового дерева, который соответствует коду х. Общий объем таблицы не превышает Сп, С>0. Ясно, что с помощью этой программы можно найти код любого слова х, и ее длина отвечает утверждению теоремы. Несколько более короткая программа получается при использовании теоремы Гильберта и iVLypa о монотонных кодированиях (см. утверждение 2.10). Если избыточность ? положительна, то можно ограничиться лишь записью номера кодового дерева. Его листья соответствуют словам из Еп в лексикографическом порядке, и вторая часть программы становится излишней. б) При определении нижней оценки по заданным числам ? и ? определим ?? :?? —?A+?). Стоимость кода %{п соответствует избыточности р. Рассмотрим множество ?(?, ?) источников, определенное в начале параграфа. Источники из ? (я, Т) имеют энтропию ?. Как следует из леммы 7.1, любой код f имеет избыточность, не превышающую р, не более чем для 2??<?«-?+?> источников из ? (л, 7). Деля число источников в ? {?, Г), определяемое G.1), на это количество, получаем, что необходимое число кодовых отображений не меньше 2^(^-^. Отсюда Lv(ny ?, ?) ^??A— ?—?), где 1— —??—?>0. Учитывая, что 7=2??, получаем утверждение теоремы. § 7.2. СЛОЖНОСТЬ КОДИРОВАНИЯ МАРКОВСКИХ И БЕРНУЛЛИЕВСКИХ ИСТОЧНИКОВ Как показывает теорема 7.1, существуют вероятностные источники, любое нетривиальное кодирование которых экспо- 143
ненциально сложно. К счастью, для употребительных источников Маркова и Бернулли дело обстоит не так плохо. Рассмотрим вначале случай источников Бернулли, ограничившись для простоты двоичным алфавитом. Пусть задано число п>0. Двоичные слова длины ? разбиваются на л+1 подмножеств по числу вхождений единицы: слова, содержащие 0,1,... ..., ?,... ,/7+1 единиц. Код слова состоит из двух частей, префикса и суффикса. Префикс является общим для подмножества слов с данным числом единиц. О его выборе скажем чуть позднее. Суффикс является номером слова в подмножестве. Как находить этот код, сказано в § 4.3, где описывается алгоритм нумерационного кодирования. Согласно данному алгоритму номер N(x) слова х, |х|=л, имеющего ri(x)=r, r>0, вхождений единицы, во множестве всех Сгп слов, содержащих г единиц, равен Здесь щ — номер ?-й по счету единицы в слове х9 i=l,... ,г. Вычисления ведутся следующим образом. Если i-я буква слова ? равна 1, то вычисляем величину С*+{ = С*—l±l— . G.13) Если же ?-я буква равна нулю, то вычисляем величину ? — к Прибавляя найденное значение G.13) или G.14) к сумматору, где вначале находится 0, после обработки последней п-и буквы ? получим номер N(x) этого слова согласно G.12). При этом необходимо осуществить (п—1) умножений и делений по формулам G.13) и G.14), а также ? сложений. Величина первого множителя в формулах G.13) и G.14) не превышает 2П, а величины второго множителя и делителя не превышают п. Как следует из [20], число операций при умножении или делении ?-разрядного числа на 6-разрядное равно О (a-log Ь-log log fc), если а>&. Получаем следующее утверждение. Утверждение 7.1. Для вычисления номера слова х, |*|— n, в совокупности всех слов, содержащих заданное число г единиц, r=*r(x)t достаточно затратить О(n2·log log n-loglog log n) опера- ций над одноразрядными числами. Кроме того, номер N(x) можно вычислить, пользуясь таблицей биномиальных коэффициентов (треугольником Паскаля), если она заблаговременно составлена^ Фрагмент такой таблицы изображен ниже. На пересечении ?-й строки и /-го столбца стоит С^-ь 144
Строка 8 7 21 35 35 21 7 1 7 6 15 20 15 6 1 б 5 10 10 5 1 5 4 6 4 1 4 3 3 10 3 2 1 2 1 1 О Рассмотрим следующий пример вычисления номера N(x). Пусть я=8, *=01Ш1101. Здесь номера вхождений единицы в слово ? равны 2, 3, 5, 6, 8. Соответствующие слагаемые из формулы {7.12) выделены в таблице жирным шрифтом. Суммируя их, находим, что номер ?(?) =21+5+4+1 + 1=32. .Если известен .номер ?(?) и известно, что число единиц г(х) в слове ? равно 5, то для нахождения ? вна;чале определяем максимальное число пятого столбца таблицы, не превосходящее ?(?). Это 21=C58-i. Значит, п$=8, т. е. на восьмом месте ? стоит 1. Вычитаем 21 из 32, отолучаем 11. Находим максимальное число четвертого столбца, не превосходящее 11. Это 5=С4б-ь т. е. и4—6. Продолжая таким же образом, находим Мз=5, «2=3, ?? = 2. Трудоемкость этой процедуры декодирования совпадает по порядку с трудоемкостью кодирования. Перейдем к описанию выбора префикса. Самая простая возможность — выбрать в качестве префикса для кода слова л: двоичную запись числа г(х) единиц в этом слове. Эта двоичная запись для всех слов имеет одну и ту же длину flog(п+1I . Как уже указывалось в § 3.2, этот код является универсальным. Однако его максимальная избыточность на множестве двоичных источников равна в пересчете на букву асимптотически log п/п. Напомним, что минимальное значение этой избыточности равно (log п/п)/2. За таким кодом закрепилось название «код Линча — Дэвисона» [87, 71]. Однако факты универсальности такой схемы кодирования и простоты ее реализации были впервые обнаружены В. Ф. Бабкиным в [2]. В § 3.2 было указано, что асимптотически наилучший универсальный код получается, если длину префикса слова выбрать равной log* + -2"l log——V log —j-\~Ct где С — некоторая константа (при #=0, */=1). 145
Если известны вероятности букв р@) и рA), то можно построить для данного источника код, избыточность которого будет убывать как 0A/л), в отличие от 0(—— ]для универсального V ? J кода. Нужно, оставив суффикс без изменения, взять длину префикса равной Г- logjP@)^x)p(i)n-rwcM*>-|. Чтобы построить код для ^-буквенного источника Бернулли, достаточно знать вероятности его букв ? (Л ?), ..., ? (Ah). Наибольшая длина кода Шеннона равна max \logp(Ai)n] = 0(n). Сле- довательно, для задания такого кода достаточно помнить k-Cn — = 0(/2) бит информации (а не 0BСп) бит, как для произвольного источника согласно теореме 7.1). Наибольшую трудоемкость при кодировании источников Бернулли Ихмеет нахождение суффиксов. Вычисление префикса менее сложно. Кодирование марковских источников основано на тех же принципах. Множество всех слов разбивается на подмножества. Все слова одного подмножества имеют одну и ту же вероятность для всех источников данной связности. Код слова опять состоит из суффикса — номера слова в подмножестве и префикса, выбираемого из тех же соображений, что и в случае источника Бернулли. И кодирование, и декодирование марковских источников конечной связности имеют полиномиальную относительно длины блока сложность. Для источников Бернулли избыточность имеет вид 0( Y log k/k), где k — сложность кодирования. § 7.3. РАВНОМЕРНЫЙ ПО ВЫХОДУ УНИВЕРСАЛЬНЫЙ КОД В § 2.6 описан равномерный по выходу код. Порождаемая бернуллиевским источником последовательность кодируется словами постоянной длины. При этом избыточность убывает как C/d, где d — средняя длина кодового дерева (задержка). Теперь построим универсальный код такого же типа. Его избыточность будет убывать лишь немного медленнее (как Clogd/d), но код не будет зависеть от конкретного источника. Существование такого кода было установлено Б. М. Фитингофом; оценки избыточности проведены В. К. Трофимовым в [45]. Простая схема вычисления кода принадлежит Д. Лоуренсу [95]. Здесь будет приведена только верхняя оценка избыточности. Нижняя оценка, имеющая такой же порядок, содержится в [45]. Код строится следующим образом. Ограничимся случаем бинарных источников Бернулли. Зададим некоторое целое число /. Пусть ?—порождаемое источником слово, \х\ —его длина, го(х) и г\ (х) — числа 0 и 1 соответственно в этом слове. Объявим слово ? заключительным, или листовым, словом кодового дерева, если logC|°*|X)<i, но logCj^i"^/ при го{х)*?\?)/2. Если же 146
?) {x) > ? ?\ /2, то заключительное слово определяется аналогичное заменой 0 на 1. Построение кодового дерева изображено на рис. 7.1 [89]. Кодовые слова, имеющие одинаковые числа 0 и 1, отождествляются. Их представляют элементы треугольника Паскаля, где около каждой точки указан биномиальный коэффициент. Поступление О соответствует движению вниз и влево (Х-направление), поступление 1—движению вниз и вправо (У-направление). На рис. 7.1 выбрано /=31, заключительные элементы обозначены 2, остальные отмечены или значением соответствующего биномиального коэффициента, или знаком х. Элементы, превосходящие 231, обозначены 0. Первые заключительные элементы появляются в 33-й строке. Это слова длины 33, содержащие от 15 до 18 единиц. Все остальные строки, вплоть до 231, содержат по два или четыре заключительных элемента. Заключительные элементы, содержащие одинаковое число 1, объединяются в группы. Элемент группы, расположенный в самой нижней строке, называется стартовым. На рис. 7.1 стартовые элементы помещены в квадратики. Пусть щ — номер строки, где появился первый заключительный элемент, wx — максимальное число 1 в заключительных элементах, расположенных в щ-й строке и в левой половине тре- 1 1 1 1 1 1 13 3 1 1 k 6 k 1 1 5 10 Ю 5 1 1 32* · -·?????????· · · ? 32 1 133% ? XX ? ? ? Дххх ? 33 1 13Ьх хг\Щ]0 0 ЯШИ ? ? ?3* / 1 35? ? ? [?]0 0 0 0 0 0\?}?? 35? 136 ? ? ? / 37 ? ? [?] 1 38? ? 0 0 1 39 ?0 ? ? 02 0 0 ? 0 ? 36 1 371 38 1 391 1 ? 0 0 ? / 110 0 ? 1 1 ? 0 0 ? 1 1 г 0 0 ? 1 1 ? 0 0 ? 1 1 ? 0 02 1 1Шо 0Ш / 2 31 Рис. 7.1. Равномерное по выходу кодирование источников Бернулли 147
угольника. Тогда при n^zn\ + lt W\ + l^w^.nl2 справедливо неравенство Cwn^Cw'-+ln +\>2K Это значит, что в левой половине треугольника Паскаля число групп не превышает числа элементов в левой половине (ti\ + l)-& строки. То же самое справедлива и для правой половины. Следовательно, число групп заключительных элементов не превышает ??+2, ?. е. числа элементов (nj + + 1)-й строки треугольника. В нашем примере ni=33, ^1 = 16, число групп равно 34. Для любого четного числа t справедливы неравенства Ctt/2^ =^;2*<С*2*. Для любого нечетного числа t справедливы неравенства С/(г+1)/2^2г<С*2<. Отсюда вытекает, что для номера щ строки, где появляется первый заключительный элемент, верны оценки ?^?? + 1^2^. Значит, число групп заключительных элементов не превышает 2?+1. Это же число B?+1) ограничивает сверху и число стартовых элементов. Все стартовые элементы можно занумеровать. Длина кода стартового элемента равна ilogB/+l)U Процедура кодирования состоит в следующем. Переходим от одной точки треугольника Паскаля к следующей, начиная с вершины и подчиняясь кодируемому слову. При этом вычисляем сумму биномиальных коэффициентов точно так же, как это делается в нумерационном кодировании. Достигнув заключительного элемента, добавляем несколько «пустых» нулей, чтобы оказаться в стартовом элементе. Суффиксом кода слова, оканчивающегося в заключительном элементе, будет сумма, накопленная к моменту достижения стартового элемента. Первой буквой префикса является 0 или 1 в зависимости от того, в какой (левой или правой) половине треугольника расположена заключительная точка. Далее идет номер стартового элемента, имеющий длину [logBi-b + 1) . Слово, соответствующее заключительному элементу, отщепляется от кодируемой последовательности, и процедура возобновляется. При декодировании по префиксу находим стартовую точку, а по суффиксу — путь к ней. Определяем первую заключительную точку, лежащую на этом пути, и «пустые» нули. В качестве примера рассмотрим кодирование последовательности, состоящей из 12 нулей, затем 12 единиц, затем 11 нулей и единицы. Эта последовательность приведет нас к заключительному элементу, расположенному на 13-м месте 36-й строки. Чтобы получить стартовый элемент, добавим один «пустой» нуль. В результате окажемся в элементе C7, 13). В этот момент сумма биномиальных коэффициентов, вычисляемая по нумерационному ал- 12 горитму, будет равна ? Cwu+m что и дает значение суффикса. Стартовая точка C7, 13) является пятой сверху. Следовательно, двоичная запись числа 5, имеющая длину [logBi+l)l , ?= 31, и будет суффиксом. Перейдем к оценке избыточности этого кода. Все входные слова получают код одной и той же длины /: / = ?+ ? log B^+1I. G.15) 148
Согласно утверждению 2.16 и формуле B.49) избыточность описанного кода f на источнике Бернулли S К(/. 5) = ~-5>(*)-Я(/>), GЛ6) U ? где ? — заключительная точка; р(х)—ее вероятность; d — средняя длина кодового дерева (задержка), определяемая формулой B.49); H(p)—H(S)—энтропия источника; ?— вероятность нуля. По определению кода для числа t выполнено неравенство logCfjj+i }>f. Применяя формулу Стерлинга, находим следующую оценку для длины кода I: 1< \х\Н [ Г*{Х) ) + Ct log \x | . G.17) В силу неравенства Иенсена для выпуклой функции Н(х) и формулы B.55) имеем а для выпуклой функции logd ^р(х) log | а; | < log 2 I * !/>(*) = logo?· G.19) ? ? Из формул G.16) — G.19) вытекает, что i?(/, S)^C og , где d ?=?\?\?(?). Таким образом, избыточность равномерного по вы- х ходу универсального кодирования убывает так же быстро, как и избыточность универсального равномерного по входу кодирования. § 7.4. СЖАТИЕ С ПОМОЩЬЮ СТОПКИ КНИГ Этот метод был открыт и исследован Б. Я- Рябко в 1980 г. [41], а затем переоткрыт Бентли, Слейтором, Тарьяном и Вей в 1986 г., получив название «двигай вверх» [63], и в 1987 г. Элайесом под названием «Кодирование по степени новизны» [74]. Метод состоит в следующем. По линии связи должно быть передано слово ? алфавита Л, буквы А отождествлены с числами 1, 2,..., |Л|. На приемном и передающем концах имеются идентичные списки, которые в начальный момент содержат числа от 1 до \А\ в порядке возрастания. При появлении в слове ? очередной буквы а по линии связи передается монотонный код номера позиции ?, занимаемой в данный момент числом а в списке. Это дает возможность на передающем конце идентифицировать букву а. Монотонный код был описан в § 3.4. Его длина не превышает log г + log log| Л | + С. Вслед 149
за этим на приемном и передающем концах ставят букву а в начале списка, увеличивая этим на единицу номера букв, стоящих на позициях от 1 до i—1. Позиции букв, стоящих на позициях от ?+1 и дальше, остаются неизменными. Так происходит со стопкой книг, если одну из них взять из стопки и переложить наверх. Пример. Пусть надо передать слово а> = 221312233 в алфавите Л = {1, 2, 3}, Напомним, что монотонным кодом позиции 1 является 0, (позиции 2—-10, позиции 3—11. Стопка книг при последовательном появлении букв слова w меняется следующим образом: A, 2, 3)->-B, 1, 3)->B, 1, 3)->A, 2, 3)->-C, 1, 2) и т. |д. Кодом слова будет 100101110110110. Монотонный код устроен так, что более близкие к началу списка позиции получат более короткие коды. В результате часто появляющиеся буквы, тяготеющие к началу списка, будут иметь короткие кодовые обозначения. Теорема 7.2. Пусть ? — слово в алфавите Л, f(x) — его код, полученный с помощью стопки книг, F(x) —квазиэнтропия слова ? [см. C.11)]. Тогда | /(*) | < |*| F(x) + (log log I A | + C) \x | . Если ? порождено вероятностным источником 5, то избыточность R(f, S) кода / на букву не превышает log log|Л | 4- С Доказательство. Фиксируем некоторую букву а, а^Л. Пусть она появляется га{х) раз в слове ? на позициях tu ..., tTa(x). При первом своем появлении на /рй позиции буква а расположена не ниже /i-ro места в стопке книг. При i-м появлении на /г-м месте слова ? буква а расположена не ниже (/*—/i-i)-ro места в стопке книг. Следовательно, для общей длины |/аМ| кода, переданного при появлениях буквы а в слове х, имеем га(х) I fa (х) I < log tx + V log (?, - <,_!) + ra (?) (log log I Л I +C). /=2 G.20) В G.20) используем неравенство Иенсена для логарифма I fa(x) I -ra(x)(log log I А |+ С) < ra(x) log ~ X га(х) '„(*) а ? ?+ У ?-'/-? \ = ra(x) log-2— <-/",(*) log G.21) Просуммируем неравенство G.21) по аеЛ, учитывая, что |/(л;)| = = ?|/?(#)|, а квазиэнтропия /^(л;) равна по определению — а "VI Г (х) Г (х) — > _?i— log _л— и Получим первое неравенство теоремы. ?,?^? \ X \ | X 150
Теперь обратимся к лемме 3.4, Она говорит, что избыточность любого побуквенного кода, и в частности кода Шеннона, не меньше избыточности квазиэнтропийного кодирования, ставящего слову ? в соответствие слово длины |a-|F(x). Поскольку избыточность кода Шеннона равна 1/\х\ (на букву), то отсюда и следует второе неравенство теоремы. Из теоремы видно, что кодирование с помощью стопки книг лишь ненамного (на log log| Л | + С) хуже наилучшего кодирования методом Хаффмена. В [63] проделано экспериментальное сравнение этих двух кодирований. Результаты оказались довольно благоприятными для стопки книг, особенно если в качестве букв использовать слова входного алфавита. В отличие от метода Хаффмена, стопка книг не требует предварительного просмотра кодируемого слова. Этот метод легко приспосабливается к возможным колебаниям частот, поэтому в 163] он назван локально адаптивным. Применим метод стопки книг, считая буквами слова некоторой длины ? в алфавите Л. Пусть hn — энтропия порядка ? для источника S. Теорема дает нам, что стоимость кодирования на букву алфавита А методом стопки книг отличается от 1гп лишь на О (log n/n). Другими словами, этот метод является универсальным. Наконец, отметим, что вместо монотонного кода позиция книги в стопке может быть закодирована кодом Левенштейна. Тогда знание объема алфавита А становится необязательным. Помимо кодирования по степени новизны, как он называет метод стопки книг, Элайес предлагает еще интервальное кодирование: при появлении очередной буквы передается монотонный код длины интервала с момента ее предшествующего появления. Если в слове ? буква а появлялась на местах с номерами /ь ..., tra (x), то при 1-м ее появлении передается монотонный код числа t\—<*_ь i=l,..., га(х). Таким образом, при нахождении стоимости кода «стопка книг» оценка его производилась с помощью интервального кода, для которого также верна теорема 7.2. Здесь, не рассматриваются детали компьютерной реализации обоих методов. Отметим, что для нахождения по букве ее позиции в стопке книг целесообразно использование хеширования. § 7.5. АВТОМАТНОЕ СЖАТИЕ Все результаты этого параграфа принадлежат Зиву и Лемпелю [97]. Нас интересует, какой степени сжатия можно добиться, используя конечные автоматы. Эта степень сжатия будет оценена для каждой индивидуальной последовательности, а не только в среднем по словам, порождаемым источником. Пусть задан входной алфавит Л={0, 1,..., |Л|—1}, буквы которого отождествлены с числами от 0 до \А\— 1, |Л|^2, Выходной алфавит будем считать бинарным. Кодер — это конечный автомат с множеством состояний ?, функцией переходов g-.???—^ 151
?>? и выходной функцией ? :2ХЛ*-*~{0,1}*. Функция ? указы- вает, в какое состояние переходит автомат из состояния ое2 под действием входной буквы а&А. Функция g(o, а) равна слову, которое печатает кодирующий автомат, получая в состоянии а букву а. Эти слова могут иметь различную, в том числе и нулевую, длину. Однако, естественно, автомат не должен терять информации. Иначе говоря, зная исходное и конечное состояния автомата и порожденное им выходное слово, можно восстановить входное слово. Если ? — слово, то через xh будем обозначать сегмент XiXi+x... ... Xj этого слова. Через ? (??, ??\) будем обозначать слово упи 'порожденное автоматом, находившимся в исходном состоянии аь после получения им слова хп\. Через g(ob xn\) будет обозначаться состояние, в котором после этого окажется автомат. В следующей теореме 7.3 основную роль играет «продукционная» сложность С(х) слова х. Она равна наибольшему числу различных слов, конкатенация которых образует х. Теорема 7.3. Пусть ? — слово в алфавите Л, С(х) — его продукционная сложность, С(х)~*оо. Тогда длина \f(x)\ любого обратимого конечно-автоматного кода слова ? удовлетворяет неравенству \f(x) |^C(;c)log С (а;) A+оA)). С другой стороны, существует такой автомат, который любому слову ? ставит в соответствие обратимый код, длина которого не превосходит C(x)log С(х) A+оA)). Доказательство. Вначале проведем оценку сверху. Разобьем слово ? последовательно на подслова таким образом, что все слова, за исключением, возможно, последнего, различны и для каждого /==1, 2,..., р+1 при щ—щ~\>\ существует t, /</ такое, что ???? +1 —Хп^+г Например, для слова 0001100001000101 таким разбиением будет 0 00110 001000 101. Понятно, что максимальное число С(х) слов, на которые разбивается х, может лишь превзойти р: С (*)>/?. G.22) Если у /-го подслова выбросить последнюю букву, то полученное слово совпадает с некоторым я(/)-м словом, ?(/)</, ?: [1, р+1]->[1, ?]. Поставим в соответствие /-му слову xnJ число 1 (*?{_?+?) = ) Ml + *nj. G·23) Здесь ?? t—стоящая на я*-м месте буква алфа1вита А. Эти буквы у нас отождествлены с числами интервала [0, \А\—?]. Очевидно, 1 (*?},,+?) <(/- 0И1 + Ш = 1\А\ -1. 152
Зяа*чит, для кодирования /-го слова достаточно flog/|v4|] бит. Конкатенация кодов всех слов образует слово f(x), |для длины которого имеем I/WK ????§/.|??. G.24) С учетом неравенства G.22) имеем из G.24) \f(x)\<C(x)logC(x) A+0A)). Индуктивная процедура разбиения слова ? состоит в следующем. Чтобы определить /-е слово, 1^/^p+l, полагаем щ равным наибольшему не превосходящему \х\ числу, для которого слово х^{~ +1 совпадает с одним из ранее определенных. Понятно, что эта процедура осуществима с помощью конечного автомата. По слову f(x) можем найти слово х. Прежде всего f(x) распадается на двоичные коды последовательных подслов х, поскольку у-й код имеет длину в точности Г log у | Л | J . Зная число, являющееся кодом /-го слова, разделим его на |Л|. Согласно G.23) частное ? (у) даст нам номер предыдущего слова, получаемого при отбрасывании из /-го последней буквы, а остаток дает номер этой последней буквы. Итак, отображение x-^f(x) является конечно-автоматным и обратимым, а его длина удовлетворяет требованиям теоремы. Теперь найдем оценку снизу. Возьмем произвольное слово ? и разобьем его на С(х) различных подслов. Пусть Cj из этих подслов получают при кодировании автоматом код длины у, /=0, 1,... Тогда 2су=С(х). G.25) /- Длина кодового слова \f{x)\ равна Ъ\Су Кодирующий автомат ? ? ' имеет |?| состояний и не теряет информации. Это значит, что по исходному и заключительному состояниям и кодовому слову можно восстановить поступившее на вход слово. Поскольку все входные слова различны, то I Cj | < | ? ? 2·2'·. G.26) Чем больше индекс /, тем больший вклад слагаемое |Е|2-2з вносит в сумму ?|2|2·2? Нижнюю оценку суммы / ?/?? = ?/·2' / получим, если всем числам С§ от нуля до некоторого k придадим макоималь- k tioe значение и положим Сн+\=С(х)— ? Cj. Точнее, деля С(х) на |?|2, по- Мучаем С(х)=|Е12<7 + г, 0<?<|??2. G,27) 153
Определим k из соотношения к q= ? 2' + ?> 0<?<2*+1. G'.28) Полагаем Cj=ISIe-2', 0</<*, Cfe+1=|2|2.A + r, G.29> Cj = 0 при />/г. Имеем ??=|??2??24? + ^^=???2B^+4? + ^-?). G.30) Из G.30), G.27) и G.28) находим, что |??2·2*+2>0(?)>|??2·2*+1 и, следовательно, С (jc) С (?) log —*^- > ?> log—У-1~. G.31) 2 |??2 4|??2 Как было сказано, придавая Cj указанные в G.29) значения, получаем оценку снизу для длины кода / (?), т. е. к - ???2 (*- 1)^+? + ?+-^-? + \?\2^ + 3+2? + -]fjT~2)· G.32) Заметим, что при С(л:)-^оо |?|==0A), r = 0(l), fe = = 0(logC(x)), A = 0(log C(x)). Учтем также формулу G.30) для С(х). Тогда G.32) примет вид I / (*) I > (* - 1) С (*) + О (С(х)). G.33) Осталось подставить в G.33) оценку k^\ogC{x) из G.31), чтобы получить нижнюю оценку теоремы. В § 2.4 была определена абсолютная или колмогоровская сложность слова ? как длина наименьшей программы, производящей х. Введенная Зивом и Лемпелем продукционная сложность является конечно-автоматным аналогом колмогоровской. В отличие от колмогоровской, продукционная сложность вычислима по слову х. Чтобы оценить среднее значение конечно-автоматного кода для вероятностных источников, установим вначале следующее. Обобщенное неравенс!во Крафта. Пусть для некоторого ко- нечного автомата с |?| состояниями 1(х) обозначает хминималь- ную по всем возможным исходным состояниям длину бинарного кода слова ? и ? — натуральное число. Тогда /с= ? з-<(ж)< izi2(i + iog 12!|,'*1Л|" ?, ? ? ? =я \ I 2j I где А — входной алфавит. 154
Доказательство. Используем рассуждения, аналогичные примененным в доказательстве нижней оценки теоремы 7.3. Если kj обозначает число слов ? алфавита А, \х\=п9 минимальный код которых имеет длину /, то К = ^ 2-^=2^-2-7 G·34) х, | ? \ — ? j И 2*у=1А Iй- G.35) Поскольку автомат не теряет информации, то ?,<???2·2'- G·36) Чтобы получить верхнюю оценку суммы Крафта G.34), придадим числам kj вплоть до некоторого (т—1)-го максимальное значение, определяемое неравенством G.36), число km определим из G.35), а числа k3, />m, положим равными нулю. При этом для суммы Крафта C.13) получим оценку К= ? Ъ-2Г'*? |??2? 2^2-/=1114^+0- G-37) / / Число m удовлетворяет неравенствам m -1 m ? ???2·2'<?|?< ? |??2·2'· G.38) /=? /-? Из G.38) следует, что m—1 , л ? ? 2m = I + ? 2]<t-i-J— + 1. G.39) /—? ' ^ ? Из G.37) и G.39) вытекает требуемое обобщенное неравенство Крафта. Если автомат кодирует последовательность, порожденную стационарным источником 5, то стоимость кодирования в пересчете на одну входную букву равна согласно § 2.5 — ? ?/(*)??(*)· # х, \x\-n где р(х) —вероятность слова х\ |/(л')| —длина его кода. Теорема 7.4. Предел стоимости кодирования стационарного источника конечным автоматом не может быть меньше энтропии источника. Существуют конечно-автоматные кодирования, стоимость которых сколь угодно близка к энтропии. Доказательство. Рассмотрим избыточность, т. е. разность между стоимостью конечно-автоматного кодирования / и энтропией S Порядка п: Я (Л S)=— 2 р(*Н \/(?)! log/>(*)) = Я ?, ? ? j = ? ? ^ \ ? (?) J 155
Используя неравенство Иенсена для —logx, получаем из G.40) Я(/, S)> — (-log/0. G·41) ? где буквой К обозначена сумма Крафта. Из обобщенного неравенства Крафта при |E|=const, |/4|=const, n-+oo следует, что К < Сп. G.42) Из G.41) и G.42) получаем для стоимости произвольного конечно-автоматного кодирования c(f.s)>h„-?b«±. п Поскольку /?? = ^?p(л:)logp(л:)^Я(S), то отсюда следует первое утверждение теоремы. С другой стороны, кодирование по Шеннону, позволяющее сколь угодно приблизиться к энтропии, является конечно-автоматным. Теорема доказана. Понятие продукционной сложности использовалось Зивом и Лемпелем также при кодировании с заданным критерием качества, при сжатии двумерных изображений и в других случаях. Приложение. ПОСТРОЕНИЕ УНИВЕРСАЛЬНЫХ НУМЕРАТОРОВ Понятие универсального множества нумераторов играет важную* роль в этой книге. Оно введено в § 5.3. Пусть заданы два множества А и В> натуральное число Т, не превышающее мощности множества А. Совокупность отображений из Л в ?, в которой для всякого Г-элементного подмножества 5, S^A, содержится инъективное на S отображение, называется универсальным множеством нумераторов Г-элементных подмножеств А (или, короче, универсальным нумератором). Такую совокупность отображений обозначим символом Ft (А). Например, А~Е2 состоит из четырех элементов 00, 01, 10, 11. При Г=3 ^з(?2, [0, 1, 2]) состоит из двух функций: F0 и Fx. Функция F0 переводит 0-00 в 0, 1-01 в 1, 2-10 в 0, 3-11 в 2, а функция Fi переводит 00 в 1, 01 в 0, 10 в 2, 11 в 0. На любом трехэлементном подмножестве либо Fo, либо Fi инъективна. Скажем, на {0, 1, 2} инъективна Fu и на {0, 1, 3} — FQ. Для любого комбинаторного источника, порождающего некоторое подмножество слов множества Л, в Ft (А, В) найдется отображение, решающее задачу заданного сжатия производимой этим источником информации. Помимо задач сжатия и поиска универсальные множества нумераторов полезны в задачах сортировки данных, передачи информации по каналам с множественным доступом. Связь этих множеств с пороговыми булевыми функциями была отмечена в § 5.3, 5.6. Для решения упомянутых проблем желательно располагать универсальными множествами нумераторов. Алгоритмы их построения разрабатывались несколькими авторами. Одной из последних была работа [77], в которой асимптотически минимальное по мощности множество Ft (A, B)t \В\—Т строилось за полиномиальное относительно \А\ время, причем мощность \А\ стремилась и 156
бесконечности, а число ? оставалось постоянным. В этом добавлении излагается полученный недавно результат Л. С. Хасина и автора, где то же самое- множество строится за время с· \А\ -(log^lJ. Этот результат является окончательным с точностью до медленно относительно \А\ растущего множителя (log|i4|J. Действительно, для построения множества отображений FT(A, В) нужно для каждого элемента множества А указать, куда он переводится каждым из этих отображений. Значит, на каждый такой элемент нужно хотя бы раз взглянуть, и \А\ является нижней оценкой времени построения множества Ft (А, В). Не ограничиваясь случаем постоянного Г, разрешим этому параметру произвольно меняться с изменением мощности |А|. В самой общей ситуации предлагается алгоритм, который за почти минимальное время строит почти минимальное множество Ft (?, ?), |?|=7\ Случай, когда мощность множества В равна Г, является самым интересным, и здесь рассматривается только он. К не* му нетрудно свести и общую ситуацию. Универсальные множества нумераторов будут строиться с помощью надлежащего комбинирования изложенных в книге методов лексикографического поиска (§ 4.1), полиномов Галуа (§ 5.6) и полного перебора. Как это следует из теоремы 5.1 и § 2.6 при \В\=Т, |Л(->оо, мощность множества Ft(A, В) равна eTA+°(l))log|i4|. Если ? постоянно, то эта мощность пропорциональна log|i4|, а если ? быстро растет, то она становится равной ет<1+°<1». Лемма П.1 (о полном переборе). Пусть А п В — любые конечные множества, ? — натуральное число, |?|=Г, |Л|_уоо. Универсальное множество нумераторов Ft (А, В), содержащее г= = erA+0<1>>log|i4| отображений, можно построить за время 7ТА10+??1». Иначе говоря, за указанное время можно построить таблицу с \А\ строками и г столбцами, так что столбцы будут представлять собой наборы значений функций из Ft (А, В). Выражение оA) стремится к нулю при Т-^оо. Доказательство, Каждое отображение f из А в Б, |?|=7\ задается словом длины \А\, буквами которого являются элементы множества В. На месте слова, соответствующем элементу а, стоит f(a). Число таких отображений равно ЛА1. Каждому Г-элементному подмножеству 5 множества А соответствует бинарный вектор длины |Л|, у которого соответствующая элементу а^А компонента равна 0 или 1 в зависимости от того, входит или не входит а в S. Все такие векторы имеют ? единиц и нумеруются от 0 до Ст\а]—1 в соответствии с алгоритмом § 4.3. Номер вектора является номером соответствующего подмножества 5. Составим таблицу с Ст[а] строками и ???? столбцами, где строки соответствуют подмножествам, а столбцы — отображениям. На пересечении столбца, соответствующего отображению /, и строки, соответствующей множеству S> ставим 1, если / инъективно на 5, а иначе 0. Для проверки инъективности надо» Из слова, описывающего f, выбрать буквы, стоящие на тех местах, где в отвечающем 5 векторе находятся единицы. Если все эти буквы различны, то f Инъективно на 5. Такая проверка требует времени c|^|2log |Л|. Выбираем в таблице столбец, содержащий наибольшее число единиц. Присваиваем ему номер 1. Вычеркиваем этот столбец и все строки, имевшие I в пересечении с ним. Выбираем столбец с максимальным числом единиц новой таб- 157
лицы, присваиваем ему номер 2, вычеркиваем его и соответствующие строчки, и т. д. Такую процедуру называют алгоритмом жадины: хватать всякий раз самый большой кусок. В данном случае эта процедура выберет почти .минимальное число функций г, образующих множество Ft (Л, В). Это было показано в [53]. Аккуратный подсчет числа операций дает оценку леммы, что также доказано. Лексикографический поиск описан в § 4.1. Программой такого поиска служит равномерное ^-ярусное дерево ? с приписанными его нелистовым узлам словами длины п, \<k<in. Это дерево определяет лексикографическое отображение d множества Еп в Eh: сравниваем jce?" с сопоставленным корню словом, идем в зависимости от результата влево или вправо. В конце концов оказываемся в листе дерева. Соответствующее этому листу слово и полагаем равным d(x). Множество всевозможных лексикографических отображений Еп в Eh, полученных исходя из ^-ярусного дерева, обозначаем Lex(?", Eh). Для всякого множества S^En существует отображение d^Lex(En, Ek), которое в каждое слово из Ек переводит либо |"|S|-2"~ft], ш&° l\S\'2~kl слов из $- Программой отображения из Lex(?"n, Ek) служит конкатенация слов, приписанных вершинам ?. Длина этой программы не более 2к-п. В § 5.6 описано соответствие между полем Галуа GFBn) и множеством Еп бинарных слов длины п. Для любых п{ и /г2, Щ>п2, формула E.84) определяет полиномиальное отображение fb (w) множества Еп\ в Еп*, если w — вектор длины я = ль b — вектор длины ?=я2. Программой такого отображения служит вектор b длины п2. Множество таких отображений обозначим Gal(?ni, E^). Мощность этого множества равна 2?» . Для перемножения двух элементов поля <?/*'B^), представленных в виде многочленов по модулю неприводимого полинома g(x), требуется 0(п22) операций. Для вычисления многочлена E.84) по схеме Горнера требуется 0(rti«2) операций над двоичными разрядами. В качестве примера построим множество Gal(?4, ?2). ? § 5.3 с помощью неприводимого полинома х2+х+\ идентифицировали GFB2) с Е2. Элементы множества Ь* являются четырехмерными бинарными векторами. Вектор w представляется числом val w. Разобьем вектор w на пару (wb w2) двумерных векторов и для каждого вектора Ье?2 вычислим по формуле E.84) значение двучлена f b (w) = = \У!+\у2Ь. Скажем, если b=3, w=10, то в двоичной записи 3=11, 10=1010, f3A0)=fuA010) = (lf 0) + A, 1)A, 0)=х+(х+^)х=х2 = х+\(тоах2+х+\). Таким образом, Gal(?4, ?2) состоит из четырех функций: /0, fu ,f2, /3. Приведем строчки значений этих функций на расположенных в порядке возрастания \alw элементах w из ?4, от 0 до 15: fo : четыре нуля, четыре единицы, четыре двойки, четыре тройки 1,:0, 1, 2, 3, 1, 0, 3, 2, 2, 3, 0, 1, 3, 2, 1, 0 !2:0, 2, 3, 1, 1, 3, 2, 0, 2, 0, 1, 3, 3, 1, 0, 2 73: 0, 3, 1, 2, 1, 2, 0, 3, 2, 1, 3, 0, 3, 0, 2, 1 Множество Gal(?4, ?2) является универсальным нумератором трехэлементных подмножеств ?4. Скажем, на множестве {0, 1, 2} инъективны fb f2, f3, на множестве {0, 3, 5} — только f2. В § 5.6 установлено, что для каждого множества S, |5|=Г, Ss?n» существует такой вектор Ь, |Ь|=я2, что индекс отображения fb на 5 не превышает ^~П2[ ~^Г" —Ч· Согласно лемме 4.6, если это последнее выражение меньше Г, то fb инъективно. Резюмируем сказанное в виде леммы. 158
Лемма П.2. Если ??>?2, ?<2«? и Т2-пл<сп2-2п^ то совокупность Gal(?fti, Ещ) является универсальным множеством нумераторов Г-элементных подмножеств множества Еъ. Заметим, что если п2 — наименьшее из чисел, удовлетворяющих условию леммы, то для него выполнено неравенство n2<\ogT2-nx (П.1) Далее, для него справедливо неравенство («2—1J^??<7,2/??. Предполагая, что п2>2, получаем, что п2-2ък.АТ2.щ. (П.2) Теперь необходимо описать те операции над множествами отображений, которые приведут к построению универсального нумератора. Пусть А, В, С — множества, a F(A, В) и F(B, С) — некоторые множества отображений изЛвБиизВвС соответственно. Композицией F(B, C)OF(Ay В) называется множество всевозможных композиций отображений из этих множеств: если fi€=F(A, В), f2<=F(B, С), то f=f2Of{<==F(Bt С) О/7 (Л, В). Отображение / действует на элемент а из А по правилу i(a) =f2(fl(a)). Мощность композиции двух множеств равна произведению мощностей этих множеств. Программы, вычисляющие композиции, являются конкатенацией программ соответствующих отображений. Лемма П.З. Композиция сохраняет универсальность. Иначе говоря, пусть А, В, С — множества, ? — число, Ft (А, В) и Ft (В, С) — универсальные нумераторы Г-элементных подмножеств множеств А и В. Тогда Ft (В, C)OFT(Ay В) — также универсальный нумератор Г-элементных подмножеств А. Доказательство. Пусть 5^Л, |S|=T. Тогда существует такое $\^FT{A, B)f что fi инъективно на S. В силу инъективности |fil(S)|=T. Значит, существует f2^Fr(Bt С), инъективное на fi(S). Отображение f=.f2Ofl принадлежит Fr(By C)OFt(A, В) и инъективно на S, что также доказано. Декартовым произведением F(A, B)y(F(A, С) двух совокупностей отображений из А в В и из А в С называется множество всевозможных декартовых произведений отображений из этих множеств. Если действующее из Л в ? отображение /? принадлежит F(A, В), а действующее из Л в С отображение /2 принадлежит F(A, С), то их декартово произведение f—fiXf2 принадлежит F(A, B)XF(A, С). Элемент а из А под действием f переходит в пару (fi(a), ?2(?)), принадлежащей декартову произведению множеств В и С. Программы отображений из декартова произведения являются конкатенациямн программ отображений — сомножителей. Наконец, определим еще одну операцию над множествами отображений F(A, В) и G(Л, С). Новое множество отображений из Л в Б обозначим F(A, B)/G(Ay С) (F при условии С). Произвольная функция h из F(A, B)/G(A, С) определяется выбором одного из \F(A, Б)|1с1 отображений множества С в F(A, В) и какого-нибудь элемента g из G(A, С). Чтобы найти результат действия отображения h на произвольный элемент а из Л, необходимо вначале вычислить g(fl), который принадлежит С. Выбранное отображение переводит элемент g(a) в некоторую функцию /, принадлежащую F(A, В). Следует сосчитать значение этой функции f на элементе а, и положить h(а) равным f(a). Программы вычисления отображений из F(A, B)/G(A, С) состоят из программы какого-либо отображения g из С(Л, С) и \С\ программ каких-либо отображений из F(At В), 159
Лемма П.4. Пусть 0<k<t<n — натуральные числа, Lex=Lex(?n, Eh) — множество лексикографических отображений из Еп в Ekt F—F?^% (Еп, ?8), $>0 — универсальный нумератор 2'-ft элементных подмножеств множества Еп. Тогда множество отображений LexX(F/Lex) действующих из Еп в ЕкХЕ\ является нумератором 2* — элементных подмножеств множества ?п. Доказательство. Возьмем произвольное подмножество S множества Еп% содержащее 2х элементов. Согласно определению множества Lex, оно содержит отображение dt которое в каждый элемент ? из Eh переводит 2*~h слов из S. Согласно определению (Множества F, для каждого слова ? из Ек оно содержит отображение /?, инъективное на переходящих в ? словах S. Отображение /?= = ^Х?г действует из Еп в EhX>Ea и принадлежит множеству LexX (FXLex). Возьмем два элемента Wj и w2 из S. Если окажется, что ?????????, то компоненты h(vf\) и h{w2), принадлежащие Eht различны. Если же dwi=dw2—z% ?? /i(w1)^fz(w2). Значит, содержащееся в LexX(FfLex) отображение h оказалось инъективным на 5, и это множество отображений является универсальным нумератором 2*-элементных подмножеств ?п. Теорема, Пусть Л — произвольное множество, |Л|-*-оо, ? — натуральное число, 0<Г<|Л|. Затратив время С-\А\ •(Iog|^|Keri!+OA», можно построить универсальный нумератор ? — элементных подмножеств множества А, содержащий асимптотически минимальное число функций, равное С· log|,4|X Доказательство. Положим logA—nu \ogT=t. Мы не потеряем в общности, но несколько упростим выкладки, если предположим, что числа П\ и t — целые. Необходимо рассмотреть три случая. Первый случай: ?^>???. Определим число k равенством &= [log ?—2 log ??], число ?'? так, чтобы оно удовлетворяло условию леммы Д.2 в виде ~/г'г2п'4^ >|T.2-b]2-/2i. Учитывая выбор чисел k и п'и а также неравенство (П.1), убеждаемся, что /i'i<51og/ii+1. Положим Lex=Lex(?, ?*), Gal = Gal(?n» , En*') F=F2t-k (?"*', ?'-*). Рассмотрим множество отображений Я из Еп\ в ?лХ?'-*=2:', #=LexX X((FOGal)/Lex). Тогда Gal является нумератором 2*~h-элементных подмножеств Ещ по лемме П.2, FOQbX — таким же нумератором по лемме П.З, Я— искомым нумератором 2*-элементных подмножеств Еп\ по лемме П.4. Отображения из Я переводят числовой сегмент [0, ..., \А\—1] в [0, ..., ?—1]. Для нахождения Я вначале строим F полным перебором по лемме П.1. При выбранных нами параметрах это потребует времени не более есТ I* = =о(ет). В результате исчерпывающего поиска по лемме 1 каждому отображению из F приписывается номер, длина ? двоичной записи которого в нашем случае не превышает r*2Moge(l+o(l)). Длина программ отображений из Я не превышает 2h(ni+n'i)+2kvt что равно rioge(l-f-o(l). Значит, число функций в Я равно еТA+°A)), что и требуется. После того, как построено множество F, перебираем одно за другим слова длины log|#|. В каждом таком слове первые log|Lex| разрядов представляют собой программу лексикографического поиска. Затем идут 2h программ длины п\ каждая отображений из Gal и столько же программ длины ? отображений из F. Перебирая одно за другим все слова из Л, вычисляем для каждого из них значения всех отображений из Я. Это требует всякий раз k сравнений 160
Лгразрядных чисел и пфъ бинарных операций для вычисления значений многочлена, т. е. 0(?2?) бинарных операций, а всего 0(eT\A\n2i) операций, как и утверждается. Второй случай: (log/z1)e<7,<n16. Определим число я2, чтобы оно удовлетворяло условию леммы П.2. Неравенство (П.1) даст для п2 оценку n2<l31og/2i. Полагаем k=[\ogT—21ogn2]. Число ri2 подберем так, чтобы удовлетворялось условие леммы П.2, где роль п2 играет Г'2"й, роль щ—п2, роль я2—/г'2. Теперь неравенство П.1 приет вид я'2<5 log log ti\-\-c. Полагаем Gali«Gal(?m. ???, Gal2=Gai(?«2, ?n',)t Lex=Lex(?n2, ?*), F**Ftf-k(En\ ?'-*), tf^LexOGalOXUTOGay/LexOGal,). Множество отображений ? является нумератором в силу Лемм П.З и П.4. Построение нумератора F полным перебором по лемме П.1 потребует времени 2(/-k)-2 * =о(|Л|). Длина ? номера функции из F вновь не превышает ГХ X2-A*loge(l+o(l)). Длина программы функции из ? не превышает n2+2hX ??2+2?· (flVf"v) =71 l°ge(l+o(l))· ?· e· мощность множества нумераторов равна требуемой теореме. Перебор всех слов длины log|#|, их расчленение на программы составляющих отображений и вычисление значений отображений на словах из А делается точно так же, как и в первом случае и приводит к требуемой оценке времени построения. Третий случай: 7,<(logn1N. Здесь обойдемся совсем без лексикографического поиска, используя лишь композиции полиномов Галуа. Вначале подберем для числа щ число я2, а для п2—яз, чтобы выполнялось условие леммы Д.2, т. е. неравенство (П.1). Неравенство (П.1) даст, что /i2<21ogftb nz<.logT2X X/i2<2-13-loglogn1. Неравенство (Д.2) приобретет вид /г3-2«з<4Г2п3· Построим нумератор F=Fr(?n3, [0, .... Г— 1]). Это потребует по лемме П.1 времени 0(Т 8)=о(|Л|). Длина ? программ функций из F не превышает сегл3. Через Gali обозначим Gal(?ni} ?п2), через Gal2 — Gal(?«2, ?п3). Длины программ функций из этих множеств равны соответственно п2 и пг. Искомый нумератор ? определим как композицию этих множеств: #=roGal2OGalb Длина программ функций из ? не превышает суммы длин программ функций из Ft Gal2 и Gali. Сделанный нами выбор параметров даст для мощности ? оценку O(erA+OA»-Iog|i4|), которая и требуется. Вычисления отображений из ? на словах из А проводятся так же, как и в ранее разобранных случаях, и требуют H|'Gog|v4|J операций. Теорема доказана полностью. В качестве примера рассмотрим композицию нумератора F3(E2, [О, 1, 2]) и Gal(?4, ?2): H^FZ(B% [О, 1, 2])OGal(?4, ?2)). ? силу леммы Д.З ? служит универсальным нумератором трехэлементных подмножеств множества ?4. Множество ? состоит из 2X4=8 функций. Программа (двоичный номер) функции имеет длину 3. Первый разряд программы — номер взятой функции из F3(?2, [О, 1, 2]), вторые два разряда — номер функции из Gal(?4, ?2). Скажем, функция с номером 5 = 101 из ? получается композицией функции Ft и функции fi из Gal(?4, ?2): As—^iOfi, Пользуясь ранее найденными таблицами Ft и fi, находим: M13HFi(fiA3))=F,B)=2f /?7A5) =?(?3A5)) =0 и т. д. Приведем в заключение наборы значений всех восьми функций /г0, ..., h7 из Я на переменных w из ?4, упорядоченных по возрастанию valw, от 0 до 15: 161
h0: четыре нуля, четыре единицы, четыре нуля, четыре двойки hi: четыре единицы, четыре нуля, четыре двойки, четыре нуля /г,: 0, 1, 0, 2, 1, 0, 2, 0, 0, 2, О, 1, 2, 0, 1, О /г5:1, О, 2, О, О, 1, О, 2, 2, О, 1, О, О, 2, О, 1 h2:0,0, 2, 1, 1, 2, 0,0, О, О, 1, 2, 2, 1,0, О h6:\, 2, 0, 0, 0, 0, 2, 1, 2, 1, О, О, О, О, 1, 2 /?3:0, 2, 1, О, 1, 0, 0, 2, О, 1, 2, 0, 2, О, О, 1 /г7:1, 0, 0, 2, 0, 2, 1, 0, 2, О, О, 1, О, 1, 2, О На множестве {О, 1, 2} инъективны /г5, Лб, /гз> на {0, 2, 4} — /г5 и А2. ОСНОВНЫЕ ОБОЗНАЧЕНИЯ |а| — длина слова ? |Л[ — мощность (число элементов) множества А |а| — сумма модулей комлонент вектора а=(йЬ ..., ah): |a| = |fl!l+...+ Iflftl а! — произведение факториалов компонент вектора а=(аь ..., ?*): a! = «i!„. «/г! a — произведение компонент вектора а с показателями степеней, равными компонентам вектора Ь: ab = ai\..a?fc, a = (alf..., afe), b = Flf..., 6fe) [?] —¦ наименьшее целое число, не меньшее ? \х\ — наибольшее целое число, не большее ? о (х): lim -^ = 0; 0{х): w < const; ? ? f*g:lim-№- = l; f> g : / > const ^; fcg:f>g, g>f Bin ? — двоичная затаись числа д: val jc — число, двоичной записью которого является слово ? f : A-+B — отображение из Л в ? /-1 — обратное отображение 4f* «S) — сигнатура f : A-+B на S, т. е. набор мощностей прообразов f: ? (/, s^dr^nsib tefi ^(А ^) — индекс склеивания отображения f : A-+B на «множестве S: /(? 5) = ???? ir'^nsp-i |о|ьеВ /Og — композиция отображений / и g\ (fOg)x = f(g(x)) Ап — множество слов длины ? в алфавите А А°° —· множество последовательностей в алфавите А Еп , — множество двоичных слов длины ? ? (?) — (поддерево дерева ?, имеющее ? в качестве корня LA — множество листьев дерева ? Lx — число листьев дерева, расположенных левее вершины ? ]?| — число вершин дерева ? |lA| — число листьев дерева ? 162
son (.?, ?) — левый при ?=0 и правый лри ?—1 сыновья вершины ? H(S) — энтропия комбинаторного источника, т. е. подмножества Еп: #(S) = log|S|; h E) = log |5|/? H(S) — энтропия вероятностного источника: k tf (S) = — ? ? Ш log ? (??), где ?,, ..., Ак — буквы S /=1 ra (?) ~ число вхождений буквы а в слово ? F(x) — квазиэнтропия или эмпирическая энтропия слова х; F(x)= — ? ra(x)logra(x), aG.A где л* — слово в алфавите А ^е № — ?-энтропия множества S ?(f» S) — стоимость кодирования f на источнике S: С(/, S)=max|/(x) |, если S — комбинаторный источник; k C(ft S) = ? \f(Ai)\p(Ai)t если S — вероятностный источник /?(f, 5) — избыточность / на S, R(f, S)=C(f, S)—H(S) ? (/, S) — относительная избыточность f на источнике S: р(/, S) = R(f, S)/H(S) a(f, S) — коэффициент заполнения ламяти «при размещении словаря .S: a (/, S) = 2~Ш' S) R(f, ?) — избыточность кода / «а множестве источников ?: ?(? 2) = sup/?(/, S) i?(E) — избыточность коца, оптимального для множества источников ?: /? (?) = inf ? (? ?) f U(En, ?, ?) — универсальное множество нумераторов. Для каждого S^En, h(S)~x в нем содержится инъективное на 5 отображение /, P(f, S)«p ?'(?, ?, ?) — минимальная мощность U(En, ?, ?) ? (?, ?, ?, ?)— минимальная мощность универсального хеш-множества. Длт каждого S^En, h(S)—x такое множество содержит отображение /, 1A S) <ач p(f, 5) = р, ?(?, ?, ?, 0) =?{?, ?, ?) L(/) — длина в битах минимальной программы, вычисляющей ф>икцгю/ ^(?» ?) — минимальная программная сложность нумерации с избыточностью ? словарей с энтропией ? Lst(T) — минимальная программная сложность сильной (равной 0 на дополнении словаря) нумерации словарей с энтропией ? ?(?, ?, ?) —- минимальная программная сложность хеширования с индексом не выше а и коэффициентом загрузки ire менее а словарей с энтропией ? ??(?, ?) — минимальная программная сложность кодирования с избыточностью ? ¦вероятностных источников с энтропией ? (длина ел в равна п) ь {п ?1 f (w) — отображение, определяемое формулой fb(vv)~ ? Wjb1-1, где w — вектор длтт п\ ?<? — целое; wlf ..., w — — последовательные ?-мерные подвекторы вектрра w; b — ?-мерный ¦вектор. Вычисления проходят в GFB^) ¦— математическое ожидание Г 163
СПИСОК ЛИТЕРАТУРЫ 1. Ахо ?., ???????? Д., Ульман Д. Построение и анализ вычислительных алгоритмов. — М.: Мир, 1979. — 535 с. 2. Бабкин В. Ф. Метод универсального кодирования независимых сообщений неэкспоненциальной трудоемкости//Проблемы передачи информации. — 1971 — Т. 7, № 4. — С. 13—21. 3. Бабкин В. Ф., Крюков А. Б. Нумерация последовательностей с ограничениями марковского типа//5-я конф. по теор. кодир. и передачи информ. — М., Горький, 1972. — С. 15—20. 4. Белышев Б. Ф. Определитель стрекоз Сибири. — М., Л.: Наука, 1963. — 114 с. 5. Белышев Б. Ф. Материалы к познанию дальневосточной фауны Odonata// Тр. ДАН СССР. — 1956. — 3F). — С. 181-499. 6. Бернштейн С. Н. Теория вероятностей. — М.: Гостехиздат, 1946. — 556 с. 7. Биллингслей П. Эргодическая теория и информация. — М.: Мир, 1969. — 238 с. 8. Блэкуэлл Д., Гиршик М. Теория игр и статистических решений. — М.: ИЛ, 1958. — 374 с. 9. Виленкин Н. Я. Комбинаторика. — М.: Наука, 196Э. — 328 с. 10. Галлагер Р. Теория информации и надежная связь. — М.: Сов. радио, 1974. — 719 с. 11. Гилберт Е. Нм Мур Э. Ф. Двоичные кодовые системы переменной длины// Кибернетический сб. — М.: ИЛ, 1961. — № 3. — С. 103—142. 12. Гоппа В. Д. Исправление произвольного шума неприводимыми кодами// Проблемы передачи информации. — 1974. — Т. 10, № 3. — С. 118, 119. 13. Гоппа В. Д. Коды и информация//Успехи математических наук. — 1984. — № 1C5). — С. 77—120. 14. Деза ?. ?. Эффективность обнаружения или исправления шумов//Проблемы передачи информации. — 1965. — Т. 1, № 3. — С. 29—39. 15. Длусский Г. М. Муравьи рода Формика. — М.: Наука. — 1967. — 236 с. 16. Дискретная математика и математические вопросы кибернетики/Под общей ред. С. В. Яблонского и О. Б. Лупанова. — М.: Наука, 1974. — Т. 1. — 311 с. 17. Ершов А. П. О программировании арифметических операторов//ДАН СССР. — 1958. — Т. 118, № 3. — С. 427—430. 18. Журавлев Ю. И. Об оптимальных алгоритмах выбора//ДАН СССР. — 1958. — Т. 121, № 3. — С. 411—414. 19. Звонкий А. К., Левин Л. А. Сложность конечных объектов и обоснование понятий информации и случайности с помощью теории алгоритмов//УМН. — 1970. — Т. 25, No 6. — С. 85—127. 20. Кнут Д. Искусство программирования для ЭВМ, сортировка и поиск. — М.: Мир, 1978. — 844 с. 21. Колмогоров А. Н. Три подхода к определению понятия «количество инфор- мации»//Проблемы передачи информации. — 1965. — Т. 1, № 1. — С. 3—11. 22. Колмогоров А. Н., Тихомиров В. М. ?-энтропия и ?-емкость множеств в метрических пространствах//УМН. — 1959. — Т. 14, № 2. — С. 3—86. 23. Кричевский Р. Е. Связь между избыточностью кодирования и достоверностью сведений об источнике//Проблемы передачи информации.— 1968. — Т. 4, №3. — С. 48—57. 24. Кричевский Р. Е. Лекции по теории информации. — Новосибирск: НГУ, 1970. —82 с. 25. Кричевский Р. Е. Сложность нумерации конечного множества слов//ДАН СССР. — 1976. — Т. 228, № 2. — С. 287—290. 26. Кричевский Р. Е. Побуквенная нумерация двоичных словарей//ДАН СССР. — 1978. — Т. 239, № 5. — С. 1044—1047. 27. Кричевский Р. Е. Эффект удвоения энтропи«//ДАН СССР. — 1985, — Т. 284, № 4. — С. 795—798. 28. Кунт М., Джонсен О. Блочное кодирование графических материалов. Об- зор//ТИИЭР. — 1980. — Т. 68, № 4. — С. 21—40. 164
29. Левенштейн В. И. Об избыточности и замедлении разделимого кодирования натуральных чисел//Проблемы кибернетики. — М., 1968. — Вып. 20. — С. 173—179. 30. Лупанов О. Б. Об одном подходе к синтезу управляющих систем — о принципе локального кодирования//Проблемы кибернетики. — 1965. — Вып. 14. — С. 31—111. 31. Мак-Вильяме Ф. Д., Слоэн Н. Д. Теория кодов, исправляющих ошибки. — М: Связь, Ю79. — 744 с. 32. Мартин Дж. Организация баз данных в вычислительных системах. — М.: Мир, 1980. — 662 с. 33. Медведев Ю. И. Некоторые теоремы об асимптотическом распределении ?2- статистик//ДАН СССР.—1970. —Т. 192, № 5. — С. 987—990. 34. Мудров В. И. Алгоритм нумерации сочетаний//Журн. вычисл. математики и мат. физики. — 1965. — Т. 5, № 4. — С. 776—778. 35. Нечипорук Е. И. О сложности вентильных схем, реализующих булевские матрицы с неопределенными элементами//ДАН СССР. — 1965. — Т. 163, § 1. — С. 40—43. 36. Оре О. Теория графов. — М.: Наука, 1968. — 352 с. 37. Петров В. В. Суммы независимых случайных величин. — М.: Наука, 1972. — 414 с. 38. Резникова Ж. И., Рябко Б. Я. Анализ языка муравьев методами теории информации/Проблемы передачи информации.— 1986.— Т. 22, № 3. — С. 103— 108. 39. Рябко Б. Я. Кодирование источника с неизвестными, но упорядоченными вероятностями//Проблемы передачи информации. — 1979. — Т. 14, № 2. — С. 71—77. 40. Рябко Б. Я. Универсальное кодирование компактов//ДАН СССР. — 1980. — Т. 252, № 6. — С. 1325—1328. 41. Рябко Б. Я. Сжатие информации с помощью стопки книг//Проблемы передачи информации. — 1980. — Т. 16, № 4. — С. 16—21. 42. Рябко Б. Я. Дважды универсальное кодирование//Проблемы передачи информации. — 1984. — Т. 20, № 3. — С. 24—28. 43. Сидельников В. М. О статистических свойствах преобразований, осуществляемых конечными автоматами//Кибернетика. — 1*965. — № 6. — С. 1—14. 44. Трофимов В. К. Избыточность универсального кодирования произвольных марковских источников//Проблемы передачи информации. — 1974. — Т. 10, № 4. — С. 16—24. 45. Трофимов В. К. Универсальное равномерное по выходу кодирование бер- нуллиевских источников//Методы дискретного анализа в теории кодов и схем. -f Новосибирск, 1976. — Вып. 29. — С. 87—100. 46 Трофимов В. К. Кодирование пуассоновских источников на основе наблю- дений//7-я Всесоюзная школа-семинар по вычислительным сетям. — Ереван, 1983/Тез. докл. — М., Ереван, 1983. — Ч. 3. — С. 205—208. 47. Феллер В. Введение в теорию вероятностей и ее приложения. — М.: Мир, 1964. — 498 с. 48. Фитингоф Б. М. Оптимальное кодирование при неизвестной и меняющейся статистике сообщений//Проблемы передачи информации. — 1966. — Т. 2, № 2. — С. 3—11. *9. Фихтенгольц Г. М. Курс дифференциального и интегрального исчисления. — М.: Наука, 1966. — Т. 1—3. $0. Хантер Р., Робинсон А. X. Международные стандарты кодирования для N цифровой (Ьаксимильной связи/ДИИЭР. — 1980. — Т. 68, № 4. —С. 112—129. jjl. Харди Г., Литтлвуд Д.. Полна Г. Неравенства. — М.: ИЛ, 1948. — 456 с. ч. Хартли Р. Передача информации//Теория информации и ее приложения. — М.: Физматгиз, 1959. — С. 5—35. Ч Хасин Л. С. Оценка сложности реализации монотонных симметрических функций формулами в базисе V» &//ДАН СССР. — 1969. — Т. 189, № 4. — С. 752—755. ^. Хаффман Д. А. Метод построения кодов с минимальной избыточностью// Кибернетический сборник. — М., 1961. — Вып. 3. — С. 79—87. 165
55. Хинчин А. Я. Цепные дроби. — М.: Физматгиз, 1961. — 112 с. 56. Ходак Г. Л. Связь избыточности и средней задержки при кодировании словами одинаковой длины Всесоюзная конференция по проблемам теоретической кибернетики. — Новосибирск, 1969. — С. 12. 57. Ходак Г. Л. Оценки избыточности при пословном кодировании сообщений, порожденных бсрнуллиевскими источниками//Проблемы передачи информации. — 1972. — Т. 8, До 2. — С. 21—32. 58. Хомский Н., Миллер Д. Конечные модели использования языка//Кибернети- ческий сб. (новая серия). — 1967. — № 4. — С. 141—218. 59. Шеннон К. Работы по теории информации и кибернетике. — М.: ИЛ 1963. — 828 с. 60. Шоломов Л. О реализации недоопределенных булевых функций схемами из функциональных элементов/Проблемы кибернетики. — М., 1969. — № 21.— С. 215—227. 61. Штарьков Ю. М. Обобщенные коды Шеннона//Проблемы передачи информации. — 1984. — Т. 20, Nb 3. — С. 3—16. 62. Ясуда Я. Обзор методов цифрового кодирования факсимильных данных в Японии/ ТИИЭР. — 1980. — Т. 68, № 4. — С. 86—103. 63. A locally Adaptive Data Compression Scheme J. L. Bentley, D. D. S lea lor, R. E. Tarjan, V. K. Wei. С \CM. — 1986. — Vol. 29, N 4. — P. 320—330. 64. Blahut R. Computation of Channel Capacity and Rate Distortion Functions// IEEE Trans. — 1973. — Vol. JT-18, N 4. — P. 460—473. 65. Chaug C. C, Lee R. C. T. A Letter Oriented Minimal Perfect Hashing Sche- me//The Compeeter Journal. — 1986. — Vol. 29, N 3. — P. 277—281. 66. Cormac G. V., Horspool R.t Kaiserwerth M. Practical Perfect Mashing/ The Computer Journal.— .985. —\rol. 28, \ 1. —P. 54—58. 67. Cover Т. М. Admissibility Properties of Gilbert's Encoding for Unknown Source Probabilities IEEE'Trans. Inf. Th. — 1972. — Vol. 18, \I 1.-P. 216— 276. 68. Cover T. M. Enumeratee Source Encoding IEEE Trans. Inf. Th.— 1973.— Vol. 19, N 1.- P. 73—77. 69. Davisson L. Universal Noiseless Coding IEEE Trans. Inf. Th. — 1973. — Vol. 19, N 6.-P. 783—795. 70. Davisson L., Leon — Garcia A. A Source Matching Approach to Finding Щ- nimax Codes IEEE Trans. Inf. Th. — 1980. —Vol. 26, N 2. — P. 166—174. 71. Efficient Universal Noiseless Codes/L. Davisson, R. McEliece, M. Pursley, M. Wallace/'IEEE Trans. Inf. Th.— 1981. — \ ol. 27, N 3.-P. 269—279. 72. Dunham J. G. Optimal Noiseless Coding of Random Variables /IEEE Trans.— 1980. —Vol. JT-26, N 3. — P. 345. 73. Elias P. Minimax Optimal Universal Codeword Sets IEEE Trans.— 1983.— Vol. JT-29, N 4.-P. 491—502. 74. Elias P. Interval and Recency Rank Source Encoding: tv\o on — line Adaptive Variable — Length Schemes IEEE Trans.—1987. —Vol. JT-33M. — P. 3—10. 75. Fredman M., Komlos J. On the Size of Separating Systems and Families of Perfect Hash Functions SIAM J. on ADM. — 1984. — Vol. 5, N 1.-P. 61— 68. 76. Fredman M., Komlos J., Szemeredi E. Storing a Sparse Table With 0A) Worst Case Access Time//J. ACM. —1984.— Vol. 31, N 3. —P. 538—544. 77. Friedman J. Constructing 0(n log n) Size Monotone Formulae for the k-th Elementary Symmetric Polynomial of ? Boolean \ ariables /25-th Ann. Symp. on Found, of Сотр. Sci. — 1984. —P. 506—515. 78. Gilbert E. N. Coding Based on Inaccurate Source Probabilities /IEEE Trans. Inf. Th.— 1971. — Vol. 17, N 3. — P. 304—314. 79. Hansel G. Nombre des Lettres Necessaires Pour Ecrire une Fonction Symmet- rique de ? Variables/С. R. Acad. Sci. Paris—1962. —\ol. 261, N 21. -- P. 1297—1300. 80. Jaeschke G. Reciprocal Hashing— \ Method for Generating Minimal Perfect Hashing Functions/Comm. ACM.—1981. —Vol. 24, N 12.— P. 829—833. 81. Jelinek F., Shneider K. On \ariable-Lenght to Block Coding//IEEE Trans.— 1972. —Vol. JT-12, N 6. 166
82. Karush J. A Simple Proof of an Inequality of McMillan//IRE Trans. Inf. Th.—1961. —Vol. 7, N 2 —P. 118. 83. Korner J. Fredman-Komios Bounds and Information Theory — Budapest 1985.^21 p. (Preprint Math. Inst. No 17/1985). 84. Krichevsky R. E. Optimal Hashing//Information and Control.—1985.— Vol. 6? N 1.-P. 64—92. 85. Krichevsky R. E., Ryabko B. Ya. Universal Retrieval Trees//Discrete Applied Mathematics — 1985. — Vol. 12. — P. 293—302. 86. Krichevsky R. E.f Ryabko B. Ya., Haritonov A. Y. Optimal key for Taxons Ordered in Accordance with Their Frequencies//Discrete Applied Mathematics. — 1981. —Vol. 3. — P. 67—72. 87. Krichevsky R. E., Trofimov V. K. The Performance of Universal Encoding// IEEE Trans. Inf. Th. — 1981. — V. 27, N 2.-P. 199—207. 88. Lawrence J. C. A New Universal Coding Scheme for the Binary Memoryless Source//IEEE Trans.—1977.—Vol. IT-23, N 4.-P. 466—472. 89. Lynch T. J. Data Compression. Techniques and Applications: Lifetime. Learning, Publications, Belmont.— 1985. — 345 p. 90. Mehlhorn K- On the Program Size of Perfect and Universal Hashfunctions// Proc. 23 rd Ann. IEEE Symp. on Found, on Сотр. Sci.—1982. — P. 121— 130. . 91. Nagaev S. V. Large Deviations of Sums of Independent Random Variables// Ann. Probability. — 1979. — Vol. 7, N 5. — P. 745—789. 92. Leung-Yan-Cheong S. K-, Cover Т. M. Some Equivalences Between Shannon Entropy and Kolmogorov Complexity//IEEE Trans.— 1979.— Vol. 24, N 3.- P. 331—338. 93. Pippenger N. Information Theory and the Complexity of Boolean Functions// Math. Syst. Th. — 1976. — Vol. 10, N 2. — P. 215—226. 94. Rissanen J., Langdon G. G. Arithmetic coding//IBM J. Res. Dev.— 1979.— Vol. 23, N 2.- P. 149—162. 95. Shtarkov Y. MM Babkin V. F. Combinatorial Encoding for Discrete Stationary Sources//2nd Int. Symp. Inf. Th. 1971.—Acad. Kiado, Budapest.—1973.—P. 249—257. 96. Sprugnoli R. Perfect Hashing Functions: a Single Probe Retrieving Method for Static Files//Comm. ACM. — 1977.— Vol. 23, N 1.-P. 17—19. 97. Ziv J., Lempel A. Compression of Individual Sequences Via Variable—Length Coding//IEEE Trans. — 1978. — Vol. IT-24, N 5.-P. 530—536 167
ОГЛАВЛЕНИЕ Предисловие , 3 Введение · 5 ГЛАВА 1. Источники сообщений и их энтропия 15 § 1.1. Конечные комбинаторные источники 15 § 1.2. Компакты и их ?-энтропия 17 § 1.3. Вероятностные источники . 22 § 1.4. Стационарные источники 26 ГЛАВА 2. Стоимость кодирования ........... 29 § 2.1. Деревья и префиксные коды , 29 § 2.2. Неравенство Крафта. Код Левенштейна , 31 § 2.3. Кодирование конечных комбинаторных источников . 34 § 2.4. Колмогоровская сложность 37 § 2.5. Кодирование конечных вероятностных источников . 40 § 2.6. Равновероятные буквы. Пороговые функции ... 45 § 2.7. Блочное кодирование стационарных источников . . 48 § 2.8. Неблочное кодирование 54 ГЛАВА 3. Универсальное кодирование 58 § 3.1. Кодирование классов вероятностных источников . . 58 § 3.2. Универсальное кодирование источников Бернулли . 62 § 3.3. Адаптивное кодирование 66 § 3.4. Монотонные источники , 69 § 3.5. Кодирование классов комбинаторных источников . * 73 § 3.6. Универсальное кодирование стационарных последовательностей 78 ГЛАВА 4. Методы поиска информации 83 § 4.1. Лексикографический поиск , 83 § 4.2. Побуквенный поиск 84 § 4.3. Нумерационный поиск 88 § 4.4. Хеширование. Индекс склеивания 94 ГЛАВА 5. Универсальные множества сжимающих отображений , 99 § 5.1. Распределение кластеров 99 § 5.2. Вероятности больших уклонений ,102 § 5.3. Универсальные множества нумераторов . , . . 107 § 5.4. Универсальные хеш-множества t . . , . , . ПО § 5.5. Универсальные множества на основе кодов . . . 115 § 5.6. Универсальные множества на основе полей Галуа . 119 ГЛАВА 6. Сложность кодирования комбинаторных источников . . . 122 § 6.1. Кодирование комбинаторного источника с большой избыточностью ....... 122 § 6.2. Каналы с произвольным аддитивным шумом . . , 124 § 6.3. Кодирование комбинаторного источника с малой избыточностью 126 § 6.4, Сложность хеширования 131 § 6.5. Эффективное построение нумераторов 132 § 6.6. Эффективное построение хеш-функций 136 § 6.7. Основные выводы 140 ГЛАВА 7. Сложность кодирования вероятностных источников , . . 141 § 7.1. Произвольные конечные вероятностные источники . 141 $ 7.2. Сложность кодирования марковских и бернуллиевс- ких источников 143 § 7.3. Равномерный по выходу универсальный код . . . 146 § 7.4. Сжатие с помощью стопки книг ,...«. 149 <> 7.5. Автоматное сжатие . , . . . . . . . . 151 Приложение. Построение универсальных нумераторов ,156 Основные обозначения .«...,,.....<.· 162 Список литературы ..«......,.·.·· 164