Научная статья на тему 'Представление дискретных случайных величин с применением многокорневых диаграмм решений'

Представление дискретных случайных величин с применением многокорневых диаграмм решений Текст научной статьи по специальности «Математика»

CC BY
139
38
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
БИНАРНЫЕ ДИАГРАММЫ РЕШЕНИЙ / ВЕРОЯТНОСТНАЯ ВЕРИФИКАЦИЯ / BINARY DECISION DIAGRAMS / PROBABILISTIC VERIFICATION

Аннотация научной статьи по математике, автор научной работы — Бугайченко Дмитрий Юрьевич, Соловьев Игорь Павлович

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

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

Discrete random variables modeling using multiroot decision diagrams

The paper proposes a new approach for modeling discrete random variables based on multiroot binary decision diagrams (MRBDD). This need arise, for instance, in the problem of probabilistic verification, where another type of decision diagrams multiterminal binary decision diagrams (MTBDD) is widely used present. Multiroot diagrams have a number of significant advantages compared with multiterminal ones. Due to more efficient reuse of common building blocks multiroot diagrams provide more compact representation consuming less memory, and in many cases allowing a better execution time. Experimental results presented in the paper show that multiroot diagrams are a promising alternative to multiterminal diagrams for such problems as random variables modeling and probabilistic verification.

Текст научной работы на тему «Представление дискретных случайных величин с применением многокорневых диаграмм решений»

ВЕСТНИК САНКТ-ПЕТЕРБУРГСКОГО УНИВЕРСИТЕТА

Сер. 10. 2012. Вып. 2

ИНФОРМАТИКА

УДК 519.683.8+004.424

Д. Ю. Бугайченко, И. П. Соловьев

ПРЕДСТАВЛЕНИЕ ДИСКРЕТНЫХ СЛУЧАЙНЫХ ВЕЛИЧИН С ПРИМЕНЕНИЕМ МНОГОКОРНЕВЫХ ДИАГРАММ РЕШЕНИЙ*)

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

Идея более полной автоматизации процесса проверки корректности поведения системы возникла достаточно давно и реализована в двух основных направлениях: верификация (model checking) [1] и генерация тестовых сценариев на основе формальной спецификации системы [2] или анализа кода системы [3]. Генерация тестовых сценариев активно применяется для проверки корректности отдельных модулей программных систем [4], в то время как верификация чаще используется для проверки корректности дизайна аппаратных систем [5] и протоколов [6, 7] (хотя есть примеры и успешной верификации программных систем [8]). При этом оба подхода часто основываются на одних и тех же структурах данных - бинарных диаграммах решений [9], позволяющих эффективным образом представить множество состояний системы, проследить все возможные пути выполнения и идентифицировать потенциальные проблемы.

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

Бугайченко Дмитрий Юрьевич — кандидат физико-математических наук, доцент кафедры информатики математико-механического факультета Санкт-Петербургского государственного университета. Количество опубликованных работ: 22. Научные направления: интеллектуальные системы, формально-логические методы. E-mail: DmitryBugaychenko@math.spbu.ru.

Соловьев Игорь Павлович — кандидат физико-математических наук, доцент кафедры информатики математико-механического факультета Санкт-Петербургского государственного университета. Количество опубликованных работ: 65. Научные направления: искусственный интеллект, логическое программирование, теория вычислительных процессов, формальные спецификации вычислительных систем. E-mail: soloviev@is1483.spb.edu.

*) Работа выполнена при финансовой поддержке Российского фонда фундаментальных исследований (грант № 09-01-00525-а).

© Д. Ю. Бугайченко, И. П. Соловьев, 2012

нет. Однако существует насущная проблема и в решении задачи вероятностной верификации, способной оценить вероятность того, что для системы выполнено некоторое свойство. При рассмотрении вероятностных моделей бинарные диаграммы решений неприменимы, так как позволяют представлять только булевы функции и четкие множества. Для решения этой проблемы применяются многотерминальные бинарные диаграммы решений [10], расширяющие бинарные диаграммы решений дополнительными терминальными вершинами. Но такая модификация диаграмм решений ведет к резкому увеличению вариативности структуры диаграммы [11], что не позволяет эффективно использовать повторяющиеся блоки и вызывает рост потребления памяти. В результате для вероятностной верификации разработчикам приходится искать альтернативные алгоритмы (например, статистическое моделирование [12]) и подходящие структуры данных (в частности, разреженные матрицы [13]). В работе [14] приведено сравнение существующих инструментов вероятностной верификации, показывающее, что алгоритмы, основанные на разреженных матрицах, во многих случаях превосходят алгоритмы, основанные на диаграммах решений, тогда как статистические алгоритмы работают нестабильно и могут дать неверный ответ.

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

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

Диаграммы решений. Бинарные диаграммы решений [9] предназначены для эффективного представления в памяти булевых функций ] : {0,1}" ^ {0,1}, а также для решения более общей задачи представления конечнозначных функций вида f : {0,1}" ^ Б, где Б есть некоторое конечное непустое множество. Формально, упорядоченная бинарная диаграмма решений есть ориентированный корневой ациклический граф с множеством вершин V = N и Т, где N П Т = 0. Вершины множества N являются нетерминалами и для каждой такой вершины V € N определены значение порядка тЗ,вх(у] € {1,...,п} и ровно две дочерние вершины 1аи)(у),ЫдЪ,(у) € V. Индексы нетерминальных вершин г являются номерами аргументов х^ определяемой функции ]. Вершины множества Т являются терминалами и не имеют дочерних вершин. Для таких вершин V € Т определено значение value(v) € Б. Кроме того, выполнено условие порядка: для любого нетерминала V € N и любой его дочерней вершины V выполнено либо V € Т, либо гпвех(г!) < гпвех(ю'). Каждой вершине V € V сопоставим функцию п

*) Именно такие функции и используются при проведении вероятностной верификации [15].

переменных fv : {0,1}" ^ S следующим образом:

• если v € T, то fv(xi,..., xn) = value(v);

• если v € N и mdex(v) = г, то fv (xi, ...,xn) = i fhi^h(v).(xl, xi = ^

[ flow(v)(xi,...,xn), Iff xi =0.

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

Простыми диаграммы называют в том случае, если множество S совпадает с {0,1}, а многотерминальными - если S есть конечное множество с более чем двумя элементами, например множество целых чисел вида {0, ...,2n — 1} или конечное множество рациональных чисел. Простые диаграммы применяются для представления булевых функций (f : {0,1}n ^ {0,1}), а многотерминальные обобщают это представление для конечнозначных функций (f : {0,1}n ^ S). В приведенных диаграммах одному элементу множества S соответствует не более одной терминальной вершины v € T, следовательно, в простых диаграммах может быть не более двух терминалов, тогда как в многотерминальных - до |S| терминалов.

Альтернативой расширения множества терминальных вершин для представления конечнозначных функций является введение нескольких корневых вершин. Диаграмма с к корневыми вершинами {vj }j=i представляет набор из к булевых функций fvj : {0,1}n ^ {0,1}. Данный набор, в свою очередь, задает функцию f : {0,1}n ^ S следующим образом: f (xi,...,xn) = bin-1(fv1 (x1,...,xn),..., fvk (xi,...,xn)), где bins : S ^ {0,1}j есть некоторое двоичное кодирование множества S, а bin-1 : {0,1}j ^ S есть обратная к ней функция (декодирование). Например, для представления функций вида f : Zn ^ Zn, где Zn = {0,. ..,2n — 1} есть множество неотрицательных целых чисел, можно использовать стандартное двоичное кодирование для целых чисел, где bin-1 (xi,..., xn) = Xj=i xj • 2j-1. В этом случае функцию f можно задать с помощью упорядоченного набора булевых функций {fvj : {0,1}n ^ {0,1}}n=1 следующим обра-

зом: / (х) = Ъin—1(/Vl (Ыигп (х)),.../ (Ыигп (х))). Следовательно, функцию / можно представить в виде п-корневой диаграммы {у^ }"=1.

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

1. Моделирование случайных величин. Дискретную случайную величину зададим через плотность ее распределения, как функцию вида / : {0,1}п ^ [0,1], сопоставляющую битовому вектору (значению случайной величины) вещественное число из отрезка [0,1] (вероятность, с которой случайная величина примет это значение). Моделью случайной величины назовем аппроксимацию этой функции с помощью

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

многокорневой бинарной диаграммы решений. Выберем некоторое конечное представление множества вещественных чисел из отрезка [0,1]. Обычно для этого используется модель с плавающей точкой, где вещественное число представляется двумя ограниченными сверху целыми числами ш и e следующим образом: x = ш ■ 2е. Однако с точки зрения задачи аппроксимации отрезка [0,1] модель с плавающей точкой обладает такими недостатками: избыточность (одно и то же число может быть выражено многими битовыми комбинациями), сложность реализации битовых операций (особенно явно проявляющаяся в том случае, когда отдельными «битами» являются булевы функции), неконтролируемое округление, излишняя точность (редко в какой задаче необходима оценка вероятности с точностью больше 10-8, тогда как модель чисел с плавающей точкой рассчитана на значительно большее).

В настоящей работе для представления вещественных чисел из отрезка [0,1] применяется модель с фиксированной точкой. Каждому целому числу ш из множества {0,..., 2™} сопоставим вещественное число х = р-, что и будет аппроксимацией отрезка [0,1] с точностью до т^г (далее будем обозначать ее как [0,1]„). Для кодирования множества [0,1]" будем использовать множество {0,1}"+ и функцию Ып: {0,1}"+ ^

[0,1]": ' "

"

Ьг>!1]>Ь • • •, Оп+1) = % + ^Г-

¿=1

Заметим, что для кодирования множества [0,1]" необходимо п +1 бит. Дополнительный бит ап+1 вводится для того, чтобы отмечать значения, достигнувшие крайней точки (1). При реализации операций с числами в таком представлении дополнительный бит обрабатывается отдельно от остальных в конце выполнения операции. Приведем алгоритмы реализации следующих операций, применяемых при конструировании плотностей распределения: сумма функций, произведение функций, округление, возведение в степень, сумма случайных величин.

Сумма двух функций / : {0,1}т ^ [0,1]" и д : {0,1}т ^ [0,1]" вычисляется алгоритмом, аналогичным описанному в [11] (раздел 1.1), с учетом следующих особенностей: дополнительные биты добавляются к общей сумме отдельно в конце итерации, а в случае обнаружения переполнения результат устанавливается равным 1. Отметим, что сумма двух плотностей распределения вероятности не является осмысленной операцией сама по себе, однако задача вычисления суммы возникает при вычислении других операций.

Произведение двух функций рассчитывается по формуле

./••.■/ •.•'4У (1)

¿=1 ^ ^

где есть представление г-го бита функции f. При этом в правой части формулы первое умножение соответствует умножению на 0 или 1 и реализуется как побитовое «И», а второе умножение на ^ реализуется как правый битовый сдвиг на г битов.

Дополнительные биты в формуле (1) не учитываются, а обрабатываются отдельно по следующему правилу: в тех точках, где ¡п+1 = 1, значение произведения равно д, а в тех точках, где дп+1 = 1, значение произведения равно /.

С целью уменьшения общего количества операций используем алгоритм быстрого умножения Карацубы [16]. В оригинале метод Карацубы предлагает при умножении

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

a ■ b = (ai + 2ka2)(b1 + 2k62) = aibi + 2k((ai + a2)(b1 + 62) - (aibi + a2&2)) + 22ka2b2.

Таким образом, для умножении двух чисел порядка 22к достаточно вычислить три умножения (aibi, a2b2, (ai + a2)(bi + b2)) чисел порядка 2k, что при рекурсивном применении позволяет снизить сложность умножения с O(k2) до O(klog23).

Аналогично, функции f и g типа {0,1}m ^ [0,1]2П могут быть рассмотрены как суммы fi + f2 ' 2п и gi + 32 ' 2"' ГД® функции /i, /2, 31 и 32 имеют тип {0,1} ► [0,1]п. В этом случае

/ • 9 = fi ■ 3i + ■ ((^ • /1 + т2 ■ /2) • • 91 + т2 ■ 32) ~ (j ■ /1 • 3i + ^ ' /2 ' З2)) + ■ /2 • 32-

Основное отличие от умножения целых чисел в данном случае заключается в том, что вместо множителей вида 2™ используются множители вида а также, что при суммирование результатов в некоторых случаях приходится уменьшать их с помощью дополнительного множителя во избежание переполнения (чтобы результат суммы гарантировано был меньше либо равен 1). На основании экспериментальных данных можно заключить, что рекурсивное разбиение обычно имеет смысл проводить до размеров n « 10 *) .

При расчете произведения двух функций типа {0,1}m ^ [0,1]„ результат будет функцией типа {0,1}m ^ [0,1]2П. Для сохранения точности в процессе вычисления используется в 2 раза больше бит, чем для представления исходных функций, однако после построения результат необходимо округлить до точности исходных функций.

Округление результата, в зависимости от решаемой задачи, может быть выполнено несколькими способами. При оценке вероятности события сверху округление следует проводить в большую сторону (ceil), при оценке вероятности события снизу - в меньшую (floor), а при поиске неподвижной точки - в сторону ближайшего числа с наименьшей потерей точности (round).

Функцию f : {0,1}m ^ [0,1]2п можно рассмотреть как сумму функций fbase и fex типа {0,1}т —> [0,1]„ следующим образом: / = fbase + fir • fex- При этом округление в меньшую сторону реализуется отбрасыванием всех битов большей точности:

floor(f) = fbase.

Округление f в большую сторону производится по формуле

ceil(f) = fbase + V (fex,г) '

где V (fex<i) есть побитовое «ИЛИ», вычисленное для всех битов функции fex. Таким образом, для всех точек, где функция fex не равна 0, к основной функции прибавляется минимальное значение для требуемой точности (^ в нашем случае).

Для округления к ближайшему числу учитывать необходимо только самый старший бит функции fex:

round(f) = fbase + fex,l ' ^,

*) При операциях с числами алгоритм Карацубы дает выигрыш только для значительно больших чисел. Однако при операциях с функциями резко возрастает цена отдельных «битовых» операций, что позволяет получить выигрыш от разбиения на значительно более мелкие части.

т. е. к базовой части функции добавляется минимальное значение в тех точках, где старший бит /ех,1 функции /ех равен единице. Данный алгоритм округления для граничного случая (когда только старший бит расширенной части не нуль) производит округление в большую сторону (например, число 0.5 будет округлено до 1, а не до 0). При необходимости округления граничного случая в меньшую сторону формулу следует изменить следующим образом: гоип<1(/) = /Ьаяе + /ежд Л {У¡ех,г) ■ ^г, что приведет к увеличению количества операций.

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

п / ч к-

Хк = П {хГ-1)*, (2)

г=1

где к1,...,кп есть двоичная кодировка числа к (к = кг • 2г-1).

Естественным образом формула (2) обобщается и для функций. Причем для возведения в степень функции / : {0,1}т ^ [0,1]п для сохранения точности имеет смысл использовать 4п битов, округляя результат каждого умножения до [0,1]2п, а общий итог - до [0,1]п. При этом дополнительный бит функции / обрабатывается отдельно в конце операции: в тех точках, где /п+1 равно 1, результат устанавливается равным 1.

Сумма независимых случайных величин определяется как новая случайная величина с плотностью распределения, равной

2т-1

(/ ф я)(х)=^ /(х -г) • д(г).

4=0

Значение функции (/ ф д) в точке х равно вероятности того, что сумма случайных величин / и д равна х. При этом, если тип функций / и д {0,1}т ^ [0,1]п, то функция (/Фд) имеет тип {0,1}т+1 ^ [0,1]2п, так как сумма двух величин из множества {0,1}т может принимать значения из множества {0,1}т+1.

Для построения функции / (х — Ь) необходимо рассчитать суперпозицию функций / и х — Ь. Алгоритм вычисления суперпозиции функций, представленных в виде многокорневых диаграмм, предложен в работе [17] (раздел 1.2.3). Кроме того, функцию /(х — Ь) можно рассматривать как функцию двух переменных х и Ь, а следовательно,

и как матрицу, где переменная х используется для индексирования строк, а Ь - для ин-

__1

дексирования столбцов. В результате выражение ^г=0 /(х — Ь) • д(Ь) можно вычислить как умножение матрицы /(х,Ь) и вектора д(Ь). Алгоритм такого умножения приведен в работе [11] (раздел 1.3).

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

2. Экспериментальные результаты. С целью проверки предложенных выше алгоритмов, а также сравнения их с аналогичными для многотерминальных диаграмм алгоритмы были реализованы в рамках пакета BddFunctions, после чего был проведен ряд экспериментов.

Геометрическое распределение задается следующей функцией плотности вероятности:

/(х) = (1 - р)х ■ р,

где х есть целое число, а р € (0,1). Геометрическое распределение описывает вероятность количества неудач до первого успеха в последовательности независимых испытаний, где р - это вероятность успеха. Для проведения эксперимента значение р было выбрано равным 5 ■ 10~4, а вычисления проводились с точностью до шестого знака после запятой. Результаты эксперимента приведены в табл. 1.

Таблица 1. Результаты для функции f (х) = (1 — р)х ■ р при р = 5 ■ 10-4

Количество бит, п Размер, количество узлов Время построения, мс

МТВББ МШЖБ МТВББ МКВББ

8 511 123 0 187

16 80 005 1 523 94 38 485

24 80 117 1 622 45 443 81 214

32 - 1 699 - 101 229

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

Из результатов видно, что размер многокорневой диаграммы значительно меньше, чем соответствующей многотерминальной диаграммы, но при этом время, затраченное на построение, значительно больше для небольших значений п. По мере роста п конечный размер диаграмм постепенно стабилизируется, так как для больших х значение вероятности очень мало. Тем не менее при повышении п время построения многотерминальной диаграммы также сильно возрастает, что обусловлено резким увеличением количества узлов в представлении промежуточных результатов. К тому же это приводит к резкому росту пикового потребления памяти, превышающего 2 Гбайт уже при п = 26, что не позволяет продолжать вычисления. Многокорневая диаграмма показывает стабильный линейный рост как размера, так и пикового потребления памяти, что дает возможность провести расчет для п = 32 и более за время, не превышающее 2 мин.

Полученные временные показатели могут показаться неоправданно большими. Но следует подчеркнуть, что результатом расчета является диаграмма, кодирующая полную таблицу значений функции /(х) = (1 — р)х ■ р при х € {0, ...,2п — 1}. При п = 32 выполнение аналогичного расчета «в лоб», используя умножение с плавающей точкой, потребовало в 14 раз больше времени в тех же условиях. Также отметим, что при проведении вероятностной верификации итоговый размер диаграммы имеет важное значение - чем компактнее полученная диаграмма, тем быстрее пройдет верификация. При этом время построения диаграммы, как правило, значительно меньше, чем время, затраченное на верификацию.

Сумма независимых равномерно распределенных случайных величин является одним из способов аппроксимации нормального распределения для дискретных случайных величин. В процессе эксперимента суммировались величины, равномерно распределенные на множестве {0,..., 255}, а точность результата контролировалась вплоть до 20-го знака после запятой. Результаты эксперимента приведены в табл. 2.

Таблица 2. Сумма независимых, равномерно распределенных случайных величин

Количество 8 16 24 32 40 48 56 64

Размер 11 277 18 804 23 111 26 203 28 987 31 228 33 304 35 037

Время, мс 11 778 25 553 37 362 46 473 47 596 53 757 69 264 63 773

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

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

Симметричная матрица вида а^ = (-г+л+222 , где г, ] € {0,..., 2™ — 1} есть индексы в матрице, задает некоторое двухмерное распределение вероятности, так как сумма элементов в любом ряду и в любом столбце равна 1. Представление такой матрицы легко вычисляется с помощью битовой перестановки для многокорневых диаграмм и с помощью арифметических операций для многотерминальных диаграмм. В рамках эксперимента были построены представления таких матриц для разных п, а затем вычисляли произведение матриц А • АТ.

Таблица 3. Представление симметричной матрицы и произведение матриц

Матрица п Размер (количество узлов) Время построения, мс

МТВББ МКВББ МТВББ МКВББ

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

А 8 1021 36 16 0

16 262 141 76 594 112 0

24 - 116 - 0

32 - 156 - 0

А-Ат 7 1810 349 16 0

14 1 022 453 17 933 416 365 219

21 - 759 046 - 18 689

28 - 31 018 685 - 3 614 355

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

3. Заключение. В данной работе предложены методы представления дискретных случайных величин с использованием многокорневых бинарных диаграмм решений (МДВ_0_0), а также приведены алгоритмы выполнения стандартных операций: сумма, произведение, суперпозиция для плотностей распределения. Экспериментальные данные показывают существенное снижение расхода памяти при применении многокорневых диаграмм по сравнению с широко распространенными многотерминальными диаграммами. Время работы в большинстве случаев также уменьшилось. Кроме того,

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

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

Литература

1. Карпов Ю. Г. Model Checking. Верификация параллельных и распределенных программных систем. СПб: БХВ-Петербург, 2010. 552 с.

2. Constant C., Jeannet B., Jeron T. Automatic test generation from interprocedural specifications // Testing of Software and Communicating Systems. 2007. P. 41—57.

3. Tillmann N., De Halleux J. Pex: white box test generation for .NET // TAP'08: Proc. of the 2nd Intern. conference on tests and proofs. Berlin; Heidelberg: Springer-Verlag, 2008. P. 134—153.

4. Kong S., Tillmann N., Halleux J. d. Automated testing of environment-dependent programs — a case study of modeling the file system for Pex // ITNG '09: Proc. of the 2009 Sixth Intern. Conference on Information Technology: New Generations. Washington, DC, USA: IEEE Computer Society, 2009. P. 758-762.

5. Zaki M., Tahar S., Bois G. Formal verification of analog and mixed signal designs: A survey // Microelectronics Journal. 2008. Vol. 39, N 12. P. 1395-1404.

6. Baumler S., Balser M., Dunets A. e.a. Verification of medical guidelines by model checking — a case study // Model Checking Software. 2006. P. 219—233.

7. Pang J., Fokkink W., Hofman R., Veldema R. Model checking a cache coherence protocol of a Java DSM implementation // Journal of Logic and Algebraic Programming. 2007. Vol. 71, N 1. P. 1—43.

8. Beyer D., Henzinger T., Jhala R., Majumdar R. The software model checker Blast // Intern. J. on Software Tools for Technology Transfer. 2007. Vol. 9, N 5. P. 505—525.

9. Bryant R. E. Symbolic boolean manipulation with ordered binary-decision diagrams // ACM Computing Surveys. 1992. Vol. 24, N 3. P. 293—318.

10. Fujita M., McGeer P. C., Yang J. C.-Y. Multi-terminal binary decision diagrams: An efficient datastructure for matrix representation // Form. Methods Syst. Des. 1997. Vol. 10, N 2—3. P. 149—169.

11. Bugaychenko D., Soloviev I. Application of multiroot decision diagrams for integer functions // Vestn. St. Petersburg University. Mathematics. 2010. Vol. 43, N 2. P. 92—97.

12. Younes H., Kwiatkowska M., Norman G., Parker D. Numerical vs. statistical probabilistic model checking // Intern. J. on Software Tools for Technology Transfer (STTT). 2006. Vol. 8, N 3. P. 216—228.

13. Duff I. A survey of sparse matrix research // Proc. of the IEEE. 2005. Vol. 65, N 4. P. 500—535.

14. Oldenkamp H. Probabilistic model checking. A comparison of tools: Master's thesis. Twente Noederlande: University of Twente, 2007. 108 p.

15. Parker D. Implementation of symbolic model checking for probabilistic system: Ph.D. thesis. Birmingham: University of Birmingham, 2002. 222 p.

16. Карацуба А. А., Офман Ю. П. Умножение многозначных чисел на автоматах // Докл. АН СССР. 1962. Т. 145, № 2. С. 293—294.

17. Бугайченко Д., Соловьев И. Библиотека многокорневых бинарных решающих диаграмм BddFunctions и ее применение // Системное программирование. 2010. № 5. C. 193—213.

Статья рекомендована к печати проф. А. Н. Тереховым. Статья принята к печати 28 февраля 2012 г.

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