Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii-DM-Logika-Grafy.pdf
Скачиваний:
93
Добавлен:
30.05.2015
Размер:
1.71 Mб
Скачать

78

Глава 2. Бинарные отношения

 

 

Рассмотрим сначала задачу о наименьшем разбиении, а затем применим алгоритм для ЗНП.

2.4.7Алгоритм решения ЗНР

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

Предварительно переставим столбцы таким образом, чтобы первые столбцы матрицы содержали 1 в первых строках (образуется "блок” из таких столбцов). k-й блок состоит из таких множеств семейства A, в которых содержится элемент k, но отсутствуют элементы с меньшими номерами

a1; : : : ; a1.

 

 

A11A21 ¢ ¢ ¢ Al1

 

Al2+1 ¢ ¢ ¢

 

¢ ¢ ¢

 

¢ ¢ ¢

a1

 

1 1 ¢ ¢ ¢ 1

 

0 ¢ ¢ ¢ 0

 

0 ¢ ¢ ¢ 0

 

 

a2

 

¢ ¢ ¢

 

11 ¢ ¢ ¢ 1

 

0 ¢ ¢ ¢ 0

 

¢ ¢ ¢

a3

 

0 или 1

 

0 или 1

 

11 ¢ ¢ ¢ 1

 

.

 

 

 

 

 

 

 

 

.

 

0 или 1

 

0 или 1

 

0 или 1

 

 

.

 

 

 

 

 

an

 

0 или 1

 

0 или 1

 

0 или 1

 

 

 

 

 

 

 

 

 

cj

 

c1 c2 ¢ ¢ ¢ cl

 

cl+1 ¢ ¢ ¢

 

¢ ¢ ¢

 

¢ ¢ ¢

Множества в блоке располагаются в порядке возрастания их весов и перенумероваваются так, что Aj соответствует j- му столбцу. Верхний индекс в Apj указывает номер блока.

Введем следующие обозначения.

^

B – текущее наилучшее решение, z^ – его вес; B – текущее семейство A0, z – его вес;

E µ A – подмножество тех элементов из A, которые покрываются подмножествами из B;

p – номер блока;

Apj j-е подмножество, принадлежащее блоку p.

Алгоритм.

2.4. Эквивалентность и толерантность

79

 

 

 

Шаг 1. Инициализация. Построить исходную таблицу и начать с пустого решения.

B := ?; E := ?; z := 0; z^; = 1;

Шаг 2. Расширение решения.

Выбрать блок p = min[ijai 62E]

Пометить первое подмножество блока p (имеющего наименьший вес).

Шаг 3. Начиная с помеченной позиции блока, перебираем его подмножества Apj в порядке возрастания j.

1) Если нашли Apj такое, что

Apj \ E = ? и z + cj < z^

(где cj – вес множества Apj )

то на Шаг 5 иначе (т.е. если блок исчерпан или выбрано подмножество

Apj такое, что z + cj ¸ z^) на Шаг 4.

Шаг 4. Шаг возврата.

B не может привести к лучшему решению.

Если B = ? (т.е. блок p исчерпан), то алгоритм заканчивает

^

работу; B – оптимальное решение;

стоп

иначе удалить из решения B последнее подмножество, включенное в B; пусть это последнее подмножество есть Alk; положить p = l;

если есть Alk+1, то удалить предшествующую метку над Alk;

пометить Alk+1; на Шаг 3.

иначе на Шаг 4.

Шаг 5. Обновление решения и проверка.

B := B [ fApj g; E := E [ Apj ; z := z + cj;

Если найдено лучшее решение E = A, то положить

^

B := B; z^ := z;

80

Глава 2. Бинарные отношения

 

 

на Шаг 4. иначе на Шаг 2.

Пример 2.24.

A= fa; b; c; d; eg;

A= ffa; b; cg [5], fa; cg [3], fc; eg [5], fb; e; dg [3], fc; dg [3], fa; dg [2], fbg [3]g.

В квадратных скобках указаны веса соответствующих подмножеств.

 

A1

A1

A1

 

A2

A2

 

A3

A3

 

1

2

3

 

4

5

 

6

7

a

1

1

1

 

0

0

 

0

0

b

0

0

1

 

1

1

 

0

0

 

 

 

 

 

 

 

 

 

 

c

0

1

1

 

0

0

 

1

1

d

1

0

0

 

1

0

 

1

0

e

0

0

0

 

1

0

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cj

2

3

5

 

3

3

 

3

5

Итерации.

1. p = 1; B = A11; E = fa; dg; z = 2; E =6 A; на Шаг 2.

2. p = 2; A25 \E = ?; 2+3 < 1 ; B = A11 [A25; E = fa; b; dg; z = 5;

E 6= A; на Шаг 2.

3. p = 3; A73 \ E = ?; 5 + 5 < 1; z = 10; B = A11 [ A52 [ A73; E =

^

1

2

3

fa; b; c; d; eg; E = A; B = fA1

; A5

; A7g; z^ = 10;

Возврат.

4. p = 1; B := A12; E = fa; cg; z = 3 < 10; E 6= A; на Шаг 2.

5. p = 2; A24 \ E = ?; B = A12 [ A24; E = fa; b; c; d; eg; z = 3 + 3 = 6 < 10;

^

1

2

E = A; B = fA2

; A4g; z^ = 6;

Возврат

6. p = 1; B := A13; E = fa; b; cg; z = 5 < 6; E 6= A; на Шаг 2.

7. Больше не находится Alj, такого, что Alj \ E = ?. На Шаг 4.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]