Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN Một số bài toán quy hoạch động

27 776 0
Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN Một số bài toán quy hoạch động

Đ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

M T S BÀI TOÁN Ộ Ố M T S BÀI TOÁN Ộ Ố QUY HO CH Đ NGẠ Ộ QUY HO CH Đ NGẠ Ộ GVHD: GVHD: TS. Hoàng Quang TS. Hoàng Quang Nhóm thực hiện: Nhóm thực hiện: Nhóm 3: Nhóm 3: Lê Quốc Hải. Lê Quốc Hải. Nguyễn Đình Quý. Nguyễn Đình Quý. Hồ Hữu Linh. Hồ Hữu Linh. Hoàng Nguyễn Tuấn Minh. Hoàng Nguyễn Tuấn Minh. I. BÀI TOÁN “CÂY TÌM Ki M NH Ế Ị I. BÀI TOÁN “CÂY TÌM Ki M NH Ế Ị PHÂN T I U”Ố Ư PHÂN T I U”Ố Ư 1. 1. Đặt vấn đề: Đặt vấn đề: Giả sử cần phải dịch một đoạn văn bản gồm n từ Giả sử cần phải dịch một đoạn văn bản gồm n từ từ tiếng Anh sang tiếng Việt. Với mỗi từ từ tiếng Anh sang tiếng Việt. Với mỗi từ tiếng Anh trong văn bản, ta cần tìm một từ tiếng Anh trong văn bản, ta cần tìm một từ tiếng Việt tương ứng. tiếng Việt tương ứng. Một trong những cách thực hiện việc tìm kiếm Một trong những cách thực hiện việc tìm kiếm này là xây dựng một cây nhị phân tìm kiếm này là xây dựng một cây nhị phân tìm kiếm với n từ tiếng Anh như là các khóa và n từ với n từ tiếng Anh như là các khóa và n từ tiếng Việt tương ứng là dữ liệu. tiếng Việt tương ứng là dữ liệu.  Có rất nhiều cách sắp xếp các khóa trên cây để tạo Có rất nhiều cách sắp xếp các khóa trên cây để tạo nên một cấu trúc cây và với mỗi cây sẽ cần một chi nên một cấu trúc cây và với mỗi cây sẽ cần một chi phí khác nhau khi tìm kiếm các khóa trên cây. phí khác nhau khi tìm kiếm các khóa trên cây.  Chi phí tìm kiếm càng cao khi nút cần tìm càng nằm Chi phí tìm kiếm càng cao khi nút cần tìm càng nằm xa gốc (cây càng nhiều nút, độ sâu nút cần tìm càng xa gốc (cây càng nhiều nút, độ sâu nút cần tìm càng lớn). Đặc biệt, khi từ khóa cần tìm không có trong lớn). Đặc biệt, khi từ khóa cần tìm không có trong cây, chi phí tìm kiếm sẽ rất lớn. cây, chi phí tìm kiếm sẽ rất lớn.  ?. Bằng cách nào để có thể tổ chức một cây tìm kiếm ?. Bằng cách nào để có thể tổ chức một cây tìm kiếm nhị phân mà chi phí tìm kiếm trên cây là thấp nhất. nhị phân mà chi phí tìm kiếm trên cây là thấp nhất. Ví d : Xét hai cây nh phân tìm ụ ị Ví d : Xét hai cây nh phân tìm ụ ị ki mế ki mế i i 0 0 1 1 2 2 3 3 4 4 5 5 p p i i 0.15 0.15 0.10 0.10 0.05 0.05 0.10 0.10 0.20 0.20 q q i i 0.05 0.05 0.10 0.10 0.05 0.05 0.05 0.05 0.05 0.05 0.10 0.10 Trong đó, p Trong đó, p i i là xác suất để duyệt đỉnh có khóa là k là xác suất để duyệt đỉnh có khóa là k i i , q , q i i là xác suất để duyệt đỉnh có khóa là xác suất để duyệt đỉnh có khóa giả là d giả là d i i . . (a) Cây nhị phân tìm kiếm với chi phí là 2.80. (b) Cây nhị phân tìm kiếm với chi phí là (a) Cây nhị phân tìm kiếm với chi phí là 2.80. (b) Cây nhị phân tìm kiếm với chi phí là 2.75. Hai cây tìm kiếm trên là tối ưu. 2.75. Hai cây tìm kiếm trên là tối ưu. k 2 k 1 k 4 k 3 k 5 d 0 d 1 d 2 d 3 d 5 d 4 k 2 k 1 k 5 k 4 k 3 d 0 d 1 d 2 d 3 d 5 d 4 (a) (b) 2. Phát bi u bài toán:ể 2. Phát bi u bài toán:ể  Cho một tập K = {k Cho một tập K = {k 1 1 , k , k 2 2 , …, k , …, k n n } là n khóa khác } là n khóa khác nhau đã được sắp, trong đó k nhau đã được sắp, trong đó k 1 1 <k <k 2 2 <…<k <…<k n n , và ta , và ta cần xây dựng một cây nhị phân tìm kiếm từ cần xây dựng một cây nhị phân tìm kiếm từ các khóa này sao cho chi phí tìm kiếm là thấp các khóa này sao cho chi phí tìm kiếm là thấp nhất. nhất. Các thu t ng , t khóa, khái ni m ậ ữ ừ ệ Các thu t ng , t khóa, khái ni m ậ ữ ừ ệ s d ng trong gi i thu t.ử ụ ả ậ s d ng trong gi i thu t.ử ụ ả ậ  Mỗi khóa k Mỗi khóa k i i có xác suất tìm kiếm là p có xác suất tìm kiếm là p i i . .  Có những trường hợp từ một khóa k Có những trường hợp từ một khóa k i i nào đó không nào đó không có trong cây, ta sử dụng các khóa giả d có trong cây, ta sử dụng các khóa giả d i i để đón nhận để đón nhận các giá trị này, với cây có n khóa k các giá trị này, với cây có n khóa k 1 1 , k , k 2 2 , …, k , …, k n n thì sẽ thì sẽ có n+1 khóa giả d có n+1 khóa giả d 0 0 , d , d 1 1 , …, d , …, d n n . Trong đó: . Trong đó:  d d 0 0 tương ứng cho tất cả các giá trị nhỏ hơn k tương ứng cho tất cả các giá trị nhỏ hơn k 1 1 , ,  d d n n tương ứng cho tất cả các giá trị lớn hơn k tương ứng cho tất cả các giá trị lớn hơn k n n , ,  và với i = 1, …, n-1 thì khóa giả d và với i = 1, …, n-1 thì khóa giả d i i tương ứng cho giá trị tương ứng cho giá trị nằm giữa k nằm giữa k i i và k và k i+1 i+1 . .  Với mỗi khóa giả d Với mỗi khóa giả d i i , chúng ta có một xác suất tìm , chúng ta có một xác suất tìm kiếm là q kiếm là q i i . Ta có: . Ta có: ∑ ∑ = = =+ n i n i ii qp 1 0 1  Công thức tính chi phí cho một cây tìm kiếm nhị Công thức tính chi phí cho một cây tìm kiếm nhị phân như sau: phân như sau: ∑ ∑ = = +++= n i n i iiTiiT qddepthpkdepthseachE 1 0 ).1)(().1)((T]in cost [ ∑ ∑ = = ++= n i n i iiTiiT qddepthpkdepth 1 0 ).().(1 Trong ví dụ đã cho ở cây (a), chúng ta có thể tính chi phí tìm kiếm tất cả các nút như sau: Trong ví dụ đã cho ở cây (a), chúng ta có thể tính chi phí tìm kiếm tất cả các nút như sau: Node Node depth depth probability probability contribution contribution K K 1 1 1 1 0.15 0.15 0.30 0.30 K K 2 2 0 0 0.10 0.10 0.10 0.10 K K 3 3 2 2 0.05 0.05 0.15 0.15 K K 4 4 1 1 0.10 0.10 0.20 0.20 K K 5 5 2 2 0.20 0.20 0.60 0.60 D D 0 0 2 2 0.05 0.05 0.15 0.15 D D 1 1 2 2 0.10 0.10 0.30 0.30 D D 2 2 3 3 0.05 0.05 0.20 0.20 D D 3 3 3 3 0.05 0.05 0.20 0.20 D D 4 4 3 3 0.05 0.05 0.20 0.20 D D 5 5 3 3 0.10 0.10 0.40 0.40 Total Total 2.80 2.80 k 2 k 1 k 4 k 3 k 5 d 0 d 1 d 2 d 3 d 5 d 4 (a)  Với ví dụ đã cho, ta tính được cây (a) có chi Với ví dụ đã cho, ta tính được cây (a) có chi phí tìm kiếm là 2.80, cây (b) có chi phí tìm phí tìm kiếm là 2.80, cây (b) có chi phí tìm kiếm là 2.75. kiếm là 2.75.  Ta sẽ xây dựng một giải thuật để xây dựng Ta sẽ xây dựng một giải thuật để xây dựng một cây nhị phân tìm kiếm tối ưu với chi phí một cây nhị phân tìm kiếm tối ưu với chi phí tìm kiếm là thấp nhất từ một tập n khóa cho tìm kiếm là thấp nhất từ một tập n khóa cho trước, bằng cách xây dựng dần các cây con từ trước, bằng cách xây dựng dần các cây con từ khóa k khóa k i i đến khóa k đến khóa k j j . Sử dụng phương pháp Quy . Sử dụng phương pháp Quy hoạch động để giải quyết bài toán. hoạch động để giải quyết bài toán. 4. Các b c gi i bài toán:ướ ả 4. Các b c gi i bài toán:ướ ả  Bước 1: Mô tả cấu trúc cây nhị phân tìm kiếm với các Bước 1: Mô tả cấu trúc cây nhị phân tìm kiếm với các khóa k khóa k i i , …, k , …, k j j Chọn một trong các khóa này là k Chọn một trong các khóa này là k r r (i ≤ r ≤ j), sẽ là gốc (i ≤ r ≤ j), sẽ là gốc của cây con tối ưu chứa các khóa đã cho. Các cây con của cây con tối ưu chứa các khóa đã cho. Các cây con bên trái của gốc k bên trái của gốc k r r sẽ chứa các khóa k sẽ chứa các khóa k i i , …, k , …, k r-1 r-1 (và các (và các khóa giả d khóa giả d i-1 i-1 , …, d , …, d r-1 r-1 ), và cây con bên phải chứa các ), và cây con bên phải chứa các khóa k khóa k r+1 r+1 , …, k , …, k j j (và các khóa giả d (và các khóa giả d r r , …, d , …, d j j ). Cũng như ). Cũng như vậy ta kiểm tra tất cả các gốc k vậy ta kiểm tra tất cả các gốc k r r , (i ≤ r ≤ j) . , (i ≤ r ≤ j) . Nếu khóa k Nếu khóa k i i có cây con trái rỗng thì cây con trái sẽ bao có cây con trái rỗng thì cây con trái sẽ bao gồm một nút lá là d gồm một nút lá là d i-1 i-1 , nếu khóa k , nếu khóa k j j có cây con phải rỗng có cây con phải rỗng thì cây con phải sẽ bao gồm một nút lá là khóa giả d thì cây con phải sẽ bao gồm một nút lá là khóa giả d j. j. [...]... chung của thuật toán là: Để tìm ra một xâu con chung dài nhất (LCS) của X=x1x2…xm và Y = y1y2…yn Ta xét:  - Nếu xm=yn, chúng ta phải tìm ra một xâu con chung dài nhất của Xm-1 và Yn-1 Thêm xm=yn vào LCS trên ta sẽ thu được LCS của X và Y - Nếu xm ≠ yn thì chúng ta phải giải quy t hai vấn đề:  Tìm ra một LCS của Xm-1 và Y, tìm ra một LCS của X và Yn-1  LCS nào dài hơn chính là LCS của X và Y 20 ... chính là LCS của X và Y 20   Dựa trên thuật toán đó, ta gọi c[i,j] là độ dài xâu con chung dài nhất của X và Y tính từ 1 đến x[i] và 1 đến y[j] Tính c[i,j]: Nếu x[i] = y[j] thì c[i,j] = c[i-1,j-1] + 1  Ngược lại: c[i,j] = max{c[i-1,j], c[i,j-1]}  21 Phương pháp Quy hoạch động  Phân tích bài toán: Xây dựng hàm: Function LCS_Length(x,y:string):word; Giải pháp đệ quy:  C[i,j] = 0 Nếu i=0 hoặc j=0 ... kiếm là 2.75 k 2 k k 1 d0 5 d5 k d1 4 d4 k 3 d2 d3 Bài toán xâu trong chung cực đại K/n Xâu trong: S là xâu trong của T nếu S nhận được bằng cách xoá đi một số ký tự nào đó Ví dụ: ‘ABC’ là xâu trong của ‘GAHEBOOC’ Bài toán: Cho 2 xâu T1, T2 Tìm một xâu S là xâu trong chung của T1 và T2 có độ dài cực đại (gọi là Xâu con chung dài nhất) Ví dụ: T1=‘ABCDAE’ và T2=‘XYACADK’ có xâu ‘ACD’ là xâu trong chung... cây nhị phân tìm kiếm Ví dụ: Quay trở lại bài toán ban đầu đã đặt ra, cho tập 5 khóa ki, i=1 5, khi đó để xây dựng cây nhị phân tìm kiếm tối ưu ta cần bổ sung các khóa giả dj, j = 0 n; và xác suất tìm kiếm các khóa và khóa giả là: i 0 1 2 3 4 5 pi 0.15 0.10 0.05 0.10 0.20 qi 0.05 0.10 0.05 0.05 0.05 0.10 Ta duyệt thủ tục OPTIMAL-BST với n, p, q đã cho ta thu được ba bảng e[1 6,0 5], w[1 6,0 5] và root[1... ) =  w(i, j − 1) + p j + q j Nếu i ≤ j Bước 3: Tính toán chi phí tìm kiếm của cây tìm kiếm nhị phân tối ưu: (Lập bảng)  Ở bước này, ta sử dụng thêm bảng:  Root[i,j]: để lưu giữ các chỉ số r của khóa kr được chọn làm gốc của các cây con chứa các khóa ki, …, kj Thủ tục OPTIMAL-BST: Input: p1, p2, …, pn và q0, …, qn, kích thước n Output: mảng e và root 1 OPTIMAL-BST(p,q,n) 2 For i  1 to n+1 3 Do... Khi j ≥ i, chúng ta cần chọn một gốc kr từ các khóa ki, …, kj , sau đó xây dựng một cây nhị phân tìm kiếm tối ưu với các khóa ki, …, kr-1 là cây con trái của kr và cây nhị phân tìm kiếm tối ưu với các khóa kr+1, …, kj là cây con phải của kr j l =i Khi đó ta có: j l =i −1 w(i, j ) = ∑ pl + ∑ ql => w[i,j] = w[i,j-1] + pj + qj Và: e[i,j] = pr + (e[i,r-1] + w(i,r-1)) + (e[r+1,j] + w(r+1,j)) => e[i,j] = e[i,r-1]... i, j như trên, ta sẽ thu được một nửa trên đường chéo chính các bảng  Nếu quay bảng đi 450 ngược chiều kim đồng hồ, ta thu được các bảng là:  Bảng e thể hiện chi phí của các cây con  Từ bảng root, ta vẽ được cây tìm kiếm nhị phân tối ưu    Để vẽ cây tìm kiếm nhị phân tối ưu chứa các khóa từ ki đến kj, dựa vào bảng root ta tìm được gốc của cây, theo luật của cây nhị phân tìm kiếm ta hoàn toàn vẽ... M=max(Li) i=1 n Nếu trên 1 dòng chứa các từ từ i đến j (i0) and (i>0) and (j>0) do If max=c[i-1,j] then i:=i-1 Else if max=c[i,j-1] then j:=j-1 Else Begin S:=S+x[i]; i:=i-1; j:=j-1; End; 23 Bài toán in đoạn văn bản Cho 1 đoạn văn bản gồm n từ có độ dài lần lược là L1, L2, , Ln được đo lường bởi các kí tự Chúng ta muốn in đoạn văn bản này trên 1 số dòng với độ dài lớn nhất... Giải pháp đệ quy:    Gọi e[i,j] là bảng chứa các chi phí tìm kiếm trên cây nhị phân tìm kiếm tối ưu với các khóa ki, …, kj W(i,j) là tổng xác suất trong cây nhị phân tìm kiếm tối ưu chứa khóa ki, …, kj Các trường hợp xảy ra: Khi j = i – 1 Khi đó ta có khóa giả di-1 - Chi phí tìm kiếm là e[i,i-1] = qi-1; - Tổng xác suất: w(i,i-1) = qi-1 với 1 ≤ i ≤ n+1   Khi j ≥ i, chúng ta cần chọn một gốc kr từ . phương pháp Quy hoạch động để giải quy t bài toán. hoạch động để giải quy t bài toán. 4. Các b c gi i bài toán: ướ ả 4. Các b c gi i bài toán: ướ ả  Bước 1: Mô tả cấu trúc cây nhị phân tìm kiếm. dựng một giải thuật để xây dựng Ta sẽ xây dựng một giải thuật để xây dựng một cây nhị phân tìm kiếm tối ưu với chi phí một cây nhị phân tìm kiếm tối ưu với chi phí tìm kiếm là thấp nhất từ một. của thuật toán là: Tư tưởng chung của thuật toán là: Để tìm ra một xâu con chung dài nhất (LCS) của Để tìm ra một xâu con chung dài nhất (LCS) của X=x X=x 1 1 x x 2 2 …x …x m m và và Y

Ngày đăng: 11/04/2015, 22:45

Từ khóa liên quan

Mục lục

  • MỘT SỐ BÀI TOÁN QUY HOẠCH ĐỘNG

  • I. BÀI TOÁN “CÂY TÌM KiẾM NHỊ PHÂN TỐI ƯU”

  • PowerPoint Presentation

  • Ví dụ: Xét hai cây nhị phân tìm kiếm

  • 2. Phát biểu bài toán:

  • Các thuật ngữ, từ khóa, khái niệm sử dụng trong giải thuật.

  • Slide 7

  • Slide 8

  • Slide 9

  • 4. Các bước giải bài toán:

  • Bước 2: Giải pháp đệ quy:

  • Slide 12

  • Slide 13

  • Bước 3: Tính toán chi phí tìm kiếm của cây tìm kiếm nhị phân tối ưu: (Lập bảng)

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Bài toán xâu trong chung cực đại

  • Slide 20

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

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

Tài liệu liên quan