Курсовая работа: Построение матрицы достижимости
- sij=1, если vj достижима изvi и viдостижима изvj,
- sij=0, в противном случае.
Определение. Матрицей связности графа G называется квадратная матрица S(G)=[sij] порядка n, элементы которой равны
- sij=1, если существует маршрут, соединяющий vj и vi,
- sij=0, в противном случае.
Утверждение
Пусть G=(V,X) – граф, V={v1,…, vn}, A(G) – его матрица смежности. Тогда
S(G)=sign[E+A+A2+A3+… An-1] (E- единичнаяматрицапорядка n). (Следует из предыдущего).
Алгоритм выделения компонент сильной связности
1. Присваиваем p=1, S1=S(D).
2. Включаем в множество вершин Vp компоненты сильной связности Dp вершины, соответствующие единицам первой строки матрицы Sp. В качестве матрицы A(Dp) возьмем подматрицу матрицы A(D), состоящую из элементов матрицы A, находящихся на пересечении строк и столбцов, соответствующих вершинам из Vp.
3. Вычеркиваем из Sp строки и столбцы, соответствующие вершинам из Vp. Если не остается ни одной строки (и столбца), то p- кол-во компонент сильной связности. В противном случае обозначим оставшуюся после вычеркивания срок и столбцов матрицу Sp+1, присваиваем p:=p+1 и переходим к п. 2.
Текст программы (с комментариями)
PROGRAMG_r_a_p_h;
Uses CRT;
const MaxNodes = 5; { Количество вершин в графе }
type NodePtr = 1..MaxNodes;
Element = 0..1;
AdjMatrix = Array [NodePtr,NodePtr] of Element;
var Adj : AdjMatrix; { Матрицасмежностей }
Path: AdjMatrix; { Матрицадостижимости }
i,j : NodePtr;
PROCEDURE P_r_o_d (A,B: AdjMatrix; var C: AdjMatrix);
{ Матрица C получает значение булевского }
{ произведения матриц A и B }
var Val : Element;
i,j,k: Integer;
BEGIN
For i:=1 to MaxNodes do