Сначала рассмотрим этот алгоритм для более общего случая, а затем вернемся к частному случаю, который нас особенно интересует.
Алгоритм Мальгранжа. Получение максимальных полных подматриц или главных подматриц. Описание этого алгоритма требует введения некоторых предварительных определений.
В матрице с бинарными элементами (0 или 1), т. е. в булевой матрице, задающей граф (а точнее, граф Бержа), полной подматрицей называется подматрица, все без исключения элементы которой равны 1.
Основной подматрицей (говорят также «максимальной полной подматрицей») называется полная подматрица, не содержащая никакой другой полной подматрицы. Например, на рис. Б.1 представлены семь основных подматриц матрицы [М]. Покрытием булевой матрицы называется множество полных подматриц, покрывающих все единичные значения этой матрицы.

Рис. Б.1
Пусть L — множество строк и J — множество столбцов булевой матрицы. Каждая полная подматрица определяется упорядоченной парой обычных подмножеств (Ip, J q), где Ip
I, J q
J. Можно показать, что операции
которые двум полным подматрицам булевой матрицы [М], скажем,
[M1], определенной посредством (Il, J1), (Б.1)
[М2], определенной посредством (I2, J2), (Б.2)
ставят в соответствие две подматрицы:
определенную упорядоченной парой
(Б.3)
определенную упорядоченной парой
(Б.4)
есть внутреннее операции на множестве М полных подматриц матрицы [М].
Поочередное применение описанных ниже правил до тех пор, пока не сформируются все полные матрицы покрытия
(Б.5)
позволит получить основные подматрицы матрицы [М] за конечное число итераций. (Символ С ранее использовался для обозначения категорий, но мы не думаем, что может возникнуть какая-нибудь путаница между этими двумя понятиями, хотя они и обозначены одной и той же буквой.)
Первое правило. Вычеркиваем все матрицы [Mk], содержащиеся в других подматрицах покрытия С.
Второе правило. Добавляем к С подматрицы, полученные применением определенных выше операций
ко всем парам матриц [Mk] и [Ml], входящим в покрытие (кроме полных подматриц, которые уже содержатся в подматрицах покрытия С, что исключает бесконечный процесс).
Пример. Найдем основные подматрицы булевой матрицы на рис. Б.1
Этап 1. Выберем покрытие
(Б.6)
Этап 2 (второе правило).
Подсчитаем объединения и пересечения:
(Б.7)
(Б.8)
откуда получим новую подматрицу
(Б.9)
(Б.10)
и новую матрицу
(Б.11)
(Б.12)
(Б.13)
что дает новую матрицу
(Б.14)
(Б.15)
что дает новую матрицу
(Б. 16)
Taк как все пересечения
![]()
пустые, то бесполезно подсчитывать![]()
Этап 3 (первое правило).
Выпишем новое покрытие
(Б.17)
Матрица [М3] содержится в [М5] и потому не включена в покрытие С.
Этап 4 (второе правило).
С дидактической целью приводим все детали расчетов, не исключая вычислений даже тех матриц, которые уже были получены или оказываются пустыми:
(Б.18)
(Б.19)
(Б.20)
(Б.21)
Отсюда получаем новую подматрицу
(Б.22)
(Б.23)
(Б.24)
(Б.25)
(Б.26)
(Б.27)
(Б.28)
(Б.29)
(Б.30)
(Б.31)
(Б.32)
(Б.33)
(Б.34)
(Б.35)
(Б.36)
(Б.37)
(Б.38)
(Б.39)
(Б.40)
(Б.41)
(Б.42)
(Б.43)
(Б.44)
(Б.45)
(Б.46)
(Б.47)
(Б.48)
(Б.49)
(Б.50)
(Б.51)
Этап 5 (первое правило).
Выпишем новое покрытие
(Б.52)
матрица [М8] исключена, так как она содержится в [М9].
Этап 6 (второе правило).
Из проведенных расчетов пересечений и объединений видно, что невозможно найти полную подматрицу, которая не совпадает с какой-нибудь матрицей из предыдущего покрытия или не содержится в ней. Таким образом, мы получили следующее множество основных подматриц покрытия:
(Б.53)
Поиски максимального подотношения подобия. Перейдем к приложению алгоритма Мальгранжа для поисков максимальных подотно-щений подобия.
В качестве примера рассмотрим обычный симметричный и рефлексивный граф на рис. Б.2, a; мы хотим найти в соответствующей булевой матрице (рис. Б.2, б) основные подматрицы, которые составят ее покрытие. Те из основных подматриц, которые имеют квадратную форму, и дадут искомые подотношения.

Рис. Б.2
Чтобы начать с полных подматриц, которые априори можно рассматривать как довольно близкие к искомым («близкие» из эвристических, не требующих строгого обоснования, соображений), сначала представим строки и столбцы матрицы так, чтобы строки — сверху вниз, а столбцы — справа налево были упорядочены по числу содержащихся в них единиц. Это даст матрицу на рис. Б.2, в.
Этап 1. Выделим следующее покрытие:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |


