Tải bản đầy đủ (.ppt) (18 trang)

bài thảo tiểu luận thuật toán prim

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (411.13 KB, 18 trang )

BÀI TIỂU LUẬN NHÓM 2-46O
TỔ CHỨC MẠNG VIỄN THÔNG

1


DANH SÁCH THÀNH VIÊN:
1. Lương Văn Hải.
2. Đặng Thị Như.
3. Nguyễn Thị Uyên.
4. Nguyễn Thị An.
5. Dương Thị Thảo.
6. Đoàn Thị Nhung.

2


NỘI DUNG THẢO LUẬN :
I. Giới thiệu về thuật toán Prim………1
II. Các khái niệm chính……………………..6
III.Các cách biểu diễn đồ thị…………….10
IV.Duyệt các đỉnh của đồ thị……………12
V. Giải thuật Prim……………………………

3


I. Giới thiệu về thuật toán Prim.
Giải thuật Prim dựa trên cấu trúc của giải thuật tìm cây
bao trùm theo chiều rộng hoặc chiều sâu, chỉ thay
đổi về tiêu chuẩn chọn đỉnh sẽ bổ sung vào cây ở


từng bước.
1. Bài toán
Cho G = (X,E) là một đồ thị liên thông. Ngoài ra, một
hàm trọng số W(e), xác định trên tập các cạnh E của
G. Thuật toán Prim Ở mỗi bước của thuật toán ta
dựa trên tư tưởng của các giải thuật tham ăn: Chọn
và bổ sung vào cây cạnh có trọng số nhỏ nhất có
thể.
4


3. Mô tả
1.Gọi T là cây bao trùm sẽ xây dựng

2.Chọn một đỉnh s bất kỳ của G cho vào cây T. 3.Khi
đó T là một cây chỉ có một đỉnh và chưa có cạnh
nào.
4.Nếu T đã gồm tất cả các đỉnh của G thì T là cây
bao trùm cần tìm. Kết thúc.
5.Nếu G còn có các đỉnh không thuộc T, vì G liên
thông nên có các cạnh nối một đỉnh trong T với một
đỉnh ngoài T, chọn một cạnh có trọng số nhỏ nhất
trong số đó cho vào T.
6.Quay lại 2.
5


II. Các khái niệm chính.
•Một đồ thị G bao gồm một tập hợp V các đỉnh và một
tập hợp E các cạnh, ký hiệu G=(V,E).


•Các đỉnh còn được gọi là nút (node) hay điểm (point).
Các cạnh nối giữa hai đỉnh, hai đỉnh này có thể trùng
nhau.
6


• Đồ thị được gọi là liên thông nếu với mỗi cặp đỉnh i,j
bất kỳ luôn tìm được đường đi nối i với j.
• Hai đỉnh có cạnh nối nhau gọi là hai đỉnh kề
(adjacency). Một cạnh nối giữa hai đỉnh v, w có thể
coi như là một cặp điểm (v,w).
• Nếu các cạnh trong đồ thị G có thứ tự thì G gọi là đồ
thị có hướng (directed graph).

7


• Đường đi trong đồ thị là một dãy các đỉnh
<x1,x2, … , xi, xj+1, … ,xk-1, xk >
sao cho, mỗi đỉnh trong dãy (không kể đỉnh đầu tiên) kề
với đỉnh trước nó bằng một cạnh nào đó, nghĩa là: ∀ i
= 2, 3, … , k-1, k : (xi-1, xi) ∈ E.
Ta nói rằng đường đi này đi từ đỉnh đầu x1 đến đỉnh cuối
xk. Số cạnh của đường đi được gọi là độ dài của đường
đi đó.

Đường đi đơn là đường đi mà các đỉnh trên nó
khác nhau từng đôi.
• Đồ thị vô hướng G=(V,E) được gọi là liên thông nếu với

mỗi cặp đỉnh i, j bất kỳ thì luôn tìm được đường đi nối
i và j. Đường đi nối i và j cũng là đường đi nối j và i.

Cây là đồ thị vô hướng, liên thông, không có chu
trình
8


• Cây là đồ thị vô hướng, liên thông, không có chu trình

Cây khung: Cho G là một đơn đồ thị. Một cây được gọi là
cây khung của G nếu nó là một đồ thị con của G và
chứa tất cả các đỉnh của G.
Cây khung nhỏ nhất: Nói chung, ta có thể định nghĩa cây
khung nhỏ nhất cho một đồ thị G như sau: Nếu mỗi
cạnh eij = (vi, vj) có một trọng số cij, thì cây khung nhỏ
nhất là một tập hợp các cạnh ký hiệu là Espan, sao cho:
C = sum( cij | eij ∈ Espan ) là nhỏ nhất
9


III.Các cách biểu diễn đồ thị.
Có khá nhiều cách biểu diễn đồ thị như biểu diễn
bằng ma trận đỉnh-cung, ma trận đỉnh-cạnh, ma trận
trọng số, danh sách liên kết, ….Ở đây chúng ta chỉ
nghiên cứu cách biểu diễn đồ thị bằng ma trận trọng số
như sau :
Với đồ thị G=(V,E) , người ta thường gán cho mỗi
cung hay cạnh (i,j) một giá trị cij gọi là trọng số của cung
hay cạnh đó. Ma trận A biểu diễn đồ thị G=(V,E) có dạng

: A=[aij] với i,j V
Trong đó : aij=0 nếu cạnh/cung (i,j) không thuộc
E, aij=wij nếu cạnh/cung (i,j) thuộc E
10


Ví dụ :
Xét đồ thị vô hướng có trọng số :

Ma trận trọng số biểu diễn đồ thị là:

11


IV. DUYỆT CÁC ĐỈNH CỦA ĐỒ THỊ.
Xét đồ thị G=(V,E) . Gọi i là một đỉnh nào đó của G.
Ký hiệu L là cấu trúc dữ liệu kiểu danh sách lưu trữ
các đỉnh của G. Thuật toán duyệt các đỉnh của G
được trình bày một cách tổng quát như sau :

Nạp đỉnh i vào danh sách L

Lấy đỉnh x ra khỏi đầu danh sách

Nếu x chưa được duyệt thì duyệt đỉnh x

Nạp các đỉnh kề với x chưa được duyệt vào
danh sách L

Nếu L khác rỗng thì quay lên bước 2


Dừng
12


• Duyệt đồ thị theo chiều sâu DFS (Depth-First Search)
Nếu trong thuật toán duyệt các đỉnh của đồ thị, danh
sách L được tổ chức theo kiểu ngăn xếp (vào trước ra
sau) thì ta có phương pháp duyệt theo chiều sâu.
Trong phương pháp này mỗi lần duyệt một đỉnh ta
duyệt đến tận cùng mỗi nhánh rồi mới chuyển sang
duyệt nhánh khác.
• Duyệt đồ thị theo chiều rộng BFS (Breadth-First
Search)
Nếu trong thuật toán duyệt các đỉnh của đồ thị, danh
sách L được tổ chức theo kiểu hàng đợi (vào trước ra
trước) thì ta có phương pháp duyệt theo chiều rộng.
Trong phương pháp này việc duyệt có tính chất lan
rộng. Một đỉnh được duyệt xong ngay sau khi đã xét
hết tất cả các đỉnh kề với nó.
13


• Kiểm tra tính liên thông của đồ thị :
Hai giải thuật duyệt theo chiều sâu DFS và duyệt theo
chiều rộng BFS thường được sử dụng để kiểm tra
tính liên thông của đồ thị.
Khi duyệt các đỉnh của đồ thị tập hợp các đỉnh đã
được đánh số tạo thành một bộ phận liên thông của
đồ thị. Nếu tất cả các đỉnh của đồ thị đều được đánh

số thì kết luận đồ thị liên thông, ngược lại thì bắt
đầu từ một đỉnh chưa được duyệt, áp dụng lại giải
thuật trên tập hợp các đỉnh chưa được duyệt để tìm
bộ phận liên thông kế tiếp.

14


V. Giải thuật Prim.
Mô tả: Gọi T là cây bao trùm sẽ xây dựng
1. Chọn một đỉnh s bất kỳ của G cho vào cây T. Khi đó T
là một cây chỉ có một đỉnh và chưa có cạnh nào.
2. Nếu T đã gồm tất cả các đỉnh của G thì T là cây bao
trùm cần tìm. Kết thúc.
3. Nếu G còn có các đỉnh không thuộc T, vì G liên thông
nên có các cạnh nối một đỉnh trong T với một đỉnh
ngoài T, chọn một cạnh có trọng số nhỏ nhất trong số
đó cho vào T.
4. Quay lại 2.

15


• Kết quả vận dụng lý thuyết vào đề tài:
Nhập vào đồ thị vô hướng sau:

16


• Kiểm tra tính liên thông của đồ thị : đồ thị liên thông

Bước khởi đầu: U={1},T=∅
Bước kế tiếp ta chọn cạnh (1,3) = 1 là cạnh ngắn nhất
thỏa điều kiện của giải thuật Prim. Ta có
U={1,3},T={(1,3)}.
Kế tiếp thì cạnh (3,6) = 4 là cạnh ngắn nhất thỏa điều
kiện của giải thuật Prim. Ta có U={1,3,6},T={(1,3)
(3,6)}.
Kế tiếp thì cạnh (6,4) = 2 là cạnh ngắn nhất thỏa điều
kiện của giải thuật Prim. Ta có U={1,3,6,4},T={(1,3)
(3,6)(6,4)}.
Tiếp tục, cạnh (3,2) = 5 là cạnh ngắn nhất thỏa điều
kiện của giải thuật Prim. Ta có U={1,3,6,4,2},T={(1,3),
(3,6), (6,4),(3,2)}.

17


Cuối cùng là cạnh (2,5)=3 là cạnh ngắn nhất thỏa điều
kiện của giải thuật Prim. Ta có U={1,3,6,4,2,5},T={(1,3),
(3,6), (6,4),(3,2),(2,5),}. Giải thuật dừng và ta có cây bao
trùm như hình bên dưới.

18



×