Thuật toán tìm tất cả các đƣờngđi trong ma trận liên kết

Một phần của tài liệu Nghiên cứu bài toán tính độ tin cậy của hệ thống thông qua cấu trúc của hệ thống (Trang 29 - 31)

a. Trƣờng hợp đồ thị cần biểu diễn là vô hƣớng: Có thể đƣợc biểu diễn một cách đơn giản bằng ma trận kề vuông cấp n, với n là số đỉnh của đồ thị. Phần tử δij ở hàng i cột j (i,j=0,1,2, ...n) đƣợc xác định nhƣ sau:

- δij =0 nếu cặp đỉnh xi và xj không có cạnh nào nối với nhau. Bằng cách trên ta sẽ nhận đƣợc ma trận biểu diễn đồ thị đã cho.

Ma trận của đồ thị vô hƣớng là ma trận đối xứng, tức là các phần tử đối xứng qua đƣờng chéo chính sẽ tƣơng ứng bằng nhau.

b. Trƣờng hợp đồ thị cần biểu diễn là có hƣớng: Có thể đƣợc biểu diễn một cách đơn giản bằng ma trận kề vuông cấp n, với n là số đỉnh của đồ thị. Phần tử δij ở hàng i cột j (i,j=0,1,2, ...n) đƣợc xác định nhƣ sau:

- δij =1 nếu cặp đỉnh (xi, xj ) có cung.

- δij =0 nếu cặp đỉnh (xi, xj ) không có cung nào.

Ma trận của đồ thị có hƣớng không phải là ma trận đối xứng. Chú ý: Ma trận biểu diễn đồ thị đơn là ma trận logic.

Thuật toán để tìm tất cả các đƣờng đi trong ma trận kề dựa trên thao tác nhân ma trận liên kết một cột tƣơng ứng của ma trận đó đƣợc thể hiện nhƣ sau:

Bk = A B*k- 1(*) Trong đó:

- Bk cột ma trận kết quả của phép nhân (*). - B*k- 1 là kết quả của phép chuyển đổi B k- 1 ;

Vậy bài toán đặt ra ở đây là cho ma trận A và ma trận cột B1 hãy tìm tất cả các đƣờng đi có thể có từ nguồn (điểm phát) tới đích (điểm nhận).

+ Bƣớc 1: Kiểm tra ma trận cột B1 có chứa cung bắt đầu từ đỉnh nguồn hay không. Nếu cung tồn tại thì ghi nhận đƣờng đi đó và thay thế cung đó bởi giá trị 0. Sự thay đổi này sẽ cho ta kết quả là B*

1 ; + Bƣớc 2: Xét với k=2.

+ Bƣớc 3: Thực hiện phép tính (*) để tìm các giá trị Bk tƣơng ứng.

+ Bƣớc 4: Kiểm tra Bk bắt đầu từ nguồn, nếu đƣờng đi tồn tại thì ghi nhớ và thay thế cung đƣờng đi đó bởi giá trị 0. Nếu đƣờng đi xuất hiện trong Bk là đƣờng đi đầy đủ thì thay thế Bk =0. Sự thay đổi này cho ta kết quả là B*k .

+ Bƣớc 5: Kiểm tra B*k . Nếu B*k =0 thì thực hiện tiếp bƣớc 7. Nếu B*k ≠0 thì thực hiện tiếp bƣớc 6.

+ Bƣớc 6: Kiểm tra điều kiện k ≤ n-1. Nếu thoả mãn điều kiện k < n-1 thì tăng k lên 1 và thực hiện tiếp bƣớc 3. Nếu điều kiện k = n-1thì thực hiện tiếp bƣớc 7.

+ Bƣớc 7: Kiểm tra lại danh sách đƣờng đi và kết quả nhận đƣợc là danh sách các đƣờng đi có thể có từ đỉnh đầu đến đỉnh cuối.

Một phần của tài liệu Nghiên cứu bài toán tính độ tin cậy của hệ thống thông qua cấu trúc của hệ thống (Trang 29 - 31)