Матричное представление частотного словаря для восстановления отсутствующих данных

УДК 519.72

Матричное представление частотного словаря для восстановления отсутствующих данных

Антон Г.Рубцов* Мария Ю.Сенашова^

Институт вычислительного моделирования СО РАН, Академгородок 50, Красноярск, 660036,

Россия

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

Ключевые слова: восстановление отсутствующих данных, частотный словарь, условная энтропия.

Восстановление отсутствующих данных является важной прикладной задачей в различных областях естествознания и техники [1]. Общие подходы к этой проблеме представляют собой одну из фундаментальных проблем вычислительной математики. Результаты восстановления отсутствующих данных зависят как от способа восстановления, так и от характера самих данных. Ранее были предложены подходы к решению этой проблемы, основывающиеся на идее моделирования работы высоко параллельных мелкозернистых вычислительных устройств [2, 3]. Настоящая работа продолжает этот цикл исследований; мы изложим некоторые результаты, связанные с восстановлением отсутствующих данных на основе принципа максимального подобия. Данный принцип может быть представлен как экстремальный — принцип максимума условной энтропии.

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

Постановка задачи. Рассматривается символьная последовательность, состоящая из символов алфавита Q. Пусть L — длина участка, который необходимо восстановить (будем называть его лакуной). Словом длины q будем называть любую связную последовательность этой длины, составленную из символов алфавита Q. Опорным частотным словарем

* e-mail: Anton.Rubtsov@rusal.com te-mail: msen@icm.krasn.ru

© Siberian Federal University. All rights reserved

Ш толщины д будем называть список всех слов этой длины, встречающихся в доступных исследователю частях, с указанием частот этих слов /ш. Частота /ш = NN, где N — количество всех слов данной длины в символьной последовательности, а п — количество в последовательности данного конкретного слова (0 < /ш < 1). Словарь Ш называется полным, если он содержит слова, состоящие из всех возможных сочетаний символов алфавита П. В противном случае словарь неполный. Пополненным частотным словарем Ш будем называть частотный словарь (толщины д), составленный по той последовательности, которая возникает в результате заполнения лакуны. Пополненный частотный словарь будет использоваться для выбора из всех возможных заполнений, наиболее «подходящего» для данной символьной последовательности. Критерии выбора такого заполнения могут быть различными. Наиболее естественным, с нашей точки зрения, является принцип минимума условной энтропии опорного частотного словаря относительно пополненного (принцип максимального подобия). Условная энтропия ([4]) для конкретного заполнения вычисляется следующим образом:

Здесь сумма берется по всем словам, встречающимся в полученном тексте, / — частота слова в опорном словаре, / — частота слова в пополненном словаре. Критерий минимума условной энтропии позволяет выбирать такое заполнение, которое максимально похоже на имеющиеся части последовательности.

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

Поскольку нас будут интересовать только те заполнения лакуны, которые можно получить с использованием опорного частотного словаря, длина восстанавливаемой символьной последовательности фактически будет составлять Ь + 2і символа, включая левую и правую опоры.

Построить заполнение лакуны означает построить последовательность символов, которая строится при помощи слов длины д

т.е. два соседних слова пересекаются по общему подслову длины д — 1, а первое слово в этой последовательности (соответственно, последнее) начинается (соответственно, заканчивается) левой опорой а; (соответственно, правой опорой аг). Длина такой последовательности составит Ь + 2£ символа. Для построения последовательности (1) на первом шаге к какой-либо из опор (возьмем для определенности левую опору а; ) присоединим слово из частотного словаря, у которого первые д — 1 символов совпадают с опорой. Присоединение слова

,Ш2, из, ..., ^Ь+ 2t-q, ^L+2t-q+1, причем для каждой пары соседних слов выполняется условие:

= І1 СО] СО ід = ^5+1;

состоит в приписывании к присоединяемому слову последнего символа присоединяемого слова. В общем случае слов из словаря, которых можно присоединить к опоре, найдется несколько. Нас интересуют все возможные заполнения лакуны, поэтому мы должны присоединить все такие слова. Следующим шагом к каждому полученному продолжению опоры присоединяем те слова из словаря, у которых первые д—1 символов совпадают с последними д — 1 символами полученных цепочек. Процесс продолжается до тех пор, пока длина полученных цепочек символов не станет равна Ь + 2£, поскольку нас интересуют заполнения, опирающиеся на известные части последовательности.

Процесс построения заполнений можно представить в виде роста дерева. В корне этого дерева находится слово, совпадающее с левой опорой. Каждый узел — это слово длины д, которое получается присоединением одного символа к последним д — 1 символам слова родительского узла. Из каждого узла выходит столько ветвей, сколько можно присоединить слов из опорного словаря к текущему слову. Глубина такого дерева будет составлять Ь + £. Так как при построении заполнений часто возникают ситуации, когда на некотором шаге к слову нельзя присоединить ни один символ, то, соответственно, дерево может быть неполным. Введем определения, касающиеся дерева заполнений.

Определение 1. Дерево, включающее в себя как ветки, которые могут дорасти до глубины Ь + так и ветки, которые обрываются на некотором уровне, будем называть полным деревом.

Определение 2. Дерево, включающее в себя только те ветки, которые достигают глубины Ь + будем называть усеченным деревом.

Чтобы по построенному дереву получить интересующие нас заполнения, нужно просмотреть все листья на глубине Ь + £ и выбрать те из них, у которых последние д — 1 символов слова совпадают с правой опорой аг. Число всех возможных заполнений для полного словаря Ш составляет ^, где N — мощность алфавита П. Это число служит верхней границей количества возможных заполнений. Для неполного словаря число возможных заполнений меньше. Задача построения всех возможных заполнений является задачей полного перебора, а следовательно, очень ресурсоемкой, поэтому нужен способ построения только тех заполнений, у которых правые д — 1 символов совпадают с правой опорой аг, минуя построение всего дерева заполнений.

Построение заполнений с помощью матричного представления частотного словаря. Способ построения только интересующих нас заполнений дает специальное представление частотного словаря. Всякий частотный словарь есть (упорядоченный) список слов длины д. Такой список можно однозначно преобразовать в матрицу А порядка ^ х ^, в которой вспомогательная строка и столбец помечены словами опорного словаря. Если последние (д — 1) символов слова и из г-й строки совпадают с первыми (д — 1) символами слова из ]-го столбца, то на пересечении г-й строки и ^’-го столбца записывается последний символ слова Uj. Вспомогательные строка и столбец в вычислениях не участвуют.

Полученную матрицу будем называть матрицей заполнений (табл. 1). Для построения заполнений возведем данную матрицу в степень Ь+£+1. Так как элементами матрицы являются символы, то для того, чтобы возвести матрицу данного вида в степень, переопределим операции сложения и умножения для элементов матрицы. Под сложением будем понимать конкатенацию строк при помощи служебного символа, не входящего в алфавит П. Суммой

Таблица 1. Матрица заполнений

^1Ш1 Ш1^1 Ш1^2 Ш1^з ¥>1^1 ¥>1^2 ^1^3

^іШТ ^1 ^2 ^3

^1^2

^1 ^2 ^3

ЩЩ

двух строк м00000ми "11111м будет строка следующего вида "00000+11111 где ‘+’ — служебный символ. Произведением двух строк будет строка, полученная по следующему правилу: к каждой строке первого множителя, находящейся между служебными символами, приписывается каждая строка второго множителя, находящаяся между служебными символами. Например, первый множитель — строка "001+000" , второй — строка "011+100". Тогда произведением этих строк является строка "001011+000011+001100+000100".

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

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

Пусть имеется некоторый текст Т, составленный из конечного алфавита символов П = {^1, ^2 ... ^}, и соответствующий ему частотный словарь Ш(д) некоторой толщины д. Будем полагать, что данный словарь является полным, то есть он содержит все возможные слова длины д, которые можно построить из символов П. Словарь Ш(д) можно рассматривать как набор Ш(д) = {^=1 }, где ,...,^г — символы алфавита П, г1,г2, ...,г/ —

номера символов в алфавите П, кц, к^,..., к; — некоторая перестановка индексов, к — номер символа в слове. Каждое слово словаря Ш(д) можно представить в следующем виде:

q

|^) = и1У vqij = ^1„ иrj,

j=1

здесь иу — множество левых частей слов длиной д — 1, а игу — множество правых частей. Пусть в тексте Т отсутствует часть длиной Ь. Обозначим длину левой опоры через /е/ = д — 1, а сама опора есть некоторое слово У|=1 , обозначим его через и. Тогда дерево

заполнений будет выглядеть, как показано на рис. 1.

Слово и (левая опора) обязательно будет являться правой частью некоторого множества слов (как минимум, такое слово будет одно) словаря Ш(д), так как словарь Ш(д) построен по всему тексту Т, а и — часть этого текста. Поэтому слова словаря ^1^1 иГ1, ^ц2 иг2,...,^г иг|^ | могут рассматриваться как всевозможные варианты левых опор в данном тексте Т.

Для определенности и без потери общности возьмем конкретный вид левой части (конкретное слово из опорного частотного словаря) и построим дерево заполнений.

Рис. 1. Дерево заполнений

Пусть v^y — некоторое слово из словаря Ш(д), причем г — подслово длины д — 1, совпадающее с левой опорой. Так как словарь полный, то на первом шаге к данной опоре может быть присоединено не более чем |Ш| слов. К тому же часть слов может не иметь той общей части, по которой опора и слово могли бы пересекаться. Пусть подобных слов на первом шаге вх. Таким образом, на первом шаге к опоре v^y может присоединиться |Ш| — в! слов словаря Ш. Обозначим множество этих слов {^ущ}, где г — общая часть слова, по которой осуществляется пересечение с опорой, а V — некоторый символ алфавита П. Рост дерева заполнений показан на рис. 2.

Рис. 2. Схема роста дерева заполнений

Представим полученное дерево в виде табл. 2. Слово иірг, содержащее левую опору, разместим во второй строке и первом столбце. В первой строке по столбцам расположим слова словаря Ш. Если слово иірг имеет общую часть (длиной д — 1) со словом из і -го столбца, то на пересечении этого столбца со строкой ставим последний символ слова из і -го столбца. Если опора не имеет общей части с каким-либо словом, то в соответствующей

Таблица 2. Представление дерева

уг vі у г V2 уг V|W I — а і шгVj

ячейке будет пустой символ. Понятно, что таких столбцов будет |Ш|.

Так как словарь полный и отсортирован по алфавиту, то слова угVI, уг^2,..., уг^|^|-яі будут расположены сразу друг за другом, но необязательно начиная с первого столбца. В итоге будет получена таблица, которая соответствует дереву заполнений на первом шаге и однозначно его определяет. При этом глубина дерева равна единице.

Продолжим построение дерева дальше. На следующем шаге существует |Ш| — в і продолжений вида уг VI, уг V2,..., уг VI^|-зі, к которым могут быть присоединены слова словаря Ш(д). Так как присоединение символов осуществляется справа, то представим множество продолжений {угV*} как {^уГ}. Так же формально учитываем ветки, которые не имели продолжения. Это касается тех слов, которые не присоединились, т.е. {ш^-} = {V'ш'}.

К каждому заполнению, полученному на первом шаге, последовательно подбираем все слова словаря и отмечаем те, которые могут присоединиться:

= {VIУі, V2У2, . . . , VI^|-я1У|Ж|-я1, . . . , VіШі, . . . , ^іШ8і} ,

причем VіШі,... ,^іш8і учитываются формально.

Напомним операции умножения и сложения слов. Если слово V*имеет общую часть справа длиной д — 1 с другим словом Vj, то результатом умножения будет слово вида

ViУk * у^Vj = ViУkVj. Если общей части нет, то результат есть пустое множество (пустая строка). Результат сложения двух строк есть третья строка '^іуім + му^і" = мVіУі + у^і". Прибавление пустой строки исходной строки не меняет: " V! у і"+ "" =" V! у і". Таким образом, получим последовательность операций, изображенных на рис. 3, 4.

<Р2»2 = ""

%|>1 =""

Рис. 3. Подбор слов к первому заполнению

Пустой символ означает, что слово из словаря не может быть присоединено к данному заполнению и ветка дерева прекращает рост.

Все эти потенциальные продолжения разобьем на классы или группы. Причем присоединение будем обозначать знаком умножения, а объединение — знаком сложения.

В первую группу Сі(у^і) попадут возможные продолжения с помощью слова у^:

II II

V ф

*- <Р

V

= V ф V

\W-sV\WsH \W-sH

\№*Ц |^1

ф V №\ ¥\

II II

Рис. 4. Подбор слов к заполнению

VіУі * у^і = VіУіVі;

V2У2 * у^і = “;

...... ;

V|W | - аі у^ | - аі * Уіvі = “;

Следующих веток фактически нет, но формально мы их учитываем.

V1Ш1 * УіVі = “;

...... ;

^ ш8і * у і Vі = “;

Сі(у^і) = {vіуі * у^і + V2У2 * у^і +---------+ V|w|-8іУ|W|-8і * УіVі + VіШі * уіVі + V2Ш2 *

УіVі +------+ ^ш8і * уіVі}.

Во вторую группу ^2(у2V2) попадут возможные заполнения с помощью слова У2V2:

VіУі * У2V2 = “;

V2У2 * У2V2 = V2У2V2;

...... ;

V|W I - аі У|W I - аі * У2 v2 = “;

Нижеследующих веток фактически нет, но формально мы их учитываем.

VlШl * у2V2 = “;

^ ш81 * у2V2 = “”;

G2(у2V2) = {vіУі * У2 V2 + V2У2 * У2V2 + • • • + V|W |-Яі У|W |-Яі * У2V2 + VlШl * У2V2 + V2Ш2 *

У2V2 +-+ ^Ш8і * У2V2}

И так далее...

Таблица 3. Определение продолжений

уг ^ Уг V2 Уг |-яі ш щ

vyг V! V2 |-8і

Таблица 4. Результат умножения

УlVl

VlУl Vl

V2У2

V3У3

VlШl

V- ш ;

Каждую из полученных сумм представим в виде произведения двух векторов 61

^(у^) = {^1^1 * + ^2^2 * У^1 +-+ ^|-81 У|Ж|-81 * У^1 +

+^1^1 * ^1^1 + V2W2 * у 1V! +--------+ ^ Ш81 * ^1^1} =

— (^іуі, V2У2, • • •, VI^|-8іУ|Ж|-8і, VlWl, .. ., ^) х

/ У^і \ У^і

V У^і /

/ VlУlVl \

V

/

Продолжения, полученные на первом шаге, а соответственно и вектор слева в выражении 3 определяются табл. 3.

Вектор справа и итоговый вектор можно записать в виде табл. 4, где в столбце справа расположены символы, которые могут быть присоединены с помощью слова у^і, а в столбце слева располагаются слова, к которым можно присоединить соответствующий символ. Аналогично выглядят таблицы для всех других присоединяемых слов У^2, • • •, уж| VI^|. Объединив все такие таблицы, получим табл. 5.

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

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

Таким образом, множество сумм Сі, С2, • • •, С|ж| получается путем умножения вектора заполнений, найденного на первом шаге, на матрицу продолжений (табл. 7). Причем порядки следования слов друг за другом по столбцам и строкам должны совпадать.

Таблица 5. Таблица заполнений на первом шаге

У^1 У2V2 Уз vз У\Ш |-81 У1Ш |-81

V!

V2У2

Т^3У3 vз

У1Ш |-81 У^ |-81 со - *

^1^1

Vj и 1

Таблица 6. Матрица заполнений на первом шаге

V1

V2

Vз

Таблица 7. Вектор заполнений на первом шаге

V1 V2 |-81

В результате умножения получим табл. 8.

Таблица 8. Матрица заполнений

и IV1 уг V1 У г V2 Уг V|W |-81 и

ауг С1 02 0Ж |-81

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

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

Умножая вектор

{. . . С\,°2, . . . , | —31 ; • • • }

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

Проделав Ь+Ь + 1 таких умножений, получим матрицу, содержащую все заполнения этой же длины, которые только возможно получить по данному частотному словарю из опоры . При этом заполнения, которые имеют общую часть длиной ц — 1 с правой опорой, содержатся в столбце, в котором левые ц — 1 символов слова совпадают с правой опорой. Результаты. Изучение качества восстановления проводилось с помощью вычислительных экспериментов по заполнению лакун в символьной последовательности. В качестве тест-объектов использовались следующие символьные последовательности:

1) двоичные последовательности;

2) генетические последовательности.

Результаты получены, исходя из возможностей персонального компьютера. Четырехбуквенные последовательности. В качестве рассматриваемой последовательности был взят текст генетической последовательности (ЛБ012132 — геном вируса парагриппа человека). Длина текста составляла 14573 символа, длина заполнения — 7 символов. Толщина словаря — 3 символа. Часть строки интересующей нас ячейки матрицы, полученной в результате возведения в седьмую степень, приведена ниже:

+ aacaagta + cacaagta + gacaagta + tacaagta + accaagta + cccaagta + gccaagta + tccaagta + agcaagta + cgcaagta + ggcaagta + tgcaagta + atcaagta + ctcaagta + gtcaagta + ttcaagta + aagaagta + cagaagta + gagaagta + tagaagta + acgaagta + ccgaagta + gcgaagta + tcgaagta + aggaagta + cggaagta + gggaagta + tggaagta + atgaagta + ctgaagta + gtgaagta + ttgaagta + aataagta + cataagta + gataagta + tataagta + ....

Заполнение Абс. энтропия Условная энтропия

gtgcagt - точное 3,931363626427 9,086736165523Е-07

ggcgcgt Макс. 3,931962720496 8,895312249570Е-06

gaaatgt 3,931068694792 Мин. 3,604751137360Е-07

Двухбуквенные последовательности. Последовательность из алфавита {0, 1} получалась выписыванием подряд без пробелов натуральных чисел, записанных в двоичной системе счисления: 1101110010111011, 11000100110101011... и так далее. Длина лакуны составляла 11 символов. Часть значения строки нужной нам ячейки матрицы, полученной в результате возведения в нужную степень, приведена ниже:

0000000000110 + 1000000000110 + 0100000000110 + 1100000000110 + 0010000000110

+ 1010000000110 + 0110000000110 + 1110000000110 + 0001000000110 + 1001000000110

+ 0101000000110 + 1101000000110 + 0011000000110 + 1011000000110 + 0111000000110

+ 1111000000110 + 0000100000110 + 1000100000110 + 0100100000110 + 1100100000110

+ 0010100000110 + 1010100000110 + 0110100000110 + 1110100000110 + 0001100000110

+ 1001100000110 + 0101100000110 + 1101100000110 + 0011100000110 + 1011100000110 + 0111100000110 + 1111100000110 + 0000010000110 + 1000010000110 + ...

Заполнение Абс. энтропия Условная энтропия

0011001100110 - точное 2,0722135611 1,4701216237Е-06

0000000000110 Макс. 2,0726107030 8,2417286609Е-06

0111101000110 2,0721937671 Мин. 1,2353260849Е-7

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

Работа выполнена при финансовой поддержке гранта Президента РФ для ведущих научных школ №НШ-3431.2008.9.

Список литературы

[1] A.N.Gorban, D.A.Rossiev, D.C.Wunsch II, Neural Network Modelling of Data with Gaps, Радиоэлектроника. Информатика. Управление, (2000), №1, 47-55.

[2] М.Ю.Сенашова, М.Г.Садовский, А.Г.Рубцов, Кинетическая машина Кирдина в проблеме восстановления отсутствующих фрагментов символьных последовательностей, Пол-зуновский альманах, Барнаул, (2006), №11, 131-133.

[3] М.Ю.Сенашова, А.Г.Рубцов, М.Г.Садовский, Применение кинетической машины Кирдина для восстановления утерянных данных в символьных последовательностях, Информационные и математические технологии в научных исследованиях, Труды XI международной конференции “Информационные и математические технологии в научных исследованиях”, 2006, Иркутск, ИСЭМ СО РАН, Часть II, 168-176.

[4] А.Н.Горбань, Обход равновесия, Наука, Новосибирск, 1984.

Data Loss Recovery at Symbolic Sequences Due to Matrix Formulation of Frequency Dictionary

Anton G.Rubtsov Mariya Yu.Senashova

Data loss recovery is provided due to the principle of maximal likelihood. The matrix representations of the frequency dictionary allow one to calculate the number of possible fillings and their probabilities. The method is applied to various areas of knowledge, for example to communication theory and molecular biology.

Keywords: data loss recovery, frequency dictionary, relative entropy