Cấu trúc dữ liệu và giải thuật nâng cao (tài liệu tham khảo)

11 28 0
  • Loading ...
1/11 trang

Thông tin tài liệu

Ngày đăng: 25/02/2019, 22:34

Cấu trúc liệu giải thuật nâng cao (Tài liệu tham khảo) BÀI TẬP CHƯƠNG I Bài 1: Nêu bước cài đặt chương trình sử dụng quy hoạch động Các bước cài đặt chương trình sử dụng quy hoạch động: - Giải tất toán sở, lưu lời giải vào bảng phương án - Dùng công thức truy hồi, phối hợp lời giải toán nhỏ lưu bảng phương án để tìm lời giải toán lớn lưu chúng vào bảng phương án toán ban đầu tìm lời giải - Dựa vào bảng phương án, truy vết tìm nghiệm tối ưu Bài 2: Nêu khái niệm cách tiếp cận quy hoạch động So sánh đệ quy quy hoạch động Minh họa so sánh tính số fibonacci thứ hoạch số fibonacci thứ Bài 3: Xét tốn tìm dãy đơn điệu tăng dài nêu toán đưa ví dụ minh họa: dãy đơn điệu có phần từ, phần tử phần tử sử dụng phương pháp quy hoạch động tạo tìm dãy đơn điệu tăng dài Bài 4: Xét tốn túi nêu tốn cho ví dụ minh họa sử dụng phương pháp qui hoạch động phân tích tốn nêu cơng thức truy hồi áp dụng phương pháp qui hoạch động toán phương án toán m = 11 Cho toán túi với trọng lượng túi m = 11 có n = mặt hàng W[1] = v[1] = W[2] = v[2] = W[3] = v[3] = W[4] = 10 v[4] = W[5] = v[5] = f j=0 (n,m) 10 11 i=0 0 0 0 0 0 0 0 3 3 3 3 0 4 7 7 0 5 8 8 12 0 5 9 12 0 5 9 12 Truy vết: Chọn mặt hàng f = 12 -> mặt hàng i = với v = Chọn tiếp để v có 12 – = Được mặt hàng i = với v = Chọn tiếp để v = – = Được mặt hàng i = với v = Vậy chọn mặt hàng i = 1, 2, GTLN 12 Lớp Ths CNTT K25 23/11/2017 Cấu trúc liệu giải thuật nâng cao (Tài liệu tham khảo) Bài 5: Tìm dãy chung BÀI TẬP CHƯƠNG II Bài 1: Trình bày thuật tốn chia để trị, nêu bước, sơ đồ thuật toán, viết hàm thuật tốn chia để trị đề qui • Thuật toán chia để trị: Chia để trị phương pháp thiết kế thuật toán từ xuống với ý tưởng - Chia toán thành toán nhỏ có dạng giống ban đầu - Các tốn nhỏ chia thành toán nhỏ Các bước Bước 1: Chia toán thành phần Bước 2: Giải phần độc lập Bước 3: Kết hợp lời giải phần Bước thành lời giải tốn • Sơ đồ Lớp Ths CNTT K25 23/11/2017 Cấu trúc liệu giải thuật nâng cao (Tài liệu tham khảo) - • Hàm thuật tốn chia để trị - đệ qui: Void chiadetri (x: baitoan): Giải pháp { if (x nhỏ đơn giản) rerun (giải x thuật toán đơn giản) else { chia x thành toán x1, x2… for (i=1, i a[m] tìm bên a[m+1… r] Bài 4: Trình bày thuật tốn nhân ma trận nêu toán, viết hàm theo thuật toán vét cạn, nêu toán viết hàm theo thuật toán chia để trị * Bài toán nhân ma trận vng có n phần tử C =A* B * Thuật toán vét cạn Void matrixproduct (int a [ ], int b [ ], int n) { int i, j, k, for ( i= 0, i < n, i + +) { for ( j = 0, j < n, j + +) c [ i, j] = 0; for ( k = 0, k < n, k + +) c [ i, j] = c [ i, j] + a [ i, k] * b [ k, j] } return ( c); } * Thuật toán chia để trị - Giả sử n = - Chia ma trận A, B, C thành ma trận có kích thước n/2 Khi C = A * B tương ứng r s a b e f = t u c d g h Từ đó, ta có: r = ae + bg s = af + bh t = ce + dg u = cf + dh * Hàm chia để trị: Void matrixpro (int A [ ], int B [ ], int n) { If (n =1) return ( A, B) Else { chia A,B thành ma trận kích thước n/2: a, b, c, d, e, f, g, h; r = matrixpro ( a, e, n/2); matrixpro ( b, g, n/2); s = matrixpro ( a, f, n/2); matrixpro ( b, h, n/2); t = matrixpro ( c, e, n/2); matrixpro ( d, g, n/2); Lớp Ths CNTT K25 23/11/2017 Cấu trúc liệu giải thuật nâng cao (Tài liệu tham khảo) u = matrixpro ( c, f, n/2); matrixpro ( d, h, n/2); } } Độ phức tạp: C (n)= C ( n/2) + n2 , C ( 1) -1 n2 số phép cộng Bài 5: Trình bày thuật tốn chia để trị với toán Quick sort, Merse sort nêu toán nêu ý tưởng * Quick - sort: ( Sắp xếp nhanh) Bài toán: B1: Chia bảng T ( p …r) chia thành phần T ( p… q) T ( q + … r) cho phần tử bảng nhỏ bảng B2: Trị: Mỗi bảng xếp đệ qui B3: Hợp: Vì bảng vị trí Kết thúc Ý tưởng: B1: Chọn phần tử trung tâm p B2: Chia làm phần tử: Phần bên trái gồm phần tử nhỏ p Phần bên phải gồm phần tử lớn hay p B3: Sắp xếp phần bên trái phần bên phải cách đệ quy Thuật toán: Quick - sort: ( A, p, r) { If ( q < r) then { q = Partition ( A, p, r) ; Quick Sort ( A, p, q) ; Quick Sort ( A, q + 1, r) ; } } * Merge Sort ( Sắp xếp xen kẽ) - Ý tưởng: Để xếp bảng T: Chia T thành bảng độ dài = Sắp xếp bảng Từ bảng sắp, xếp xen kẽ lại để bảng T xếp ( Chú ý: bước thực đệ qui) - Thuật tốn: B1: Tính k = n div B2: Sắp xếp a [1……k] B3: Sắp xếp a [( k + 1) ….n] B4: Trộn dãy sx a [1……k] [( k + 1) ….n] thành dãy a [1……n] sx Lớp Ths CNTT K25 23/11/2017 Cấu trúc liệu giải thuật nâng cao (Tài liệu tham khảo) Hàm: Merge – Sort ( A, p, r) { if p < r then { q = [ ( p + r – 1)/2] ; Merge – Sort ( A, p, q); Merge – Sort ( A, p + 1, r); Merge ( A, p, q, r); } } BÀI TẬP CHƯƠNG III Bài 1: Cây nhị phân khái niệm cho ví dụ minh họa có phần tử; nhị phân, nhị phân dạng đặc biệt (3 dạng), nhị phân dùng để biểu diễn biểu thức tốn học Bài 2: Trình bày biểu diễn nhị phân lưu trữ danh sách cấu trúc, khai báo tổng qt mơ tả, hình ảnh, cho ví dụ minh họa tạo nhị phân tìm kiếm từ dãy cho số (hoặc chữ cái) cho biết kết phép duyệt in giá trị node Bài 3: Nêu phép duyệt nhị phân hàm duyệt nhị phân tính tổng info phần tử, tìm in info gồm số chẵn, tìm in info số nguyên tố (hoặc số hoàn hảo) với hàm ktrangto, ktrahhao có … Bài 4: Trình bày ứng dụng nhị phân nhị phân biểu diễn biểu thức tạo nhị phân tìm kiếm TẬP DUYỆT GIỮA KỲ Bài 1: Nêu bước cài đặt chương trình sử dụng qui hoạch động Áp dụng phân tích đưa cách viết hàm tính tổng S(n) = 12 + 32 + 52 + … + (2n-1)2 Các bước cài đặt chương trình sử dụng quy hoạch động: Giải tất toán sở, lưu lời giải vào bảng phương án Dùng công thức truy hồi, phối hợp lời giải toán nhỏ lưu bảng phương án để tìm lời giải tốn lớn lưu chúng vào bảng phương án tốn ban đầu tìm lời giải Dựa vào bảng phương án, truy vết tìm nghiệm tối ưu Cách viết hàm: Dùng hàm for int TinhTong (int n){ int tong = 0, i; for (i = 1; iinfo); PreOrder (p->left); PreOrder (p->right); } } Duyệt theo thứ tự (LNR) Inorder void InOrder (node * t){ node * p ; p = t; if (p != NULL) { InOrder (p->left); printf (“%d”, p->info); InOrder (p->right); } Lớp Ths CNTT K25 23/11/2017 Cấu trúc liệu giải thuật nâng cao (Tài liệu tham khảo) } Duyệt theo thứ tự sau (LRN) Postorder void PostOrder (node * t){ node * p ; p = t; if (p != NULL) { PostOrder (p->left); PostOrder (p->right); printf (“%d”, p->info); } } Bài 4: Trình bày ứng dụng nhị phân: Cây nhị phân biểu diễn biểu thức, tạo nhị phâm tìm kiếm BÀI TẬP CHƯƠNG IV Bài 1: Cho đồ thị G1, G2 Hãy biểu diễn đồ thị G1, G2 bằng: danh sách liền kề, ma trận liền kề, danh sách cạnh lưu vào nhớ theo dạng Danh sách liền kề đồ thị G1 Đỉnh đầu Đỉnh cuối 2, 3, 1, 3 1, ,4 Lớp Ths CNTT K25 23/11/2017 Cấu trúc liệu giải thuật nâng cao (Tài liệu tham khảo) 3, 5 1, Danh sách liền kề đồ thị G2 Đỉnh đầu Đỉnh cuối 5 Ma trận liền kề G1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 Ma trận liền kề G2 Lưu danh sách cạnh G1: 1,2 1,3 1,5 Móc Lớp Ths CNTT K25 2,1 2,3 3,1 3,2 3,4 10 4,3 4,5 5, 5,4 Mảng nối 23/11/2017 Cấu trúc liệu giải thuật nâng cao (Tài liệu tham khảo) Bài 2: Cho đồ thị G Hãy biểu diễn đồ thị G bằng: ma trận liền kề, danh sách cạnh lưu vào nhớ theo dạng danh sách liền kề ma trận trọng số Ma trận trọng số: ∞ 10 20 1 10 ∞ ∞ 20 ∞ ∞ ∞ Thuật tốn tìm đường dijktra Tập T a b c d e z (0, -) (∞, -) (∞, -) (∞, -) (∞, -) (∞, -) a (0, -)* (1,a) (2,a) (∞, -) (∞, -) (∞, -) ba - (1,a)* (2,a) (6,b) (∞, -) (∞, -) cba - - (2,a)* Lớp Ths CNTT K25 11 23/11/2017 ... thành phần Bước 2: Giải phần độc lập Bước 3: Kết hợp lời giải phần Bước thành lời giải tốn • Sơ đồ Lớp Ths CNTT K25 23/11/2017 Cấu trúc liệu giải thuật nâng cao (Tài liệu tham khảo) .. .Cấu trúc liệu giải thuật nâng cao (Tài liệu tham khảo) Bài 5: Tìm dãy chung BÀI TẬP CHƯƠNG II Bài 1: Trình bày thuật toán chia... danh sách cạnh lưu vào nhớ theo dạng Danh sách liền kề đồ thị G1 Đỉnh đầu Đỉnh cuối 2, 3, 1, 3 1, ,4 Lớp Ths CNTT K25 23/11/2017 Cấu trúc liệu giải thuật nâng cao (Tài liệu tham khảo)
- Xem thêm -

Xem thêm: Cấu trúc dữ liệu và giải thuật nâng cao (tài liệu tham khảo) , Cấu trúc dữ liệu và giải thuật nâng cao (tài liệu tham khảo)

Gợi ý tài liệu liên quan cho bạn