Tài liệu bồi dưỡng học sinh giỏi Tin học nâng cao Quy hoạch động

30 964 11
Tài liệu bồi dưỡng học sinh giỏi Tin học nâng cao  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

Bài toán số Fibonacci Kỹ thuật quy hoạch độngCác bài toán áp dụng QHĐ trên mảng một chiều và mảng hai chiềuThảo luận, trao đổi kinh nghiệm, đánh giá và nhận xét phương phápQHĐ là một kỹ thuật thiết kế giải thuật để giải quyết bài toán tối ưu thường là nhỏ nhất hay lớn nhất.QHĐ kết hợp chia để trị với kỹ thuật tổ chức lưu trữ bộ nhớ.

09/14/14 1 QUY HOẠCH ĐỘNG (Dynamic programming) 09/14/14 2  Bài toán số Fibonacci  Kỹ thuật quy hoạch động  Các bài toán áp dụng QHĐ trên mảng một chiều và mảng hai chiều  Thảo luận, trao đổi kinh nghiệm, đánh giá và nhận xét phương pháp NỘI DUNG 09/14/14 3 Bài toán về dãy số Fibonacci (1) 1 1 2 3 5 Rabbits 09/14/14 4 Bài toán về dãy số Fibonacci (2) The Fibonacci Numbers 1,1,2,3,5,8,13,21,34,55,89,144,… F 1 = F 2 = 1 F n = F n-1 + F n-2 n≥3 Vấn đề. Bạn hãy tính số hạng thứ N của dãy Fibonacci? 09/14/14 5 Bài toán về dãy số Fibonacci (3) GT đệ qui tính số Fibo thứ N  Function f(n:integer):longint;  begin  if (n =0) or (n=1) then f:=1  else  f:= f(n – 2) + f(n – 1);  End; 09/14/14 6 Bài toán về dãy số Fibonacci (4) Fibonacci numbers f(1) = f(2) = 1 f(n) = f(n - 1) + f(n - 2) Giải bằng chia để trị và đệ quy: function f(i: Integer): Integer; begin if i <= 2 then Result := 1 else Result := f(i - 1) + f(i - 2); end; 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) Số phép cộng f(100) = 354.224.848.179.261.915.075 Số phép cộng f(100) = 354.224.848.179.261.915.075 So… is this good? Is it bad? overlappingoverlapping 09/14/14 7 Bài toán về dãy số Fibonacci(5) Một hướng tiếp cận khác Chúng ta sẽ sử dụng một mảng một chiều F f[0 max_n] F[i] lưu số Fibo thứ i i 1 2 3 4 5 … F[i] 1 1 2 3 5 … 09/14/14 8 Bài toán về dãy số Fibonacci (6) const MAX_N 10000 Var f:array[1 max_n] of integer; I:integer; Begin readln(N) f[1] := 1; f[2] := 1; for i := 3 to n do f[i] = f[i – 2] + f[i – 1]; write(f[n]); End; The trick: overlapping subproblems 09/14/14 9 Kỹ thuật QHĐ (1) Định nghĩa: QHĐ là một kỹ thuật thiết kế giải thuật để giải quyết bài toán tối ưu thường là nhỏ nhất hay lớn nhất. QHĐ kết hợp chia để trị với kỹ thuật tổ chức lưu trữ bộ nhớ. 09/14/14 10 Kỹ thuật QHĐ (2) 4 bước giải quyết bằng QHĐ  Tìm nghiệm của bài toán con nhỏ nhất.  Tìm ra công thức xây dựng nghiệm của bài toán con thông qua các bài toán con nhỏ hơn.  Tạo ra một bảng lưu giữ các nghiệm của bài toán con theo công thức đã tìm ra và lưu vào bảng.  Từ các bài toán con đã giải để tìm nghiệm của bài toán. Chúng ta sẽ nghiên cứu KT này bằng các ví dụ cụ thể sau đây. [...]... toán ″Con kiến ″ Quy tắc đi: 09/14/14 18 Bài toán ″Con kiến ″ Công thức quy hoạch động B[i,j] là lượng thức ăn lớn nhất đi từ ô (1,1) đến ô (i,j) B[1,j]= A[1,j] với j = 1 N B[i,1]= A[i,1]+B[i-1,1] với i = 2 M B[i,j]=Max{B[i-1,j],B[i,j-1]} + A[i,j] với i = 2 M và j = 2 N 09/14/14 19 Bài toán ″Sa mạc ″ Một bãi sa mạc có dạng hình chữ nhật MxN Mỗi ô vuông đơn vị trên sa mạc có một độ cao nào đó Một người... số hv ít nhất khi cắt hcn cạnh axb Ta có công thức QHĐ như sau: F(a,b) = min{f(a1,b)+f(a2,b),f(a,b1)+f(a,b2)} Với a = a1 + a2 và b=b1 + b2 09/14/14 25 09/14/14 26 Summary (1) Thiết kế thuật toán Quy hoạch động Dynamic Programming Xây dựng mô hình Chia để trị Divide and Conquer 09/14/14 Tìm Cơ chế lưu trữ nghiệm Memoization 27 Summary (2) Dynamic Programming Dynamic Programming 28 09/14/14 Không lạm... cho người đó phải vượt qua quãng đường ngắn nhất.Mỗi lần đi từ một ô sang ô mới tiếp theo người đó phải đi hết quãng đường bằng độ chênh cao giữa hai ô đó 20 09/14/14 Bài toán ″Sa mạc ″ SAMAC.INP 09/14/14 21 SAMAC.OUT 12(Quãng đường Min) (1,3)(2,4) (3,3) (4,2) (5,2) Quy tắc đi 09/14/14 22 Công thức QHĐ B[i,j] là quãng đường nhỏ nhất đi từ bờ đầu tiên đến ô (i,j) B[1,j]= 0 với j = 1 N B[i,1]= Min { B[i-1,1]... nhất Bài toán: Cho dãy gồm N phần tử nguyên Hãy xóa đi một số ít nhất các phần tử để các phần tử còn lại lập thành dãy không giảm dài nhất VD: 5 2 3 4 9 10 5 6 7 8 2345678 09/14/14 13 Một hướng giải quy t Xây dựng mảng một chiều L, với L[i] là độ dài của dãy kết quả khi bài toán chỉ xét dãy A1, A2,…, Ai và công thức truy hồi của nó như sau: L[i]= max{L[i],L[j]+1 ∀j mà j . 09/14/14 1 QUY HOẠCH ĐỘNG (Dynamic programming) 09/14/14 2  Bài toán số Fibonacci  Kỹ thuật quy hoạch động  Các bài toán áp dụng QHĐ trên mảng một chiều. (3,3) Bài toán ″Con kiến ″ 09/14/14 18 Bài toán ″Con kiến ″  Quy tắc đi: 09/14/14 19 Bài toán ″Con kiến ″  Công thức quy hoạch động B[i,j] là lượng thức ăn lớn nhất đi từ ô (1,1) đến ô. thuật để giải quy t bài toán tối ưu thường là nhỏ nhất hay lớn nhất. QHĐ kết hợp chia để trị với kỹ thuật tổ chức lưu trữ bộ nhớ. 09/14/14 10 Kỹ thuật QHĐ (2) 4 bước giải quy t bằng QHĐ  Tìm

Ngày đăng: 14/09/2014, 14:31

Từ khóa liên quan

Mục lục

  • Slide 1

  • Slide 2

  • Slide 3

  • The Fibonacci Numbers

  • GT đệ qui tính số Fibo thứ N

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • 4 bước giải quyết bằng QHĐ

  • Slide 11

  • Slide 12

  • Dãy con đơn điệu không giảm dài nhất

  • Một hướng giải quyết

  • Slide 15

  • Bài toán ″Con kiến ″

  • Slide 17

  • Bài toán ″Con kiến ″

  • Slide 19

  • Slide 20

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

Tài liệu liên quan