bài giảng qui hoạch động rất dễ hiểu nguyễn vũ cát tường

49 2.2K 42
bài giảng  qui hoạch động rất dễ hiểu   nguyễn vũ cát tườ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

( D y n a m i c P r o g r a m m i n g ) CHUYÊN ĐỀ QUI HOẠCH ĐỘNG TRƯỜNG THPT VINH LỘC N ă m h ọ c : 2 0 1 4 - 2 0 1 5 NỘI DUNG 1. Giới thiệu 2. Phương pháp thực hiện 3. Một số bài toán tối ưu giải bằng phương pháp quy hoạch động Giới thiệu • Bài toán dãy số Fibonaci 1 1 2 3 5 Rabbits i 1 2 3 4 5 6 … … n F(i) 1 1 2 3 5 8 … … ? Ví dụ 1: Tính phần tử thứ n của dãy số Fibonaci F(1)=1 F(2)=2 F(i)= F(i-1)+F(i-2) → Tính F(n), giá trị của phần tử thứ n trong dãy. Ví dụ 1: Tính phần tử thứ n của dãy số Fibonaci • Giải bài toán trên bằng giải thuật đệ qui? Function F(n: integer): integer; Begin If n≤ 2 then F:=1 Else F:= F(n-1)+F(n-2); End; Ví dụ 1: Tính phần tử thứ n của dãy số Fibonaci • Việc thực hiện một giải thuật đệ quy có thể không tối ưu về mặt thời gian/không gian nhớ. • Đặc điểm của lời giải đệ quy: thực hiện bài toán từ việc phân tích ở mức cao xuống mức thấp. f(1) f(2) f(3) f(2) f(4) f(1) f(2) f(3) f(5) f(1) f(2) f(3) f(2) f(4) f(6) Ví dụ 1: Tính phần tử thứ n của dãy số Fibonaci • Nếu giải quyết bài toán này từ mức thấp lên mức cao ta có giải thuật sau: Function F(n: integer): integer; Var i: integer; a: array[1 100] of integer; Begin a[1]:=1; a[2]:=1; For i:=3 to n do a[i]:=a[i-1]+a[i-2]; F:= a[i]; End;  Đặc điểm của lời giải bài toán theo phương pháp quy hoạch động: giải quyết bài toán đệ quy từ mức thấp trước, lời giải của chúng được lưu lại và được sử dụng để tìm lời giải của các bài toán ở mức cao hơn. • Tư tưởng của phương pháp • Sử dụng nguyên lý: “chia để trị” • Cách tiếp cận: “dưới-lên” • Phạm vi áp dụng • Các bài toán có được bằng việc tổ hợp các nghiệm của các bài toán con • Các bài toán tối ưu hoá rời rạc • Nguyên lý của phương pháp: • Nguyên lý tối ưu của Bellman: Trong một dãy tối ưu của các lựa chọn thì một dãy con của nó cũng là tối ưu. 2. Phương pháp thực hiện • Phân tích bài toán (biểu diễn bài toán dưới dạng một bài toán nhiều mức) • Xây dựng giải pháp đệ quy (lập công thức truy hồi) • Lập bảng (sử dụng các mảng để tính toán các giá trị theo kiểu dưới-lên) • Tổng hợp kết quả (kiến tạo một lời giải cho bài toán từ các thông tin đã tính toán) Xét ví dụ trên • Phân tích bài toán: Xây dựng hàm: Function F(n: integer): integer; • Giải pháp đệ quy: F(n) = F(n-1)+F(n-2) • Lập bảng: Sử dụng mảng 1 chiều a (array[1 max] of integer) để tính: a[i] = F(i). với i = 1 n. Cụ thể: a[1] = a[2] = 1, và: a[i] = a[i-1] + a[i-2]; với i = 3 n, • Tổng hợp kết quả: F(n) = a[n]; [...]... vt-1); TimVT(vt, s); end; End; Tổng hợp kết quả (Bài toán phép nhân tổ hợp nhiều ma trận) Ví dụ: Xét ví dụ trên: r s 1 1 10000/2 3 0/1 2 2 3 6000/2 Số phép toán tối thiểu là: 6000 l[1,3]=6000 0/2 5000/3 x[2]=k[1,3]=2 x[1]= k[2,3]=3 0/3 Thứ tự thực hiện các phép nhân là: 3 2 Một số bài tập (QUI HOẠCH ĐỘNG) 1 Bài toán xâu trong cực đại 2 Bài toán du lịch Bài toán XÂU TRONG CỰC ĐẠI Xâu con: S là xâu con... → min Bài toán Phép nhân tổ hợp nhiều ma trận Phân tích bài toán: • Gọi P(r, s) là bài toán nhân ma trận: Mr×Mr+1× ×Ms, với r ≤ s (bài toán ban đầu là P(1, n)) • Giá trị cần tìm: k[r,s]: vị trí phép toán thực hiện cuối cùng của bài toán P(r, s) (Mr×Mr+1× ×Mk-1) × (Mk×Mk+1× ×Ms) k = k[r,s] ∈ [r+1, s] Vị trí phép toán thực hiện cuối cùng l[r, s]: số phép tính nhân tối ưu của bài toán P(r, s) Bài toán... Gọi P(r, s) là bài toán chiếc túi xách, với: r ∈ N*: kích cỡ chiếc túi s ∈ N*: số các loại đồ vật khác nhau (bài toán ban đầu là P(p, n)) • Các giá trị cần tìm: l[r,s]: giá trị cực đại ∑x[i].c[i] của bài toán P(r, s) u[r,s]: số lượng loại đồ vật s tối ưu cần lấy (tức: x[s]) của bài toán P(r, s) Bài toán chiếc túi xách  Giải pháp đệ quy: • Khi s = 1: u[r, 1] = r div m[1] l[r, 1] = u[r, 1]∗c[1] • Khi...3 Một số bài toán tối ưu giải bằng phương pháp quy hoạch động • Chiếc túi xách • Phép nhân tổ hợp nhiều ma trận Bài toán chiếc túi xách • Một cái kho chứa n loại đồ vật có kích thước và giá trị khác nhau Cụ thể: Loại đồ vật i (i=1 n) có: - kích cỡ m[i] ∈ N* - giá... đạt giá trị cực đại Bài toán chiếc túi xách Ví dụ: Trong kho có các loại đồ vật và giá trị sau: 1 m[1]:2 c[1]:4 2 m[2]:3 c[2]:5 3 m[3]:4 c[3]:6 Giả sử tên trộm mang theo chiếc túi có kích cỡ p=9 Lúc đó tên trộm có thể lấy các đồ vật với giá trị như sau: Tên trộm lấy 3 đồ vật 1 và 1 đồ vật 2 với giá trị lớn nhất là 17 Bài toán chiếc túi xách Phân tích bài toán: • Gọi P(r, s) là bài toán chiếc túi xách,... S1=‘ABCDAE’ và S2=‘XYACADK’ có xâu ‘ACD’ là xâu con chung có độ dài cực đại Bài toán XÂU TRONG CỰC ĐẠI Bài toán đặt ra: Cho 2 xâu A, B Tìm một xâu S là xâu con chung của A và B có độ dài cực đại Input: Xâu A và xâu B Output: Xâu S là xâu trong chung của xâu A và B có độ dài cực đại Bài toán XÂU TRONG CỰC ĐẠI  Phân tích bài toán Giả sử ta có: • M= length(A) • N= length(B) Cần xây dựng mảng L[0 M,0... xây dựng mảng L[0 M,0 N] với ý nghĩa: • L[i,j] là độ dài của xâu chung dài nhất của hai xâu A[0 i] và B[0 j] M; 0 ≤ j ≤N) Bài toán ban đầu L(M,N)  Các giá trị cần tìm: • L[i,j]: độ dài cực đại của xâu con chung của bài toán L(M,N) • S: xâu con chung của bài toán L(M,N) (0 ≤ i ≤ Bài toán XÂU TRONG CỰC ĐẠI • Đương nhiên nếu một xâu là rỗng thì xâu con chung cũng là rỗng, vì vậy: L[0,j] = 0, ∀j, j=1 N;... trường hợp 2 vào trường hợp 3 Lập bảng (Bài toán phép nhân tổ hợp nhiều ma trận) Procedure LapBang; Begin For s:=1 to n do For r:=s downto 1 do If r = s then l[r, r] := 0 else Tính l[r, s] và k[r, s]; End; Lập bảng (Bài toán phép nhân tổ hợp nhiều ma trận) Ví dụ: Xét ví dụ trên: r s r≤s 1 2 1 0/1 2 10000/2 0/2 3 6000/2 5000/3 3 l[r,s] k[r,s] 0/3 Tổng hợp kết quả (Bài toán phép nhân tổ hợp nhiều ma trận)... sau: Đồ vật 1 số lượng 3 Bài toán Phép nhân tổ hợp nhiều ma trận • Cần tính M = M1×M2× ×Mn Trong đó: Mi là ma trận cấp m[i-1]×m[i] (i=1 n) Hãy xác định thứ tự thực hiện các phép nhân sao cho số phép tính là tối thiểu • Ví dụ: Tính M = M1 × M2 × M3 [10×20][20×50][50×5] (M1×M2)×M3 có số phép toán là: 10×20×50 + 10×50×5 = 12500 M1×(M2×M3 ) có số phép toán là: 10×20×5 + 20×50×5 = 6000 Bài toán Phép nhân tổ... nhân tổ hợp nhiều ma trận) Procedure TongHop; Begin writeln(‘Số phép tính tối thiểu là :’, l[1, n]); i:=n; TimVT(1, n); {Nhằm lần lượt xác định các giá trị x[i]: vị trí phép nhân cần thực hiện trong lần nhân thứ i (i=1 n-1)} writeln(‘Thứ tự thực hiện các phép nhân :’); For i:=1 to n-1 do writeln(x[i]); End; Tổng hợp kết quả (Bài toán phép nhân tổ hợp nhiều ma trận) Trong đó thủ tục TimVT được xây dựng . ) CHUYÊN ĐỀ QUI HOẠCH ĐỘNG TRƯỜNG THPT VINH LỘC N ă m h ọ c : 2 0 1 4 - 2 0 1 5 NỘI DUNG 1. Giới thiệu 2. Phương pháp thực hiện 3. Một số bài toán tối ưu giải bằng phương pháp quy hoạch động Giới. điểm của lời giải bài toán theo phương pháp quy hoạch động: giải quyết bài toán đệ quy từ mức thấp trước, lời giải của chúng được lưu lại và được sử dụng để tìm lời giải của các bài toán ở mức. • Tổng hợp kết quả: F(n) = a[n]; 3. Một số bài toán tối ưu giải bằng phương pháp quy hoạch động • Chiếc túi xách • Phép nhân tổ hợp nhiều ma trận Bài toán chiếc túi xách • Một cái kho chứa n

Ngày đăng: 19/09/2014, 10:07

Mục lục

  • Slide 1

  • NỘI DUNG

  • Giới thiệu

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • 2. Phương pháp thực hiện

  • Xét ví dụ trên

  • 3. Một số bài toán tối ưu giải bằng phương pháp quy hoạch động

  • Bài toán chiếc túi xách

  • Bài toán chiếc túi xách

  • Bài toán chiếc túi xách

  • Bài toán chiếc túi xách

  • Lập bảng (Bài toán chiếc túi xách)

  • Slide 17

  • Tổng hợp kết quả (Bài toán chiếc túi xách)

  • Slide 19

  • Bài toán Phép nhân tổ hợp nhiều ma trận

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

Tài liệu liên quan