Cấu trúc dữ liệu - Phần 7 potx

50 178 0
Cấu trúc dữ liệu - Phần 7 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

GVGD: Trng Phc Hi Phng pháp quy hoch đng (dynamic programming) 2 Trng Phc Hi Ni dung 1. Nguyên lý quy hoch đng 3. Phng pháp quy hoch đng 4. Mt s bài toán ng dng 2. Công thc truy hi 3 Trng Phc Hi Nguyên lý quy hoch đng  Chia đ tr là phng pháp ch đo trong vic thit k các thut toán có tính cht đ quy  Chia đ tr phân nh bài toán và gii quyt đc lp tng phn mt cách đ quy  T tng đ quy d hiu và d cài đt nhng tiêu tn nhiu b nh (stack lu tr các li gi) 4 Trng Phc Hi Nguyên lý quy hoch đng  Xét bài toán  Tìm phn t th N ca dãy Fibonacci  Dãy đc đnh ngha F N = F N-1 + F N-2 vi F 0 = F 1 = 1  Gii bng phng pháp chia đ tr  Chia: F n đc chia thành F N-1 và F N-2  Tr: tính F N-1 và F N-2 mt cách đ quy  Gp: tính tng F N-1 + F N-2 đ đc F N 5 Trng Phc Hi Nguyên lý quy hoch đng  Gii thut chia đ tr cho bài toán F(N) If (N = 0) Or (N = 1) Then Return 1 End If Return F(N - 1) + F(N - 2) End F 6 Trng Phc Hi Nguyên lý quy hoch đng  Minh ha s đ gii bài toán tính F(5) F(5) 3 8 F(4) F(3) 5 F(3) F(2) F(1) F(2) F(2) F(1) F(1) F(0) F(1) F(0) F(1) F(0) 3 2 2 1 1 1 1 1 1 2 1 1 7 Trng Phc Hi Nguyên lý quy hoch đng   phc tp ca gii thut chia đ tr áp dng cho bài toán Fibonacci  T(N): thi gian tính F(N)  Phng trình đ quy biu din thi gian tính T(N)  T(N) = T(N-1) + T(N-2)  Gii phng trình đ quy trên ta đc           8 Trng Phc Hi Nguyên lý quy hoch đng  Xây dng li gii ca mt bài toán thông qua li gii ca các bài toán con  Các bài con tip tc đc chia nh đ gii quyt nhng không s dng k thut đ quy  S dng bng tra cu đ lu li kt qu đã tính đc và tính dn đn nghim ca bài toán bng mt công thc xác đnh 9 Trng Phc Hi Ni dung 1. Nguyên lý quy hoch đng 3. Phng pháp quy hoch đng 4. Mt s bài toán ng dng 2. Công thc truy hi 10 Trng Phc Hi Công thc truy hi  Trong quá trình quay lui, đ quy s gi li nhiu ln các bài toán con đã đc gi  các bc trc  Gây tiêu tn thi gian thc hin lp li và tài nguyên b nh  Lu tr nghim ca tt c bài toán con và kt hp chúng theo mt công thc xác đnh đ tìm nghim cho bài toán ban đu  Công thc kt hp nghim ca các bài toán con đ tìm nghim ca bài toán ln hn gi là công thc truy hi [...]... max{L[i][j-1], L[i-1][j], L[i-1][j-1] + k} k = 1, A[i-1] = B[j-1] tính k = 0, A[i-1] B[j-1] tính 0) 0) quy L[i][0] = 0 i [1 M] L[0][j] = 0 j [1 N] 30 2 1 các 2 và N M + 1 dòng, N + 1 làm các bài toán con án quy Dòng 0 và và dãy M 2 dãy A và B 0 Các dòng i, j theo dài dãy A có i dài chung dãy dài dãy chung và B có j 31 Minh tìm dãy con chung dài 2 9 16 12 17 8 21 2 9 4 48 12 0 1 2 3 4 5 6 7 0 0 0 0 0 0... Max(L[i-1][j],L[i][j-1]); } 34 Truy ô M, N lên So sánh A và B nhau thì vào khác nhau thì theo giá cho max max khi L[i][j-1] L[i-1][j] dãy 35 truy tìm Trace(L[][], A[], M, B[], N, T[], P) P = L[M][N]; i = M; j = N; k = P; While (i >= 0 AND j >= 0) If (A[i-1] = B[j-1]) Then T[k 1] = A[i-1] k = k 1; i = i 1; j = j 1 Else If (L[i][j] = L[i][j 1]) Then j = j 1 Else i = i - 1 End If End While End Trace 37 ... If (A[i-1] L[i][j] Else L[i][j] End If End For End Process 0 M; i++) . đnh ngha F N = F N-1 + F N-2 vi F 0 = F 1 = 1  Gii bng phng pháp chia đ tr  Chia: F n đc chia thành F N-1 và F N-2  Tr: tính F N-1 và F N-2 mt cách đ quy . C[i][0] = 1, i (vì    )  Công thc truy hi  C[i][j] = C[i-1][j] + C[i-1][j-1],  i  [1 N], j  [1 k] 17 Trng Phc Hi Công thc truy hi  Minh ha quá trình xây dng. F N-1 + F N-2 đ đc F N 5 Trng Phc Hi Nguyên lý quy hoch đng  Gii thut chia đ tr cho bài toán F(N) If (N = 0) Or (N = 1) Then Return 1 End If Return F(N - 1)

Ngày đăng: 08/08/2014, 04:21

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

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

Tài liệu liên quan