1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khử Đệ quy trong bài toán quy hoạch Động

86 1 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Khử Đệ Quy Trong Bài Toán Quy Hoạch Động
Tác giả Nguyễn Thị Linh
Người hướng dẫn PGS. TSKH Nguyễn Xuân Huy
Trường học Đại học Thái Nguyên
Chuyên ngành Khoa học máy tính
Thể loại luận văn thạc sĩ
Năm xuất bản 2016
Thành phố Thái Nguyên
Định dạng
Số trang 86
Dung lượng 2,19 MB

Nội dung

Trong chuyên ngành khoa học máy tính, quy hoạch động là phương pháp giảm thời gian chạy của thuật toán thể hiện tính chất của các bài toán con chồng chập nhau và cấu trúc rời rạc tối ưu.

Trang 1

- ĐẠI HỌC THÁI NGUYÊN `

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VA TRUYEN THONG

NGUYEN THI LINH

KHU DE QUY TRONG BAI TOAN

QUY HOACH DONG

LUAN VAN THAC Si KHOA HOC MAY TINH

Trang 2

- ĐẠI HỌC THÁI NGUYÊN _ 2

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THONG TIN VA TRUYEN THONG

NGUYEN THI LINH

KHU DE QUY TRONG BAI TOAN

QUY HOACH DONG

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Người hướng dẫn khoa học: PGS TSKH Nguyễn Xuân Huy

Trang 3

LOICAM ON

Tôi xin bày tô sự kính trọng và lòng biết on sâu sắc đến PGS.TSKH Nguyễn Xuân Huy - người đã tận tỉnh hướng dẫn và giúp đỡ tôi trong suốt quá trình học tập, nghiên cứu và hoàn thành luận văn, xin cảm ơn các thầy, cô giáo trong và ngoài trường

đã cung cấp kiến thức và tao điều kiện thuận lợi cho quả trình học tập và rèn luyện của

‘ban than tôi

Tôi cũng xin được bày tô lòng biết ơn chân thành đến Ban Giám hiệu, các thầy giáo, cô giáo phòng Sau đại học trường Đại học Công Nghệ Thông Tin &TruyềnThông, các thầy giáo ở Viên Công Nghệ Thông Tin 4a giing day và tạo mọi điều kiện cho tôi học tập, nghiên cứu và hoàn thành luận văn này

“Xin cảm ơn gia đình, bạn bè đã hết lòng giúp đỡ, khích lê động viên tôi để tôi hoàn thành luận văn Xin chia sé niềm vui này với bạn bè và những người thân yêu

‘Thai Nguyên, tháng 07 năm 2016

“Tác giả luận văn

Nguyễn Thị Linh

Trang 4

LOICAMBOAN

Tei xin cam đoan luận văn này của tự bản thân tôi tìm hiễu, nghiên cứu Các tài liệu tham khảo được trích din và chú thích đầy đủ Nếu không đúng tôi xin hoàn toàn chịu trách nhiệm

Thái Nguyên, tháng 07 năm 2016

Tac giả luận văn

Nguyễn Thị Linh

Trang 5

DANH MUC CAC KY HIEU, CAC CHU VIET TAT

Ý nghĩa

QHD | Quyhoahđông

Trang 6

DANH MUC CAC BANG TRONG LUAN VAN

2.1 | $6 lin goi him CG, ) trong bai toda chỉa thưởng 16

23 | Dé dai nein ahit cba moi dung di trong a

thiG (5 dink, 9cung) | 40

Trang 7

DANH MỤC CAC HINH VE TRONG LUẬN VĂN

22 | Vido tam gide Pascal vi 2-6 38

23 | BéthiG véi 5 dinh va 9 cung 40

Trang 8

DANH MỤC CÁC BẰNG TRONG LUẬN VĂN ix DANH MUC CAC HINH VE TRONG LUAN VAN v

1.2.3, BG phate tp tink toén cia gidi thuật 7

14 Nguyên lý ối ưu Belman 10 1.4 Nhận biết bài toán quy họach động " 41.4.1 Các đặc trưng cũa bài toắn quy hoạch động " 1.42 Bài toán chủa thường 2 41.4.3 Bãi tán Palindrome 4

CHƯƠNG 2 QUI TRÌNH GIẢI BÀI TOÁN QUY HOẠCH ĐỌNG 18 2.1 Sơ đồ chung giải bai oán quy hoạch động 18 2.1.1 Lập hệ tuức quy hoạch động 18 -11.2 Lập trình giải trực tiếp theo hệ duức quy hoạch động, 19 3.3 Các phương pháp lập hệ thức quy hoạch động 21 2.24 Lép hi thite QHĐ trực ấp theo đề bài 21 2.2.2 Phat trién ừ các hệ tước cơ số 2 12.2.3 Xây dựng hệ tước QHD theo lip voi tr dé 26 2.2.4 Xây dựng hệ Hước QHP theo lớp với tị cuất 2r

Trang 9

243 Khi niệm về khử đệ quy

3.4 Các phương pháp khử đệ quy trong quy hoạch động

KET LUAN VA HUONG PHAT TRIEN

TÀI LIỆU THAM KHẢO

Trang 10

MỞ ĐẦU

Lý do chọn đề tài

'Quy hoạch động là một phương pháp ding dé gii các bài toán trong lĩnh

vực Toán Tin Các bài toán quy hoạch động cũng chiếm vị trí khá quan trọng trong tổ chức hoạt động và sản xuất, đặc biệt 1A trong lĩnh vực tối ưu hóa

'Quy hoạch động là phương pháp toán học nhằm tìm lời giải tối ưu của quá trình nhiều bước (nhiều giai đoạn) Thuật ngữ “động ” ở đây nhằm nhấn mạnh vai trò của thời gian và sự xuất hiện đãy các quyết định trong quá trình giải bài toán,

cũng như thứ tự các phép toán có ý nghĩa quan trọng

Trong chuyên ngành khoa học máy tính, quy hoạch động là phương pháp

giảm thời gian chạy của thuật toán thể hiện tính chất của các bài toán con chồng chập nhau và cấu trúc rời rạc tối ưu Nôi đơn giản, quy hoạch động là lớp các bài toán mà quyết định ở bước thứ ¡ phụ thuộc vào quyết định ở các bước xử lý trước

hoặc sau đồ

'Quy hoạch động thường được đùng giãi các bài toán tối tu Một trong các khó khăn thường gặp là các hệ thức quy hoạch động thường có dạng đệ quy, do

đó dẫn đến hiện tượng là một hàm có thê được gọi nhiều lần với cùng một giá trị

của tham số Với dữ liệu đầu vào lớn thì đo có các lời gọi đệ qui một hàm nhiều

Trang 11

lần nên thời gian xử lý chậm, ảnh hưởng đến chất lượng xử lý bài toán Do đó, học viên chọn giải pháp khử đệ quy để giải quyết vấn đề trên

trong khuôn khổ khóa luận thạc sĩ, học viên chọn đề tài:

“Khử đệ quy trong bài toán quy hoạch động

1 Đối tượng và phạm vi nghiên cứu:

Luận văn tập trung chủ yếu vào các đối tượng và phạm vỉ nghiên cứu sau: qui trình giải bài toán quy hoạch động, phương pháp khử đệ quy trong thuật toán quy hoạch động Ứng đụng: Cài đặt, thử nghiệm khử đệ quy với thuật toán quy hoạch động có nhiều ứng dụng thực tế: Bài toán Palindrome, bài toán Tam giác

ên tố

Pascal, bai toan phat trién day số ng

“Những nội dung nghiên cứu chính

Nội đung của luận văn chủ yếu tập trung vào nghiên cứu các vấn đề chính

sau đây

Chương 1 Tổng quan về thuật toán quy hoạch động

Trong chương 1 học viên trình bày về tổng quan của các bài toán, thuật

toán quy hoạch động: Giới thiệu chung về bài toán quy hoạch động, khái niệm

vu Bellman, cách nhận biết bài toán

về bài toán quy hoạch động, nguyên lý:

quy hoạch đông

Chương 2 Quy trình gidi bài toán quy hoạch động

Trong chương này, luận văn trình bay sơ đỗ chung giải bài toán quy hoạch động, các phương pháp lập hệ thức quy hoạch động, các phương pháp khử đệ

quy trong quy hoạch động trong đó tập trung vào phương pháp giảm số biến, thêm các tham số điều khiễn, đùng mãng một chiều, mnâng hai chiều và giảm số.

Trang 12

chiều

Chương 3 Thiết kế chương trình cho một số bài toán quy hoạch động

Chuog 3 luận văn đưa ra tổ chức dữ liệu và chương trình ứng đụng đối với

một số bài toán quy hoạch động có ý nghĩa trong thực tiễn

2 Phương pháp nghiên cứu:

Trong quả trình làm luận văn, học viên sử đụng một số phương pháp nghiên cứu như:

Chương 1 của luận văn sử đụng phương pháp tổng hợp tải liệu nhằm hệ

thống lại các kiến thức về bài toán và thuật toán quy hoạch động, tìm hiểu các

khái niệm, cách nhận biết bài toán thuộc lớp qui hoạch động

Các kết quả được trình bày trong chương 2 của luận văn được hình thành

chủ yếu theo phương pháp suy luận toán học và toán học rời rạc nhằm nêu bật

tưu điểm của việc khử các lời gọi đệ quy trong thuật toán quy hoạch động

Các kết quả ứng đụng trong chương 3 được xử lý bằng các phương pháp

động với độ phức tạp thời gian thấp Ứng dụng phương pháp khử đệ quy với thuật toán quy hoạch động trong thiết kế thuật toán cho một nhôm các bài toán

có ý nghĩa thực tiễn trong kinh tế và kĩ thuật.

Trang 13

CHUONG 1

TONG QUAN VE THUAT TOAN

QUY HỌACH ĐỘNG

1.1 Giới thiệu chung

“Trong quá trình học tập và giải quyết các công việc hàng ngày, tối ưu hóa là

một đòi hỏi thường xuyên, không thê thiếu Tối ưu hoá thuật toán yêu cầu tư đuy'

thuật toán cao, cùng khả năng sử dung thành thạo các cấu trúc dữ liệu Lớp bài

toán tối ưu thường cô nhiều nghiệm chấp nhận được và mỗi nghiệm có một giá

trị đánh giá Mục tiêu đặt ra là tìm nghiệm tối ưu, đồ là nghiệm có giá trị đánh

giá lớn nhất hoặc nhỏ nhất (tối ưu).Ví dụ, tìm đường đi ngắn nhất giữa hai đỉnh của đỗ thị, tìm chuỗi con chung đài nhất của hai chuỗi, tìm chuỗi con tăng đài nhất, Để giải quyết lớp bài toán này có thể sử đụng nhiều phương pháp:

Phương pháp nhánh cận, phương pháp tham lam, phương pháp quy hoạch động, thuật toán đệ quy [9, 12]

Tùy từng bài toán, có thê chọn một phương pháp để áp đụng nhằm đạt được

Trang 14

'—iệu quả về tốc độ, bộ nhớ tốt nhất Cách đơn giản nhất để tìm nghiệm tối ưu của

một bài toán là đuyệt hết toàn bộ tập nghiệm của bãi toán đồ (vét cạn) Cách này chỉ áp dụng được khi tập nghiệm nh, kích thước vài chục byte Khi gặp những bài toán với tập nghiệm lớn thì phương pháp trên không đáp ứng được yêu cầu

về mặt thời gian tính toán

Thuật toán đệ quy cô ưu điểm đễ cài đặt, tuy nhiên các chương trình này

thường kéo theo những đòi hôi lớn về không gian bộ nhớ và một khối lượng tính

toán không lỗ mà thực tế bộ nhớ máy tính không thể thực hiện được

Quy hoạch động là phương pháp thích hợp tìm nghiệm cho các quá trình

dạng một chuỗi các quyết định tuần tự theo không gian hoặc thời gian [3],

“Thuật toán quy hoạch động là một kỹ thuật nhằm đơn giản hóa việc tính

toán các công thức truy hồi bằng cách lưu trữ toàn bộ hay một phần kết quả tinh

toán tại các bước với mục đích sử đụng lại Nếu tìm đúng hệ thức thể hiện bản

chất quy hoạch động của bài toán và khéo tô chức đữ liệu thì ta có thê xử lí được

những tập dữ liệu khá lớn [6, 8] Quy hoạch động va chia để trị là các phương

pháp giải một bài toán bằng cách tổ hợp lời giải các bài toán con của nó

Sự xuất hiện của quy hoạch động gắn liền với tên tuổi của nhà toán học

‘Mf Richard Bellman (1920 ~ 1984) đề xuất trong những năm 50 cia thé kj 20 Phương pháp này đã được áp dung dé gidi hàng loạt bài toán thực té trong các

quá trình uật công nghệ, tổ chức sản xuất, kế hoạch hóa kinh tế, [9, 10]

Tuy nhiên không phải lúc nào sự kết hợp lời giải của các bài toán con cũng cho

ta lời giải của bài toán cỡ lớn hơn, do đồ cô một số bải toán cách giải bằng quy

"hoạch động tô ra không thích hợp Nếu biết vận đụng thuật toán một cách hợp lý

có thể giải được một lớp rộng các bài toán thực tế.

Trang 15

1.2 Bài toán và thuật toán

cần phải trình bày rõ Input (thông tin đưa vào) và Output (thông tin cần lấy ra)

của bài toán đó và mối quan hệ giữa Input và Output

1.2.2 Thuật toán

Giả sử đã có một bài toán đã được mô tả rõ Intput và Output Nhưng vấn

đề đặt ra là: Làm thể nào để tìm ra Output?

Trong toán học cô một xu hướng nghiên cứu đó là chỉ cần chứng minh sự

tên tại của lời giải và không cần chỉ ra cách tìm lời giải đó

"Việc chỉ ra tường minh một cách tìm Oufput của bãi toán được gọi là thuật toán (Algorithm) giãi bài toán đó Thuật toán là một khái niệm cơ sở của toán học và tin hoc Việc nghiên cứu về thuật toán cô vai trò quan trọng trong khoa

học máy tính vì máy tính chỉ cô thể giải quyết được vấn đề khi đã có hướng din

giải rõ rằng và đúng Có thể định nghĩa đơn giãn thuật toán như sau:

Thuật toán dé giải một bài toán là một dây hữu hạn các thao tác được

sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao

tác dy, te Input của bài toán, ta nhận được Outuứ cần tìm

Các đặc trưng của thuật toán:

- Tính hữu hạn

Trang 16

1.2.3 Độ phức tạp tỉnh toán của giãi thuật

"Một bài toán có rất nhiều thuật toán để giải Chọn một giải thuật đưa ra kết

quả nhanh là một lựa chọn cần thiết Tuy nhiên, căn cứ vào đâu để kết luận được

giải thuật này nhanh hơn giải thuật kia?

Thời gian thực hiện giải thuật phụ thuộc vào rất nhiều yếu tố như kích

thước đữ liệu đưa vào Dữ liệu cảng lớn thì thời gian xử lý càng chậm Nếu goin

là kích thước đữ liệu đưa vào thì thời gian thực hiện cũa một giãi thuật có thể

'biểu điễn một cách tương đối như một hàm của n: T(n)

Phần cứng máy tính, ngôn ngữ viết chương trình và chương trình dịch

ngôn ngữ ấy đều ảnh hưởng tới thời gian thực hiện Những yếu tố này không

giống nhau trên các loại máy, vì vậy không thể đựa vào chúng dé xác định Tín)

Tức Tứn) không thể biểu điễn bằng giờ, phút, giây được Tuy nhiên, không phải

không thé so sánh được các giãi thuật về mặt tốc độ Người ta có cách đánh giá

thời gian thực hiện giải thuật độc lập với máy tính và các yếu tố liên quan tới

máy tính gọi là độ phức tạp tính toán của giải thuật

sph Cho một giải thuật thực hiện trên dỡ liệu với kích thuée n Gia sit T(a) 1a

a Các

thời gian thực hiện một giải thuật, g(n): hàm xác định đương với mọi n Khi đó,

độ phức tạp của giải thuật là

Trang 17

'©(g(n)): nếu tổn tại hằng số đương c¡, cạ, và nọ sao cho c;.g(n) < Ñ(n) <

csg(n) với mọi n= np, gín): giới han chặt của hàm T(,)

O(g(n)): nếu tổn tại hằng số đương c và nọ sao cho Tín) < c.gín) với mọi n

> no, gín): giới hạn trên của hàm T(,)

©(g(n)): nếu tôn tại hằng số đương c và nạ sao cho T(n) > c.g(n) với mọi n

> nọ, gín): giới hạn đưới của hàm T(,)

Ta nói, độ phức tạp tính toán của giãi thuật là:

+ o(g(n)): nếu tổn tại hằng số đương c, tôn tai một hằng số đương nạ

sao cho T(n) <c.gín) với mọi n > nọ

+ œ(g(n)): nếu tổn tại hằng số đương c, tồn tai một hằng số đương nọ

sao cho Tặn) > c.gín) với mọi n= np

Tĩnh chất:

- Tinh bac cầu:

+ Nếu ffn) = ©(g(n)) và g(a) = O(h(a)) thi fla) = Och(a))

+ Nếu f(a) = O(g(n)) và gín) = O((n)) thì fịn) = O((n))

a Q(g{a)) va g(a) = ©(h(n)) thi f{a) = (a)

(g(a) và gín) = o(h(n)) thì Ẩn) = o(h(n)) + Nếu f(a) = (g(a) va g(a) = (h(a) thi a) = (h(a)

Trang 18

+ Ấn) = O(g(n)) néu va chi néu g(a) = O(n)

Tính chuyển vị đối xứng:

“# fín) = O(g(n)) nếu và chỉ nếu g(n) = ©(fín))

“# fín) = o(ø(n)) nếu và chỉ nếu g(n) = w(f{n))

) Xúc định độ phức tạp tỉnh toán của gii thuật

Quy tắc bỏ trọng số: Nếu đoạn chương trình P có thời gian thực hiện

Tín) = O(ci.Ñn)) với c1 là một hằng số đương thì coi đoạn chương

Quy tắc nhân: Nếu đoạn chương trình P có thời gian thực hiện Tín) =

©(n)) khi đó nếu thực hiện k(n) tan đoạn chương trình P với kín)

©(gín)) thì độ phức tạp tính toán là O(gín) kín))

“Độ phức tạp tính toán với ình trạng đữ liệu vào:

“Nhiều trường hợp thời gian thực hiện giải thuật không chỉ phụ thuộc vào dỡ liệu mà còn phụ thuộc vào tỉnh trạng dữ liệu đó nữa Do đó, khi phân tích thời gian thực hiện giải thuật ta phãi xét các trường hợp sau: Trường hợp xấu nhất: Với một kích thước đữ liệu n, tìm Tín) là thời gian lớn nhất khi thực hiện giải thuật trên mọi bộ dữ liệu kích thước n

và phân tích thời gian thực hiện dựa trên hàm Tín),

Trang 19

10

- _ Trường hợp tốt nhất: Với một kích thước đữ liệu n, tm Tín) là thời gian nhỏ nhất khi thực hiện giải thuật trên mọi bộ dữ liệu kích thước n

và phân tích thời gian thực hiện dựa trên hàm Tín),

- _ Trường hợp trung bình: Giả sử rằng dữ liệu vào tuân theo một phân

'phối xác suất nào đó và tính toán giá trị kì vọng của thời gian chạy cho

mỗi kích thước n (T(n)), sau đồ phân tích thời gian thực hiện giải thuật đựa trên hàm Tín)

“hi khô khăn trong việc xác định độ phức tạp tính toán trung bình người

ta thường chỉ đánh giá độ phức tạp trong trường hợp xấu nhất

1.3 Nguyên lý tối ưu Bellman

"Nguyên lý tối ưu Bellman la nén ting, cơ sỡ của thuật toán quy hoạch động

'Trong thực tễ, ta thường gặp một số bài toán tối ưu loại sau [10, 11]

“C6 một đại lượng ƒ hình thành trong một quả trinh gồm nhiều giai đoạn và ta chỉ quan tâm đến kết quả cuối cùng là giá trị của ƒ phải lớn nhất hoặc nhỏ nhất,

ta gọi chung là giá trị tối ưu của

Giá trị của /phụ thuộc vào những đại lượng xuất hiện trong bài toán mà

mỗi bộ giá trị của chúng được gọi là một írạng ¿hái của hệ thống và cũng phụ

thuộc vào phương thức đạt được giá trị ƒ trong từng giai đoạn Mỗi cách thức

được vận đụng tại mỗi bước được gọi là một (bước) điều khiển Đại lượng ƒ' thường được gọi là hàm mục tiêu và quá trình đạt được giá trị tối ưu của ƒ được gọi là quá trình điều khiển tối tu

‘Bellman phat biéu nguyên lý tối ưu (cũng gọi là nguyên Jf Bellman) ma ¥

tưởng cơ bản là như sau:

Trang 20

Chú _ÿ rằng nguyên lý này được thừa nhận mà không chứng minh:

1.4 Nhận biết bài toán quy họach động

1.4.1 Các đặc trưng cña bài toán quy hoạch động

Co thể tôm lược cách nhận biết một bài toán thuộc lớp quy hoạch động

như sau:

“Một bài toán P được xem là thuộc láp Quy hoạch động nếu

1 P là bài toán tối ưu hóa: Cần xác dinh trị tôi ưu (min hoặc max,

Trang 21

2

Qui hoạch dang 3.1 được gọi là gui hoạch động dang tiến: nghiệm trung

gian của mỗi bước phụ thuộc vào các bước trước

Qui hoach dang 3.2 được gọi là gui hoạch động dạng lùi: nghiệm trung

gian của mỗi bước phụ thuộc vào các bước sau

Qui hoach dang 3.3 được gọi là gui hoach déng dang hỗn họp: nghiệm

trung gian của mỗi bước phụ thuộc vào các bước trước và các bước sau

Phương pháp

1 quy hoạch động

i bài toán tối wu theo nguyên lý Beliman thường được gọi

Bài toán giải theo phương pháp quy hoạch động gọi là bài toán quy hoạch động

Dưới đây sẽ trình bày một số bài toán thuộc lớp quy hoạch động,

1.4.2 Bai todn chia thưỡng

Cần chia hết m phần thưởng cho n học sinh xếp theo thứ tự từ giỏi trở xuống Qui tắc chia là như sau: mỗi học sinh được nhận số phần thưởng không nhỏ hơn số phần thưởng của bạn đứng dưới mình

tính số phương án chia khác nhau ?

Thí dụ, với m = 7, n = 4 ta có 11 cách chia hết 7 phần thưỡng cho 4 học

Trang 22

“Nhận biết dạng quy hoạch động (QHĐ)

Goi C(m, n) là số cách chia hết mm phần thưỡng cho n học sinh theo điều kiện của đề bài Ta thầy,

(1) Cứnn) là hàm 2 ngôi

(2) Cm, 0) =0: Nếu không có học sinh nào thì không cô cách chia nào

(3) C(0, n) = 1, n > 0: Nếu không có phần thưởng thì mỗi em đều nhận 0 phân thưởng Điều kiện chia của đề bài được đáp ứng

(4) Cm, ) = Cứn, m), m < n: Nếu số phần thưởng ít hơn số học sinh thì tờ

em thứ m+1 trở uống sẽ không nhận được phin thưỡng nào

(6) Xếết trường hợp m > n Ta chia các phương án chia thưởng thành hai

nhôm không giao nhau Nhóm 1 gỗi

Số phương án của nhôm 1 là Cm, n-I): Vì em cuối cùng không nhận thưỡng nên số m phẩn thưởng sẽ chia cho n-] em đứng đầu danh sách

Số phương án của nhóm 2 là C(m-n, n): Vì em cuối cùng có thưởng nên mọi

em đều có ít nhất 1 phần thưởng Ta tạm giữ riêng mỗi em 1 phần thưởng (để nhận sau) còn lại m-n phần thưởng ta chia cho n em.

Trang 23

`Vi hai nhôm phương án không giao nhau nên ta cổ,

'Nếu m > n thì Cím, n) = Cứn, n-1)+Cứm-n, nì

Ta thấy, đễ tính Cứm, n) ta cần tính trước Cựm, n-1) và C(m-n, n), vay bai

toán Chia thưởng thuộc lop QHD dang tiền

Bài toán tổng n số hạng dưới đây là dạng phát biểu khác của bài toán chia thưỡng

"Bài toán tông n số hạng

Có bao nhiêu cách viết số nguyên không âm m dưới dạng tổng của n số hạng nguyên không âm theo trật tự giảm dần

1.4.3 Bai toán Palindrome

Một day kí tự được gọi là palindrome

“Nhận biết dạng quy hoạch động (QHĐ)

Giả sử ta cô đãy s gồm n kí tự Ta kí hiệu s[:,j] là một đoạn cũa đãy s tính

từ kí tự thứ ¡ đến kí tự thứ j, ¡ <j Như vậy, ta có s = s[1, n] Gọi Dđ;j) là chiều đài lớn nhất của palindrome thu được sau khi đã xóa một số kí tự khôi đoạn

sii]

Thi du,

s banana, n= 6.Tacd

Trang 24

‘Néu s[i] = s[j] tức là hai kí tự đầu và cuối của đoạn s[¡j] giống nhau thì

chiều đài lớn nhất của palindrome trong s[ij] sẽ chính là chiều đài lớn nhất của

palindrome trong đoạn giữa s[i+1, j-1] cộng thêm 2 kí tự đã đối xứng tại hai đầu Ii]=sŨ]

Trang 25

16

DG) = DG, j-1) + 2, néu sfi] = sf]

Gia sit sf] s[j] tức là hai kí tự đầu và cuối của đoạn s[Lj] khác nhau thì ta

xét hai đoạn “hụt đầu” và “hut cuéi” trong s[i,j] 18 s[i,j-1] va s[i+1,j] Trong hai đoạn này ta lấy D max

Vay, D(i,j) = max { DG+1, j), DG j-1) }, nếu s[i] # s[i]

Vậy palindrom là bài toán QHĐ dạng

Trang 26

KET LUAN CHUONG 1

Quy hoạch động là một phương pháp giải các bài toán tối ưu Phương pháp quy hoạch động đựa trên tư tưởng chia để trị và nguyên lý tối ưu Bellman

Để nhận biết một bài toán quy hoạch động trước hết cần xét xem bài toán

đồ có phải là bài toán tối ưu hóa hay không Sau đó, chúng ta xem bài toán cô

một giá trị nghiệm tối ưu ban đầu hay không Cuối cùng, ta xác định trạng thái

cơ sở của bài toán, đựa vào hàm mục tiêu và một số phép biển đổi đại số cơ bản

để tìm ra công thức truy hỏi tính toán các trạng thái theo hàm mục tiêu và chứng minh tính đúng đắn của công thức Dựa vào công thức truy hồi chúng ta có thể

nhận biết được bài toán quy hoạch động thuộc lớp bài toán quy hoạch động tiễn,

lùi hay hỗn hợp

Quy hoạch động ding dé giãi một lớp bài toán tdi wu khá lớn trong tin học

và trong thực tế Tuy nhiên, không phải mọi bài toán đều có thể giải bằng phương pháp quy hoạch động Do vậy, chúng ta cần nhận biết chính xác các đặc

trưng của bài toán quy hoạch động đề đưa ra lời giải tốt nhất.

Trang 27

18

CHUONG 2

QUI TRINH GIAI

BÀI TOÁN QUY HOẠCH ĐỘNG

2.1 So dé chung giải bài toán quy hoạch động

"Đổ giãi một bai toán quy hoạch đông, người ta thường thực hiện theo các

"bước sau đây [1, 6, 7]

SƠ ĐỎ CHUNG GIẢI BÀI TOÁN QUY HOẠCH ĐỘNG

“Bước 1 Lập hé thức quy hoạch động HT

Bước 2 Lập trình giải trực tiếp theo hệ thức H

Bước 3 Khử độ qui cho H

Bước 4 TỔ chức dữ liệu và lập trình

2.1.1 Lập hệ thức quy hoạch động

Thông thường khi đùng phương pháp quay lui, vét cạn cho các bài toán

Trang 28

9

quy hoạch động thì chỉ cô thể vét được các tập dữ liệu nhỏ, kích thước chững vài

chục byte Nếu tìm được đúng hệ thức thê hiện bản chất quy hoạch động của bài toán và khéo tổ chức đữ liệu thi ta có thê xử 1ý được những tập đữ liệu khá lớn

Dựa vào nguyên lý tối ưu tìm cách chia quá trình giãi bài toán thành từng

giai đoạn, sau đó tìm hệ thức biểu điễn tương quan quyết định của bước đang xử

ý với các bước đã xử lý trước đó Hoặc tìm cách phân rã bài toán thành các “bài toán con” tương tự có kích thước nhỏ hơn, tìm hệ thức nêu quan hệ

iữa kết quả bài toán kích thước đã cho với các kết quả của các “bài toán con” cùng kiểu có kích thước nhỏ hơn của nó dạng hàm hoặc thủ tục đệ quy [4, 5]

2.1.2 Lập trình giải trực tiếp theo hệ thức quy hoạch động

“Khi đã có hệ thức quy hoạch động chúng ta có thễ xây dung ns

giải Tuy nhiên, hệ thức này thường là các biễu thức đệ

tượng tran miễn nhớ khi ta tổ chức chương trinh trực tiếp bằng đệ quy [2, 8]

do 46 đễ gây ra hiện

Ta xét thi dụ với bài toán Chia thưởng

Theo hệ thức quy hoạch động ta biết cách tính hàm C như san:

Cem, =) = ifn =O then 0

cise ifm <n then © 2= Cla, =) else C22 Cle, not) + Clee, =

Dé tinh xem C(7.4) được gọi bao nhiêu lần ta sử dụng một măng hai chiều

s, trong đồ s[ij] cho biết hàm CGj) được gọi bao nhiêu lần

Khi đó hàm trên sẽ được cài đặt thêm chức năng đếm số lần gọi hàm:

Trang 29

Sau khi gọi lời giải C(17, 6) với 17 phân thưởng và 6 học sinh ta thu được

các thông tin sau:

C7, 6) = 163 (Có 163 phương án chia 17 phần thưởng cho 6 học sinh)

Trong đó số lần goi cc ham C(ij) được ghỉ trong bang sau:

"Bảng 21 Số lân sọi hàm Cũ) trong bai todn Chia Thưởng.

Trang 30

"Như vậy, thay vì gọi hàm C(1,0) chia 1 phần thưởng cho 0 học sinh đúng một lần, hàm này bị gọi tới 136 lẫn

Điều này dẫn tới việc phải tổ chức Bước 3 và Bước 4 cho sơ đồ trên

Các Bước 3 và Bước 4 cho sơ dé chung nói trên sẽ được trình bày vào

cuối Chương 2

2.2 Các phương pháp lập hệ thức quy hoạch động

3.2.1 Lập hệ thức QHĐ trực tiếp theo đề bà

Một số bài toán ngay trong đề đã cung cấp các hệ thức quy hoạch động đo

đô chỉ đồi hỏi tổ chức tính toán theo các Bước 3 và Bước 4 của sơ đỗ tổng quát nhằm giảm thời gian thực hiện chương tỉnh Dưới đây liệt kê một số bải toán thuộc đạng này [6, 10, 11]

3) Cho trước giá trị g Hãy tim n dé n! = g

©) Cho trước giá trị n Hãy cho biết có bao nhiêu số 0 tận cùng của n!

4) Cho trước n và p Hãy tìm số k lớn nhất để p* là ước của n!

Số Fibonacci

_Dãy số Fibonacci ƒ được lập theo hệ thức sau:

* Ä=A=1

Trang 31

2

tinh ƒ, với n trong giới hạn cho trước

2) Cho trước giá trị g Hãy tìm n đỗ ƒ, = g

@) Ưới mỗi m, n hay t6 chite qui trinh tính A(m, n)

hết giá trị của hàm Ackermamm được biểu diễn dưới dang công

thức có chứa hạng tit “Igy tng”, theo kí hiệu của Kruth *a [10]

Hay viết hàm KỊP, a) tính công thức lãy tằng nói trên

Hàm Ackermann được vận đụng nhiều trong các công thức đánh giá độ phức tạp tính toán và lý thuyết máy Turing [9, 12]

Biét if, j.f, i#j và sé nguyén n Hay tinh fi?

Trang 32

Ta biết một đãy (tva) Fibonacci 1a hoan toan xc dinh néu biét hai số hạng liên

tiếp của dãy

Gia sit fir =x

Ta tìm cách biểu diễn x qua các đữ liệu của giả thiết

Ta có đấy sau đây

Trang 33

fost atx + (a+x)=2a+3x= a+ Cx

Ja=b

Tổng quát, vận đụng qui nạp toán học ta có thể chứng minh rằng:

đa= Cáa + Cœ đ>1

Hệ thức trên có ý nghĩa sau đây

Moi day tua Fibonacci đều có thể được biểu diễn qua day Fibonacci

Trang 34

Ta cần phân biệt số chẵn với số hạng có chỉ số chẵn Trong đãy trên, nếu

ta kí hiệu cụ, cạ là các số hang của day Fibonacci, ta có:

Si] [S5] &j 8] & [Œ [& [8 [eis

3 |5 8 | 13/21/34) 55/89 các

Ta xét day Fibonacci 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, trong đồ

các số chăn được gạch đưới Ta thấy cứ sau hai số 1é sé gap mét sé chin

Goi a và b là 2 số Fibonacci lẻ liên tiếp Xét day 5 s6 Fibonacci liên tiếp a,

b, c, , e, với a và b là hai số lẽ Để lập luận ta vận đụng các mệnh đề sau đây:

Ta thấy, số Fibonacci chẵn tiếp theo sẽ là c = a = b; sau đồ là 2 số lẽ đ =

Trang 35

+%

đ Với hai số lẻ liên tiếp trong đãy là a và b, ta đặt t = a + b thì t là

tiếp theo và hai số lẽ tiếp theo tsẽ là đ = b + c = b + (a ~ b) = b + tà e=

số c

c+đ=d+t Vậy ta chỉ cần tổ chức sinh các số hạng theo kĩ thuật “cm canh

nhịp 2”, tức là bỏ qua 2 số hạng mang giá trị lẽ, cộng dén số hạng thứ ba mang

giá trị chin vào tông

Để ý rằng bài này không yêu cầu về chỉ số của mỗi số hạng nên ta có thể

xây dựng đăy Fibonacci tir hai số hạng đầu tiên 1 va 1 thay vì xuất phát từ 1 và 2

2.2.3 Xây dựng hệ thức QHĐ theo lớp với trị đầu

Dựa theo đối tượng đầu tiên ta có thể phân hoạch bài toán ban đầu thành

nhiều bài toán con cô nghiệm không giao nhau Sau đồ sử đụng kết quả của các bài toán con đồ để tìm nghiệm của bài toán Chẳng hạn như bai Robot sau đây dura theo bước đầu tiên ta cô thể chia các cách bước thành nhiều nhóm không giao nhau [6]

Robot

“Một Robot có thể nhảy k> 1 bước với độ dài khác nhau (bs, bs, ,bx) trén đoạn đường thẳng Đặt Robot trên đoạn đường thẳng tại vạch xuất phát 0 Cho

biết số cách nhây đễ Robot đến được điểm m-

Thí đụ, số bước #= 2, ð: = 2, ð:= 3, đoạn đường đài „=8 Có 4 cách nhảy đề

Trang 36

Hệ thức QHD

Ki hiệu mỗi cách nhãy của robot là một vector v = (4, ) có các thành phần

»¡ là mỗi bước nhảy và tổng các thành phần trong v đúng bằng N Gọi S(n) là số cách để robot vượt đoạn đường đài n Dựa theo độ đài bước nhảy đầu tiên đ

của mỗi cách nhãy ta chia toàn bộ các phương án nhãy của robot thành š nhóm

không giao nhau

Để ý rằng khi đoạn đường cần vượt cô chiều đài n = 0 thỉ robot có một

cách bước (đứng yên), do đó 5(0) = 1 Ngoài ra ta quy định S(n) = 0 nếu ø <0

"Theo quy định này thì hệ thức QHĐ còn đơn giản hơn nữa:

SO)

S(o) = EE S(n-B) | 1=1,2, , R}

2.2.4 Xdy dựng hệ thức QHĐ theo lớp với trị cuất

Ta có thé phân hoạch các nghiệm cia bai toán ban đầu theo giá trị cuối c

Theo nội đung đã trình bày tại mục 1.3.2 khi cần chia hết m phần thưởng

cho n học sinh xếp theo trật tự tí

án chia thưởng thành hai lớp không giao nhau đựa trên số phần thưởng c học

sinh cuối đanh sách được lĩnh: Lớp thứ nhất gồm các phương án c = 0, lớp thứ

õi trở xuống ta đã phân hoạch các phương

Trang 37

Hệ thức QHĐ một biến

"Với các bai toán mà ta chỉ quan tâm đến một đối tượng nào đó Khi lập

công thức truy hôi chỉ phụ thuộc vào một biển

Bài toán Robot trong mục 2.2.3 cho ta hệ thức QHĐ một biến, cụ thể là S(n) là số phương án nhãy khác nhau khi robot từ vị trí 0 trên đường thẳng nhãy

tính chất này, ta thường quan tâm đặc

«Ha ham mấy ngôi (bao nhiêu biến)

* Các tình huống cận: Khi các biến nhận giá trị cận đưới, cận trên,

ngoài giới hạn

"Thí dụ, với bài toán robot ta đã phát hiện rằng

S(0

Trang 38

Hệ thức QHĐ hai biến

Với các bài toán mà ta phải quan tâm đến hai đối tượng trong bài Khi lập công thức truy hôi loại này thường phụ thuộc vào hai biển Ta xét bài toán sau:

"Bài toán Ba lô

Cần chọn một số trong số n đồ vật đễ xấp vào một ba lô tải trọng m sao cho tông trọng lượng không vượt quá m và tổng giá trị là lớn nhất Biết trọng lượng của vật thứ ¡ là w[tj và giá trị của vật đó là v[tj> 0 Hãy cho biết giá trị

Trang 39

30

“Xếp các đỏ vật 1, 4, 6 và 8 Khi đó trọng lượng sẽ là

$= S+3+§+7 = 23 và giá trị max khi đồ sẽ là

€= 50 + 100 + 200 + 300 = 650

Bài toán này được vận dung trong khá nhiều lĩnh vực như qui hoạch

nguyên, vận trù học, mật mã khóa công khai, giấu tin 10, 12]

"Nếu doi hoi giãi trình phương án chọn đỏ vật thì bài toán được gọi là Bài toán Ba lô 0/1 vì có thé diễn đạt nghiệm x dui dang vector 0/1, trong 46 x;

cho biết vật ¡ được chọn, x; = 0 cho biết vật ¡ không được chọn đề xếp vào ba lô

"Nghiệm 0/1 ứng với phương án 1, 4, 6, 8 là x = (1, 0,0, 1,0, 1,0, 1)

Hệ thức QHD

Gọi #(, /) là tổng giá trị c lớn nhất có thể có bằng cách chọn ¡ vật đầu tiên

{1,2 , 1} với giới hạn trọng lượng j Khi đó, đáp án của bài toán chính là giá trị lớn nhất khi chọn trong số ø vật với giới hạn trọng lượng À⁄ chính la F(n.1

'Với giới hạn trọng lượng /, việc chọn giá trị tối ưu trong số các vật {1, 2, 4- 1,7} bao gồm haikhả năng:

_ Khả năng thứ nhất: Nêu không chọn vật ¡ thì Z(¡, /) là giá trị lớn nhất có thể bằng cách chọn trong số các vật {1, 2, ¡ - 1} với giới hạn trọng

lượng la Tic 1a FU) = F- 1.)

co Kha ning thi hai: Néu cé chon vit / thi ta đã có trong tay giá trị vị] (tất

nhiền chỉ xét trường hợp này khi w[/]<), ngoài ra ta còn chọn ¡ - 1 vật đầu tiên với giới hạn trọng lượng j - w{ï] Giá trị thu được theo khả

năng này sẽ là: F./) = v[(] + # - 1,/ - w[f))

Vi theo céch xây dựng F(1/) là giá trị lớn nhất có thể, nên Z(1/) sẽ là max trong hai giá trị thu được ở trên [5],

Trang 40

31

TQ, j)= max (F(1, j, v[i] + FŒ-1, j¬wfiD, j > wii]}

_Ngoài ra ta còn có,

© F(0,j)=0: không cô vật để chọn, giá trị bing 0

+ F(,0)=0: giới hạn trọng lượng 0 thỉ không chọn được vật nào

Bài toán Palindrome trình by trong mục 1.3.3 có hệ thức QHĐ hai biến

2.3 Khái niệm về khử đệ quy

Một hàm được gọi là đệ quy nếu trong định nghĩa của hàm đó có chứa lời gọi tới chính nó [2, 7, 10]

©) Ham đị, )) tính chiều đài lớn nhất cia palindrome thu được sau khi xóa

đi một số kí tự của đoạn kí tự s[¡,j] được định nghĩa đệ quy như sau:

* 4Œ0=1

® đŒ.j)=0.i>j

+ 6Œ) =đŒ*1,j-1) +2, nếu ï <j và sfi]= shi]

© d@.j) =max (40, 40 } néui <j vasti] = sf]

Ngày đăng: 24/12/2024, 16:47

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

TÀI LIỆU LIÊN QUAN

w