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

Phân tích và đánh giá thuật toán thuật toán tìm dãy con đơn điệu tăng (không giảm) dài nhất trong một dãy số bất kỳ cho trước

19 363 0

Đ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 19
Dung lượng 232 KB

Nội dung

Bài tập lớn: Phân tích đánh giá thuật toán GVHD: Đào Thanh Tĩnh MỤC LỤC V CÀI ĐẶT CHƯƠNG TRÌNH .11 V CHẠY THỬ CHƯƠNG TRÌNH 16 Page Bài tập lớn: Phân tích đánh giá thuật toán GVHD: Đào Thanh Tĩnh I ĐẶT VẤN ĐỀ Thuật toán gọi giải thuật, tập hợp hữu hạn thị hay phương thức định nghĩa rõ ràng cho việc hoàn tất số việc từ trạng thái ban đầu cho trước; thị áp dụng triệt để dẫn đến kết sau dự đoán Nói cách khác, thuật toán quy tắc hay quy trình cụ thể nhằm giải vấn đề số bước hữu hạn, nhằm cung cấp kết từ tập hợp kiện đưa vào Phân tích thiết kế thuật toán lĩnh vực quan trọng khoa học máy tính Quá trình phân tích thuật toán giúp ta hiểu sâu sắc mục đích, yêu cầu mà thuật toán cần xây dựng, qua tiên liệu tài nguyên mà thuật toán yêu cầu như: tài nguyên nhớ, băng thông, tài nguyên ngoại vi… Song phần thời gian tính toán yếu tố quan trọng mà ta cần quan tâm đánh giá thuật toán thực Trong tập lớn em xin trình bày số hiểu biết phương pháp quy hoạch động phân tích, đánh giá thuật toán tìm dãy đơn điệu tăng (không giảm) dài dãy số cho trước Do kiến thức hạn chế, trình trình bày không tránh khỏi khiếm khuyết, mong nhận đóng góp ý kiến quý báu Thầy bạn Em xin chân thành cảm ơn Thầy Đào Thanh Tĩnh, toàn thể bạn lớp Cao học KHMT–K25b tạo điều kiện thuận lợi để em hoàn thành tập Học viên Trần Tuấn Anh Page Bài tập lớn: Phân tích đánh giá thuật toán GVHD: Đào Thanh Tĩnh II MỘT SỐ NÉT CƠ BẢN VỀ PHƯƠNG PHÁP QUY HOẠCH ĐỘNG Lý thuyết quy hoạch động Phương pháp quy hoạch động phát minh nhà toán học Mỹ, Richard Bellman, người mà đưa nhận định để giải vấn đề điều cần thiết cần phải lựa chọn định tốt Hơn 40 năm qua, kể từ phát minh đời số lượng người sử dụng quy hoạch động trở lên phổ biến Quy Hoạch Động phương pháp mạnh mẽ Tin học Nếu phân tích kỹ thấy thuật toán tiếng Ford-Bellman, Dijkstra, hay Floyd có chất quy hoạch động Phương pháp quy hoạch động thường dùng để giải toán tối ưu có chất đệ quy, tức việ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ạn toán Ðối với số toán đệ quy, nguyên lý chia để trị (Divide and Conquer) thường đóng vai trò chủ đạo việc thiết kế thuật toán Ðể giải toán lớn, ta chia thành nhiều toán dạng với để giải độc lập Trong phương án quy hoạch động, nguyên lý thể rõ: Khi phải giải toán nào, ta giải toàn toán lưu trữ lời giải hay đáp số chúng với mục đích sử dụng lại theo phối hợp để giải toán tổng quát Ðó điểm khác quy hoạch động phép phân giải đệ quy nội dung phương pháp quy hoạch động Phương pháp phân tích từ xuống (Top-Down) phép phân giải đệ quy toán lớn phân thành nhiều toán giải toán Việc giải toán lại đưa phép phân tiếp thành nhiều toán nhỏ lại giải toán nhỏ giải hay chưa Page Bài tập lớn: Phân tích đánh giá thuật toán GVHD: Đào Thanh Tĩnh Quy hoạch động phương pháp ngược lại phép giải Đệ qui lên (Bottom-Up), từ việc giải tất toán nhỏ (bài toán sở) để từ bước giải toán lớn hơn, giải toán lớn toán ban đầu Giải toán theo phương pháp quy hoạch động Bài toán giải theo phương pháp quy hoạch động gọi toán quy hoạch động Công thức phối hợp nghiệm toán để có nghiệm toán lớn gọi công thức truy hồi quy hoạch động Tập toán có lời giải để từ giải toán lớn gọi sở quy hoạch động Không gian lưu trữ lời giải toán để tìm cách phối hợp chúng gọi bảng phương án quy hoạch động Phương pháp giải toán quy hoạch động: - Tìm công thức truy hồi (đệ quy) thường xuất phát từ trường hợp đơn giản tìm nghiệm - Tìm liệu thích hợp Chú ý: Cần nhìn toán từ nhiều góc độ, khía cạnh - Từ dễ đến khó, từ đơn giản đến phức tạp - Không nên phức tạp hoá toán đơn giản Nếu toán tối ưu ta tìm công thức truy hồi ta giải toán phương pháp quy hoạch động Bởi quy hoạch động phương pháp cải tiến phương pháp giải toán theo hướng phân rã Từ vấn đề lớn ta chia tiếp tục đến gặp toán nhỏ hơn, đơn giản giải cách dễ dàng Page Bài tập lớn: Phân tích đánh giá thuật toán GVHD: Đào Thanh Tĩnh Phương pháp phân rã Bài toán Bài toán BT111 BT12 Bài toán BT13 BT21 BT22 Bài toán BT23 BT31 BT32 BT33 Các toán giống Nhưng giải theo phương pháp phân rã ta bị hạn chế tốc độ chương trình phải tính tính lại nhiều lần số toán giống Để khắc phục nhược điểm này, quy hoạch động đời kỹ thuật BottomUp từ lên Đi từ trường hợp riêng đơn giản tìm nghiệm Kết hợp nghiệm toán cỡ nhỏ ta thu nghiệm toán cỡ lớn tiếp tục tìm nghiệm toán đề Trường hợp đơn giản: Phương pháp QHĐ f0 f0' f0'' f1 fn f1' III MỘT SỐ HẠN CHẾ CỦA PHƯƠNG PHÁP QUY HOẠCH ĐỘNG Không phải toán giải quy hoạch động được, áp đặt, cố sức giải dễ dàng mắc phải sai lầm gọi Phụ thuộc tiền sử Page Bài tập lớn: Phân tích đánh giá thuật toán GVHD: Đào Thanh Tĩnh Để tìm hiểu khắc phục điều em xin phép mạnh dạn đưa ví nguyên lý quy hoạch động Bellman phát minh ra: "Một dãy tối ưu dãy tối ưu" Nghe khó hiểu thực chất ta có bảng điền số vào bảng đó, số điền vào thường đơn giản, số sau dựa vào số trước mà điền, điền kín bảng Kết toán số mà ta điền cuối Như nguyên lý "chia để trị" đẩy tới cao độ Khâu quan trọng làm điền số sau dựa số trước, hay nói cách khác ta tìm hệ thức truy hồi Gọi f(i) hàm quy hoạch động i, ta xây dựng công thức truy hồi tính f(i) dựa vào f(j) với j = i - 1, i - 2, Công thức truy hồi phụ thuộc vào f(j) đại lượng cố định j (cho đề bài) tuyệt đối không phụ thuộc vào tiền sử, cách thức tạo nên f(j) Đây là sai lầm sử dụng quy hoạch động Như vậy, lúc kết hợp lời giải toán cho ta lời giải toán cỡ lớn Số lượng toán cần giải lưu trữ đáp án lớn chấp nhận nhớ máy tính không cho phép Khi giải toán phương pháp quy hoạch động cần phải có phương trình truy hồi xác Tuy nhiên áp dụng phương pháp quy hoạch động để giải số toán tối ưu thường mang lại hiệu tốt IV- THUẬT TOÁN Bài toán Phương pháp quy hoạch động Giải toán sau: Mỗi đoạn thẳng trục Ox mô tả bới hai giá trị [a, b] Kí hiệu S tập hợp n đoạn thẳng S = { [ai,bi], i = 1,2, ,n} Xây dựng thuật toán tìm tập S* ⊆ S cho Page Bài tập lớn: Phân tích đánh giá thuật toán GVHD: Đào Thanh Tĩnh đoạn thẳng S* đôi điểm chung |S*| có giá trị lớn Nhận định toán: Giả sử ta ràng buộc đầu vào là: a,b số nguyên ai S’={1,2,3,4,2,5,9,10} => S’*={1,2,3,4,5,9,10} Nhiệm vụ ta phải loại phần tử khỏi dãy cách từ tập S’* lấy thứ tự cặp phần tử so sánh với cặp phần tử dãy S Nếu trùng dừng so sánh lưu số phần tử trùng dãy S vào mảng Idx Tiếp tục nhảy sang so sánh cặp dãy S’* Nếu không trùng loại phần tử cặp đó, dùng phần tử lại cặp kết hợp với phần tử liền kề sau tạo thành cặp lặp lại bước so sánh Cứ hết tập S’* Sắp xếp phần tử mảng Idx theo chiều Page Bài tập lớn: Phân tích đánh giá thuật toán GVHD: Đào Thanh Tĩnh tăng dần Dựa vào phần tử mảng Idx sau xếp gọi phần tử tập S ta tập S* thỏa mãn yêu cầu đề Như toán gồm bước Bước 1: Sắp xếp lại dãy S thành S’ theo số lẻ Bước 2: Dùng thuật toán tìm dãy tăng đơn điệu dài để tìm Bước 3: Loại bỏ phần tử liền kề đoạn thẳng Bước 4: Trả thứ tự phần tử tìm tập S Tập tập S* thỏa mãn đầu Mô tả thuật toán tìm dãy tăng đơn điệu dài Bài toán tìm dãy đơn điệu dài toán thể loại xâu ký tự (Character strings) Yêu cầu toán từ dãy ký tự cho trước ta phải tìm dãy không tăng không giảm có dộ dài lớn Đối với loại toán kiểu có lẽ cách giả tốt sử dụng thuật toán quy hoạch động để giải Ví dụ: cho dãy số nguyên A = (i

Ngày đăng: 03/10/2017, 00:46

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w