Научная статья на тему 'Сжатие недоопределенных данных в 7-фигурных шахматных таблицах'

Сжатие недоопределенных данных в 7-фигурных шахматных таблицах Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
155
25
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
RE-PAIR / ПОБЛОЧНОЕ СЖАТИЕ / ТАБЛИЦЫ ЛОМОНОСОВА / ШАХМАТНЫЕ ОКОНЧАНИЯ / BLOCK-ORIENTED COMPRESSION / LOMONOSOV TABLES / CHESS ENDINGS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Захаров В. Б., Мальковский М. Г., Щукин В. Ю.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Compression of subdefinite data in 7-piece chess tables

Employees of MSU Computer Science department solved the problem of 7-man chess endings in 2012. This task is an example of utlra-high dimension problem (the total size of resulted data is about 1 Petabyte). One of the complex problems solved during the project is efficient block-oriented compression with providing high speed of random access. Initially popular LZMA algorithm was used for compression. It is considered as one of the most efficience. Nevetheless compression was improved further up to 35%. The efficiency was provided with data reodering before compression, compression by RE-PAIR algorithm and using the technique of so called subdefinite values. The article tells about implementation details of all compresson techniques used in the specified project.

Текст научной работы на тему «Сжатие недоопределенных данных в 7-фигурных шахматных таблицах»

УДК 004.421.6

В. Б. Захаров, М. Г. Мальковский2, В. Ю. Щукин3

СЖАТИЕ НЕДООПРЕДЕЛЕННЫХ ДАННЫХ В 7-ФИГУРНЫХ ШАХМАТНЫХ ТАБЛИЦАХ

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

Ключевые слова: RE-PAIR, поблочное сжатие, таблицы Ломоносова, шахматные окончания.

1. Введение. В 2012 г. специалистами факультета ВМК МГУ были рассчитаны таблицы, позволяющие получать оптимальные решения для шахматных позиций в случаях, когда на доске находится не более 7 фигур. Отладочные расчеты были проведены на суперкомпьютере IBM Blue Gene/P, а основной объем вычислений выполнен на суперкомпьютере "Ломоносов", который уже несколько лет входит в топЮО мирового рейтинга. Таблицы получили название "таблицы Ломоносова" по названию компьютера, на котором был выполнен основной объем вычислений. Алгоритм получения таблиц описан в работах [1, 2]. Отметим, что даже в сжатом виде размер таблиц превышает 100 ТБ, а размер несжатых таблиц превышает 1 ПБ (Петабайт). Проведенная работа позволила на годы обогнать время. Так, самый молодой чемпиона мира по шахматам Магнус Карлсен в 2013 г. на вопрос о 7-фигурных окончаниях, не зная, что они уже рассчитаны, ответил, что не надеется увидеть решения этой задачи при своей жизни.

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

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

2. Проблемы блочной компрессии. Вопрос сжатия данных влияет на все алгоритмы работы с таблицами. Сжатие происходит в оперативной памяти сразу же после построения участка таблицы без записи на диск несжатых данных. Данные разбиты на блоки фиксированного размера, что позволяет обращаться к произвольным частям таблиц без распаковки большого объема данных. Блочная структура усложняет вопрос выбора алгоритма компрессии. Самым острым вопросом при использовании блочной компрессии является вопрос о размере блоков. Большие блоки позволяют эффективнее сжимать данные и минимизируют потери, связанные с необходимостью хранения управляющей информации, но замедляют скорость обработки в случае запросов к случайным частям таблиц. Уменьшение блоков решает проблему скорости доступа. Но значительное уменьшение размера может привести к деградации качества сжатия.

1 Факультет ВМК МГУ, науч. сотр., к.ф.-м.н., e-mail: victorQldis.cs.msu.su

2 Факультет ВМК МГУ, проф., д.ф.-м.н., e-mail: malkQcs.msu.su

3 Механико-математический факультет МГУ, асп., e-mail: vladvpikeQgmail.com

На этапе построения таблиц вопрос сжатия не стоял остро, так как в этом процессе преобладают операции последовательного чтения. Поэтому использовались блоки размером 2 МБ (размер указан для несжатых данных) и популярный алгоритм сжатия LZMA, обеспечивающий высокое качество сжатия при высокой скорости как паковки, так и распаковки данных. Отметим, что скорость паковки не является критичной величиной, так как это одноразовая операция.

При размере блоков 2 МБ случайный доступ к элементам таблицы осуществляется недопустимо медленно. Поэтому после генерации таблицы были переформатированы на размер блока 16 кБ. При этом их общий размер вырос на 45%. Выбор размера 16 кБ явился сложным компромиссом между размером получающихся таблиц и удовлетворительной скоростью доступа к ним.

Эксперименты с размерами блоков дали следующие результаты. При размере до 20 кБ уменьшение размера ведет к линейному росту скорости доступа. Далее ускорение идет медленнее, что связано с особенностями операций дискового чтения, которое производится посекторно. Тем не менее, ускорение доступа заметно вплоть до уменьшения размера блоков до 1 кБ.

Что касается качества сжатия, то переход от размера блоков 2 МБ к 1 МБ увеличивает размер таблиц незначительно (на несколько процентов). А начиная с размера блоков 64 кБ каждый переход к блокам 32 кБ, 16 кБ, 8 кБ и 4 кБ уже значительно ухудшает качество сжатия (до 10%). При еще меньших размерах блоков происходит значительная деградация качества сжатия алгоритмом LZMA, делающая его непригодным для практического использования.

Первоначально принятое компромиссное решение использовать алгоритм LZMA и размер блоков 16 кБ хотя и позволило обеспечить удовлетворительные показатели размера таблиц и скорости доступа, но не сняло вопрос об улучшении показателей. Были проведены значительные по объему эксперименты, связанные с поиском наиболее эффективного компрессора, пригодного для работы с малыми размерами блоков. Были отвергнуты не менее десяти популярных компрессоров-кандидатов, отобранных на основе обзоров специалистов и оригинальных научных публикаций. В конце концов выбор пал на малоизвестный алгоритм, называемый RE-PAIR [3], который незначительно страдает от уменьшения размера блоков из-за использования единого словаря на весь файл, а также имеет быстрый декомпрессор. Забегая вперед скажем, что использование RE-PAIR позволило уменьшить размер блоков до 1 кБ, в несколько раз повысить производительность и сократить размеры файлов.

3. Структура таблиц. Индексатор. Прежде чем описать способы, обеспечившие повышение эффективности, кратко остановимся на формате таблиц шахматных окончаний. Все таблицы разделены на файлы в соответствии с шахматными окончаниями. Под окончанием понимается множество всех позиций с определенным набором фигур, например, король, ладья и 2 пешки против короля, ладьи и пешки. Для каждого окончания задается индексатор — формула, по которой нумеруются все позиции окончания. Простейшая формула индексации 7-фигурного окончания может быть выражена как

index = (((((р7 ' 64 + р6) • 64 + р5) • 64 + р4) • 64 + р3) • 64 + р2) • 64 + pi, (1)

где каждое pi — это местоположение фигуры определенного типа, входящей в окончание. Данная формула отображает только схему вычисления индекса, в реальности же формулы вычисления индекса заметно сложнее (описываются тысячами строк программного кода), и, как минимум, учитывают симметрию шахматных позиций.

Оценки позиций записываются в массив в порядке следования их индексов. Оценки выражены в количестве полуходов до мата. На оценку отводится 2 байта (в худших из известных окончаний для хранения оценки достаточно 12 бит, но компрессия данных делает экономию на битах непринципиальной, позволяя получить примерно равные результаты при использовании как 12, так и 16 бит на значение). Для экономии места в таблицах не хранится информация о лучших ходах из позиций, так как эту информацию можно вычислить через генерацию ходов и сравнение оценок позиций после этих ходов.

Как видно, формат таблиц предельно прост. Сложности вызывают только громадный объем и необходимость быстрого доступа, что требует разбиения файлов таблиц на блоки определенного размера и независимого сжатия блоков при записи на диск.

4. Улучшение сжатия с помощью изменения порядка фигур в формуле индексации.

Известным приемом улучшения качества сжатия является изменение порядка исходных данных. Если повторяющиеся значения удается расположить ближе друг к другу, то качество сжатия улучшается. Порядок значений в таблицах определяется реализацией индексатора, и, в частности, он напрямую зависит от порядка расположения значений р^ в формуле (1), т.е. от того, в каком порядке подставляются координаты фигур в эту формулу. Цель — обеспечение того, чтобы разница индексов для "близких позиций" была минимальна. Понятие "близкие позиции" — интуитивное, формально определить его практически невозможно, поэтому цель достигается с помощью экспериментальных расчетов.

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

В таблицах Ломоносова удалось реализовать индексатор, отсекающий большее количество нелегальных позиций, чем это удавалось кому-либо сделать ранее. В частности, максимальные индексы в таблицах Ломоносова на несколько процентов меньше, чем в 6-фигурных таблицах, созданных Е. Налимовым [4, 5], ставших стандартом де-факто на многие годы. Дальнейшее сокращение максимального индекса хотя и возможно, но связано с резким возрастанием объема вычислений при генерации таблиц, что делает дальнейшие попытки усложнения формулы индексации нецелесообразными. Потребовалось искать новые пути.

Эксперименты показали, что изменение порядка фигур в формуле индексации может значительно влиять на качество сжатия. Для некоторых окончаний отношение размеров сжатых файлов в лучшем и худшем случаях отличается в 2-3 раза, хотя в среднем за счет выбора оптимального порядка удается получить 25-30% выигрыша в размере сжатых файлов.

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

5. Тернарные таблицы. Односторонние таблицы. Для предварительной оценки позиций шахматистам часто достаточно узнать, какой будет результат при оптимальной игре, будет ли в итоге выигрыш, проигрыш или ничья. Хранение только 3 возможных значений требует гораздо меньше места, чем хранение числа полуходов до мата. В связи с этим таблицы разделены на тернарные (содержащие только 3 вида значений: выигрыш, проигрыш или ничья) и полные. При этом в полных таблицах не дублируется информация о том, какая сторона выигрывает, а хранится только число полных ходов до мата.

Эффективное сжатие тернарных таблиц позволяет резко уменьшить размеры данных и делает возможным хранение самых актуальных данных даже на персональным компьютере. Описанные ниже методы позволили сократить объем 7-фигурных тернарных таблиц до 7 ТБ. Этот объем может быть еще уменьшен, если хранить не все позиции, а, например, половину (допустим, позиции с очередью хода только одной из сторон). Так, если мы храним позиции только с очередью хода стороны X, то оценка для любой позиции Р с очередью хода стороны У вычисляется выполнением всех ходов из позиции Р, получением оценок в позициях стороны X и выбором хода с наилучшей оценкой, эта оценка и будет оценкой для позиции, отсутствующей в таблице. При таком подходе достигается экономия даже более чем в 2 раза, так как из двух сторон для хранения можно выбрать таблицы для той стороны, которая требует меньшего объема. К сожалению, этот подход ведет к заметной потере производительности (почти в 10 раз), так как для восстановления отсутствующих значений требуется выполнять генерацию ходов из позиций, значения для которых известны.

6. Недоопределенные данные и их сжатие. Заметим, что в полных таблицах для ничейных позиций можно хранить любое значение, так как ничейная оценка определяется из тернарных таблиц. Также произвольные значения можно хранить и для позиций, которые невозможны по шахматным правилам. Просто удалить такие значения из массива нельзя, так как это нарушит

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

Под недоопределенными данными будем понимать последовательность недоопределенных символов. Дадим формальное определение [6]. Пусть Аа = {(ц,..., ат} — некоторый алфавит, символы которого будем называть основными. Каждому непустому подмножеству Те {1,... , т} сопоставим символ ат■, совпадающий с некоторым основным символом в случае одноэлементного множества Т. Алфавит всех символов ат обозначим А, а его символы будем называть недоопределенными. Доопределением символа ат будем называть произвольный основной символ такой, что ! € Т. Недоопределенными данными будем называть последовательность символов алфавита А. Под сжатием недоопределенных данных будем понимать кодирование недоопределенных данных, которое в результате декодирования обеспечивает некоторое доопределение исходных данных.

7. Сжатие тернарных таблиц. Возникновение недоопределенных данных в таблицах шахматных окончаний проще рассмотреть сначала на тернарных таблицах. Тернарные таблицы вместо количества ходов до мата содержат лишь информацию об исходе, а именно: проигрыш (оценка (—1)), ничья (0) или выигрыш (1). Три таких символа составляют алфавит основных символов

= { — 1,0,1}. Далее, некоторые символы в исходной последовательности будем заменять недоопределенными символами * = а.40 и ф = а{_1)0}. Для того чтобы такая замена имела смысл, символы * и ф либо не должны использоваться при обращении к таблицам, либо должны быстро восстанавливаться до исходного значения.

Оценки невозможных по шахматным правилам позиций обладают первой особенностью и подлежат замене на символ *. Однако, используются еще два вида оценок. Во-первых, это оценки тех выигрышных позиций, выигрыш которых можно обеспечить ходом со взятием, — обозначим их аш. Во-вторых, это оценки ничейных позиций, для которых существует ход со взятием, не приводящий к проигрышу, — обозначим их а^.

Заметим, что оценку первого типа можно считать неопределенной, т. е. ее можно доопределить любым символом. Действительно, для ее восстановления достаточно узнать оценки каждого хода со взятием, и соответственно, если есть выигрышный ход со взятием, то оценка этой позиции аш, если же такого хода нет, то это не а,и!. Однако, оценку а(% можно доопределять только символами — 1 или 0, так как наличие ничейного хода еще не означает ничейный исход данной позиции, потому что возможен ход без взятия, приводящий к выигрышу. Таким образом, оценку аш можно заменить на символ *, а оценку а(% — на символ ф.

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

Для использования недоопределенных данных в таблицах Ломоносова используется алгоритм сжатия, основанный на замене наиболее часто встречающихся пар на новый символ. На первом этапе пары символов заменяются на новый символ, пока не будет достигнут заданный порог (размер словаря). Шаг финальная замена гарантирует отсутствие символов * и ф. Дальнейшее сжатие проводится по алгоритму Хаффмана.

Для замены недоопределенных символов при сжатии по методу наиболее часто встречающихся пар используются три алгоритма.

1. Начальная замена. Алгоритм используется до сжатия. Каждый блок подряд идущих недоопределенных символов имеет вид 'АВХХ ... ХХСВ', где Л. И. ( ' и I) — основные символы (—1, 0 или 1), а X — недоопределенные, необязательно одинаковые, символы * или ф. Доопределение символов X производится, если блок удовлетворяет одному из условий, которое выбирается из приведенного ниже упорядоченного в порядке приоритетов списка.

• Если А = В и все X можно заменить на А, то X доопределяем символом А.

• Если С = В и все X можно заменить на С, то X доопределяем символом С.

• Если все X можно заменить на -В, то X доопределяем символом В.

• Если все X можно заменить на С, то X доопределяем символом С.

• Если длина последовательности из X превосходит некоторую фиксированную величину, то каждый X заменяем самым частым в полной исходной последовательности доопределением. Для таблиц Ломоносова в качестве этой величины взято число 5.

2. Парная замена. Алгоритм применим во время сжатия. Новые символы, которые заменяют наиболее часто встречающиеся пары, будем также считать основными. Пусть выявлено, что чаще всего встречается пара 'АВ' из основных символов. В соответствии с алгоритмом сжатия данная пара подлежит замене на некоторый новый основной символ С, не встречающийся ранее. Будем заменять на С также все пары из недоопределенных символов, для которых 'АВ' является доопределением.

3. Финальная замена. Алгоритм применим после сжатия. После сжатия каждый символ имеет некоторую длину (равную количеству заключенных в нем исходных символов). Перебирая все символы Е длины п > 1, начиная с самого длинного, заменяем каждый блок длины п из символов * на Е. Оставшиеся символы * и # заменяем на самые частые доопределения. После этого шага в последовательности остались лишь основные символы. Так как в процессе замены могли образоваться новые пары, то проводим дополнительное сжатие, по возможности заменяя новые пары на соответствующие им основные символы.

Эффект от перестановки фигур в формуле индексации и от применения рассмотренных алгоритмов кодирования и сжатия для тернарных таблиц оказался выше всех ожиданий. Во-первых, по сравнению со сжатием методом ЬЪШк с блоками в 16 кБ было достигнуто более чем 2-кратное улучшение качества сжатия (размер 7-фигурных тернарных таблиц уменьшился с 15 ТБ до 7 ТБ). Во-вторых, размер блока данных удалось сократить до 128 байт (сжатых данных, что соответствует примерно 1 кБ несжатых данных), что существенно улучшило скорость доступа к таблицам.

8. Сжатие полных таблиц. Рассмотрим теперь случай таблиц, в которых записана оценка количества полуходов до мата, т. е. полных таблиц. Так как доступ к тернарным таблицам осуществляется в несколько раз быстрее, чем к полным таблицам, то оценка вычисляется в 2 этапа: обращение к тернарным таблицам, и если результат не ничья, то обращение к полным таблицам. В целях экономии памяти в полных таблицах Ломоносова хранится не количество полуходов до мата ё, а величина (й + 1)/2. А для ничьих и нелегальных позиций хранятся символы *, доопределением которых является любой основной символ.

Сжатие полных таблиц отличается от сжатия тернарных лишь первым алгоритмом. Отличия вызваны тем, что количество значений для полных таблиц гораздо больше, чем для тернарных.

1. Начальная замена (для полных таблиц). Сначала, все не единичные и не длинные блоки (длиной от 2 до 31) символов * заменяются блоками той же длины из наиболее часто встречающегося символа. Для всех оставшихся блоков 'А ***...*** В' применяется следующий алгоритм.

• Если длина блока из * нечетна, то вместо левого или правого конечного символа * подставляем основной символ С так, чтобы полученная пара (АС или СВ) имела максимальную частоту среди всех пар вида АХ и У В, где X и У — любые основные символы. Получен блок четной длины.

• Блок из символов * четной длины 2п заменяем блоком длины 2п, состоящим из п наиболее часто встречаемых пар основных символов.

9. Улучшенное сжатие полных таблиц. Отметим, что количество недоопределенных символов в полных таблицах резко возрастает и не ограничивается только * и ф. Также напомним, что в полных таблицах вместо полуходов до мата й содержатся величины {й + 1)/2. Введем следующие недоопределенные символы:

• символы п с множеством доопределения п, п + 1, п + 2,...;

• символы п с множеством доопределения 0,1,..., п.

На символ п (п) будем заменять символы, соответствующие выигрышным (проигрышным) позициям с количеством полуходов до мата 2п — 1 (2п), из которых существует ход со взятием, ведущий в позицию с количеством полуходов до мата 2п - 2 (2п — 1). Тогда для восстановления оценки в выигрышной позиции, необходимо взять минимум по записанной у позиции оценке и оценкам ходов со взятием, а для проигрышных позиций — максимум.

Другими словами, если есть ход-взятие, обеспечивающий выигрыш за п ходов, то оценку позиции можно заменить на любое значение, большее или равное п, а при проигрыше — на значение, меньшее или равное п.

Для таблиц Ломоносова протестировано 2 алгоритма замены недоопределенных символов пшп. Оба алгоритма выполняются до сжатия и требуют предварительного подсчета частот символов.

Алгоритм 1. Заменяем каждый недоопределенный символ п или п на самый частый символ из множества доопределения.

Алгоритм 2. Для каждого символа п (п) выполняем следующие действия: если слева стоит символ из основного алфавита, то заменяем текущий недоопределенный символ на доопределение, реализующее для всех возможных доопределений самую частую пару с левым символом, иначе заменяем недоопределенный символ на самый частый из множества доопределения.

В табл. 1, 2 сравнивается качество сжатия, получаемое при использованиии алгоритмов 1 и 2, с качеством сжатия алгоритма, описанного в п. 8, т. е. алгоритма без использования улучшений.

Таблица 1

Размеры 5-фигурных таблиц

Показатель Показатель

Размер таблиц, коэффициента скорости

ГБ сжатия, % доступа к таблицам, %

Алгоритм

без использования 5.82 100 100

улучшения

Алгоритм 1 4.93 84.7 80

Алгоритм 2 4.83 83.0 80

Алгоритм 2 обеспечил наибольшее сокращение размера 5-фигурных таблиц, но при этом скорость доступа к таблицам ухудшилась на 20%. Было решено, что такое замедление является нормальной компенсацией за улучшение качества сжатия.

Таблица 2

Размеры 6-фигурных таблиц

Размер таблиц, ГБ Показатель коэффициента сжатия, % Показатель скорости доступа к таблицам, %

Алгоритм без использования улучшения 952 100 100

Алгоритм 2 740 77 84

Из табл. 2 следует, что с ростом количества фигур с 5 до 6 преимущество по качеству сжатия алгоритма 2 над алгоритмом без использования улучшений достигает уже 23%. Для 7-фигурных таблиц преимущество Алгоритма 2 продолжает расти, но сравнительный анализ уже не проводился.

Перестановка фигур и рассмотренные алгоритмы кодирования оказались достаточно эффективными для полных таблиц, хотя эффект оказался не настолько ошеломляющим как для тернарных таблиц. Удалось обеспечить примерно 25%-е сокращение объема сжатых данных. Причем наилучшее сокращение происходит на самых объемных таблицах.

В конечном итоге можно сравнить размеры 6-фигурных таблиц, созданных в 2005 г. Е. Налимо-вым [4, 5], и таблиц Ломоносова, полученных в результате использования новых алгоритмов сжатия. Объем таблиц 2005 г. составил более 1.1 ТБ (размер блока данных 8 кБ). Объем 6-фигурных таблиц Ломоносова — менее 0.8 ТБ (т.е. на 30% меньше). Также в несколько раз повысилась и скорость доступа к таблицам.

10. Заключение. Сформулируем результаты проделанной работы.

1. Популярный алгоритм LZMA и другие алгоритмы сжатия, не использующие общий словарь символов для всех блоков данных, не пригодны для паковки при малых размерах блоков данных (менее 16 кБ).

2. При малых размерах блоков замена популярного алгоритма сжатия LZMA на малоизвестный алгоритм RE-PAIR позволила как улучшить качество сжатия, так и ускорить обработку данных.

3. Заметное влияние на качество сжатия может оказать переупорядочивание данных. В некоторых случаях этот эффект является многократным.

4. Исследования, направленные на поиск методов создания недоопределенных данных и на их кодирование, позволяют в конечном итоге добиваться значительного улучшения (на десятки процентов) качества сжатия по сравнению с универсальными компрессорами, что очень существенно при больших объемах данных.

СПИСОК ЛИТЕРАТУРЫ

1. Захаров В.Б., Махнычев B.C. Алгоритм ретроанализа в суперкомпьютерных системах на примере задачи игры в шахматы // Программные системы и инструменты. № 11. М.: Изд-во МАКС Пресс, 2010. С. 45-52.

2. Захаров В.Б., Махнычев B.C. Создание таблиц шахматных 7-фигурных окончаний на суперкомпьютере Ломоносов // Суперкомпьютеры. 2013. № 15. С. 34-37.

3. Larsson N. J., Moffat A. Offline dictionary-based compression//Proc. IEEE. N 88(11). IEEE Computer Society Press, 2000. P. 1722-1732.

4. Nalimov E.V., Haworth G.M., Heinz E. A. Space-efficient Indexing of Chess Endgame Tables // ICGA J. 2000. N 23(3). P. 148-162.

5. Haworth G.M. 6-man chess solved // ICGA J. 2005. N 28(3). P. 153.

6. Шоломов JI. А. Элементы теории недоопределенной информации // Прикладная дискретная математика. Приложение. 2009. № 2. С. 18-42.

Поступила в редакцию 23.03.15

COMPRESSION OF SUBDEFINITE DATA IN 7-PIECE CHESS TABLES

Zakharov V. B., Malkovskiy M. G., Shchukin V. Yu.

Employees of MSU Computer Science department solved the problem of 7-man chess endings in 2012. This task is an example of utIra-high dimension problem (the total size of resulted data is about 1 Petabyte). One of the complex problems solved during the project is efficient block-oriented compression with providing high speed of random access. Initially popular LZMA algorithm was used for compression. It is considered as one of the most efficience. Nevetheless compression was improved further up to 35%. The efficiency was provided with data reodering before compression, compression by RE-PAIR algorithm and using the technique of so called subdefinite values. The article tells about implementation details of all compresson techniques used in the specified project.

Keywords: RE-PAIR, block-oriented compression, Lomonosov tables, chess endings.

i Надоели баннеры? Вы всегда можете отключить рекламу.