1. Trang chủ
  2. » Giáo án - Bài giảng

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

30 968 11

Đ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

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 740 KB

Nội dung

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ớ.

Trang 1

QUY HOẠCH ĐỘNG

(Dynamic programming)

Trang 2

 Bài toán số Fibonacci

mảng một chiều và mảng hai chiều

đánh giá và nhận xét phương pháp

NỘI DUNG

Trang 3

Bài toán về dãy số Fibonacci (1)

Rabbits

Trang 4

Bài toán về dãy số Fibonacci (2)

The Fibonacci Numbers

Trang 5

Bài toán về dãy số Fibonacci (3)

Trang 6

05/17/24 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)

Trang 7

Bài toán về dãy số Fibonacci(5)

Trang 8

Bài toán về dãy số Fibonacci (6)

Trang 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ớ.

Trang 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

Trang 12

Công thức QHĐ

A[i,j] = a[i-1,j-1] + a[i-1,j]

A[i,1]=1 (với mọi i=1 N)

A[i,i]=1 (với mọi i=1 N)

Trang 13

Dãy con đơn điệu không giảm dài nhấ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

Trang 14

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

độ 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<I và Aj<=Ai}

Duyệt mảng A từ vị trí 1 i-1 với j thỏa L[j] lớn nhất và Aj<=Ai

 Mảng T[i]=j chỉ phần tử đứng trước Ai trong dãy kết quả là Aj (truy vết kết quả)

Trang 15

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

i 1 2 3 4 5 6 7 8 9 10

A 5 2 3 4 9 10 5 6 7 8

L 1 1 2 3 4 5 4 5 6 7

T 0 0 2 3 4 5 3 7 8 9

Trang 16

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

 Bài toán: Trên một sân hình chữ nhật MxN, được chia thành các ô vuông đơn vị, mỗi ô chứa một lượng thức ăn Một con kiến xuất phát từ ô (1,1) muốnđi qua sân để đến dòng thứ M Con kiến chỉ có thể đi theo một dòng chia nhỏ trên sân ứng với một dòng của bảng chữ nhật hoặc đi theo trên một cột của sân Hãy chỉ ra đường đi giúp con kiến có

Trang 17

 FOOD.INP

3 5

 FOOD.OUT

45(lượng thức ăn Max)

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

Trang 18

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

Trang 19

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

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 =

Trang 20

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 muốn đi từ bờ đầu này sang

bờ cuối cùng bên kia Người đó chỉ có thể đi từ

ô đang đứng tới một ô mới theo hướng thẳng

đứng chéo trái hoặc chéo phải Giả thiết rằng

người đó không được vượt ra hai mép trái và

phải của sa mạc

Hãy tìm đường đi sao 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

Trang 21

 SAMAC.INP

Bài toán ″Sa mạc ″

Trang 22

 SAMAC.OUT

12(Quãng đường Min)

(1,3)(2,4) (3,3) (4,2) (5,2)

Quy tắc đi.

Trang 23

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] + abs(A[i,1] - A[i-1,1]);

B[i-1,2]+ abs(A[i,1] - A[i-1,2])}

Với i = 2 M

 B[i,j]= Min { B[i-1,j -1] + abs(A[i,j] - A[i-1,j -1]);

B[i-1,j] + abs(A[i,j] - A[i-1,j]);

B[i-1,j+1] + abs(A[i,j] - A[i-1,j+1])}

Với i = 2 M, j = 2 N-1

 B[i,N] = Min { B[i-1,N] + abs(A[i,N] - A[i-1,N]);

B[i-1,N-1]+ abs(A[i,N] - A[i-1,N-1])}

Trang 24

Bài toán cắt hình chữ nhật

Có một hình chữ nhật MxN ô, mỗi lần ta được phép cắt một hình chữ nhật thành hai hình chữ nhật con theo chiều ngang hoặc chiều dọc và lại tiếp tục cắt các

hình chữ nhật con cho đến khi được hình vuông thi

Trang 25

Phân tích

Gọi F(a,b) là 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

Trang 27

Summary (1)

Thiết kế thuật toán

Quy hoạch động

Dynamic Programming

Trang 28

Dynamic

Summary (2)

Trang 29

Bài tập

Male bee’s family tree

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

HÌNH ẢNH LIÊN QUAN

Hình chữ nhật con cho đến khi được hình vuông thi  dừng. - Tài liệu bồi dưỡng học sinh giỏi Tin học nâng cao  Quy hoạch động
Hình ch ữ nhật con cho đến khi được hình vuông thi dừng (Trang 24)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w