CHƯƠNG 5 CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT potx

188 2.5K 4
CHƯƠNG 5 CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT potx

Đ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

CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT 1 CHƯƠNG 5 Nội dung  Qui hoạch động  Giải thuật tham lam  Giải thuật quay lui (backtracking)  Giải thuật nhánh và cận 2  Nội dung  Kỹ thuật đệ qui hoặc ngay cả phương pháp chia để trị có thể phải giải nhiều lần một bài toán con, nên giảm hiệu quả  Kỹ thuật qui hoạch động khắc phục hạn chế này bằng cách giải các bài toán con trước khi giải bài toán đã cho  Kết quả các bài toán con được lưu trữ vào các bảng và sau đó khỏi phải tính lại khi gặp lại bài toán con đó.  Trong thiết kế cần tìm được mối ràng buộc giữa bài toán cần giải và bài toán con, sự liên hệ thường là các hệ thức truy hồi  Qui hoạch động là một phương pháp rất hiệu quả và được áp dụng cho những bài toán tối ưu hóa (optimization problem). 3 Qui hoạch động (bỏ) • Quy hoạch động (dynamic programming) giải các bài toán bằng cách kết hợp các lời giải của các bài toán con của bài toán đang xét. • Phương pháp này khả dụng khi các bài toán con không độc lập đối với nhau, tức là khi các bài toán con có dùng chung những bài toán “cháu” (subsubproblem). • Qui hoạch động giải các bài toán “cháu” dùng chung này một lần và lưu lời giải của chúng trong một bảng và sau đó khỏi phải tính lại khi gặp lại bài toán cháu đó. • Qui hoạch động được áp dụng cho những bài toán tối ưu hóa (optimization problem). Qui hoạch động Quy hoạch động là một ký thuật thiết kế thuật toán trong Quy hoạch động là một ký thuật thiết kế thuật toán trong đó: đó: Bài toán được chia thành những bài toán con kích thước nhỏ hơn và giải chúng một cách độc lập, ghi lại các kết quả, để tổng hợp thành lời giải của bài toán ban đầu Khác với chia để trị: Khác với chia để trị: Trong giải thuật chia để trị: Trong giải thuật chia để trị: Các bài toán con độc lập, sau đó các bài toán con này được giải một cách đệ quy. Trong giải thuật quy hoạch động: Trong giải thuật quy hoạch động: Các bài toán con là không độc lập với nhau, nghĩa là các bài toán con cùng có chung các bài toán con nhỏ hơn. Ba giai đoạn của quy hoạch động  Phân rã: Chia bài toán cần giải thành những bài toán con nhỏ hơn có cùng dạng với bài toán ban đầu sao cho bài toán con kích thước nhỏ nhất có thể giải một cách trực tiếp. Bài toán xuất phát có thể coi là bài toán con có kích thước lớn nhất  Giải các bài toán con và ghi nhận lời giải: Lưu trữ lời giải của các bài toán con vào một bảng để sử dụng lại nhiều lần do đó không phải giải lặp lại cùng một bài toán.  Tổng hợp lời giải: Lần lượt từ lời giải của các bài toán con kích thước nhỏ hơn xây dựng lời giải của bài toán kích thước lớn hơn, cho đến khi thu được lời giải của bài toán xuất phát (là bài toán con có kích thước lớn nhất). Lược đồ quy hoạch động Phân rã Giải và ghi nhận lời giải các bài toán con Tổng hợp lời giải Bottom- Up Kỹ thuật giải các bài toán con của quy hoạch động là quá trình đi từ dưới lên (bottom – up) là điểm khác quan trọng với phương pháp chia để trị, trong đó các bài toán con được trị một cách đệ quy (top – down). Các yếu tố của một giải thuật quy hoạch động giải bài toán tối ưu  Cơ sở của quy hoạch động: Những trường hợp đơn giản có thể tính trực tiếp  Cấu trúc con tối ưu: Phương pháp chia nhỏ các bài toán cho đến khi gặp được bài toán cơ sở.  Tổng hợp: hệ thức truy hồi tính giá trị tối ưu của hàm mục tiêu của bài toán lớn qua giá trị tối ưu của các bài toán con thành phần. Hiệu quả của quy hoạch động  Khi có các bài toán con lồng nhau, phương pháp chia để trị sẽ tỏ ra không hiệu quả, khi nó phải lặp đi lặp lại việc giải các bài toán con chung đó.  Quy hoạch động sẽ giải mỗi bài toán con một lần và lời giải của các bài toán con sẽ được ghi nhận, để thoát khỏi việc giải lại bài toán con mỗi khi ta đòi hỏi lời giải của nó.  Quy hoạch động thường được áp dụng để giải các bài toán tối ưu. Trong các bài toán tối ưu, ta có một tập các lời giải, và một hàm mục tiêu nhận giá trị số. Ta cần tìm một lời giải để hàm mục tiêu đạt giá trị nhỏ nhất hoặc lớn nhất. Lược đồ thuật giải Dynamic_Pro(A, x) 1. Chia bài toán cần giải thành nhiều bài toán con kích thước tăng dần 2. Sử dụng một bảng, lần lượt giải và lưu trữ lời giải x1, …,xn của các bài toán con A1, …, An từ kích thước nhỏ đến lớn vào bảng sao cho việc giải các bài toán có thể sử dụng kết quảcác bài toán con trước đó 3. Lời giải bài toán đã cho A được tính toán cuối cùng làx=xn [...]... F_Dynamic_Programming(n) 1 f[1] ←1 // tạo ra một bảng (danh sách) để lưu trữ 2 f[2] ←1 // kết qu các bài toán con 3 For i ←3 to n 4 do f[i] ←f[i-1] +f[i-2] // Giải các bài toán lớn hơn 5 returnf[n] // Kết quả Thí dụ 3: Thí dụ 3: Giải: Dùng bảng hai chiều C[i,j] để lưu trữ các giá trị của các tổ hợp Cij như là kết quả các bài toán con của c[k, n] C[i,j] = 1 nếu i = 0 hoặc i = j C[i, j] = C[i, j-1] + C[i-1,... F(n)=F(n-2)+F(n-1) với n>1 Ví dụ: F(2)=1, F(3)= 2, F(4) = 3 , F (5) =5, F(6)=8  Ví dụ về bài toán con lồng nhau Tính số Fibonaci thứ n Tính theo đệ quy {top down}: Function Fibonaci(n); if (n 2 4 then return f(n-1) + f(n-2) Thí dụ2: Thí dụ 2: Lời giải bằng kỹ thuật qui hoạch động đểtính... tập độc lập lớn nhất trên cây: Công thức đệ quy Mã của giải thuật Ví dụ minh họa Tập độc lập trong đồ thị Định nghĩa: Cho G = (V,E) là đơn đồ thị vô hướng Một tập con U các đỉnh của đồ thị được gọi là tập độc lập, nếu như hai đỉnh bất kỳ trong U là không kề nhau trong G F B A C E H I Trong đồ thị bên :  tập các đỉnh {A, H, D} là độc lập  tập các đỉnh {F, E, I, , D, G} là không độc lập D G Tập độc... hồi: Giả sử v có các cây con gốc u1, u2 , uk Gọi U là tập độc lập của cây con gốc v  Bài toán con 1: Nếu U chứa v thì không chứa u , u , u 1 2 k   BigR(v)= W(v) + Σ BigNotR(ui) (tổng chạy qua tất cả các con của v) Bài toán con 2: Nếu tập độc lập U không chứa v thì nó là hợp của các tập độc lập của các cây con Do đó BigNotR(v) = Σ Big(ui) Tổng hợp: Big(v) = max{BigR(v) , BigNotR(v)} Thuật toán quy... Σ Big(ui) Tổng hợp: Big(v) = max{BigR(v) , BigNotR(v)} Thuật toán quy hoạch động  Theo các công thức trên, để tính Big(v) ta phải dựa vào các giá trị Big(u), BigNotR(u) với mọi đỉnh con u là con của V Do đó ta sẽ dùng phương pháp duyệt hậu thứ tự để tính các hàm Big, BigR và BigNotR từ dưới lên  Các bước của thuật toán như sau: 1 Khởi tao: Mọi đỉnh của v chưa đươc duyệt; 2 Duyệt hậu thứ tự: Ở mỗi... vô hướng có hàm trọng số W(v) xác định trên các đỉnh v ∈V (w: V → R+) Nếu U là tập độc lập, thì ta gọi trọng số của U là tổng trọng số của các đỉnh trong nó Ta sẽ gọi tập độc lập với trọng số lớn nhất là tập độc lập lớn nhất   Bài toán tập độc lập lớn nhất trên đồ thị là một bài toán khó Tuy nhiên, khi đồ thị G là cây bài toán này có thể giải hiệu quả bởi thuật toán quy hoạch động Bài toán tập độc... Hàm trọng số trên tập các đỉnh w: V → R OUTPUT  Tập con độc lập U ⊂ V có Σw(u) , u ∈U lớn nhất PHÂN RÃ thành các bài toán con Với mỗi đỉnh v ∈ V, xét cây con T(v) của T có gốc tại đỉnh v Kí hiệ u  Big(v) là trọng số của của tập độc lập lớn nhất của cây con T(v)  BigR(v) là trọng số lớn nhất của các tập độc lập của cây con T(v) có chứa v  BigNotR(v) là trọng số lớn nhất của các tập độc lập của cây... . CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT 1 CHƯƠNG 5 Nội dung  Qui hoạch động  Giải thuật tham lam  Giải thuật quay lui (backtracking)  Giải thuật nhánh và cận 2  Nội dung  Kỹ thuật đệ. một ký thuật thiết kế thuật toán trong Quy hoạch động là một ký thuật thiết kế thuật toán trong đó: đó: Bài toán được chia thành những bài toán con kích thước nhỏ hơn và giải chúng một cách. programming) giải các bài toán bằng cách kết hợp các lời giải của các bài toán con của bài toán đang xét. • Phương pháp này khả dụng khi các bài toán con không độc lập đối với nhau, tức là khi các

Ngày đăng: 25/07/2014, 16:20

Từ khóa liên quan

Mục lục

  • CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT

  • Nội dung

  • Slide 3

  • Qui hoạch động (bỏ)

  • Qui hoạch động

  • Ba giai đoạn của quy hoạch động

  • Lược đồ quy hoạch động

  • Các yếu tố của một giải thuật quy hoạch động giải bài toán tối ưu

  • Hiệu quả của quy hoạch động

  • Lược đồ thuật giải

  • Ví dụ về bài toán con lồng nhau Tính số Fibonaci thứ n

  • Slide 12

  • So sánh hai giải thuật

  • Tính F5

  • Dùng Quy hoạch động để tính số Fibonacy thứ n

  • Thí dụ 2:

  • Slide 17

  • Thí dụ2:

  • Slide 19

  • Thí dụ 3:

  • Slide 21

  • Slide 22

  • Slide 23

  • Các ví dụ áp dụng quy hoạch động

  • Tập độc lập lớn nhất trên cây

  • Tập độc lập trong đồ thị

  • Tập độc lập lớn nhất của đồ thị

  • Bài toán tập độc lập lớn nhất trong cây

  • PHÂN RÃ thành các bài toán con

  • Trường hợp cơ sở và công thức truy hồi

  • Thuật toán quy hoạch động

  • Tính Big(v) tại đỉnh v

  • Tìm tập độc lập lớn nhất của cây nhờ duyệt hậu thứ tự

  • Ví dụ: tập độc lập lớn nhất trong cây

  • Bài toán cái túi (dạng 0-1).

  • Phân rã

  • Công thức truy hồi

  • Mã: Giải thuật Bag_Best

  • Ví dụ

  • Giải

  • Bài toán dãy con chung dài nhất

  • Phân rã .

  • Bài toán con cơ sở và tổng hợp

  • Công thức truy hồi để tính C[i,j].

  • Procedure LCS(X,Y)

  • Ví dụ: Dãy con chung dài nhất là HDA

  • Slide 47

  • Bài toán dãy con liên tiếp có tổng lớn nhất

  • Slide 49

  • Phân rã

  • Phân rã .....

  • Tính MaxE(i)

  • Procedure Maxsub(a);

  • Ví dụ Dãy con có tổng lớn nhất

  • Nhân dãy ma trận

  • Slide 56

  • Bài toán nhân dãy ma trận

  • Số cách thực hiện dãy phép nhân n ma trận

  • Có bao nhiêu cách tính M1M2...Mn?

  • Có bao nhiêu cách?

  • Cách tính tối ưu?

  • Phân rã (Xác định cấu trúc con tối ưu).

  • Phân rã bài toán

  • Trường hợp cơ sở

  • Công thức đệ quy

  • Slide 66

  • Với s = 2, d = (2, 5, 4, 3, 7).

  • Ví dụ với d = (2, 5, 4, 3, 7).

  • Ví dụ với d = (2, 5, 4, 3, 7).

  • Slide 70

  • Độ phức tạp tính toán

  • Slide 72

  • Mã giả tựa Pascal tính m[i,j]

  • Nhân hai ma trận với mảng h[i,j] tính từ thủ tục trên

  • Bài tập

  • Giải thuật tham lam

  • Ý tưởng phương pháp tham lam

  • Slide 78

  • Slide 79

  • Slide 80

  • Slide 81

  • Sơ đồ chung của giải thuật tham lam

  • Sơ đồ

  • Lược đồ giải thuật

  • Các ví dụ:Bài toán lựa chọn công việc

  • Tính chất lời giải

  • CHỨNG MINH

  • Giải thuật tham lam giải bài toán lựa chọn công việc

  • Giải thuật tham lam giải bài toán lựa chọn công việc: Ví dụ

  • Giải Ví dụ

  • Bài toán người bán hàng

  • Slide 92

  • Slide 93

  • Bài toán cái túi dạng phân số (Fractional knapsack problem)

  • Bài toán cái túi dạng phân số (tt.)

  • Slide 96

  • Slide 97

  • Mã nén Huffman

  • Slide 99

  • Mã tiền tố

  • Biểu diễn mã tiền tố bằng cây nhị phân

  • Mã tiền tố biểu diễn bởi cây nhị phân

  • Mã tiền tố tối ưu

  • Ví dụ: DINHDANGDINH

  • Ví dụ - Tiếp

  • Giải thuật của Huffman xây dựng cây biểu diễn mã tiền tố tối ưu

  • Giải thuật

  • Ví dụ minh họa giải thuật Huffman

  • Bước 1

  • Bước 3

  • Kết quả H=00 D=01 N=10 A=1100 G=1101 I=111

  • Các kỹ thuật khi cài đặt thủ tục sinh bộ mã Huffman

  • Biểu diễn cây nhị phân bằng mảng theo quan hệ con  cha

  • Lưu trữ cấu trúc cây Huffman vào mảng Huff

  • Xây dựng mảng Huff

  • Dựa vào mảng Huff xây dựng bộ mã Huffman tương ứng

  • Thủ tục lập bảng mã Huffman từ mảng Huff[1..2n-1]

  • Chọn phần tử nhỏ nhất nhờ đống (HEAP) cực tiểu

  • Tao một đống cực tiểu

  • Mã để tạo một đống cực tiểu

  • Mã xây dựng cây Huffman lưu trữ vào mảng Huff

  • Thí dụ: Bài toán tô màu đồ thị

  • Slide 123

  • Thủ tục SAME_COLOR

  • Slide 125

  • Slide 126

  • Ứng dụng: Xếp lịch thi học kỳ

  • Một Heuristic cho bài toán Tô Màu đồ thị

  • Slide 129

  • Giải thuật quay lui (backtracking)

  • Giải thuật quay lui

  • Ý tưởng phương pháp

  • Slide 133

  • Slide 134

  • Slide 135

  • Slide 136

  • Các Ví Dụ

  • Slide 138

  • Slide 139

  • Bài toán đường đi của con hiệp sĩ (The Knight’s Tour Problem)

  • Slide 141

  • Cách biểu diễn dữ liệu

  • Slide 143

  • Cho tọa độ của ô hiện hành <x, y>, có 8 khả năng để chọn ô kế tiếp <u, v> để đi tới. Chúng được đánh số từ 1 đến 8 như sau:

  • Sự tinh chế sau cùng

  • Slide 146

  • Slide 147

  • Thủ tục đệ quy được khởi động bằng lệnh gọi với tọa độ khởi đầu x0, y0 , từ đó chuyến đi bắt đầu. H[x0,y0]:= 1; try(2, x0, y0, q)   Hình 6.3.1 trình bày một lời giải đạt được với vị trí <1,1> với n = 5.

  • Slide 149

  • Khuôn mẫu tổng quát của giải thuật quay lui

  • Slide 151

  • Bài toán 8 con hậu

  • Slide 153

  • Luật cờ: Một con hậu có thể tấn công các con hậu khác nằm trên cùng một hàng, cùng một cột hay là cùng đường chéo trên bàn cờ.

  • Slide 155

  • Slide 156

  • Slide 157

  • Slide 158

  • Sự mở rộng: Tìm tất cả các lời giải

  • Slide 160

  • Trong giải thuật mở rộng, để đơn giản hóa điều kiện dừng của quá trình chọn, phát biểu repeat được thay thế bằng phát biểu for

  • Slide 162

  • Slide 163

  • Cây không gian trạng thái

  • Slide 165

  • Slide 166

  • Độ phức tạp của giải thuật quay lui

  • Phương Pháp Nhánh và Cận

  • Ý Tưởng Phương Pháp

  • Slide 170

  • Slide 171

  • Slide 172

  • Slide 173

  • Slide 174

  • Các Ví dụ

  • Slide 176

  • Slide 177

  • Slide 178

  • Slide 179

  • Slide 180

  • Giải thuật nhánh và cận (branch-and-bound)

  • Tìm kiếm vét cạn: Giải thuật DFS cải biên sinh ra mọi lối đi đơn

  • Một thí dụ về bài toán TSP

  • Tìm kiếm vét cạn các lối đi đơn

  • Từ giải thuật sinh tất cả các lối đi đơn đến giải thuật giải bài toán TSP

  • Ý tưởng nhánh và cận

  • Ý tưởng nhánh và cận (tt.)

  • Đọc thêm

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

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

Tài liệu liên quan