1
[Kinh nghiệm]Làm việc với cây khung đồ thị Tue Jun 14, 2011 9:48 am
Admin

Quản trị viên

Cây khung đồ thị là gì?
Định nghĩa của nó rất đơn giản: Cho đồ thị G = (V, E) cây khung của đồ thị T=(V, E') trong đó E' [You must be registered and logged in to see this image.] E. T liên thông và không có chu trình. Nếu /V/ = n (Đồ thị G có n đỉnh) → /E'/ = n - 1. T có n - 1 cạnh.
Tìm cây khung của đồ thị theo phép duyệt theo chiều rộng.
1. T = Ø ;
For all x Э V ĐX(x) : = False;
2. Chọn đỉnh xuất phát u.
ĐX(u) : = true;
Hàng_đợi: = {u};
3. while Hàng_đợi ≠ Ø do
a. Lấy a từ hàng đợi
b. For all x Э ke+ (a) do
if not ĐX(x) then
b1. T : = T U {(a, x)}
b2. ĐX(x) : = true
b3. Đưa x vào hàng đợi
Lưu ý:
Bài toán tìm cây kung của đồ thị thực chất là tìm tập cạnh. Trước khi trình bày thuật toán, bao giờ cũng phải đưa ra cấu trúc dữ liệu để lưu trữ cây khung. Thường cây khung được lưu dưới dạng mảng các cạnh (n - 1) cạnh.
T: array [1.. n-1] of Edge
Edge = record
đ, c: tên đỉnh //đầu cuối
end;
Bây giờ thử làm bài tập theo phần lý thuyết trên nha.
Một đề thi có câu sau:
Đồ thị G( V, t) liên thông có n đỉnh đánh số từ 1 đến n cho bởi ma trận kề A = (aij)mxn. Viết thủ tục xây dựng cây khung của đồ thị dựa trên phép duyệt theo chiều rộng.
Bài làm
- Cấu trúc cây khung cần lưu trữ vào dạng dữ liệu sau:
T: array [1.. n-1] of Edge
Edge = record
đ, c: tên đỉnh //đầu cuối
end;
- Thủ tục tạo cây khung
proc Tìm_Cây_khung;
1. for i:=1 to n do ĐX(i):= False;
2. u:= Đỉnh_xuất_phát;
ĐX(u) : = true;
MakeNull (Q); EnQueue(u, Q) {Đưa u vào hàng đợi}
k:=0;
3. while Empty (Q) = false do
a. a:= Front(Q); DeQueue(Q);
b. for x : =1 to n do
if A[a, x] = 1 and ĐX(x) = false then
k:=k+1
T[k].đ = a; T[k].c = x;
ĐX(x) : = true;
EnQueue (x, Q);
4. Output (T).
Định nghĩa của nó rất đơn giản: Cho đồ thị G = (V, E) cây khung của đồ thị T=(V, E') trong đó E' [You must be registered and logged in to see this image.] E. T liên thông và không có chu trình. Nếu /V/ = n (Đồ thị G có n đỉnh) → /E'/ = n - 1. T có n - 1 cạnh.
Tìm cây khung của đồ thị theo phép duyệt theo chiều rộng.
1. T = Ø ;
For all x Э V ĐX(x) : = False;
2. Chọn đỉnh xuất phát u.
ĐX(u) : = true;
Hàng_đợi: = {u};
3. while Hàng_đợi ≠ Ø do
a. Lấy a từ hàng đợi
b. For all x Э ke+ (a) do
if not ĐX(x) then
b1. T : = T U {(a, x)}
b2. ĐX(x) : = true
b3. Đưa x vào hàng đợi
Lưu ý:
Bài toán tìm cây kung của đồ thị thực chất là tìm tập cạnh. Trước khi trình bày thuật toán, bao giờ cũng phải đưa ra cấu trúc dữ liệu để lưu trữ cây khung. Thường cây khung được lưu dưới dạng mảng các cạnh (n - 1) cạnh.
T: array [1.. n-1] of Edge
Edge = record
đ, c: tên đỉnh //đầu cuối
end;
Bây giờ thử làm bài tập theo phần lý thuyết trên nha.
Một đề thi có câu sau:
Đồ thị G( V, t) liên thông có n đỉnh đánh số từ 1 đến n cho bởi ma trận kề A = (aij)mxn. Viết thủ tục xây dựng cây khung của đồ thị dựa trên phép duyệt theo chiều rộng.
Bài làm
- Cấu trúc cây khung cần lưu trữ vào dạng dữ liệu sau:
T: array [1.. n-1] of Edge
Edge = record
đ, c: tên đỉnh //đầu cuối
end;
- Thủ tục tạo cây khung
proc Tìm_Cây_khung;
1. for i:=1 to n do ĐX(i):= False;
2. u:= Đỉnh_xuất_phát;
ĐX(u) : = true;
MakeNull (Q); EnQueue(u, Q) {Đưa u vào hàng đợi}
k:=0;
3. while Empty (Q) = false do
a. a:= Front(Q); DeQueue(Q);
b. for x : =1 to n do
if A[a, x] = 1 and ĐX(x) = false then
k:=k+1
T[k].đ = a; T[k].c = x;
ĐX(x) : = true;
EnQueue (x, Q);
4. Output (T).
================
Nếu Khách viếng thăm không đọc được các bài trong Kho bài chuẩn, là do Khách viếng thăm không tham gia được vào nhóm [You must be registered and logged in to see this link.]. Sở dĩ nếu Khách viếng thăm không tham gia được vào nhóm [You must be registered and logged in to see this link.] là vì Khách viếng thăm khai báo thiếu họ, thiếu tên, không dấu hoặc khai báo linh tinh trong trường RN. Đừng xin xỏ uỷ quyền, vì uỷ quyền hoàn toàn tự động cho Thành viên đọc được mọi thứ (không chỉnh bằng tay được), các thành viên khác sẽ không bao giờ được uỷ quyền.
[You must be registered and logged in to see this image.]
Trang phục may sẵn rẻ nhất Hà Nội ở 133 Vương Thừa Vũ
[You must be registered and logged in to see this link.]
Trang phục may sẵn rẻ nhất Hà Nội ở 133 Vương Thừa Vũ
[You must be registered and logged in to see this link.]