Tài liệu phân tích và thiết kế giải thuật

12 15 0
Tài liệu phân tích và thiết kế giải thuật

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Sắp thứ tự dãy số 5, 3, 1, 9, 8, 2, 11 heapsort 9 8 5 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt 8 5 11 11 3 11 11 1 3 CuuDuongThanCong.com 11 11 https://fb.com/tailieudientucntt Duyệt theo chiều sâu trước – không đệ quy 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; CuuDuongThanCong.com https://fb.com/tailieudientucntt 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; 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt Một thí dụ A H B C D I G E J K F L M Hình 4.1a Một đồ thị thí dụ CuuDuongThanCong.com https://fb.com/tailieudientucntt G E D B B F F C C B B B A F F C C C M L L C H I J K K K Hình 4.3b Nội dung stack thực duyệt theo chiều sâu trước CuuDuongThanCong.com https://fb.com/tailieudientucntt Problem Các thành phần liên thông đồ thị Depth-first-search 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; CuuDuongThanCong.com https://fb.com/tailieudientucntt 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; 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ị CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập: TreeSort Procedure Tree-sort(T) let T be an empty binary search trê for i := to n TreeInsert(T, A[i]); InOrder-Tree-Traversal(T); Giải thuật thứ tự bao gồm hai bước: tạo duyệt theo thứ tự in-order 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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) CuuDuongThanCong.com https://fb.com/tailieudientucntt 11 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 12 ... TreeInsert(T, A[i]); InOrder-Tree-Traversal(T); Giải thuật thứ tự bao gồm hai bước: tạo duyệt theo thứ tự in-order 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 CuuDuongThanCong.com... 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 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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

Ngày đăng: 06/12/2021, 14:44

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

  • Đang cập nhật ...

Tài liệu liên quan