Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по дискретной математике (часть 2).doc
Скачиваний:
81
Добавлен:
29.10.2018
Размер:
2.38 Mб
Скачать

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

Начальная установка.

Шаг 1. Пусть S0 = Q0- = , Q0+= X, k=0.

Прямой шаг.

Шаг 2. Выбрать вершину xikQk+ и сформировать Sk+1, Qk-+1 и Qk++1, оставив Qk- и Qk+ нетронутыми. Положить k=k+1.

Проверка.

Шаг 3. Если выполняется условие (4.5), то перейти к шагу 5 иначе к шагу 4.

Шаг 4. Если Qk+=Qk- =, то напечатать максимальное независимое множество Sk и перейти к шагу 5. Если Qk+=, а Qk-, то перейти к шагу 5, иначе  к шагу 2.

Шаг возвращения.

Шаг 5. Положить k=k–1. Удалить xik из Sk+1, чтобы получить Sk. Исправить Qk+ и Qk-, удалив вершину xik из Qk+ и добавив ее к Qk-. Если k0, то перейти к шагу 3, иначе если Q0+=, то остановиться (к этому моменту будут напечатаны все максимальные независимые множества), иначе перейти к шагу 2.

Пример. Найти все максимальные независимые множества графа G.

Матрица смежности графа G:

А=

x1

x2

x3

x4

x5

x6

x7

x1

0

1

1

0

0

0

0

x2

1

0

0

1

0

1

0

x3

1

0

0

0

1

0

1

x4

0

1

0

0

1

1

0

x5

0

0

1

1

0

0

1

x6

0

1

0

1

0

0

1

x7

0

0

1

0

1

1

0

1. Начальная установка:

S0 = Ø; Q0- = Ø; Q0+ = {x1, x2, x3, x4, x5, x6, x7}; k=0.

2. Прямой шаг:

x1; S1 = {x1}; Q1- = Ø; Q1+ = {x4, x5, x6, x7}; k = 1.

3. Проверка.

Условие не выполняется, переходим к шагу 4 (→ 4).

4. Условие не выполняется → 2.

2. x4; S2 = {x1, x4}; Q2- = Ø; Q2+ = {x7}; k = 2.

3. Условие не выполняется → 4.

4. Условие не выполняется → 2.

2. x7; S3 = {x1, x4, x7}; Q3- = Ø; Q3+ = Ø; k = 3.

3. Условие не выполняется → 4.

4. S3 = {x1, x4, x7} максимальное независимое множество 5.

5. k = 2; S2 = {x1, x4}; Q2- = {x7}; Q2+ = Ø → 3.

3. Условие выполняется → 5.

5. k = 1; S1 = {x1}; Q1- = {x4}; Q1+ = {x5, x6, x7} → 3.

3. Условие не выполняется → 4.

4. Условие не выполняется → 2.

2. x5; S2 = {x1, x5}; Q2- = Ø; Q2+ = {x6}; k = 2.

3. Условие не выполняется → 4.

4. Условие не выполняется → 2.

2. x6; S3 = {x1, x5, x6}; Q3- = Ø; Q3+ = Ø; k = 3.

3. Условие не выполняется → 4.

4. S3 = {x1, x5, x6} максимальное независимое множество 5.

5. k = 2; S2 = {x1, x5}; Q2- = {x6}; Q2+ = Ø → 3.

3. Условие выполняется → 5.

5. k = 1; S1 = {x1}; Q1- = {x4, x5}; Q1+ = {x6, x7} → 3.

3. Условие не выполняется → 4.

4. Условие не выполняется → 2.

2. x6; S2 = {x1, x6}; Q2- = {x5}; Q2+ = Ø; k = 2.

3. Условие выполняется → 5.

5. k = 1; S1 = {x1}; Q1- = {x4, x5, x6}; Q1+ = {x7} → 3.

3. Условие выполняется → 5.

5. k = 0; S0 = Ø; Q0- = {x1}; Q0+ = {x2, x3, x4, x5, x6, x7} → 2.

2. x2; S1 = {x2}; Q1- = Ø; Q1+ = {x3, x5, x7}; k = 1.

3. Условие не выполняется → 4.

4. Условие не выполняется → 2.

2. x3; S2 = {x2, x3}; Q2- = Ø; Q2+ = Ø; k = 2.

3. Условие не выполняется → 4.

4. S2 = {x2, x3} — максимальное независимое множество 5.

5. k = 1; S1 = {x2}; Q1- = {x3}; Q1+ = {x5, x7} → 3.

3. Условие не выполняется → 4.

4. Условие не выполняется → 2.

2. x5; S2 = {x2, x5}; Q2- = Ø; Q2+ = Ø; k = 2.

3. Условие не выполняется → 4.

4. S2 = {x2, x5} — максимальное независимое множество 5.

5. k = 1; S1 = {x2}; Q1- = {x3, x5}; Q1+ = {x7} → 3.

3. Условие не выполняется → 4.

4. Условие не выполняется → 2.

2. x7; S2 = {x2, x7}; Q2- = Ø; Q2+ = Ø; k = 2.

3. Условие не выполняется → 4.

4. S2 = {x2, x7} — максимальное независимое множество 5.

5. k = 1; S1 = {x2}; Q1- = {x3, x5, x7}; Q1+ = Ø → 3.

3. Условие выполняется → 5.

5. k = 0; S0 = Ø; Q0- = {x1, x2}; Q0+ = {x3, x4, x5, x6, x7} → 3.

3. Условие не выполняется → 4.

4. Условие не выполняется → 2.

2. x3; S1 = {x3}; Q1- = {x2}; Q1+ = {x4, x6}; k = 1.

3. Условие не выполняется → 4.

4. Условие не выполняется → 2.

2. x4; S2 = {x3, x4}; Q2- = Ø; Q2+ = Ø; k = 2.

3. Условие не выполняется → 4.

4. S2 = {x3, x4} — максимальное независимое множество 5.

5. k = 1; S1 = {x3}; Q1- = {x2, x4}; Q1+ = {x6} → 3.

3. Условие не выполняется → 4.

4. Условие не выполняется → 2.

2. x6; S2 = {x3, x6}; Q2- = Ø; Q2+ = Ø; k = 2.

3. Условие не выполняется → 4.

4. S2 = {x3, x6} — максимальное независимое множество 5.

5. k = 1; S1 = {x3}; Q1- = {x2, x4, x6}; Q1+ = Ø → 3.

3. Условие выполняется → 5.

5. k = 0; S0 = Ø; Q0- = {x1, x2, x3}; Q0+ = {x4, x5, x6, x7} → 2.

2. x4; S1 = {x4}; Q1- = {x1, x3}; Q1+ = {x7}; k = 1.

3. Условие выполняется → 5.

5. k = 0; S0 = Ø; Q0- = {x1, x2, x3, x4}; Q0+ = {x5, x6, x7} → 2.

2. x5; S1 = {x5}; Q1- = {x1, x2}; Q1+ = {x6}; k = 1.

3. Условие выполняется → 5.

5. k = 0; S0 = Ø; Q0- = {x1, x2, x3, x4, x5}; Q0+ = {x6, x7} → 2.

2. x6; S1 = {x6}; Q1- = {x1, x3, x5}; Q1+ = Ø; k = 1.

3. Условие выполняется → 5.

5. k = 0; S0 = Ø; Q0- = {x1, x2, x3, x4, x5, x6}; Q0+ = {x7} → 2.

2. x7; S1 = {x7}; Q1- = {x1, x2, x4}; Q1+ = Ø; k = 1.

3. Условие выполняется → 5.

5. k = 0; S0 = Ø; Q0- = {x1, x2, x3, x4, x5, x6, x7}; Q0+ = Ø → останов.

Таким образом, данный граф имеет семь максимальных независимых множеств:

S1 = {x1, x4, x7}; S2 = {x1, x5, x6}; S3 = {x2, x3}; S4 = {x2, x5}; S5 = {x2, x7}; S6 = {x3, x4}; S7 = {x3, x6}.

Ядро  множество, которое является одновременно минимальным доминирующим и максимальным независимым.

Утверждение 4.9.1. Конечный граф без петель, не содержащий контуров нечетной длины, обладает ядром.

Понятие, противоположное максимальному независимому множеству, есть максимальный полный подграф. Максимальный полный подграф графа G называется кликой графа. Следовательно, в противоположность максимальному независимому множеству, в котором не могут встретиться две смежные вершины, в клике все вершины попарно смежны. Совершенно очевидно, что максимальное независимое множество графа G соответствует клике графа и наоборот, где – дополнение графа G.

Кликовое число – максимальное число вершин в кликах данного графа.

Утверждение. 4.9.2. Максимальное независимое множество графа G соответствует клике графа G и наоборот.