Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
237,53 KB
Nội dung
Sắp thứ tự dãy số 5, 3, 1, 9, 8, 2, 11 heapsort om 5 ne nh Vi en Zo C 5 Si 11 SinhVienZone.com https://fb.com/sinhvienzonevn om 11 nh Vi en Zo 11 11 Si 11 1 ne C 3 SinhVienZone.com 11 11 https://fb.com/sinhvienzonevn Duyệt theo chiều sâu trước – không đệ quy Si nh Vi en Zo ne C om procedure list-dfs; var id, k: integer; val: array[1 max V] of integer; procedure visit(k: integer); var t: link; begin push(k); repeat k: = pop; id:= id + 1; val[k]: = id; /* change the status of k to “visited” */ t =: adj[k]; /* find the neighbors of the vertex k */ while t z begin if val[t v] = then begin push(t v); val[t v]: = -1 /* change the status of t v to “ready” */ end else if val[t v] = -1 then shift t v to the top of the stack; t: = t next end until stackempty end; SinhVienZone.com https://fb.com/sinhvienzonevn Zo ne C om begin id: = 0; stackinit; for k: = to V val[k]: = 0; /* initialize the status of all vertices */ for k: = to V if val[k] = then visit(k) end; Si nh Vi en Với giải thuật không đệ quy, ta cần dùng stack gọi ready stack Ghi chú: val[k] = đỉnh k “chưa viếng thăm”, val[k] = -1 đỉnh k ready stack val[k] trị dương đỉnh k viếng thăm SinhVienZone.com https://fb.com/sinhvienzonevn om Một thí dụ C A ne C I G nh Vi en Zo B H D Si F E J L K M Hình 4.1a Một đồ thị thí dụ SinhVienZone.com https://fb.com/sinhvienzonevn om ne C M L L C H I J K K K nh Vi en Zo G E D B B F F C C B B B A F F C C C Si Hình 4.3b Nội dung stack thực duyệt theo chiều sâu trước SinhVienZone.com https://fb.com/sinhvienzonevn Problem Các thành phần liên thông đồ thị Depth-first-search Si nh Vi en Zo ne C om procedure visit(k: integer); var t: link; begin push(k); repeat k: = pop; id:= id + 1; val[k]: = id; /* change the status of k to “visited” */ write(name(k)); /* print out the name of the visited vertex */ t =: adj[k]; /* find the neighbors of the vertex k */ while t z begin if val[t v] = then begin push(t v); val[t v]: = -1 /* change the status of t v to “ready” */ end else if val[t v] = -1 then shift t v to the top of the stack; t: = t next end until stackempty end; SinhVienZone.com https://fb.com/sinhvienzonevn nh Vi en Zo ne C om begin id: = 0; for k: = to V val[k]: = 0; /*initialize the status of all vetices */ for k: = to V begin if val[k] = then visit(k); /* end of one connected component*/ writeln; writeln end; end; Si Mỗi lần quay sau lượt gọi visit() vừa hoàn tất duyệt qua thành phần liên thông đồ thị SinhVienZone.com https://fb.com/sinhvienzonevn .C nh Vi en Zo ne Procedure Tree-sort(T) let T be an empty binary search trê for i := to n TreeInsert(T, A[i]); InOrder-Tree-Traversal(T); om Bài tập: TreeSort Giải thuật thứ tự bao gồm hai bước: tạo duyệt theo thứ tự in-order Si Hãy phân tích độ phức tạp giải thuật Tree-sort hai trường hợp tốt xấu SinhVienZone.com https://fb.com/sinhvienzonevn om C nh Vi en Zo ne Procedure Inorder-Tree-Traversal(T:link) begin if T z then begin Inorder-Tree-Traversal(T l); visit(T); Inorder-Tree-Traversal(T r); end end Nếu độ phức tạp giải thuật duyệt theo inorder dựa vào số lần gọi đệ quy hàm Inorder-Tree-Traversal, độ phức nạp C(n) = 2n + = O(n) với n số nút Si Như độ phức tạp giải thuật Tree-Sort chủ yếu nằm giai đoạn tạo nhị phân tìm kiếm SinhVienZone.com https://fb.com/sinhvienzonevn 10 Độ phức tạp giai đoạn tạo Trường hợp tốt nhất: nhị phân tạo cân thao tác thêm vào Do độ phức tạp vòng for tạo O(nlgn) thao tác thêm nút vào cân ln lg(n) lần so sánh Trong trường hợp xấu nhất: nhị phân tạo suy biến thành danh sách tuyến tính Khi số lần so sánh tạo gồm n nút là: + + …+ + (n-1) = n(n-1)/2 Như vập độ phức tạp giai đoạn tạo trường hợp là: O(n2) nh Vi en Si Zo ne C om SinhVienZone.com https://fb.com/sinhvienzonevn 11 om Si nh Vi en Zo ne C Tóm lại: Trường hợp xấu nhất: độ phức tạp Treesort O(n2) có dạng xâu tuyến tính tạo Trường hợp tốt nhất: độ phức tạp Treesort O(nlgn) có dạng cân tạo SinhVienZone.com https://fb.com/sinhvienzonevn 12 ... Bài tập: TreeSort Giải thuật thứ tự bao gồm hai bước: tạo duyệt theo thứ tự in-order Si Hãy phân tích độ phức tạp giải thuật Tree-sort hai trường hợp tốt xấu SinhVienZone. com https://fb .com/ sinhvienzonevn... stack gọi ready stack Ghi chú: val[k] = đỉnh k “chưa viếng thăm”, val[k] = -1 đỉnh k ready stack val[k] trị dương đỉnh k viếng thăm SinhVienZone. com https://fb .com/ sinhvienzonevn om Một thí dụ... stackempty end; SinhVienZone. com https://fb .com/ sinhvienzonevn nh Vi en Zo ne C om begin id: = 0; for k: = to V val[k]: = 0; /*initialize the status of all vetices */ for k: = to V begin if val[k] =