Tiểu luận môn phương pháp nghiên cứu khoa học PHƯƠNG PHÁP GIẢI TOÁN TRONG TIN HỌC QUY HOẠCH ĐỘNG

18 387 0
Tiểu luận môn phương pháp nghiên cứu khoa học PHƯƠNG PHÁP GIẢI TOÁN TRONG TIN HỌC 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

Đại học Công Nghệ Thông Tin Đại học Quốc gia Thành phố Hồ Chí Minh  BÁO CÁO: PHƯƠNG PHÁP GIẢI TỐN TRONG TIN HỌC: QUY HOẠCH ĐỘNG Mơn học: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC GVHD : GS.TSKH Hoàng Kiếm Học viên: Trần Ngọc Huy – CH1301027 TP.HCM, tháng năm 2014 Mục lục Mở đầu Để giải toán tối ưu tin học, ta sử dụng nhiều cách khác [3] Trong đó, phương pháp quy hoạch động nhiều người quan tâm tính hiệu mặt lưu trữ thời gian xử lý kết Về bản, quy hoạch động chia nhỏ toán lớn tốn có phạm vi nhỏ hơn, tiếp tục đến toán nhỏ “đủ dễ” để giải Như vậy, việc tổng hợp lời giải từ toán bước tìm lời giải cho tốn lớn Có thể nói quy hoạch động phương pháp giải tốn tin học ứng dụng nguyên lý sáng tạo “phân nhỏ” “kết hợp” Nội dung đề cập luận khái niệm phương pháp để giải toán quy hoạch động, giới thiệu phần Đồng thời giới thiệu hai cách tiếp cận toán quy hoạch động: cách tiếp cận bottom-up, hai cách tiếp cận top-down phần Cuối cùng, phần tóm tắt nội dung tồn luận Khái niệm Một hướng giải tốn tối ưu hóa tin học ứng dụng quy hoạch động Đây phương pháp thường dùng để giải tốn tối ưu có cấu trúc phức tạp (khó giải phương pháp trực tiếp) Nền tảng phương pháp xây dựng dựa nguyên lý tối ưu Richard Bellman (Bellman’s Principle of Optimality, 1940) : “Nếu dãy lựa chọn tối ưu dãy tối ưu” Bản chất quy hoạch động chia để trị [1, 4] Thế nên, nhiều tốn phức tạp thực tế khơng thể dễ dàng tìm lời giải tối ưu cách trực tiếp (dưới dạng cơng thức tốn học tường minh), mà phải biểu diễn lời giải tối ưu toán lớn dạng tổ hợp lời giải tối ưu, thể qua công thức truy hồi, toán đơn giản Như vậy, việc tìm lời giải cho tốn lớn q trình tìm lời giải cho tốn có phạm vi nhỏ Tương tự, tốn chia thành toán nhỏ nữa, đến “đủ dễ” cho lời giải trực tiếp Quá trình áp dụng ngun lý “phân nhỏ” tốn Khi có lời giải cho tất toán con, tổng hợp lời giải theo công thức truy hồi xác định để xây dựng lời giải cho toán lớn Nguyên lý sáng tạo sử dụng giai đoạn nguyên lý “kết hợp” Phương pháp phân tích tốn quy hoạch động Một toán tối ưu quy hoạch động giải dựa cấu trúc tối ưu [4] Cấu trúc tối ưu, hay cịn gọi cơng thức quy hoạch động, cách biểu diễn toán lớn dạng tổ hợp toán Để cấu trúc tối ưu toán, cần phải xác định tập trạng thái biểu diễn toán tốn nó, hay nói cho xác phải xác định không gian tốn Việc xác định khơng gian biểu diễn cho tốn nói vấn đề cốt lõi quy hoạch động Đó cơng đoạn khó nhất, địi hỏi kinh nghiệm tính sáng tạo cao Xác định trạng thái biểu diễn cho hợp lý hiệu nghệ thuật giải vấn đề Cụ thể, giải toán F, cần xác định họ toán F[w] với w vector tham số cho thay w = w ta thu tốn ban đầu F = F[w0] Các tiêu chí tối thiểu để đánh giá tính khả thi cho khơng gian biểu diễn tốn : • Tồn cấu trúc tối ưu tốn • Kích thước khơng gian tốn phải đủ nhỏ để lưu trữ q trình xử lý Để xác định cấu trúc tối ưu cho không gian F[w] toán, ta cần phải xây dựng hệ thức truy tốn (cơng thức quy hoạch động) biểu diễn mối liên quan toán F[w] với tốn liên quan có kích thước nhỏ : F[w] = Q{F[w’], F[w’’], …} (*) Việc tìm cơng thức, phương trình truy tốn tìm cách phân rã tốn để xây dựng cấu trúc tối ưu nhiều đòi hỏi phân tí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ĩ Một điểm cần lưu ý ta xác định không gian biểu diễn cho tốn (hay cịn gọi trạng thái quy hoạch động) đồ thị biểu diễn chuyển tiếp trạng thái quy hoạch động phải đồ thị có hướng khơng chu trình Nói cho đơn giản, giả sử đồ thị biểu diễn tồn chu trình A 1, A2, …, AN, A1 tính giá trị cho hàm quy hoạch động A1 ta dựa A2 A2 lại dựa A3 … cuối tính AN ta lại phải dựa A1 giá trị A1 tìm ! Để hiểu rõ chất phương pháp quy hoạch động, xem xét ví dụ sau : Ví dụ : Xét trị chơi gồm bảng kích thước N * N (N 100), ô bảng quy định điểm số định Ban đầu, người chơi xuất phát ô nằm cột bên trái bảng Mỗi tới ô bảng người chơi thưởng số điểm quy định cho Tại nước đi, người chơi bắt buộc phải di chuyển qua cột bên phải quyền chọn ba hướng : chéo lên, thẳng hay chéo xuống Hỏi người chơi tối ưu tổng số điểm thưởng thu ? Giải pháp : Gọi A[x, y] điểm số quy định cho ô (x, y) F[x, y] điểm số tối đa mà người chơi thu để tới ô (x, y) Như thế, điểm số tối đa mà người chơi thu F[x, N] Ở đây, dễ thấy ta đưa định nghĩa cho F[x, y] tức ta khẳng định cách lựa chọn không gian toán Việc cần làm xác định cấu trúc tối ưu toán Trước hết, có nhận xét để đến (x, y) trước người chơi phải đứng trước (x – 1, y – 1), (x, y – 1), (x + 1, y – 1) Như thế, có lựa chọn tính giá trị F[x, y] : • F[x, y] = F[x – 1, y – 1] + A[x, y] • F[x, y] = F[x – 1, y] + A[x, y] • F[x, y] = F[x – 1, y + 1] + A[x, y] Khi đó, để tối ưu hóa F[x, y] ta đơn giản lấy giá trị tối ưu số giá trị ứng với lựa chọn nói : F[x, y] = max{F[x – 1, y – 1], F[x, y – 1], F[x + 1, y – 1]} + A[x, y] Cuối cùng, cần xác định toán F[x, y] đủ “nhỏ” để giải cách trực tiếp : x y = : F[x, y] = A[x, y] Qua ví dụ này, rút nhận xét sau : Bản chất phương pháp quy hoạch động nhằm xác định chuỗi chuyển tiếp với chi phí tối ưu từ trạng thái khởi đầu, ứng với toán đủ “nhỏ” để giải trực tiếp, qua số trạng thái trung gian, ứng với toán trung gian, đến trạng thái đích, ứng với tốn lớn cần giải Ví dụ : Xét bảng kích thước M * N (M, N 100) với cờ đặt ô trái bảng Tại nước đi, cờ thẳng xuống hay sang phải Hỏi có cách di chuyển khác để cờ di chuyển từ vị trí ban đầu đến phải bàn cờ Giải pháp : Bài toán nêu ví dụ chất tốn đếm khơng phải tốn tối ưu Tuy nhiên, dạng toán đếm áp dụng ngun tắc “chia để trị” : Thay tìm cơng thức tính trực tiếp, xây dựng cơng thức truy hồi biểu diễn hàm giá trị (đáp số) toán lớn dạng tổ hợp hàm giá trị tốn có quy mơ nhỏ Ta có nhận xét, để đến (x, y) bảng trước cờ phải hai ô (x – 1, y) (x, y – 1) Như vậy, tương tự ví dụ trên, có hai trường hợp : • Nếu trước đến (x, y) ta ràng buộc cờ phải đến ô (x – 1, y) trước ta có tất F[x – 1, y] cách di chuyển khác để đến (x, y) • Tương tự, ràng buộc cờ phải đến ô (x, y – 1) trước đến (x, y) ta có tất F[x, y – 1] cách di chuyển khác Khi đó, để xác định F[x, y] ta lấy tổng cách khác hai trường hợp nói : F[x, y] = F[x – 1, y] + F[x, y – 1] Cuối cùng, vấn đề lại xác định “lời giải” cho toán đủ “nhỏ” : • F[1, 1] = • F[1, x] = (x > 1) • F[x, 1] = (x > 1) Ví dụ : Xét ma trận M * N ma trận chứa số nguyên dương Ban đầu cờ đặt (x 0, y0) cần phải di chuyển tới ô (x1, y1) sau tối đa K bước Tại bước cờ di chuyển qua bốn ô xung quanh Chi phí bước xác định độ chênh lệch hai số thuộc ô đầu đích bước Hãy xác định chi phí tối thiểu để đưa cờ (x1, y1) Giải pháp : Để xây dựng không gian trạng thái quy hoạch động, ta định nghĩa lớp toán sau : “Hãy xác định chi phí tối thiểu để đưa cờ từ ô (x0, y0) ô (x, y) z bước” Dễ thấy trạng thái biểu diễn cho toán thuộc lớp tốn nói ba (x, y, z) Ta gọi F[x, y, z] lời giải cho toán tương ứng Như vậy, ta thay x = x1, y = y1 lời giải cho tốn lớn ban đầu Để tính F[x, y, z] ta có xét bốn vị trí có cờ trước di chuyển đến ô (x, y) nước z : (x – 1, y), (x, y – 1), (x + 1, y) (x, y + 1) Khi đó, cơng thức quy hoạch động tính F[x, y, z] viết sau : F[x, y, z] = max{F[x – 1, y, z – 1] + |A[x, y] – A[x – 1, y]|, F[x, y – 1, z – 1] + |A[x, y] – A[x, y – 1]|, F[x + 1, y, z – 1] + |A[x, y] – A[x + 1, y]|, F[x, y + 1, z – 1] + |A[x, y] – A[x, y + 1]|} Khi đặt z = 0, ta lớp toán đủ “nhỏ” để giải trực tiếp : • F[x0, y0, 0] = • F[x, y, 0] = +oo (xem khơng thể đến được) Ví dụ : Cho hai chuỗi A1A2…AM B1B2…BN (M, N 200) Hãy tìm dãy chung (khơng thiết phải liên tiếp) dài hai chuỗi Giải pháp : Ta xây dựng không gian quy hoạch động qua việc định nghĩa lớp toán sau : “Xác định dãy chung dài hai chuỗi A1A2…Ai B1B2…Bj” Khi đó, trạng thái biểu diễn cho toán thuộc lớp cặp (i, j) Ta định nghĩa F[i, j] lời giải toán tương ứng Như vậy, ta thay i = M j = N F[M, N] lời giải toán lớn ban đầu Vấn đề lại xác định cấu trúc tối ưu cho F[i, j] Ta xét hai trường hợp sau : • A[i] = B[j] : Trong trường hợp này, dễ thấy tồn dãy chung dài Ai Bj cho ký tự cuối x = A[i] = B[j] Ở trường hợp này, rõ ràng F[i, j] = F[i – 1, j – 1] + • A[i] B[j] : Lúc lại có hai khả xảy A[i] không thuộc dãy chung dài hay B[j] không thuộc dãy chung dài Ở trường hợp này, F[i, j] có giá trị tương ứng F[i – 1, j] hay F[i, j – 1] tùy theo việc ta chọn A[i] hay B[j] thuộc dãy chung dài Tất nhiên, để tối ưu hóa giá trị F[i, j] ta chọn trường hợp tốt : F[i, j] = max { F[i – 1, j], F[i, j – 1] } Cuối cùng, ta giải trực tiếp toán đủ “nhỏ” : F[i, 0] = F[0, j] = 10 Ví dụ : Cho valy chứa W 10000 đơn vị trọng lượng Có N 200 loại đồ vật (số lượng đồ vật không hạn chế) Đồ vật i có trọng lượng A[i] giá trị C[i] Hỏi nên chọn loại đồ vật để xếp vào valy để tổng giá trị hàng hóa valy lớn ? Giải pháp : Để xây dựng khơng gian quy hoạch động cho tốn, ta định nghĩa họ toán sau : “Xác định xem với valy chứa x đơn vị trọng lượng y loại đồ vật từ đến y số N loại đồ vật nói ta chất đồ vào valy để đạt tổng giá trị hàng hóa lớn ?” Trạng thái quy hoạch động cho toán biểu diễn dạng cặp tham số (x, y) Gọi F[x, y] lời giải tối ưu cho toán tương ứng, ta lập hệ thức truy tốn cho F[x, y] sau : • Nếu ta định bỏ đồ vật loại y vào valy (chỉ xét A[y] x) ta tính F[x, y] = F[x – A[y], y] + C[y] • Nếu ta định không bỏ thêm đồ vật loại y vào valy F[x, y] = F[x, y – 1] Như vậy, ta thời điểm tính F[x, y] ta cần chọn định tối ưu để cực đại hóa giá trị F[x, y] : F[x, y] = max { F[x – A[y], y] + C[y], F[x, y – 1] } Cuối cùng, ta tiến hành giải tốn đủ “dễ” để làm trực tiếp : • F[x, 1] = C[1] * (x / A[1]) 11 • F[0, x] = Ví dụ : Lan có N bình hoa N bó hoa (N 16) Một bình hoa bó hoa hợp mà khơng hợp Sự hợp bình hoa bó hoa biểu diễn thơng qua ma trận N * N : • A[x, y] = bình hoa thứ x hợp với bó hoa thứ y • A[x, y] = trường hợp ngược lại Hỏi Lan có tất cách ghép cặp bó hoa với bình hoa Một cách ghép cặp hiểu cách xếp bình hoa bó hóa thành N cặp cho với cặp (x, y) ta có A[x, y] = Giải pháp : Trong ví dụ ta lại xét tốn đếm khác Cũng giống ví dụ trên, tốn giải phương pháp quy hoạch động việc xác định trạng thái toán lại phức tạp nhiều Cụ thể, ta định nghĩa lớp toán sau : “Đếm xem có cách ghép cặp X bình hoa từ đến X với tập gồm X bó hoa tập N bó hoa ban đầu.” Dễ thấy cho X = N, ta thu toán đếm ban đầu Để áp dụng quy hoạch động cho toán này, ta cần mơ hình hóa lớp tốn nói dạng tập trạng thái Cụ thể, với tốn ta biểu diễn dạng trạng thái 12 Đầu tiên, ta thấy tham số toán gồm cặp (X, S) S tập có X phần tử tập {1, 2, …, N} Vấn đề đặt biểu diễn cặp (X, S) cách hiệu ? Ta có hai nhận xét sau : • Thứ nhất, ta biết X = |S| lưu trữ trạng thái toán (X, S) ta cần lưu S • Thứ hai, S tập tập {1, 2, …, N} với N cố định nên dễ thấy để lưu trữ S ta cần N bit (bit thứ x ứng với việc x S ngược lại) Từ hai nhận xét ta thấy trạng thái toán (X, S) biểu diễn máy tính dạng số ngun N bit, có X bit Như vậy, khơng gian tốn ta có kích thước N với N 16 kích thước hồn tồn thích hợp cho việc lưu trữ Ở bước tiếp theo, ta cần xây dựng cấu trúc tối ưu / hàm quy hoạch động cho khơng gian tốn nói Để dễ hình dung, ta gọi Q(S) giá trị số nguyên N bit biểu diễn cho toán (X, S) định nghĩa F[Q(S)] số cách ghép tương ứng Ta xét bó hoa T có khả ghép với bình hoa X : • A[X, T] = A[T, X] = • Q(S) & 2T = 2T (bit thứ T Q(S) có giá trị 1) 13 Nếu ta chọn ghép X với T, số cách ghép cho X – bình hoa với tập hợp S – {T} bó hoa cịn lại F[Q(S – {T})] = F[Q(S) – T] Từ đó, ta rút cơng thức tính F[Q(S)] sau : F[Q(S)] = F[Q(S) – 2T] Để rút đáp số cho toán đếm ban đầu, ta thay X = N : F[Q(S)] = F[2N – 1] Lưu ý : Trong trường hợp này, toán đủ “nhỏ” để giải trực tiếp toán (X, S) với X = |S| = Qua ví dụ này, thấy tầm quan trọng việc hoạch định không gian / xác định trạng thái quy hoạch động cho tốn Đó yếu tố cốt lõi trình giải tốn quy hoạch động Nói chung, khơng có phương pháp tổng qt để giúp xác định trạng thái quy hoạch động cho toán vấn đề địi hỏi nhiều đến kinh nghiệm tính sáng tạo Mơ hình cài đặt Đối với tốn giải phương pháp quy hoạch động, ta có hai mơ hình cài đặt phổ biến : Top – Down Bottom – Up Mơ hình Bottom – Up thường dùng trường hợp công thức quy hoạch động đơn giản, không phân chia rắc rối nhiều trường hợp Mô hình Top – Down thường dùng trường hợp hệ thức truy toán rối rắm, phức tạp dễ nhầm lẫn Về chất, mơ hình đặt Bottom – Up bắt đầu việc tính tốn trực tiếp lời giải cho tốn đủ “nhỏ” hay cịn gọi trường hợp biên Sau hoàn tất việc xây dựng lời giải trực tiếp cho trường hợp biên, mơ hình Bottom – Up lần 14 lượt tổ hợp kết tính trường hợp theo công thức quy hoạch động, để thu kết trường hợp lớn Quy trình kết thúc ta thu kết trường hợp tổng quát – toán gốc cần giải Dữ liệu lưu trữ xử lý khơng gian quy hoạch động mơ hình cài đặt Bottom – Up thường biểu diễn dạng ma trận đa chiều máy tính Ngược lại với Bottom – Up, mơ hình cài đặt Top – Down bắt đầu việc xuất phát từ toán gốc ban đầu phân rã thành tốn (theo cơng thức quy hoạch động) gọi đệ quy để giải riêng toán Có thể nói, mơ hình cài đặt Top – Down minh họa sống động cho nguyên lý chia để trị Tuy nhiên, cài đặt theo mơ hình này, điểm tối quan trọng mà cần phải lưu ý : chế tính tốn quy hoạch động xem xét tính tốn trạng thái lần ! Đây đặc điểm giúp phân biệt phương pháp quy hoạch động với phương pháp đệ quy vét cạn Như biết, không gian trạng thái quy hoạch động phải đủ nhỏ để lưu trữ tồn nhớ máy tính xử lý nên cần truy xuất đến giá trị trạng thái ta truy xuất trực tiếp từ nhớ khơng cần phải tính lại mơ hình đệ quy vét cạn thường lưu trữ trạng thái hành xem xét Để minh họa cho hai phương pháp trên, thử phân tích số đoạn code cài đặt cho ví dụ : \ Bottom – Up: 15 // Giải trực tiếp trường hợp biên for (int i = 1; i

Ngày đăng: 21/05/2015, 22:41

Từ khóa liên quan

Mục lục

  • 1. Mở đầu

  • 2. Khái niệm

  • 3. Phương pháp phân tích bài toán quy hoạch động

  • 4. Mô hình cài đặt

  • 5. Tổng kết

    • Tài liệu tham khảo

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

Tài liệu liên quan