Теми рефератів
Авіація та космонавтика Банківська справа Безпека життєдіяльності Біографії Біологія Біологія і хімія Біржова справа Ботаніка та сільське гос-во Бухгалтерський облік і аудит Військова кафедра Географія
Геодезія Геологія Держава та право Журналістика Видавнича справа та поліграфія Іноземна мова Інформатика Інформатика, програмування Історія Історія техніки Комунікації і зв'язок Краєзнавство та етнографія Короткий зміст творів Кулінарія Культура та мистецтво Культурологія Зарубіжна література Російська мова Маркетинг Математика Медицина, здоров'я Медичні науки Міжнародні відносини Менеджмент Москвоведение Музика Податки, оподаткування Наука і техніка Решта реферати Педагогіка Політологія Право Право, юриспруденція Промисловість, виробництво Психологія Педагогіка Радіоелектроніка Реклама Релігія і міфологія Сексологія Соціологія Будівництво Митна система Технологія Транспорт Фізика Фізкультура і спорт Філософія Фінансові науки Хімія Екологія Економіка Економіко-математичне моделювання Етика Юриспруденція Мовознавство Мовознавство, філологія Контакти
Українські реферати та твори » Математика » Побудова матриці досяжності

Реферат Побудова матриці досяжності

Категория: Математика

Державне освітня установа

вищого професійної освіти

Уфімський державний авіаційний технічний університет

Курсова робота

по дискретних математики

на тему: Побудова матриці досяжності

Уфа 2006


Введення

Мета роботи:

Розробити програму на мові TURBO PASCAL, що здійснює обчислення матриці досяжності.

Постановка завдання:

Скласти програму визначення матриці досяжності. Теоретично пояснити принцип обчислення матриці досяжності. Представити текст програми з коментарями, а також показати її схематично (у вигляді блок - схем). Перевірити правильність роботи програми, тим самим показати результати тестування. У підсумку зробити висновки по виконаній роботі.


Матриці досяжності і зв'язності

Нехай A (D) - матриця суміжності орієнтованого псевдографа D = (V, X) (чи псевдографа G = (V, X)), де V = {v1, ..., vn}. Позначимо через Ak = [a (k) ij] k-ю ступінь матриці суміжності A (D).

Затвердження. Елемент a (k) ij матриці Ak орієнтованого псевдографа D = (V, X) (псевдографа G = (V, X)) дорівнює числу всіх шляхів (маршрутів) довжини k з vi у vj.

Доказ:

Для k = 1 очевидно в силу побудови матриці A (D).

Нехай це справедливо для n = k-1. Тобто в матриці Ak-1 в i-тому рядку на l-тому місці стоїть число, яке означає кол-во маршрутів з vi у vl довжини k-1. Стовпець під номером j матриці A містить числа, що означають к-ть дуг (ребер) з vl в vj (l-номер рядка). Тоді скалярний добуток i-того рядка матриці Ak-1 на j-тий стовпець матриці A дорівнює сумі добутків. Кожен твір означає к-ть шляхів з vi у vj, проходять через vl на передостанньому кроці. У сумі виходить загальна к-ть.

Затвердження. Для того, щоб n-вершинний орграф D з матрицею суміжності A = A (D) мав хоча б один контур, Гі щоб матриця K = A2 + A3 + ... An мала ненульові діагональні елементи (наслідок попереднього).

Нехай ПЃ-відношення досяжності на безлічі V усіх вершин (неорієнтованого) графа G. (Або v = w, або існує маршрут, що з'єднує v і w).

Тоді

1) ПЃ-відношення еквівалентності;

2) vПЃw Гі вершини v, w належать одній компоненті зв'язності;

3) для будь-якого класу еквівалентності V1 псевдограф G1, породжений множиною V1, є компонентою зв'язності псевдографа G. Для орграфа: Нехай 1-відношення досяжності на безлічі V всіх вершин орієнтованого псевдографа D. Нехай ПЃ2-відношення двосторонньої досяжності на безлічі V. (ОЎ2 = ПЃ1 ∩ ПЃ1-1). Тоді

1) ПЃ1 - рефлексивно, транзитивній;

2) ПЃ2 - еквівалентність на V;

3) vПЃ2w Гі коли вершини v, w належать одній компоненті сильної зв'язності;

4) для будь-якого класу еквівалентності V1 орієнт. псевдограф D1, породжений множиною V1, є компонентою зв'язності ор. псевдографа G.

Число компонент зв'язності орграфа D позначається P (D). (Для неор. - P (G).

Визначення. Під операцією видалення вершини з графа (орграфа) будемо розуміти операцію, яка полягає у видаленні певної вершини разом з з інцидентними їй ребрами (дугами).

Визначення. Вершина графа, видалення якої збільшує число компонент зв'язності, називається точкою зчленування.

Затвердження. Якщо D '- орграф, отриманий в Внаслідок видалення декількох вершин з орграфа D, то A (D ') виходить з A (D) в результаті видалення рядків і стовпців, відповідних віддаленим вершин. (Для неор. Графа те ж саме).

Визначення. Матрицею досяжності орграфа D називається квадратна матриця T (D) = [tij] порядку n, елементи якої рівні

- tij = 1, якщо vj досяжна з vi,

- tij = 0, у противному випадку.

Визначення. Матрицею сильної зв'язності орграфа D називається квадратна матриця S (D) = [sij] порядку n, елементи якої рівні

- 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.

Текст програми (з коментарями)

PROGRAM G_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

For j: = 1 to MaxNodes do begin

Val: = 0;

For k: = 1 to MaxNodes do

Val: = Val OR (A [i, k] AND B [k, j]);

C [i, j]: = Val end

END;

PROCEDURE T_r_a_n_s_C_l_o_s_e (Adj: AdjMatrix; var Path: AdjMatrix);

{обчислення матриці досяжності Path по}

{заданої матриці смежностей Adj}

var i, j, k: NodePtr;

NewProd: AdjMatrix;

AdjProd: AdjMatrix; BEGIN

AdjProd: = Adj; Path: = Adj;

For i: = 1 to MaxNodes-1 do begin

P_r_o_d (AdjProd, Adj, NewProd);

For j: = 1 to MaxNodes do For k: = 1 to MaxNodes do

Path [j, k]: = Path [j, k] OR NewProd [j, k];

AdjProd: = NewProd

end

END;

BEGIN

clrscr;

{Введення матриці смежностей заданого графа}

WriteLn ('Вводите елементи матриці смежностей по рядках: ');

For i: = 1 to MaxNodes do

For j: = 1 to MaxNodes do begin

Write (', Введіть Adj [', i, ',', j, ']:'); ReadLn (Adj [i, j]) end;

{Обчислення і виведення матриці досяжності}

T_r_a_n_s_C_l_o_s_e (Adj, Path);

WriteLn ('Матриця досяжності:');

For i: = 1 to MaxNodes do begin For j: = 1 to MaxNodes do if i = j then Path [i, j]: = 1; end;

For i: = 1 to MaxNodes do begin For j: = 1 to MaxNodes do Write (Path [i, j], ''); WriteLn end;

readkey;

END.


Блок - схеми програми



Підпрограма, де матриця З одержує значення Булевського твори матриць А і В.


Підпрограма для обчислення матриці досяжності Path по заданій матриці суміжності Adj.


Результати тестування програми

Тест 1

Вводите елементи матриці смежностей по рядках:

Введіть Adj [1,1]: 0

Введіть Adj [1,2]: 0

Введіть Adj [1,3]: 1

Введіть Adj [1,4]: 0

Введіть Adj [1,5]: 0

Введіть Adj [2,1]: 0

Введіть Adj [2,2]: 0

Введіть Adj [2,3]: 0

Введіть Adj [2,4]: 0

Введіть Adj [2,5]: 0...


Страница 1 из 2Следующая страница

Друкувати реферат
Замовити реферат
Товары
загрузка...
Наверх Зворотнiй зв'язок