85916 (Модификация метода построения тестов для конечных автоматов относительно неразделимости), страница 2
Описание файла
Документ из архива "Модификация метода построения тестов для конечных автоматов относительно неразделимости", который расположен в категории "". Всё это находится в предмете "математика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "математика" в общих файлах.
Онлайн просмотр документа "85916"
Текст 2 страницы из документа "85916"
В данной работе изучен метод построения полного проверяющего теста относительно модели неисправности <S, (,≁),m >, предложенный в работе [1]. Область неисправности m содержит все полностью определенные реализации эталона S с теми же входным и выходным алфавитами, что и у S, и числом состояний не более m, где m – целое положительное число. Такую модель неисправности часто называют моделью "черного ящика".
-
-
2. Метод построения полного проверяющего теста относительно модели неисправности <S, (,≁), m>
Алгоритм 2. Построение полного проверяющего теста относительно модели неисправности <S, (,≁),m >
Вход: Полностью определенный автомат S и верхняя граница m числа состояний любой реализации S
Выход: Полный проверяющий тест TS относительно модели неисправности <S, (,≁),m >
Шаг 1. Построим усеченное дерево преемников автомата спецификации S. Корнем дерева на нулевом уровне является начальное состояние s0 автомата S; вершины дерева помечены подмножествами состояний автомата S . Пусть уже построены j уровней дерева, j 0. Для заданной нетерминальной вершины jго уровня, помеченной подмножеством состояний К, и для заданного входного символа i, в дереве есть ребра, помеченные символом i, в вершину, помеченную i-преемниками подмножества К. Текущая вершина Current на kм уровне, k > 0, помеченная подмножеством К состояний из множества S, объявляется листом дерева, если путь из корня в эту вершину содержит 2|K|m вершин, помеченных подмножествами множества К, и начальное состояние s0 не содержится в К. Если начальное состояние принадлежит К, то вершина Current объявляется листом, если путь из корня в эту вершину покрывает (2|K|m-1+1) вершин, помеченных подмножествами множества К.
Шаг 2. Включаем в TS каждую входную последовательность, которая помечает путь из корня к листу в усеченном дереве.
В качестве примера рассмотрим спецификацию S, представленную на рисунке 5, и построим полный проверяющий тест относительно модели неисправности <S, (£,≁), Â2>.
S | a | b |
x | a/0,1,2,3 | a/1,2 |
y | b/1,2 | a/0 b/3 |
Рисунок 5 - Автомат S
На втором шаге текущая вершина, помеченная состоянием a, объявляется листом, если путь из корня в эту вершину покрывает (2m−1 + 1) = 3 вершин, помеченных a. Текущая вершина, помеченная состоянием b, объявляется листом, если путь из корня в эту вершину покрывает 2m = 4 вершин, помеченных b. Наконец, текущая вершина, помеченная подмножеством {a, b}, объявляется листом, если путь из корня в эту вершину покрывает (22m−1 + 1) = 9 вершин, помеченных a, b или {a, b}.Полученное по данному алгоритму усеченное дерево преемников представлено на рисунке 6. Суммарная длина полного проверяющего теста составляет 277 символов.
Рисунок 6 – Усеченное дерево преемников, построенное по алгоритму 2
-
-
3. Улучшение метода построения полного проверяющего теста относительно модели неисправности <S, (,≁), m>
-
-
3.1 Исследование условий усечения дерева
Алгоритм 2 не доставляет кратчайшего теста. Для иллюстрации этого факта рассмотрим тестовую последовательность xyyyyyyy из предыдущего примера, которой в усеченном дереве преемников (рис. 6) соответствует путь axayby{a,b}y{a,b}y{a,b}y{a,b}y{a,b}y{a,b}. Прямым перебором можно убедиться, что если автомат-реализация имеет состояния 1 и 2, тогда соответствующий путь в усеченном дереве TreeSÇT, построенном по пересечению эталонного автомата и реализации, будет уже усечен после {a1}x{a2}y{b1,b2}y{b1}y{b2}y{a,b}, т.к. для подмножества а были перебраны все варианты и из последующих подмножеств его можно исключить. Таким образом, при уточнении условий усечения дерева данную тестовую последовательность можно сократить на 3 символа.
Сократить тестовую последовательность можно также и в более общем случае, когда на рассматриваемом пути дерева перебраны все возможные варианты для состояний некоторого множества P, являющегося подмножеством множества K. Рассмотрим эталонный автомат S, изображенный на рисунке 7, и m=2.
S | a | b | c |
x | a/0 b/1 | a,b/1 | a/1 |
y | a,b/0 | c/1 | b/1 c/0 |
z | b/1 | b/0 | a/0 |
Рисунок 7 - Автомат S
Для подмножества состояний {a, b, c} для усечения дерева по алгоритму 2 необходимо, чтобы путь из корня дерева в листовую вершину покрывал 23m-1+1=33 вершины, помеченные подмножествами этого множества. Однако, т.к. на левом пути дерева, представленного на рисунке 8, сначала встречается 8 вершин, помеченных подмножествами {a, b}, а именно такое число вариантов обеспечивает перебор всех подмножеств {a1, a2, b1, b2} в дереве TreeSÇT, то далее на данном пути подмножество {a, b} из рассмотрения исключается. Таким образом, соответствующий путь в дереве TreeSÇT будет усечен после {a1}x{a2,b1,b2}x{a2,b1}x{a2,b2}x{a2}x{b1}x{b2}x{b1,b2}y{c1,c2}y{c1}y{c2}y{a,b,c}, и длина тестовой последовательности составляет всего 11 символов.
Рисунок 8 – Часть усеченного дерева преемников
-
-
Естественно, сокращение тестовой последовательности можно также обобщить и для случая, когда на рассматриваемом пути дерева перебираются все подмножества для нескольких подмножеств Pi множества K, в том числе и в случае, когда эти подмножества пересекаются. Данный случай иллюстрирует правый путь дерева, изображенного на рисунке 8. На этом пути дерева сначала перебираются все возможные подмножества для P1={b}. Для пересекающегося с P1 множества P2={a, b} теперь достаточно всего трех вершин, помеченных подмножествами P2, чтобы были перебраны все возможные подмножества P2. И соответствующий путь в дереве TreeSÇT усекается после {a1}z{b1,b2}z{b1}z{b2}x{a2}y{c1,c2}y{c1}y{c2}y{a,b,c}, а длина тестовой последовательности составляет 8 символов.
Таким образом, можно модифицировать метод построения полного проверяющего теста относительно модели неисправности <S, (,≁), m> (алгоритм 2), уточнив условия усечения дерева преемников.
-
3.2 Модифицированный метод построения полного проверяющего теста относительно модели неисправности <S, (,≁), m>
Алгоритм 3. Построение полного проверяющего теста относительно модели неисправности <S, (,≁),m >
Вход: Полностью определенный автомат S и верхняя граница m числа состояний любой реализации S
Выход: Полный проверяющий тест TS относительно модели неисправности <S, (,≁),m >
Шаг 1. Построим усеченное дерево преемников автомата спецификации S. Корнем дерева на нулевом уровне является начальное состояние s0 автомата S; вершины дерева помечены подмножествами состояний автомата S . Пусть уже построены j уровней дерева, j 0. Для заданной нетерминальной вершины jго уровня, помеченной подмножеством состояний К, и для заданного входного символа i, в дереве есть ребра, помеченные символом i, в вершину, помеченную i-преемниками подмножества К. Текущая вершина Current на kм уровне, k > 0, помеченная подмножеством К состояний из множества S, объявляется листом дерева, если путь из корня в вершину Current содержит:
-
2(|K|-|P|)m+n вершин, помеченных подмножествами множества К, если s0 K или s0 K и s0 P;
-
2(|K|-|P|)m-1+n+1 вершин, помеченных подмножествами множества К, если s0 K и s0 P;
где P – это такое подмножество состояний из множества K, что до некоторого lго уровня (l < k) перебраны все возможные подмножества P, а n – это количество вершин на данном пути, помеченных подмножествами К, содержащими подмножества P, которые находятся на уровнях не ниже lго уровня дерева (если P = , то n = 0). Множество P строится итеративно:
-
P = ;
-
P = P Pi для каждого подмножества Pi множества K, для которого путь из корня в вершину Current содержит (2|Pi|m-1) вершин, помеченных подмножествами Pi (или (2|Pi|m-1) вершин в случае s0 Pi);
-
P = P Pj для всех существующих пар Pi P и Pj P (Pj K) таких, что Pi Pj = Q и путь из корня в вершину Current содержит (2(|Pj|-|Q|)m-1) вершин, помеченных подмножествами Pj, если s0 Pj или s0 Q, либо (2(|Pj|-|Q|)m-1) вершин в случае s0 Pj.
Шаг 2. Включаем в TS каждую входную последовательность, которая помечает путь из корня к листу в усеченном дереве.
Теорема 2.
Для заданного эталонного автомата S и целого числа m алгоритм 3 доставляет полный проверяющий тест относительно модели неисправности <S, (,≁),m >.
Доказательство.
-
Рассмотрим самый общий случай – подмножество K состояний из множества S, и начальное состояние s0 K. Согласно алгоритму 1, вершина усеченного дерева преемников TreeS, помеченная подмножеством K, объявляется листом дерева, если путь из корня в эту вершину содержит 2|K|m вершин, помеченных подмножествами множества К. Это соответствует перебору всех возможных подмножеств К в усеченном дереве приемников TreeST, построенному по пересечению эталонного автомата S и некоторой реализации T, где К – это подмножество состояний пересечения S T таких, что первый символ каждой пары из К содержится в К.
Предположим, что существует такое подмножество состояний P из множества K, что до некоторого lго уровня дерева на пути из корня в вершину Current перебраны все возможные подмножества P. Множество P строится итеративно следующим образом:
Шаг 1. P = .