Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
207,93 KB
Nội dung
GIỚI THIỆU ĐỀ TÀI I MỤC TIÊUVÀ PHẠM VI CỦA ĐỀ TÀI Mục tiêu đề tài nắm rõ phươngphápquyhoạchđộng từ áp dụng để giải toánbalôcóhạnchế Nếu vét cạn phương án toán tốn nhiều thời gian, sử dụng phươngpháp "tham ăn" phương án tìm chưa phương án tối ưu Quyhoạchđộng kỹ thuật nhằm đơn giản hóa việc tính toán công thức truy hồi cách lưu toàn hay phần kết tính toán bước trước với mục đích sử dụng lại Lý thuyết − Nắm rõ phươngphápquyhoạchđộng − Áp dụng phươngpháp vào toán sau: Giải toánbalôcóhạn chế: cho n loại đồ vật có khối lượng w 1, , wn Số lượng giá trị loại đồ vật c 1, c2, , cn v1, ,vn Xếp đồ vật vào túi có sức T cho tổng giá trị lớn Giả thiết T, wi, vi, ci, i=1, ,n, số nguyên dương Phần mềm − Sử dụng ngôn ngữ C viết chương trình Dev C để giải toán CHƯƠNG I CƠ SỞ LÍ THUYẾT VỀ QUYHOẠCHĐỘNG 1.1 MỘT SỐ KHÁI NIỆM: 1.1.1 Bàitoán tối ưu: a Khái niệm: Bàitoán tối ưu gồm có hàm f gọi hàm mục tiêu hay hàm đánh giá; hàm g1, g2, …, gn cho giá trị logic gọi hàm ràng buộc Yêu cầu toán tìm cấu hình x thoả mãn tất ràng buộc g1, g2, …, gn:gi(x) = TRUE ( i:1 i n) x tốt nhất, theo nghĩa không tồn cấu hình y khác thoả mãn hàm ràng buộc mà f(y) tốt f(x) Bàitoán tối ưu toán thường có nhiều nghiệm chấp nhận nghiệm cógiá trị đánhgiá Mục tiêu đặt tìm nghiệm tối ưu, nghiệm cógiá trị đánhgiá lớn nhỏ (tối ưu) b Một số ví dụ toán tối ưu: Ví dụ 1.1: Trong mặt phẳng tọa độ Oxy tìm tọa độ (x,y) để tổng x + y đạt giá trị lớn mà x2 + y2 ≤ Ở toán ta thấy: Hàm mục tiêu : x + y max Hàm ràng buộc : x2 +y2 ≤ Ví dụ 1.2: Bàitoán xếp BalôCóbalô chứa tối đa trọng lượng M có n đồ vật (n 100), đồ vật có trọng lượng wi giá trị bi; M, wi, bi số nguyên Hãy chọn xếp đồ vật vào balô để tổng giá trị balô lớn Với toán ta thấy: Hàm mục tiêu: , i = 1, 2, …, n Hàm ràng buộc : , i = 1, 2, …, n Tóm lại, toán tối ưu phong phú, đa dạng, ứng dụng nhiều thực tế cần biết đa số toán tối ưu không giải chưa giải 1.1.2 Công thức truy hồi (Hệ thức truy hồi): Khái niệm: Công thức truy hồi công thức thể quan hệ bước toán kết bước sau thường dựa vào kết bước trước Kết bước cuối kết toán 1.2.PHƯƠNG PHÁPQUYHOẠCH ĐỘNG: 1.2.1 Phươngpháp chia để trị: “Chia để trị” việc tách toán ban đầu thành toán độc lập, sau giải toán tổ hợp dần lời giải từ toán nhỏ đến toán ban đầu Phươngpháp chia để trị phươngpháp thông dụng Tin học Phươngpháp chia để trị thường áp dụng cho toáncó chất đệ quy (bài toán P có chất đệ quytoán P giải lời giải toán P’ có dạng giống P Tuy nhiên, cần lưu ý rằng: P’ có dạng giống P theo nghĩa P’ phải nhỏ P, dễ giải P việc giải không cần dùng đến P) Giải thuật dùng để giải toáncó chất đệ quy gọi giải thuật đệ quy 1.2.2 Khái niệm phươngphápquyhoạch động: a Khái niệm: Phươngphápquyhoạchđộng (Dynamic Programming) kỹ thuật nhằm đơn giản hóa việc tính toán công thức truy hồi cách lưu toàn hay phần kết tính toán bước trước với mục đích sử dụng lại Như vậy, Quyhoạchđộng = Chia để trị + Mảng (lưu lại kết quả) Phươngphápquyhoạchđộng nhà toán học người Mỹ Richard Bellman (19201984) phát minh năm 1953 Phươngpháp dùng để giải toán tối ưu có chất đệ qui, tức tìm phương án tối ưu cho toán đưa tìm phương án tối ưu số hữu hạntoán Điểm khác quyhoạchđộngphươngpháp đệ quy : • Phươngpháp đệ quy giải toán theo hướng top-down, nghĩa để giải toán ban đầu, ta phải giải tất toán Đây phươngpháp hay, nhiên phươngpháp gặp hạnchế mặt thời gian, tốc độ phải tính tính lại nhiều lần số toán giống • Phươngphápquyhoạchđộng sử dụng nguyên lý bottom-up, nghĩa "đi từ lên" Đầu tiên, ta phải giải toán đơn giản nhất, tìm nghiệm Sau kết hợp toán lại để tìm lời giải cho toán lớn giải toán yêu cầu Với phươngpháp này, toán sau giải xong lưu trữ lại đem sử dụng cần Do tiết kiệm nhớ cải thiện tốc độ b Đặc điểm chung quyhoạch động: Quyhoạchđộng việc giải tất toán nhỏ (bài toán sở) để từ bước giải toán lớn giải toán lớn (bài toán ban đầu) Quyhoạchđộng cần phải có bảng phương án Ý tưởng phươngphápquyhoạchđộng tránh tính toán lại toán xét, nói cách khác phươngphápquyhoạchđộng thể sức mạnh nguyên lý chia để trị đến cao độ Tóm lại: • Quyhoạchđộng dùng để giải toán tối ưu theo nguyên lý “chia để trị” thực chất phươngpháp cải tiến phươngpháp giải toán theo hướng đệ quy • Quyhoạchđộng làm giảm độ phức tạp, giảm thời gian giải • Quyhoạchđộng thường tiếp cận theo hướng từ lên (Bottom – up) 1.2.3 Các cách thực phươngphápquyhoạchđộngQuyhoạchđộng thường dùng cách tiếp cận sau: a Tiếp cận từ lên (bottom up) b Tiếp cận từ xuống (top down) Cách tiếp cận từ lên hiệu nên cách tiếp cận từ lên (bottom up) thường sử dụng nhiều 1.2.4 Các yêu cầu toán tối ưu sử dụng phươngphápquyhoạchđộng Một toán tối ưu muốn giải phươngphápquyhoạchđộngtoán tối ưu có đặc điểm đây: 1) Bàitoán lớn phải phân rã thành nhiều toán con, mà phối hợp lời giải toán cho ta lời giải toán lớn 2) Vì quyhoạchđộng giải tất toán nên không đủ không gian vật lý lưu trữ kết (bộ nhớ, đĩa …) để phối hợp chúng phươngphápquyhoạchđộng thực 3) Quá trình từ bàitoán sở tìm lời giải toán ban đầu phải qua hữu hạn bước 1.3.NGUYÊN TẮC CƠ BẢN CỦA QUYHOẠCHĐỘNG Nguyên lý tối ưu Bellman: Ta biết quyhoạchđộng thường dùng để giải toán tối ưu- toán yêu cầu tìm giải pháp tốt giải pháp tìm Cơ sở quyhoạchđộngtoán tối ưu nguyên lý tối ưu Bellman Nguyên lý tối ưu Bellman phát biểu sau: “Dãy tối ưu định trình định nhiều giai đoạn có thuộc tính dù trạng thái định ban đầu nào, định lại phải tạo thành cách giải tối ưu không phụ thuộc vào trạng thái sinh từ định ban đầu” Hay nói cách khác: “Giải pháp tối ưu cho toán P cần chứa giải pháp tối ưu cho toán P” Do giải toán theo quyhoạchđộng dùng phươngpháp gồm nhiều bước tiến hành điều kiện cần để giải pháp tối ưu xây dựng từ nghiệm tối ưu bước trước 1.4 CÁC BƯỚC GIẢI BÀITOÁN TỐI ƯU BẰNG QUYHOẠCHĐỘNG • Bước 1: Lập công thức truy hồi • Bước 2: Tổ chức liệu chương trình • Bước 3: Truy vết, tìm nghiệm toán dựa vào bảng phương án 1.5 ƯU ĐIỂM VÀHẠNCHẾ CỦA PHƯƠNGPHÁPQUYHOẠCHĐỘNG 1.5.1 Ưu điểm: Tiết kiệm thời gian thực không cần phải tính tính lại nhiều lần số toán giống 1.5.2 Hạnchế - Việc tìm công thức truy hồi tìm cách phân rã toán nhiều đòi hỏi phântích tổng hợp công phu, dễ sai sót, khó nhận thích hợp, đòi hỏi nhiều thời gian suy nghĩ Đồng thời lúc kết hợp lời giải toán cho kết toán lớn - Khi bảng lưu trữ đòi hỏi mảng hai, ba chiều … khó xử lý liệu với kích cỡ chiều lớn đến hàng trăm - Cótoán tối ưu giải quyhoạchđộng Tóm lại: Không phải lúc việc kết hợp toán cho ta kết toán lớn Hay nói cách khác việc tìm kiếm "công thức truy hồi" khó khăn Ngoài ra, số lượng toán cần lưu trữ lớn, không chấp nhận liệu nhớ máy tính không cho phép KẾT CHƯƠNG I Quyhoạchđộngphươngpháp hay hiệu quả, giải hầu hết toán tối ưu Tuy nhiên, giải toán theo hướng quyhoạch động, ta cần phải tìm công thức truy hồi thật xác chứng minh độ xác tin cậy Cho đến nay, chưa có định lý cho biết xác toán tối ưu giải hiệu quyhoạchđộng Tuy nhiên, để biết toán giải phươngphápquyhoạchđộng hay không, ta tự đặt câu hỏi: “ Một nghiệm tối ưu toán lớn có phải phối hợp nghiệm tối ưu toán hay không?” “Liệu lưu trữ nghiệm toán hình thức để phối hợp tìm nghiệm toán lớn?” CHƯƠNG II GIẢI BÀITOÁNBALÔCÓHẠNCHẾ THEO PHƯƠNGPHÁPQUYHOẠCHĐỘNG ĐỀ BÀI: Giải toánbalôcóhạn chế: cho n loại đồ vật có khối lượng w1, , wn Số lượng giá trị loại đồ vật c1, c2, , cn v1, ,vn Xếp đồ vật vào túi có sức T cho tổng giá trị lớn Giả thiết T, wi, vi, ci, i=1, ,n, số nguyên dương 2.1.PHÂN TÍCHBÀITOÁN Cho n loại đồ vật Đồ vật thứ i có khối lượng w[i] giá trị v[i] Số lượng đồ vật loại bị hạnchế c[i] Cần chọn đồ vật loại để bỏ vào balô cho tổng giá trị đồ vật chọn lớn tổng khối lượng chúng không vượt sức chứa T cho trước Cho biết số lượng đồ vật loại chọn tổng giá trị lớn thu Input: Có n đồ vật, túi có sức chứa T Mỗi loại đồ vật có khối lượng w , giá trị v số lượng c Số lượng đồ vật loại chọn Tổng giá trị lớn thu Output: 2.2.XÁC ĐỊNH CÔNG THỨC ĐỆ QUY Gọi F(i, m) tổng giá trị lớn hàng chọn cho tổng khối lượng m: F(i, m) = F(i-1, m) • Trường hợp w[i] && m >= 0) Begin if(S[i][m] != 0) Begin ; m = m - S[i][m] * w[i]; End i = i - 1; End ; End Sơ đồ khối i = n; m = T; S i > m >=0 Đ Đ S[i][m] != S i = i -1 Đ m = m - S[i][m] * w[i]; ; End CHƯƠNG III CHẠY CHƯƠNG TRÌNH 3.1 CHẠY CHƯƠNG TRÌNH VỚI VÍ DỤ CỤ THỂ Ta sử dụng để ví dụ cho phía n = 5, T = 12 i w[i] v[i] c[i] Nhập liệu từ bàn phím In kết 3.2 QUÁ TRÌNH THỬ NGHIỆM CHƯƠNG TRÌNH VỚI NHIỀU DỮ LIỆU ĐẦU VÀO KHÁC NHAU 3.2.1.Thử nghiệm với n tăng dần , khối lượng T = 700 túi giữ nguyên n 50 100 200 300 400 500 Time(milliseconds) 15 15 16 31 31 78 3.2.1.Thử nghiệm với T tăng dần , n = 50 T 1000 2000 3000 4000 5000 Time(milliseconds) 15 47 63 94 131 * Nhận xét: Thời gian thực thi thuậttoán tỉ lệ thuận với n, T CHƯƠNG IV TỔNG KẾT 4.1 KẾT QUẢ ĐẠT ĐƯỢC Sau nghiên cứu tìm hiểu đề tài, với hướng dẫn tận tình Thầy giúp đỡ bạn nhóm tiểuluận hoàn thành đạt số kết sau: − Chương trình chạy với nhiều Test − Hiểu, thiết lập thuậttoán viết chương trình dựa vào thuậttoán thiết lập Chương trình thiết kế thuậttoán đơn giản, dễ hiểu nên dễ dàng kiểm tra sửa chữa có yêu cầu chỉnh sửa − 4.2 HẠNCHẾ Nhóm chưa tích lũy nhiều kinh nghiệm việc làm tiểuluận kỹ làm việc nhóm, kỹ thuật lập trình tổ chức liệu Do đó, chương trình nhiều thiếu sót: − Có thể gặp nhiều lỗi mà chưa tìm Lý luậntoán chưa ngắn gọn, súc tích nên gây khó khăn việc theo dõi toán − − Giao diện hạnchế ... chung quy hoạch động: Quy hoạch động việc giải tất toán nhỏ (bài toán sở) để từ bước giải toán lớn giải toán lớn (bài toán ban đầu) Quy hoạch động cần phải có bảng phương án Ý tưởng phương pháp quy. .. toán lớn?” CHƯƠNG II GIẢI BÀI TOÁN BA LÔ CÓ HẠN CHẾ THEO PHƯƠNG PHÁP QUY HOẠCH ĐỘNG ĐỀ BÀI: Giải toán ba lô có hạn chế: cho n loại đồ vật có khối lượng w1, , wn Số lượng giá trị loại đồ vật c1,... Các yêu cầu toán tối ưu sử dụng phương pháp quy hoạch động Một toán tối ưu muốn giải phương pháp quy hoạch động toán tối ưu có đặc điểm đây: 1) Bài toán lớn phải phân rã thành nhiều toán con, mà