Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практические задания и программы / Методичка с материалом и заданиями (все вместе).doc
Скачиваний:
82
Добавлен:
11.02.2016
Размер:
2.19 Mб
Скачать

2.4. Алгоритмы, использующие сокращение таблицы покрытий

Теорема 2.3. (о ядре). Если в столбце таблицы покрытий содержится единственная единица, то строка, содержащая эту единицу, входит во все покрытия и называется ядерной.

Множество ядерных строк заранее выделяется и запоминается для введения во все покрытия. Ядерные строки из ТП удаляются и вычеркиваются все покрытые ими столбцы, т.е. вычеркиваются все столбцы, в которых есть 1 в ядерных строках.

Теорема 1.4. б антиядре). Если после удаления ядерных строк и покрытых ими столбцов в какой-либо строке не останется 1, то этa строка не входит ни в одно безызбыточное покрытие. Такие строки называются антиядерными и вычеркиваются из ТП без запоминания.

Определение 2.4. Вектор поглощает вектор ,EF, если для всех компонент этих векторов можно одновременно записать. В противном случае векторы называются несравнимимы.

Пример 2.2. Пусть заданы два вектора E=(1,1,0,1), F=(0,1,0,1). Сравнивая их поэлементно (например, слева направо), заключаем, что EF.

Теорема 2.5 (о поглощающих столбцах). В ТП могут быть вычеркнуты все поглощающие столбцы (рассматриваемые как векторы) без ущерба для построения всех безызбыточных покрытий.

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

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

Используя теоремы 2.3  2.7, упрощаем ТП. При этом возможны два исхода.

1. ТП после упрощения становится пустой (вычеркнуты все столбцы). В этом случае множество ядерных строк  требуемое покрытие.

2. Остаток ТП более не упрощается приёмами из теорем 2.3  2.7. Получаем циклический остаток (ЦО) таблицы покрытий. Покрытие ЦО таблицы можно строить методами граничного перебора либо разложения по столбцу.

Полное решение (покрытие исходной таблицы) состоит из ядерных строк и строк покрытия ЦО.

Расмотрим варианты алгоритма построения ЦО для ТП.

1. Для случая построения одного кратчайшего покрытия

Словесное описание алгоритма:

0. Считаем исходную таблицу покрытий текущей, а множество ядерных строк – пустым;

1. Находим ядерные строки, запоминаем множество ядерных строк. Текущую ТП сокращаем: вычеркиваем ядерные строки и все столбцы, покрытые ими;

2. Вычеркиваем антиядерные строки;

3. Вычеркиваем поглощающие столбцы;

4. Вычеркиваем поглощаемые строки;

5. Если в результате выполнения п.1-4 текущая ТП изменилась, снова выполняем п.1, иначе преобразования заканчиваем.

Получаются два результата: множество ядерных строк и ЦО ТП.

2. В случае построения минимального покрытия

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