Bài Tập lý thuyết đồ thị 1

9 1.8K 41
Bài Tập lý thuyết đồ thị 1

Đang tải... (xem toàn văn)

Thông tin tài liệu

Bài Tập lý thuyết đồ thị 1

9 1-VHA Lý Thuyết Đồ Thị HƯỚNG DẪN THỰC HÀNH TUẦN 2 DUYỆT VÀ TÌM CÁC THÀNH PHẦN LIÊN THÔNG. I. Đồ thị liên thông: Đồ thị liên thông là đồ thị chỉ có một thành phần liên thông. Các thuật toán được sử dụng: − DFS (Depth First Search). − BFS (Breadth First Search) 1. Thuật toán DFS Bước 1 Khởi đầu L={0, 0, 0, 0, 0} S={1} P={ φ } 9 2-VHA Thuyết Đồ Thị Bước 2 S={4} P={1} Bước 3 S={2} P={1,4} Bước 5 S={5} P={1,4,2} Bước 6 S={3} P={1,4,2,5} 9 3-VHA Thuyết Đồ Thị Bước 7 S={ φ } P={1,4,2,5,3} 2.1 Cài đặt:  Đệ Quy Thủ tục Visit(đỉnh i, nhãn label) Gán nhãn label cho đỉnh i Với mọi đỉnh j mà có cạnh nối với i Nếu j có nhãn 0 thì Gọi đệ quy Visit(j, label) Cuối với mọi. Cuối thủ tục. Thủ tục Đối tượng void visit(int **a,int label, int n, int b[], int u) { //… } void DFS( int **a,int n) { int b[MAX];//mang chua nhan cua dinh //nhan dinh tuong ung la 0 for(int i=0;i<n;i++) b[i]=0; class CConnectComponents { private: int NComponents; int label[MAX]; public: CConnectComponents(void); ~CConnectComponents(void); void DFS(GRAPH g); void visit(int u, int label,GRAPH g); }; 9 4-VHA Thuyết Đồ Thị int tp=1; //… }  Cài đặt không đệ quy: <Thăm S, đánh dấu S đã thăm>; <Đẩy S vào ngăn xếp>; // Dây chuyền đệ quy ban đầu chỉ có một đỉnh S do { <Lấy u khỏi ngăn xếp>; // Đang đứng ở đỉnh u if <u có đỉnh kề chưa thăm> { <Chỉ chọn lấy 1 đỉnh v, là đỉnh đầu tiên kề u mà chưa được thăm>; <Thông báo thăm v>; <Đẩy u trở lại ngăn xếp>; // Giữ lại địa chỉ quay lui <Đẩy tiếp v vào ngăn xếp>; // Dây chuyền duyệt sâu được "nối" thêm v nữa } // Còn nếu u không có đỉnh kề chưa thăm thì ngăn xếp sẽ ngắn lại, tương ứng với quá trình lùi về của dây chuyền DFS } while <Ngăn xếp khác rỗng>; 9 5-VHA Thuyết Đồ Thị 2. Thuật toán BFS Queue: φ Queue: 1 Queue: φ Queue: 2 3 Queue: 2 3 9 6-VHA Thuyết Đồ Thị Queue: 3 Queue: 3 4 Queue:4 Queue: 5 9 7-VHA Thuyết Đồ Thị Queue: φ Queue: φ  Cài đặt int a[max][max]; // Ma trận kề của đồ thị int Free[max]; // Free[v] = 0 v chưa được thăm đến ⇔ int Queue[max]; int n, S, F, First, Last; void Push(int V) // Đẩy một đỉnh V vào hàng đợi { Last++; Queue[Last] = V; } int Pop() // Lấy một đỉnh khỏi hàng đợi, trả về trong kết quả hàm { int x = Queue[First]; First++; return x; } 9 8-VHA Lý Thuyết Đồ Thị void BFS() // Thuật toán tìm kiếm theo chiều rộng { int u, v; Queue[1] = S; // Hàng đợi chỉ gồm có một đỉnh S Last = 1; First = 1; do { u = Pop; // Lấy một đỉnh u khỏi hàng đợi for (v = 1; v<=n; v++) if (// có cạnh nối với u và chưa được gán nhãn ) { // Đưa v vào hàng đợi để chờ thăm // Thăm v, đánh dấu v đã thăm } } while (First<=Last); // Còn thực hiện khi hàng đợi khác rỗng } II. Bài Tập Cho đồ thị G= (V, U) tìm các thành phần liên thông của đồ thị G, hãy sử dụng lại phần hướng dẫn thực hành tuần 1. − Viết chương trình xuất ra file kiểm tra đồ thị có liên thông hay không ? Nếu có xuất ra ’LIENTHONG’ ngược lại ‘KHONGLIENTHONG’, trường hợp đồ thị có thành phần liên thông thì xuất ra có bao nhiêu thành phần liên thông và các đỉnh tương ứng với từng thành phần liên thông đó theo thứ tự thành phần liên thông nào có ít đỉnh nhất in ra trước, nếu hai thành phần liên thông có cùng số đỉnh , thì thành phần liên thông nào có đỉnh nhỏ hơn sẽ được in ra trước.  Dùng thuật toán duyệt theo chiều sâu DFS (Depth First Search). − Đệ quy. − Không đệ quy.  Dùng thuật toán duyệt theo chiều sâu BFS (Breadth First Search). − Đệ quy. − Không đệ quy. 9 9-VHA Lý Thuyết Đồ Thị Tài liệu tham khảo : [1.] Huỳnh Lê Tấn Tài, Bài tập thực hành thuyết đồ thị, Khoa CNTT-TUD, ĐH Tôn Đức Thắng. [2.] Bài tập thực hành thuyết đồ thị, Khoa CNTT, ĐH Khoa Học Tự Nhiên. . quy. 9 9-VHA Lý Thuyết Đồ Thị Tài liệu tham khảo : [1. ] Huỳnh Lê Tấn Tài, Bài tập thực hành Lý thuyết đồ thị, Khoa CNTT-TUD, ĐH Tôn Đức Thắng. [2.] Bài tập thực hành Lý thuyết đồ thị, Khoa CNTT,. rỗng>; 9 5-VHA Lý Thuyết Đồ Thị 2. Thuật toán BFS Queue: φ Queue: 1 Queue: φ Queue: 2 3 Queue: 2 3 9 6-VHA Lý Thuyết Đồ Thị Queue: 3 Queue: 3 4 Queue:4 Queue: 5 9 7-VHA Lý Thuyết Đồ Thị Queue:. Search) 1. Thuật toán DFS Bước 1 Khởi đầu L={0, 0, 0, 0, 0} S= {1} P={ φ } 9 2-VHA Lý Thuyết Đồ Thị Bước 2 S={4} P= {1} Bước 3 S={2} P= {1, 4} Bước 5 S={5} P= {1, 4,2} Bước 6 S={3} P= {1, 4,2,5} 9 3-VHA Lý

Ngày đăng: 04/06/2014, 17:58

Từ khóa liên quan

Mục lục

  • 2.1 Cài đặt:

  • Tài liệu tham khảo :

Tài liệu cùng người dùng

Tài liệu liên quan