Разработка алгоритма рационального покрытия булевых матриц

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

Определение тупиковых покрытий возможно на основе алгоритма С.В.Яблонского [44], согласно которому на основании матрицы различимости , , , составляется выражение

, (8.13)

где – множество строк матрицы A, содержащих на пересечении с n–м столбцом единицы.

Полученная согласно (8.13) конъюнкция дизъюнкций, преобразуется в равносильную ей форму – дизъюнкцию конъюнкций

, (8.14)

где – множество тупиковых покрытий матрицы A.

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

Для принятия окончательного решения о наиболее эффективном покрытии (в смысле минимальности длины и достоверности распознавания) определим суммарный весовой коэффициент :

,

где – множество индексов проверок .

Коэффициенты берутся из матрицы нечеткой эквивалентности. Таким образом, величина имеет смысл степени, с которой проверка различает неисправности и по вероятностно-лингвистическим синдромам и соответственно, индексы которых связаны соотношением (8.11). Поэтому изложенная процедура зависит от достоверности распознавания.

Несмотря на то, что алгоритм Яблонского позволяет получить строго минимальное покрытие матрицы различимости, использование его для сложных объектов связано с большими вычислительными трудностями. Это объясняется тем, что размерность матрицы различимости (число столбцов N) возрастает пропорционально квадрату роста числа столбцов вероятностно-лингвистической диагностической таблицы: .

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

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

Исходя из вышеизложенного, предлагается следующая процедура рационального покрытия булевых матриц [17, 18]:

1. Проверить, является ли матрица нулевой. Если является, то перейти к п. 10, в противном случае – к п. 2.

2. Заменить матрицу соответствующей ей упрощенной матрицей и перейти к п. 3.

3. Проверить, равное ли количество единиц в столбцах матрицы. Если нет, то перейти к п. 4, если да – к п.6.

4. Найти в матрице столбец (столбцы) с наименьшим количеством единиц. Для каждой строки, в которой в выделенном столбце (выделенных столбцах) стоят единицы, подсчитать число единиц. Инвертировать матрицу по строке, для которой это число единиц максимально. Если таких строк несколько, то выбрать ту, для которой показатель достоверности , определяемый по формуле

,

где берется из матрицы нечеткой эквивалентности, максимален. Перейти к п. 5.

5. Проверить, является ли матрица нулевой. Если да, то перейти к п. 9, если нет – к п. 2.

6. Найти в матрице строку с наибольшим числом единиц. Если таких строк несколько, то для выбрать ту, для которой показатель достоверности максимален. Перейти к п. 7.

7. Инвертировать матрицу по выбранной строке. Перейти к п.8.

8. Проверить, является ли матрица нулевой. Если да, то перейти к п. 9, если нет – к п. 2.

9. Выписать номера тех строк, по которым в ходе выполнения процедуры производились инверсии (номера строк исходной матрицы A, а не упрощенных). Перейти к п. 10.

10. Закончить процедуру.

Ниже приводятся понятия, использованные при описании процедуры.

Определение 8.2. Под нулевой матрицей понимается матрица, все элементы которой равны нулю.

, ; – нулевая матрица,

если , , .

Определение 8.3. Под инверсной строкой строки матрицы A понимается строка , элементы которой получаются в соответствии со следующим правилом:

Определение 8.4. Под инверсией матрицы , , , по строке понимается матрица , , , элементы которой получаются умножением элементов инверсной строки , , на элементы матрицы A согласно правилу:

, ; .

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