Tổ chức dữ liệu và thuật toán cho các bài toán quy hoạch động

70 796 2
Tổ chức dữ liệu và thuật toán cho các bài toán 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

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn i ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG ĐỖ THỊ LINH TỔ CHỨC DỮ LIỆU VÀ THUẬT TOÁN CHO CÁC BÀI TOÁN QUY HOẠCH ĐỘNG LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUYÊN - 2012 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn ii LỜI CAM ĐOAN Tôi 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 dẫn và chú thích đầy đủ. Nếu không đúng tôi xin hoàn toàn chịu trách nhiệm. Tác giả luận văn Đỗ Thị Linh Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn iii LỜI CẢM ƠN Tôi 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ền Thông, các thầy giáo ở Viện Công Nghệ Thông Tin đã giảng dạy 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. Đặc biệt, tôi xin bày tỏ sự kính trọng và lòng biết ơn 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. 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. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn iv MỤC LỤC Lời cam đoan i Lời cảm ơn iii Mục lục iv Danh mục các bảng vi Danh mục các hình vii MỞ ĐẦU 1 1. Lý do chọn đề tài 1 2. Đối tượng và phạm vi nghiên cứu 2 3. Những nội dung nghiên cứu chính 2 4. Phương pháp nghiên cứu 3 5. Ý nghĩa khoa học của đề tài 3 Chƣơng 1. TỔNG QUAN VỀ PHƢƠNG PHÁP QUY HOẠCH ĐỘNG 4 1.1. Giới thiệu chung 4 1.2. Thuật toán chia để trị 5 1.3. Nguyên lý tối ưu của Bellman 6 1.4. Đặc điểm chung của phương pháp quy hoạch động 7 1.5. Ý tưởng và nội dung của thuật toán quy hoạch động 9 1.5.1. Các khái niệm 9 1.5.2. Ý tưởng 9 1.5.3. Nội dung 10 1.6. Các bước thực hiện 10 Chƣơng 2. MỘT SỐ KỸ THUẬT GIẢI BÀI TOÁN QUY HOẠCH ĐỘNG 13 2.1. Lập hệ thức 13 2.1.1. Tạo một công thức truy hồi từ một công thức đã có 13 2.1.2. Dựa theo thứ tự xây dựng 16 2.1.2.1. Xây dựng dựa theo thứ tự đầu 16 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn v 2.1.2.2. Xây dựng theo thứ tự cuối 18 2.1.3. Phụ thuộc vào số biến của hàm 23 2.1.3.1. Công thức truy hồi có một biến 23 2.1.3.2. Công thức truy hồi có hai biến 27 2.1.3.3. Công thức truy hồi có ba biến 28 2.2. Tổ chức dữ liệu 31 Chƣơng 3. THUẬT TOÁN QUY HOẠCH ĐỘNG VÀ LÝ THUYẾT TRÒ CHƠI 37 3.1. Bài toán trò chơi 37 3.2. Lý thuyết trò chơi 38 3.2.1. Trò chơi trên đồ thị 41 3.2.1.1. Trường hợp đồ thị không có chu trình 41 3.2.1.2. Trường hợp đồ thị có chu trình 42 3.2.1.3. Giải thuật xây dựng W và L độ phức tạp O(E) 43 3.2.2. Tổng trực tiếp. Hàm Sprague - Grundy 43 3.2.3. Trò chơi trên ma trận 49 3.3. Kỹ thuật lập trình 50 3.3.1. Tính trực tiếp hàm Sprague - Grundy 50 3.3.2. Kỹ thuật bảng phương án (Decide Table) 54 KẾT LUẬN 61 TÀI LIỆU THAM KHẢO 62 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn vi DANH MỤC CÁC BẢNG Trang Bảng 2.1. Bảng số lần gọi hàm f(n) với n = 5 13 Bảng 2.2. Các phương án chia kẹo với m = 7, n = 4 19 Bảng 2.3. Số lần gọi hàm cục bộ khi gọi C(7, 4) 32 Bảng 3.1. Bảng phương án cho bài toán lật xúc xắc 59 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn vii DANH MỤC CÁC HÌNH Trang Hình 1.1. Đồ thị mô tả quan hệ giữa các bài toán con của bài toán tìm số hạng thứ năm của dãy Fibonacci 7 Hình 2.1. Cây biểu diễn lời gọi hàm f của bài toán tính hàm f(5) 14 Hình 2.2. Cây biểu diễn số lần gọi hàm cục bộ khi gọi hàm C(7, 4) 33 Hình 3.1. Không gian trạng thái và không gian điều khiển của bài toán lật xúc xắc 40 Hình 3.2. Biểu diễn các nước đi của trò chơi dưới dạng một đồ thị có hướng 40 Hình 3.3. Biểu diễn tính số Sprague - Grundy 44 Hình 3.4. Sơ đồ thuật giải trò chơi NIM 52 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 1 MỞ ĐẦU 1. Lý do chọn đề tài Ngày nay với sự phát triển như vũ bão của khoa học công nghệ trên thế giới, mặc dù xuất phát chậm hơn rất nhiều nước nhưng trong hơn chục năm qua đất nước chúng ta đã trải qua cuộc cách mạng lớn lao về công nghệ thông tin. Để đáp ứng những đòi hỏi của sự phát triển đó phải có kế hoạch đào tạo bồi dưỡng những cá nhân có niềm say mê và có năng khiếu trong lĩnh vực tin học và trang bị vốn kiến thức cơ sở vững chắc, giúp cho mục tiêu đi trước đón đầu, rút ngắn khoảng cách về trình độ tin học giữa nước ta và thế giới. Trong quá trình học tập, chúng ta gặp rất nhiều các bài tập toán tin. Các bài tập dạng này rất phong phú và đa dạng. Thực tế chưa có thuật toán hoàn chỉnh có thể áp dụng cho mọi bài toán. Tuy nhiên người ta đã tìm ra một số thuật toán chung như: chia để trị, tham ăn, quay lui, Các thuật toán này có thể áp dụng để giải một lớp khá rộng các bài toán hay gặp trong thực tế. Giáo sư Niklaus Wirth, người sáng tác ra ngôn ngữ Pascal đã có một triết lý: Cấu trúc dữ liệu + Giải thuật = Chương trình. Với học sinh, sinh viên phải được trang bị các kiến thức cơ sở về các loại cấu trúc dữ liệu và trang bị các kiến thức tiên tiến nhất về giải thuật. Việc truyền đạt các kiến thức về một số thuật toán như: quay lui, nhánh cận, quy hoạch động, tham lam, các giải thuật trên đồ thị… là rất cần thiết cho học sinh, sinh viên cũng như trong việc bồi dưỡng học sinh giỏi các trường trung học phổ thông để phát triển tư duy và lập trình giải các bài toán tin học. Hình thành những nét cơ bản của nghệ thuật đoán nhận giải thuật và nghệ thuật lập trình. Tạo lập và củng cố lòng say mê tìm hiểu và khám phá cho học sinh khi giải các bài toán tin. Hiện nay có nhiều tài liệu tham khảo về một số thuật toán trên, trong đó có thuật toán quy hoạch động được bàn luận nhiều. Đây là một thuật toán hay được ứng dụng cho nhiều bài toán tin đặc biệt những bài toán đòi hỏi phải tổ Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 2 chức khéo léo để giải quyết với dữ liệu lớn. Việc áp dụng quy hoạch động vào giải các bài tập tin học là không hề đơn giản đối với học sinh. Nhất là hiện nay hầu hết các bài tập về quy hoạch động đều được nâng thêm một tầm cao mới. Điều này được thể hiện rõ trong đề thi học sinh giỏi quốc gia cũng như quốc tế. Vì vậy tôi thấy cần phải phân tích một số kĩ thuật cơ bản để giải bài tập áp dụng thuật toán quy hoạch động. Nhằm nâng cao chất lượng, hiệu quả việc bồi dưỡng học sinh giỏi tin học. Ngoài ra lý thuyết trò chơi cũng là một lĩnh vực rất hay, có nhiều ứng dụng và ta có thể vận dụng một số kỹ thuật quy hoạch động vào các bài toán trò chơi. Trong khuôn khổ luận văn thạc sỹ, tôi chọn đề tài nghiên cứu: “Tổ chức dữ liệu và thuật toán cho các bài toán Quy hoạch động”. Các bài tập trong luận văn được lấy từ các kỳ thi học sinh giỏi và được lấy từ các tài liệu tham khảo. Nó không phải là hệ thống các bài tập xây dựng để dạy chuyên đề quy hoạch động. Mục đích của tôi là thông qua các bài tập này để đưa ra một số kỹ thuật cơ bản hay sử dụng trong phương pháp quy hoạch động và một số bài toán trò chơi. 2. Đối tƣợng và phạm vi nghiên cứu: Thuật toán quy hoạch động và ứng dụng để giải một số bài toán quy hoạch động, bài toán trò chơi. 3. Những nội dung nghiên cứu chính Chương 1. Tổng quan về thuật toán quy hoạch động Chương này giới thiệu một số vấn đề liên quan đến phương pháp chia để trị, nguyên lí tối ưu của Bellman, đặc điểm, ý tưởng và nội dung của thuật toán quy hoạch động. Chương 2. Một số kinh nghiệm xây dựng thuật toán quy hoạch động Chương hai trình bày một số kinh nghiệm khi xây dựng thuật toán quy hoạch động để giải bài toán quy hoạch động trong đó có đi sâu vào phân tích Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 3 một số bài toán để làm rõ cách tổ chức dữ liệu và lập hệ thức và đưa ra một số bài toán để áp dụng. Chương 3. Thuật toán quy hoạch động và lý thuyết trò chơi Chương ba trình bày về lý thuyết trò chơi và một số bài toán trò chơi. 4. Phƣơng pháp nghiên cứu: phân tích, đối sánh, liệt kê, nghiên cứu tài liệu, tổng hợp các kết quả của các nhà nghiên cứu liên quan đến lĩnh vực nghiên cứu. 5. Ý nghĩa khoa học của đề tài: phương pháp quy hoạch động được áp dụng để giải hàng loạt bài toán thực tế trong các quá trình kỹ thuật công nghệ, tổ chức sản xuất, kế hoạch hoá kinh tế… Chính vì lẽ đó mà trong các kì thi học sinh giỏi quốc gia và quốc tế thường gặp loại toán này. [...]... pháp quy hoạch động càng có nhiều khả năng giải các bài toán trước đây khó giải quy t do hạn chế bộ nhớ máy tính [6] 1.5 Ý tƣởng và nội dung của thuật toán quy hoạch động 1.5.1 Các khái niệm  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  Công thức phối hợp nghiệm của các bài toán con để có nghiệm của bài toán lớn gọi là công thức truy hồi của quy hoạch động  Tập các bài. .. thời gian tính toán 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 dữ liệu thì ta có thể xử lí được những tập dữ liệu khá lớn Quy hoạch động cũng như 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ó Phương pháp quy hoạch động cùng nguyên lí tối ưu được nhà toán học Mỹ Richard Bellman (1920 - 1984) đề xuất vào những năm... các bài toán nhỏ nhất có ngay lời giải để từ đó giải quy t các bài toán lớn hơn gọi là cơ sở quy hoạch động  Không gian lưu trữ lời giải các bài toán con để tìm cách phối hợp chúng gọi là bảng phương án của quy hoạch động [5] 1.5.2 Ý tưởng Quy hoạch động bắt đầu từ việc giải các bài toán nhỏ nhất (bài toán cơ sở) để từ đó từng bước giải quy t những bài toán lớn hơn, cho tới khi giải được bài toán lớn... này thường là các biểu thức đệ quy, do đó dễ gây ra hiện tượng tràn miền nhớ khi ta tổ chức chương trình trực tiếp bằng đệ quy Bước 2: Tổ chức dữ liệu và chương trình Tổ chức dữ liệu sao cho đạt các yêu cầu sau: a) Dữ liệu được tính toán dần theo các bước b) Dữ liệu được lưu trữ để giảm lượng tính toán lặp lại c) Kích thước miền nhớ dành cho lưu trữ dữ liệu càng nhỏ càng tốt, kiểu dữ liệu được chọn... được gọi là quy hoạch động [7], [8] 1.4 Đặc điểm chung của phƣơng pháp quy hoạch động Phương pháp quy hoạch động dùng để giải bài toán tối ưu có bản chất đệ quy, tức là việc tìm phương án tối ưu cho bài toán đó có thể đưa về tìm phương án tối ưu của một số hữu hạn các bài toán con Phương pháp quy hoạch động giống phương pháp chia để trị ở chỗ: lời giải bài toán được tổ hợp từ lời giải các bài toán con... một bài toán ban đầu thành các bài toán con độc lập, các bài toán con cùng được sinh ra sau mỗi lần “tách” được gọi là cùng mức Những bài toán con sinh ra sau hơn thì ở mức dưới (thấp hơn) và cứ tiến hành như vậy cho đến khi gặp các bài toán nhỏ đến mức dễ dàng giải được Sau đó giải các bài toán con này và tổ hợp dần lời giải từ bài toán con nhỏ nhất đến bài toán ban đầu Thủ tục đệ quy luôn là cách... theo nghĩa sự phân chia có cấu trúc dạng cây), giải các bài toán con này thường bằng đệ quy, sau đó tổ hợp lời giải của chúng để được lời giải của bài toán ban đầu Quy hoạch động cũng phân chia bài toán thành các bài toán con, nhưng các bài toán con phụ thuộc nhau, mỗi bài toán con có thể tham chiếu tới cùng một số bài toán con mức dưới (gọi là các bài toán con gối lên nhau, sự phân chia không có cấu... cho bài toán toàn thể  Bài toán P có các bài toán con phủ chồng (gối) lên nhau Nghĩa là không gian các bài toán con “hẹp” không tạo thành dạng hình cây (tree) Nếu gọi hai bài toán con cùng được sinh ra từ một bài toán là hai bài toán con cùng mức thì có thể mô tả hình ảnh các bài toán con phủ chồng lên nhau là: khi giải hai bài toán con cùng mức chúng có thể đòi hỏi cùng tham chiếu một số bài toán con... của các bài toán con cũng cho kết quả của bài toán lớn hơn Khi bảng lưu trữ đòi hỏi mảng hai, ba chiều… thì khó có thể xử lý dữ liệu với kích cỡ mỗi chiều lớn hàng trăm Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 13 Chƣơng 2 MỘT SỐ KỸ THUẬT GIẢI BÀI TOÁN QUY HOẠCH ĐỘNG 2.1 Lập hệ thức Thông thường khi dùng phương pháp quay lui, vét cạn cho các bài toán quy hoạch động. .. nghiệm bài toán qua nghiệm các bài toán con nhỏ hơn  Với mỗi bài toán cụ thể, ta đề ra phương án lưu trữ nghiệm một cách hợp lý để từ đó có thể truy cập một cách thuận tiện nhất Cho đến nay, vẫn chưa có một định lý nào cho biết một cách chính xác những bài toán nào có thể giải quy t hiệu quả bằng quy hoạch động Tuy nhiên để biết được bài toán có thể giải bằng quy hoạch động hay không, ta có thể tự . dụng và ta có thể vận dụng một số kỹ thuật quy hoạch động vào các bài toán trò chơi. Trong khuôn khổ luận văn thạc sỹ, tôi chọn đề tài nghiên cứu: Tổ chức dữ liệu và thuật toán cho các bài toán. nghiên cứu: Thuật toán quy hoạch động và ứng dụng để giải một số bài toán quy hoạch động, bài toán trò chơi. 3. Những nội dung nghiên cứu chính Chương 1. Tổng quan về thuật toán quy hoạch động Chương. đệ quy, sau đó tổ hợp lời giải của chúng để được lời giải của bài toán ban đầu. Quy hoạch động cũng phân chia bài toán thành các bài toán con, nhưng các bài toán con phụ thuộc nhau, mỗi bài toán

Ngày đăng: 09/11/2014, 19:40

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan