Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Поиск в графе 3

.pdf
Скачиваний:
11
Добавлен:
03.05.2015
Размер:
1.77 Mб
Скачать

Поиск точек сочленения и блоков в графе

Модификация поиска в глубину для поиска точек сочлене

Использование свойства точек сочленения в дереве поиск

 

 

 

Формулировка алгоритма

3. Если список смежности v просмотрен до конца, то Stack:Pop() (удаляем v из стека) åñëè Father[v] 6= 0, òî

L[Father[v]] := minfL[Father[v]];L[v]g,

åñëè num[Father[v]] 6 L[v], òî Father[v] точка сочленения

Получаем очередной элемент списка смежности (u := copyList[v]:GetNext()).

à) Åñëè u еще не посещалась (Visit[u] = 0), òî ïðè Father[v] = 0; numSonsRoot + +

Расин О.В.

Поиск в графе

 

 

Поиск точек сочленения и блоков в графе

Модификация поиска в глубину для поиска точек сочлене

Использование свойства точек сочленения в дереве поиск

 

 

 

Формулировка алгоритма

3. Если список смежности v просмотрен до конца, то Stack:Pop() (удаляем v из стека) åñëè Father[v] 6= 0, òî

L[Father[v]] := minfL[Father[v]];L[v]g,

åñëè num[Father[v]] 6 L[v], òî Father[v] точка сочленения

Получаем очередной элемент списка смежности (u := copyList[v]:GetNext()).

à) Åñëè u еще не посещалась (Visit[u] = 0), òî ïðè Father[v] = 0; numSonsRoot + +

Stack:Push(u);

Расин О.В.

Поиск в графе

 

 

Поиск точек сочленения и блоков в графе

Модификация поиска в глубину для поиска точек сочлене

Использование свойства точек сочленения в дереве поиск

 

 

 

Формулировка алгоритма

3. Если список смежности v просмотрен до конца, то Stack:Pop() (удаляем v из стека) åñëè Father[v] 6= 0, òî

L[Father[v]] := minfL[Father[v]];L[v]g,

åñëè num[Father[v]] 6 L[v], òî Father[v] точка сочленения

Получаем очередной элемент списка смежности (u := copyList[v]:GetNext()).

à) Åñëè u еще не посещалась (Visit[u] = 0), òî ïðè Father[v] = 0; numSonsRoot + +

Stack:Push(u); Visit[u] := 1;

Расин О.В.

Поиск в графе

 

 

Поиск точек сочленения и блоков в графе

Модификация поиска в глубину для поиска точек сочлене

Использование свойства точек сочленения в дереве поиск

 

 

 

Формулировка алгоритма

3. Если список смежности v просмотрен до конца, то Stack:Pop() (удаляем v из стека) åñëè Father[v] 6= 0, òî

L[Father[v]] := minfL[Father[v]];L[v]g,

åñëè num[Father[v]] 6 L[v], òî Father[v] точка сочленения

Получаем очередной элемент списка смежности (u := copyList[v]:GetNext()).

à) Åñëè u еще не посещалась (Visit[u] = 0), òî ïðè Father[v] = 0; numSonsRoot + +

Stack:Push(u); Visit[u] := 1; Father[u] := v,

Расин О.В.

Поиск в графе

 

 

Поиск точек сочленения и блоков в графе

Модификация поиска в глубину для поиска точек сочлене

Использование свойства точек сочленения в дереве поиск

 

 

 

Формулировка алгоритма

3. Если список смежности v просмотрен до конца, то Stack:Pop() (удаляем v из стека) åñëè Father[v] 6= 0, òî

L[Father[v]] := minfL[Father[v]];L[v]g,

åñëè num[Father[v]] 6 L[v], òî Father[v] точка сочленения

Получаем очередной элемент списка смежности (u := copyList[v]:GetNext()).

à) Åñëè u еще не посещалась (Visit[u] = 0), òî ïðè Father[v] = 0; numSonsRoot + +

Stack:Push(u); Visit[u] := 1; Father[u] := v, num[u] := counterNum,

Расин О.В.

Поиск в графе

 

 

Поиск точек сочленения и блоков в графе

Модификация поиска в глубину для поиска точек сочлене

Использование свойства точек сочленения в дереве поиск

 

 

 

Формулировка алгоритма

3. Если список смежности v просмотрен до конца, то Stack:Pop() (удаляем v из стека) åñëè Father[v] 6= 0, òî

L[Father[v]] := minfL[Father[v]];L[v]g,

åñëè num[Father[v]] 6 L[v], òî Father[v] точка сочленения

Получаем очередной элемент списка смежности (u := copyList[v]:GetNext()).

à) Åñëè u еще не посещалась (Visit[u] = 0), òî ïðè Father[v] = 0; numSonsRoot + +

Stack:Push(u); Visit[u] := 1; Father[u] := v, num[u] := counterNum, L[u] := counterNum,

Расин О.В.

Поиск в графе

 

 

Поиск точек сочленения и блоков в графе

Модификация поиска в глубину для поиска точек сочлене

Использование свойства точек сочленения в дереве поиск

 

 

 

Формулировка алгоритма

3. Если список смежности v просмотрен до конца, то Stack:Pop() (удаляем v из стека) åñëè Father[v] 6= 0, òî

L[Father[v]] := minfL[Father[v]];L[v]g,

åñëè num[Father[v]] 6 L[v], òî Father[v] точка сочленения

Получаем очередной элемент списка смежности (u := copyList[v]:GetNext()).

à) Åñëè u еще не посещалась (Visit[u] = 0), òî ïðè Father[v] = 0; numSonsRoot + +

Stack:Push(u); Visit[u] := 1; Father[u] := v, num[u] := counterNum, L[u] := counterNum, counterNum + +

Расин О.В.

Поиск в графе

 

 

Поиск точек сочленения и блоков в графе

Модификация поиска в глубину для поиска точек сочлене

Использование свойства точек сочленения в дереве поиск

 

 

 

Формулировка алгоритма

3. Если список смежности v просмотрен до конца, то Stack:Pop() (удаляем v из стека) åñëè Father[v] 6= 0, òî

L[Father[v]] := minfL[Father[v]];L[v]g,

åñëè num[Father[v]] 6 L[v], òî Father[v] точка сочленения

Получаем очередной элемент списка смежности (u := copyList[v]:GetNext()).

à) Åñëè u еще не посещалась (Visit[u] = 0), òî ïðè Father[v] = 0; numSonsRoot + +

Stack:Push(u); Visit[u] := 1; Father[u] := v, num[u] := counterNum, L[u] := counterNum, counterNum + +

á) Åñëè Visit[u] = true, ïðè num[v] > num[u] è u 6= Father[v] , òî L[v] := minfL[v];num[u]g

Расин О.В.

Поиск в графе

 

 

Поиск точек сочленения и блоков в графе

Модификация поиска в глубину для поиска точек сочлене

Использование свойства точек сочленения в дереве поиск

 

 

 

Формулировка алгоритма

3. Если список смежности v просмотрен до конца, то Stack:Pop() (удаляем v из стека) åñëè Father[v] 6= 0, òî

L[Father[v]] := minfL[Father[v]];L[v]g,

åñëè num[Father[v]] 6 L[v], òî Father[v] точка сочленения

Получаем очередной элемент списка смежности (u := copyList[v]:GetNext()).

à) Åñëè u еще не посещалась (Visit[u] = 0), òî ïðè Father[v] = 0; numSonsRoot + +

Stack:Push(u); Visit[u] := 1; Father[u] := v, num[u] := counterNum, L[u] := counterNum, counterNum + +

á) Åñëè Visit[u] = true, ïðè num[v] > num[u] è u 6= Father[v] , òî L[v] := minfL[v];num[u]g

Перейти к шагу 2.

Расин О.В.

Поиск в графе

 

 

Поиск точек сочленения и блоков в графе

Модификация поиска в глубину для поиска точек сочлене

Использование свойства точек сочленения в дереве поиск

 

 

 

Формулировка алгоритма

4. åñëè numSonsRoot > 1, òî v точка сочленения

Расин О.В.

Поиск в графе