close

Вход

Забыли?

вход по аккаунту

?

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

код для вставкиСкачать
ВЕСТНИК САНКТ-ПЕТЕРБУРГСКОГО УНИВЕРСИТЕТА
Сер. 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-а).
c Д. Ю. Бугайченко, И. П. Соловьев, 2012
66
нет. Однако существует насущная проблема и в решении задачи вероятностной верификации, способной оценить вероятность того, что для системы выполнено некоторое свойство. При рассмотрении вероятностных моделей бинарные диаграммы решений неприменимы, так как позволяют представлять только булевы функции и четкие
множества. Для решения этой проблемы применяются многотерминальные бинарные
диаграммы решений [10], расширяющие бинарные диаграммы решений дополнительными терминальными вершинами. Но такая модификация диаграмм решений ведет
к резкому увеличению вариативности структуры диаграммы [11], что не позволяет эффективно использовать повторяющиеся блоки и вызывает рост потребления памяти.
В результате для вероятностной верификации разработчикам приходится искать альтернативные алгоритмы (например, статистическое моделирование [12]) и подходящие
структуры данных (в частности, разреженные матрицы [13]). В работе [14] приведено
сравнение существующих инструментов вероятностной верификации, показывающее,
что алгоритмы, основанные на разреженных матрицах, во многих случаях превосходят
алгоритмы, основанные на диаграммах решений, тогда как статистические алгоритмы
работают нестабильно и могут дать неверный ответ.
В работе [11] предложена альтернативная модификация диаграмм решений – многокорневые бинарные диаграммы решений. В этом случае для расширения множества
значений функций применяются несколько бинарных диаграмм решений и соответствующая двоичная кодировка. Полученные структуры дают возможность значительно
более эффективно, по сравнению с многотерминальными диаграммами, использовать
память. Однако, если в случае многотерминальных диаграмм все операции целевого множества непосредственно переводятся в операции с отдельными терминалами,
то для многокорневых диаграмм необходимо строить соответствие с учетом выбранной
кодировки. В работе [11] описаны операции с целочисленными функциями, а также
приведены экспериментальные результаты, показывающие преимущества многокорневых диаграмм по сравнению с многотерминальными.
В данной работе мы расширяем полученные в [11] результаты для функций и матриц, принимающих значения на отрезке [0, 1] ∗) , а также проводим экспериментальное
сравнение с многотерминальными диаграммами решений. В качестве основы предложенных алгоритмов используются алгоритмы вычисления с фиксированной точкой,
но аргументами алгоритмов являются не конкретные числа в качестве вектора битов,
а функции, представленные в виде вектора булевых функций.
Диаграммы решений. Бинарные диаграммы решений [9] предназначены для эффективного представления в памяти булевых функций f : {0, 1}n → {0, 1}, а также для решения более общей задачи представления конечнозначных функций вида
f : {0, 1}n → S, где S есть некоторое конечное непустое множество. Формально, упорядоченная бинарная диаграмма решений есть ориентированный корневой ациклический
граф с множеством вершин V = N ∪ T , где N ∩ T = ∅. Вершины множества N являются нетерминалами и для каждой такой вершины v ∈ N определены значение порядка
index(v) ∈ {1, . . . , n} и ровно две дочерние вершины low(v), high(v) ∈ V . Индексы
нетерминальных вершин i являются номерами аргументов xi определяемой функции
f . Вершины множества T являются терминалами и не имеют дочерних вершин. Для
таких вершин v ∈ T определено значение value(v) ∈ S. Кроме того, выполнено условие
порядка: для любого нетерминала v ∈ N и любой его дочерней вершины v выполнено
либо v ∈ T , либо index(v) < index(v ). Каждой вершине v ∈ V сопоставим функцию n
∗)
Именно такие функции и используются при проведении вероятностной верификации [15].
67
переменных fv : {0, 1}n → S следующим образом:
.
• если v ∈ T , то fv (x1 , . . . , xn ) = value(v);
fhigh(v) (x1 , . . . , xn ), Iff xi = 1,
.
• если v ∈ N и index(v) = i, то fv (x1 , . . . , xn ) =
flow(v) (x1 , . . . , 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| терминалов.
Альтернативой расширения множества терминальных вершин для представления
конечнозначных функций является введение нескольких корневых вершин. Диаграмма с k корневыми вершинами {vj }kj=1 представляет набор из k булевых функций fvj :
{0, 1}n → {0, 1}. Данный набор, в свою очередь, задает функцию f : {0, 1}n → S сле.
дующим образом: f (x1 , . . . , xn ) = bin−1
S (fv1 (x1 , . . . , xn ), . . . , fvk (x1 , . . . , xn )), где binS :
k
S → {0, 1}k есть некоторое двоичное кодирование множества S, а bin−1
S : {0, 1} → S
есть обратная к ней функция (декодирование). Например, для представления функций
вида f : Zn → Zn , где Zn = {0, . . . , 2n − 1} есть множество неотрицательных целых
чисел, можно использовать
стандартное двоичное кодирование для целых чисел, где
n
j−1
. В этом случае функцию f можно задать с помощью
bin−1
Zn (x1 , . . . , xn ) =
j=1 xj · 2
упорядоченного набора булевых функций {fvj : {0, 1}n → {0, 1}}nj=1 следующим образом: f (x) = bin−1
Zn (fv1 (binZn (x)), . . . , fvn (binZn (x))). Следовательно, функцию f можно
представить в виде n-корневой диаграммы {vj }nj=1 .
С одной стороны, преимуществом многокорневых бинарных диаграмм решений
(M RBDD) является их меньший размер, достигаемый в основном благодаря более
эффективному повторному использованию фрагментов одинаковой структуры. С другой стороны, преимуществом многотерминальных диаграмм является простота ∗) реализации операций над функциями, достигающаяся за счет того, что множество S представлено явно. В случае же многокорневых диаграмм необходимо предварительно определить соответствие некоторой операции на множестве S набору операций над элементами двоичной кодировки.
1. Моделирование случайных величин. Дискретную случайную величину зададим через плотность ее распределения, как функцию вида f : {0, 1}n → [0, 1], сопоставляющую битовому вектору (значению случайной величины) вещественное число из отрезка [0, 1] (вероятность, с которой случайная величина примет это значение). Моделью случайной величины назовем аппроксимацию этой функции с помощью
∗) Под простотой здесь мы понимаем в первую очередь простоту разработки алгоритма, а не его
алгоритмическую сложность.
68
многокорневой бинарной диаграммы решений. Выберем некоторое конечное представление множества вещественных чисел из отрезка [0, 1]. Обычно для этого используется
модель с плавающей точкой, где вещественное число представляется двумя ограниченными сверху целыми числами m и e следующим образом: x = m · 2e . Однако с точки
зрения задачи аппроксимации отрезка [0, 1] модель с плавающей точкой обладает такими недостатками: избыточность (одно и то же число может быть выражено многими битовыми комбинациями), сложность реализации битовых операций (особенно явно
проявляющаяся в том случае, когда отдельными «битами» являются булевы функции),
неконтролируемое округление, излишняя точность (редко в какой задаче необходима
оценка вероятности с точностью больше 10−8 , тогда как модель чисел с плавающей
точкой рассчитана на значительно большее).
В настоящей работе для представления вещественных чисел из отрезка [0, 1] применяется модель с фиксированной точкой. Каждому целому числу m из множества
{0, . . . , 2n } сопоставим вещественное число x = 2mn , что и будет аппроксимацией отрезка
[0, 1] с точностью до 21n (далее будем обозначать ее как [0, 1]n ). Для кодирования мноn+1
→
жества [0, 1]n будем использовать множество {0, 1}n+1 и функцию bin−1
[0,1]n : {0, 1}
[0, 1]n :
bin−1
[0,1]n (a1 , . . . , an+1 ) =
n
ai
i=1
2i
+
an+1
.
2n
Заметим, что для кодирования множества [0, 1]n необходимо n + 1 бит. Дополнительный бит an+1 вводится для того, чтобы отмечать значения, достигнувшие крайней
точки (1). При реализации операций с числами в таком представлении дополнительный
бит обрабатывается отдельно от остальных в конце выполнения операции. Приведем
алгоритмы реализации следующих операций, применяемых при конструировании плотностей распределения: сумма функций, произведение функций, округление, возведение
в степень, сумма случайных величин.
Сумма двух функций f : {0, 1}m → [0, 1]n и g : {0, 1}m → [0, 1]n вычисляется алгоритмом, аналогичным описанному в [11] (раздел 1.1), с учетом следующих особенностей: дополнительные биты добавляются к общей сумме отдельно в конце итерации,
а в случае обнаружения переполнения результат устанавливается равным 1. Отметим,
что сумма двух плотностей распределения вероятности не является осмысленной операцией сама по себе, однако задача вычисления суммы возникает при вычислении других
операций.
Произведение двух функций рассчитывается по формуле
(f · g) =
n 1
fi · g · i ,
2
i=1
(1)
где fi есть представление i-го бита функции f . При этом в правой части формулы
первое умножение соответствует умножению на 0 или 1 и реализуется как побитовое
«И», а второе умножение на 21i реализуется как правый битовый сдвиг на i битов.
Дополнительные биты в формуле (1) не учитываются, а обрабатываются отдельно
по следующему правилу: в тех точках, где fn+1 = 1, значение произведения равно g,
а в тех точках, где gn+1 = 1, значение произведения равно f .
С целью уменьшения общего количества операций используем алгоритм быстрого
умножения Карацубы [16]. В оригинале метод Карацубы предлагает при умножении
69
целых чисел рекурсивно разбивать сомножители на две части с целью упрощения операции умножения:
a · b = (a1 + 2k a2 )(b1 + 2k b2 ) = a1 b1 + 2k ((a1 + a2 )(b1 + b2 ) − (a1 b1 + a2 b2 )) + 22k a2 b2 .
Таким образом, для умножении двух чисел порядка 22k достаточно вычислить три
умножения (a1 b1 , a2 b2 , (a1 + a2 )(b1 + b2 )) чисел порядка 2k , что при рекурсивном применении позволяет снизить сложность умножения с O(k 2 ) до O(k log2 3 ).
Аналогично, функции f и g типа {0, 1}m → [0, 1]2n могут быть рассмотрены как
суммы f1 + f2 · 21n и g1 + g2 · 21n , где функции f1 , f2 , g1 и g2 имеют тип {0, 1}m → [0, 1]n .
В этом случае
f · g = f1 · g 1 +
1
2n−2
1
1
1
1
1
1
1
· (( · f1 + · f2 ) · ( · g1 + · g2 ) − ( · f1 · g1 + · f2 · g2 )) + 2n · f2 · g2 .
2
2
2
2
4
4
2
Основное отличие от умножения целых чисел в данном случае заключается в том,
что вместо множителей вида 2n используются множители вида 21n , а также, что при
суммирование результатов в некоторых случаях приходится уменьшать их с помощью
дополнительного множителя во избежание переполнения (чтобы результат суммы гарантировано был меньше либо равен 1). На основании экспериментальных данных можно заключить, что рекурсивное разбиение обычно имеет смысл проводить до размеров
n ≈ 10 ∗) .
При расчете произведения двух функций типа {0, 1}m → [0, 1]n результат будет
функцией типа {0, 1}m → [0, 1]2n . Для сохранения точности в процессе вычисления
используется в 2 раза больше бит, чем для представления исходных функций, однако
после построения результат необходимо округлить до точности исходных функций.
Округление результата, в зависимости от решаемой задачи, может быть выполнено
несколькими способами. При оценке вероятности события сверху округление следует
проводить в бо́льшую сторону (ceil), при оценке вероятности события снизу – в меньшую (f loor), а при поиске неподвижной точки – в сторону ближайшего числа с наименьшей потерей точности (round).
Функцию f : {0, 1}m → [0, 1]2n можно рассмотреть как сумму функций fbase и fex
типа {0, 1}m → [0, 1]n следующим образом: f = fbase + 21n · fex . При этом округление
в меньшую сторону реализуется отбрасыванием всех битов большей точности:
f loor(f ) = fbase .
Округление f в бо́льшую сторону производится по формуле
#
1
ceil(f ) = fbase + (fex,i ) · n ,
2
$
где (fex,i ) есть побитовое «ИЛИ», вычисленное для всех битов функции fex . Таким
образом, для всех точек, где функция fex не равна 0, к основной функции прибавляется
минимальное значение для требуемой точности ( 21n в нашем случае).
Для округления к ближайшему числу учитывать необходимо только самый старший
бит функции fex :
1
round(f ) = fbase + fex,1 · n ,
2
∗) При операциях с числами алгоритм Карацубы дает выигрыш только для значительно бо́льших
чисел. Однако при операциях с функциями резко возрастает цена отдельных «битовых» операций, что
позволяет получить выигрыш от разбиения на значительно более мелкие части.
70
т. е. к базовой части функции добавляется минимальное значение в тех точках, где
старший бит fex,1 функции fex равен единице. Данный алгоритм округления для граничного случая (когда только старший бит расширенной части не нуль) производит
округление в бо́льшую сторону (например, число 0.5 будет округлено до 1, а не до 0).
При необходимости округления граничного случая в меньшую сторону формулу следует изменить следующим образом: round(f ) = fbase + fex,1 ∧ (∨fex,i ) · 21n , что приведет
к увеличению количества операций.
Возведение в целочисленную степень необходимо при вычислении многих классических плотностей распределения вероятностей (например, геометрического или биномиального распределения). В данной работе применяется двоичный алгоритм быстрого
возведения в степень, возводящий число x в степень k:
xk =
n %
i−1
x2
ki
,
(2)
i=1
n
где k1 , . . . , kn есть двоичная кодировка числа k (k = i=1 ki · 2i−1 ).
Естественным образом формула (2) обобщается и для функций. Причем для возведения в степень функции f : {0, 1}m → [0, 1]n для сохранения точности имеет смысл
использовать 4n битов, округляя результат каждого умножения до [0, 1]2n , а общий
итог – до [0, 1]n . При этом дополнительный бит функции f обрабатывается отдельно
в конце операции: в тех точках, где fn+1 равно 1, результат устанавливается равным 1.
Сумма независимых случайных величин определяется как новая случайная величина с плотностью распределения, равной
(f ⊕ g)(x) =
m
2
−1
f (x − t) · g(t).
t=0
Значение функции (f ⊕ g) в точке x равно вероятности того, что сумма случайных
величин f и g равна x. При этом, если тип функций f и g {0, 1}m → [0, 1]n , то функция
(f ⊕g) имеет тип {0, 1}m+1 → [0, 1]2n , так как сумма двух величин из множества {0, 1}m
может принимать значения из множества {0, 1}m+1.
Для построения функции f (x − t) необходимо рассчитать суперпозицию функций
f и x − t. Алгоритм вычисления суперпозиции функций, представленных в виде многокорневых диаграмм, предложен в работе [17] (раздел 1.2.3). Кроме того, функцию
f (x − t) можно рассматривать как функцию двух переменных x и t, а следовательно,
и как матрицу, где переменная x используется для индексирования строк, а t – для ин2m −1
дексирования столбцов. В результате выражение t=0 f (x − t) · g(t) можно вычислить
как умножение матрицы f (x, t) и вектора g(t). Алгоритм такого умножения приведен
в работе [11] (раздел 1.3).
Следует отметить, что возможность вычислить суперпозицию функций доступна
только для многокорневых диаграмм, но не доступна в общем случае для многотерминальных диаграмм, что обусловлено разной природой типов аргументов и значений
функции. Следовательно, рассчитать сумму независимых случайных величин в общем
случае возможно, только применяя многокорневые диаграммы.
2. Экспериментальные результаты. С целью проверки предложенных выше
алгоритмов, а также сравнения их с аналогичными для многотерминальных диаграмм
алгоритмы были реализованы в рамках пакета BddFunctions, после чего был проведен
ряд экспериментов.
71
Геометрическое распределение задается следующей функцией плотности вероятности:
f (x) = (1 − p)x · p,
где x есть целое число, а p ∈ (0, 1). Геометрическое распределение описывает вероятность количества неудач до первого успеха в последовательности независимых испытаний, где p – это вероятность успеха. Для проведения эксперимента значение p было
выбрано равным 5 · 10−4 , а вычисления проводились с точностью до шестого знака
после запятой. Результаты эксперимента приведены в табл. 1.
Таблица 1. Результаты для функции f (x) = (1 − p)x · p при p = 5 · 10−4
Количество бит,
n
8
16
24
32
Размер, количество узлов
MTBDD
MRBDD
511
123
80 005
1 523
80 117
1 622
–
1 699
Время построения, мс
MTBDD
MRBDD
0
187
94
38 485
45 443
81 214
–
101 229
В левом столбце табл. 1 отображено число бит в представлении числа x (например,
при n = 8 число x может принимать значение из множества {0, . . . , 255}). Для каждого
из приведенных значений n указаны размеры построенных для представления функции
многокорневых и многотерминальных диаграмм (в количестве узлов), а также время,
потраченное на построение (в миллисекундах).
Из результатов видно, что размер многокорневой диаграммы значительно меньше,
чем соответствующей многотерминальной диаграммы, но при этом время, затраченное
на построение, значительно больше для небольших значений n. По мере роста n конечный размер диаграмм постепенно стабилизируется, так как для больших x значение
вероятности очень мало. Тем не менее при повышении n время построения многотерминальной диаграммы также сильно возрастает, что обусловлено резким увеличением
количества узлов в представлении промежуточных результатов. К тому же это приводит к резкому росту пикового потребления памяти, превышающего 2 Гбайт уже при
n = 26, что не позволяет продолжать вычисления. Многокорневая диаграмма показывает стабильный линейный рост как размера, так и пикового потребления памяти,
что дает возможность провести расчет для n = 32 и более за время, не превышающее
2 мин.
Полученные временные показатели могут показаться неоправданно большими. Но
следует подчеркнуть, что результатом расчета является диаграмма, кодирующая полную таблицу значений функции f (x) = (1 − p)x · p при x ∈ {0, . . . , 2n − 1}. При n = 32
выполнение аналогичного расчета «в лоб», используя умножение с плавающей точкой,
потребовало в 14 раз больше времени в тех же условиях. Также отметим, что при
проведении вероятностной верификации итоговый размер диаграммы имеет важное
значение – чем компактнее полученная диаграмма, тем быстрее пройдет верификация.
При этом время построения диаграммы, как правило, значительно меньше, чем время,
затраченное на верификацию.
Сумма независимых равномерно распределенных случайных величин является одним из способов аппроксимации нормального распределения для дискретных случайных величин. В процессе эксперимента суммировались величины, равномерно распределенные на множестве {0, . . . , 255}, а точность результата контролировалась вплоть
до 20-го знака после запятой. Результаты эксперимента приведены в табл. 2.
72
Таблица 2. Сумма независимых, равномерно распределенных случайных величин
Количество
Размер
Время, мс
8
11 277
11 778
16
18 804
25 553
24
23 111
37 362
32
26 203
46 473
40
28 987
47 596
48
31 228
53 757
56
33 304
69 264
64
35 037
63 773
В верхней строке таблицы показано количество суммированных величин, во второй – размер полученной многокорневой диаграммы в количестве узлов, а в третьей –
время, потраченное на добавление к сумме последней случайной величины (в миллисекундах). Из табл. 2 видно, что размер диаграммы, как и время, растет не более чем
линейно, а в конце (при количестве слагаемых больше 59) стабилизируется, что связано
с достижением предела точности вычислений.
В данном эксперименте сравнение с многотерминальными диаграммами не приводится, так как для них не реализована операция суммы независимых случайных величин в общем случае.
(i+j+ 12 ) mod 2n
, где i, j ∈ {0, . . . , 2n − 1} есть
Симметричная матрица вида aij =
22n−1
индексы в матрице, задает некоторое двухмерное распределение вероятности, так как
сумма элементов в любом ряду и в любом столбце равна 1. Представление такой матрицы легко вычисляется с помощью битовой перестановки для многокорневых диаграмм
и с помощью арифметических операций для многотерминальных диаграмм. В рамках эксперимента были построены представления таких матриц для разных n, а затем
вычисляли произведение матриц A · AT .
Таблица 3. Представление симметричной матрицы и произведение матриц
Матрица
A
A · AT
n
8
16
24
32
7
14
21
28
Размер (количество узлов)
MTBDD
MRBDD
1021
36
262 141
76
–
116
–
156
1810
349
1 022 453
17 933
–
759 046
–
31 018 685
Время построения, мс
MTBDD
MRBDD
16
0
594 112
0
–
0
–
0
16
0
416 365
219
–
18 689
–
3 614 355
Как видно из результатов эксперимента (табл. 3), многокорневая диаграмма для такой матрицы существенно меньше аналогичной многотерминальной диаграммы и растет линейно, позволяя представлять матрицы практически любого размера. В то же
время при вычислении произведения размер обоих типов диаграмм увеличивается экспоненциально, однако для многокорневого случая основание экспоненты меньше, что
позволяет рассчитать произведение вплоть до n = 29, тогда как в многотерминальном
случае максимально доступное n = 17.
3. Заключение. В данной работе предложены методы представления дискретных
случайных величин с использованием многокорневых бинарных диаграмм решений
(M RBDD), а также приведены алгоритмы выполнения стандартных операций: сумма, произведение, суперпозиция для плотностей распределения. Экспериментальные
данные показывают существенное снижение расхода памяти при применении многокорневых диаграмм по сравнению с широко распространенными многотерминальными
диаграммами. Время работы в большинстве случаев также уменьшилось. Кроме того,
73
многокорневые диаграммы позволяют выполнять операции, недоступные для многотерминального случая, в частности расчета суммы двух независимых случайных величин в общем случае.
Полученные результаты позволяют утверждать, что многокорневые бинарные диаграммы решений являются перспективной заменой многотерминальных диаграмм в задачах вероятностной верификации. В качестве планов для дальнейшего развития работы мы видим реализацию инструментария вероятностной верификации на основе
многокорневых бинарных диаграмм решений.
Литература
1. Карпов Ю. Г. Model Checking. Верификация параллельных и распределенных программных
систем. СПб: БХВ-Петербург, 2010. 552 с.
2. Constant C., Jeannet B., Jéron 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. Bäumler 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 г.
Документ
Категория
Без категории
Просмотров
4
Размер файла
318 Кб
Теги
величины, решение, диаграмма, многокорневых, случайных, дискретное, применению, представление
1/--страниц
Пожаловаться на содержимое документа