Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дрейзин В.Э., Кочура А.В. - Управление качество...doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
3.62 Mб
Скачать

6.4.9. Синтез тестов методом ветвей и границ

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

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

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

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

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

Полихотомичным является дерево, у которого хотя бы одна вершина имеет более двух исходящих из неё линий.

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

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

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

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

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

На каждом текущем шаге процедуры выделяют все висячие вершины, имеющие минимальную полную нижнюю границу. Такие вершины являются оптимальными (относительно данного шага). Среди них отыскиваются вершины, имеющие полное решение, что делается путём последующих шагов процедуры.

Пример, рассмотренный в п.п. 6.4.7, 6.4.8, является слишком простым (оказался достаточным тест, состоящий всего из двух элементарных проверок), при таком коротком тесте для применения метода ветвей и границ не остаётся поля деятельности. Поэтому мы проиллюстрируем его на примере, рассмотренном в п.п. 6.4.3 и 6.4.4.

Итак, задана таблица состояний тестируемого устройства представленная табл. 6.2. Построим для неё таблицу покрытий. Она будет состоять из С72= 21 столбца и 10 строк. Примем следующие обозначения пар состояний (см. табл. 6.10).

Таблица 6.10

U

1

2

3

4

5

6

7

8

9

10

11

S

1-2

1-3

1-4

1-5

1-6

1-7

2-3

2-4

2-5

2-6

2-7

U

12

13

14

15

16

17

18

19

20

21

S

3-4

3-5

3-6

3-7

4-5

4-6

4-7

5-6

5-7

6-7

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

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

Таблица 6.11

П

U

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

1

1

1

1

1

1

1

1

1

1

1

2

1

1

1

1

1

1

1

1

1

1

1

1

3

1

1

1

1

1

1

1

1

1

1

1

1

4

1

1

1

1

1

1

1

1

1

1

1

1

5

1

1

1

1

1

1

1

1

1

1

6

1

1

1

1

1

1

1

1

1

1

1

1

7

1

1

1

1

1

1

1

1

1

1

8

1

1

1

1

1

1

1

1

1

1

1

1

9

1

1

1

1

1

1

1

1

1

1

1

1

10

1

1

1

1

1

1

1

1

1

1

Шаг 1. Выберем строку с максимальным числом единиц (такая строка будет различать максимальное число пар состояний). Таких строк у нас 6: 2-я, 3-я, 4-я, 6-я, 8-я и 9-я. Поскольку 2-я элементарная проверка из них самая дешёвая, выберем её. Следовательно, из начальной вершины, обозначаемой цифрой 1 (по номеру шага) исходят два частичных решения: проведение 2-й элементарной проверки, либо любой другой (не второй), что и обозначено над линиями.

Теперь вычеркнем в табл. 6.11 все столбцы, покрываемые строкой 2, и удалим саму эту строку. Получаем табл. 6.12, состоящую из 9 столбцов и 9 строк. Добавим справа ещё один столбец, в котором укажем число единиц в каждой строке, которое нам понадобится для вычисления предела длины недостроенной части теста lim(g).

Нижняя граница недостроенной части решения определяется из соотношений:

и (6.11)

где N – число столбцов таблицы;

njr – число единиц в j-й строке; индекс r указывает на то, что строки в этих соотношениях должны подставляться в порядке убывания числа единиц в них.

Число k, удовлетворяющее обоим неравенствам и будет минимальной длиной недостроенной части теста.

Таблица 6.12

U

n

1

4

5

9

10

12

15

18

19

π1

1

1

1

1

1

5

π3

1

1

1

3

π4

1

1

1

1

1

1

6

π5

1

1

1

1

4

π6

1

1

1

1

1

1

6

π7

1

1

1

1

1

5

π8

1

1

1

1

1

1

6

π9

1

1

1

1

1

1

6

π10

1

1

2

По таблице 6.12 N = 9, а строки должны подставляться в следующем порядке:

π4 π6 π8 π9 π1 π7 π5 π3 π10.

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

n4+n6 = 6+6 = 12 > 9 и n4 = 6 < 9.

Найденное число k и есть нижняя граница недостроенной части решения, то есть . Следовательно, сложность всего решения равна

,

так как к уже сделанной проверке π2 необходимо будет добавить ещё две элементарных проверки.

Таким образом, если первой проверкой будет выбрана π2 , то полный тест будет состоять из трёх проверок.

Однако, кроме проверки π2 у нас ещё 5 проверок имеют такое же число единиц, а ядро теста отсутствует. В таких случаях надо оценить второй части частичных решений, когда вместо проверки π2 взята другая проверка. Поэтому составим таблицу для альтернативного варианта первого шага. Для этого удалим строку 2 из табл. 6.11, не удаляя покрываемых ею столбцов. Получаем табл. 6.13.

Таблица 6.13

П

U

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

1

1

1

1

1

1

1

1

1

1

1

3

1

1

1

1

1

1

1

1

1

1

1

1

4

1

1

1

1

1

1

1

1

1

1

1

1

5

1

1

1

1

1

1

1

1

1

1

6

1

1

1

1

1

1

1

1

1

1

1

1

7

1

1

1

1

1

1

1

1

1

1

8

1

1

1

1

1

1

1

1

1

1

1

1

9

1

1

1

1

1

1

1

1

1

1

1

1

10

1

1

1

1

1

1

1

1

1

1

Оценим длину решения. Здесь N = 21, а максимальное число единиц (n = 12) имеют проверки 3-я, 4-я, 6-я, 8-я и 9-я.

Находим число k:

12+12 = 24 > 21; 12 < 21, то есть k = 2.

Учитывая, что сложность построенной части решения также равняется 1 (вместо проверки π2 взята какая-либо другая проверка), получаем, что

Lim( ) = 1+2 = 3,

то есть длина полного решения, если первой проверкой будет не π2 всё равно будет равна 3.

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

Lim(g2) = 1+2 = 3,

что мы и фиксируем рядом с вершиной (см. рис. 6.7). Вторую вершину пока не трогаем. Перейдём теперь ко второму шагу.

Шаг 2. Варианты возможных решений после шага 1 характеризуются табл. 6.12. Здесь строки 4-я, 6-я, 8-я и 9-я имеют максимальное число (6) единиц, остальные меньше. Поэтому в качестве второго шага следует выбирать самую дешёвую из них 4-ю проверку. Вычеркнем её и покрываемые ей столбцы из табл. 6.12. Получаем табл. 6.13.

Таблица 6.14

П

U

n

С

5

9

12

π1

1

1

2

1

π3

1

1

1,4

π5

1

1

2

2

π6

1

1

2,4

π7

1

1

2

2,8

π8

1

1

1

3

3,2

π9

1

1

1

3

3,6

π10

2

4,0

В ней осталось всего 3 столбца, одна строка (π10) пустая и две строки π8 и π9 одинаковые и состоят из единиц. Естественно, что в качестве следующего шага следует выбрать 8-ю или 9-ю проверки, которые покрывают все оставшиеся столбцы. Выбираем более дешёвую 8-ю. Таким образом, минимальный тест будет состоять из трёх проверок π2 π4 π8. Порядок их следования в безусловном тесте с безусловной остановкой значения не имеет.

Стоимость тестирования данным тестом составит С = С2 + С4 + С8 = 1,2 +1,6 + +3,2 = 6.

Порядок построения данного теста отображён на рис. 6.6.

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

Рис. 6.6. Построение дерева решений методом ветвей и границ

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

Попробуем составить тест из более дешёвых проверок. Поскольку самыми дешёвыми являются первые три проверки, и одна из них π2 в данном тесте используется, а порядок их следования значения не имеет, то начнём построение со второго шага. Посмотрим, можно ли построить минимальный тест, если после проверки π2 взять не π4, а любую другую. Если из таблицы 6.12 убрать строку π4 , то число столбцов останется тем же N = 9 и останется ещё три строки с числом единиц, равным 6. Подсчитаем длину недостроенной части теста, если второй проверкой является (не π4): 6+6=12>9, 6<9, значит k = 2. Следовательно,

,

а с учётом уже построенной части теста (первой проверкой была π2) полная длина теста составит 1+3=4. Таким образом, если в качестве второй элементарной проверки взять не π4, а любую другую то тест будет состоять из не менее 4-х элементарных проверок. Тем не менее, попробуем составить тест из 4-х, но более дешёвых элементарных проверок и оценим его стоимость. Выберем вместо проверки π4 самую дешёвую π1, хотя по усечённой после первого шага таблице покрытий (табл. 6.12) она содержит не 6, а 5 единиц. Исключая из табл. 6.12 строку π1 и покрываемые ею столбцы, получим, табл. 6.15, состоящую из 4-х столбцов. Здесь две строки π3 и π6 получились одинаковыми и одну из них (π6) можно удалить.

Таблица 6.15

П

U

N

C

1

4

9

15

π3

1

1

2

1,4

π4

1

1

1

3

1,6

π5

1

1

2

2,0

π6

1

1

2

2,4

π7

1

1

1

3

2,8

π8

1

1

2

3,2

π9

1

1

2

3,6

π10

1

1

4,0

Теперь можно подсчитать минимальную длину недостроенной части теста: N = 4, n4 =3, n7 =3; 3+3 = 6 > 4; 3 < 4. Следовательно, k = 2, значит, lim(g1) = 2, т.е. для полного решения необходимы ещё две проверки. И действительно, по таблице видно, что ни одна из элементарных проверок не покрывает все столбцы. Следовательно, при использовании в качестве второго шага вместо проверки π4 проверки π1 получить минимальный тест невозможно. Тем не менее, достроим этот тест и подсчитаем его стоимость. Из табл. 6.15 видно, самыми дешёвыми проверками, покрывающими все 4 столбца являются проверки π4 и π5 . Таким образом, полный тест будет состоять из 4-х элементарных проверок π1 π2 π4 π5 . Его стоимость составит С1 + С2 + С4 + С5 = 1+1,2+1,6+2 = 5,8. Это немного меньше, чем стоимость предыдущего теста, хотя тот состоял из трёх проверок, а этот – из четырёх. Очевидно, что остальные минимальные тесты надо строить из вершины , т.е. в качестве первой проверки брать не π2 , а какую-либо другую проверку, также состоящую из 12 единиц. Но найдётся ли среди этих ещё не построенных тестов более дешёвый сказать нельзя, не построив их. Метод ветвей и границ позволяет оценить лишь минимальную длину недостроенных частей теста, но не их стоимость. Некоторые шансы получения более дешёвого минимального теста сохраняются, только если вместо проверки π2 использовать проверки π3 или π4 , также содержащие по 12 единиц (см. табл. 6.11). Остальные проверки, содержащие по 12 единиц, гораздо дороже. Поэтому, чтобы точно убедиться, что построенный нами тест является оптимальным по стоимости, пришлось бы построить все тесты, в которых в качестве первой проверки используются проверки π3 или π4 .