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

Tiểu luận môn phân tích và đánh giá thuật toán phương pháp quy hoạch động

16 323 6

Đ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 16
Dung lượng 223 KB

Nội dung

Bài tập môn Phân tích đánh giá thuật toán GVHD – PGS-TS Đào Thanh Tĩnh MỤC LỤC TÀI LIỆU THAM KHẢO 16 HV: Bùi Đức Giang -1- Lớp CHKHMT25B13 Bài tập môn Phân tích đánh giá thuật toán GVHD – PGS-TS Đào Thanh Tĩnh MỞ ĐẦU Thuật toán, gọi giải thuật, tập hợp hữu hạn thị hay phương cách đị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 viết tiểu luận trình bày phương pháp vét cạn, quy hoạch động, áp dụng cho toán tính tổng độ dài đoạn thẳng lớn cho đôi điểm chung Trong trình trình bày không tránh khỏi thiếu sót, mong nhận đóng góp ý kiến quý báu Thầy giáo bạn Em xin trân thành cảm ơn Thầy giáo Đào Thanh Tĩnh, tạo điều kiện thuận lợi để em hoàn thành tập HV: Bùi Đức Giang -2- Lớp CHKHMT25B13 Bài tập môn Phân tích đánh giá thuật toán GVHD – PGS-TS Đào Thanh Tĩnh PHẦN 1: PHÂN TÍCH BÀI TOÁN Đề 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 đoạn thẳng S* đôi điểm chung mà có tổng độ dài đoạn thẳng lớn Phân tích a Dữ liệu đầu vào đầu (input, output) - Dữ liệu đầu vào (Input): Đầu vào tập S gồm n đoạn thẳng trục Ox mô tả bởi giá trị a,b; a điểm đầu, b điểm cuối đoạn thẳng - Dữ liệu đầu (Output): Tập kết S* chứa đoạn thẳng với hai đoạn thẳng Si, Sj tập S* điểm chung có tổng độ dài đoạn thẳng lớn * Nhận xét: - Mỗi đoạn thẳng có xuất hiện, xuất lần S * - Trong tập S*, đoạn thẳng phải đôi điểm chung - Số lượng đoạn thẳng kết trả không quan trọng mà quan trọng tổng độ dài lớn Như quan tâm đến hai yếu tố: Là đoạn thẳng có điểm chung hay không, tổng độ dài đoạn thẳng điểm chung b Vị trí tương đối đoạn thẳng Với đoạn thẳng trục Ox, để đơn giản ta xếp chúng theo chiều tăng b i , giả sử có đoạn thẳng [ai,bi] [aj,bj] với biL[9]=7 đoạn 10 chọn, Index[10]=8, xét đoạn d(8)+L(index[8])=1+5=6< L[7]=8 đoạn không chọn, xét tiếp đoạn d(7)+L(index[7])=2+6=8>L[6]=5 đoạn chọn, L(index[7])=5, xét tiếp đoạn d(5)+L(index[5])=4+2=6>L[4]=5 đoạn chọn, L(index[5])=2, xét tiếp đoạn d(2)+L(index[2])=2+0=2=L[1]=2 đoạn không chọn, xét tiếp đoạn d(1)+L(index[1])=2+0=2>L[0]=0 đoạn chọn Như L(10) = 11 S* ={đoạn 10, đoạn 7, đoạn 5, đoạn 1} Đây phương án tối ưu toán 2.5 Cụ thê giải thuật Khai báo: const static char fileoutput[] = "output.txt"; //{File ket qua dau } const static char fileinput[] = "input.txt";//{File du lieu vao } const static int MAX = 5000; - Định nghĩa cấu trúc đoạn thẳng struct doanthang { HV: Bùi Đức Giang - 10 - Lớp CHKHMT25B13 Bài tập môn Phân tích đánh giá thuật toán long a; long b; GVHD – PGS-TS Đào Thanh Tĩnh // Toa diem dau // Toa diem cuoi }; - Khai báo mảng chứa đoạn thẳng typedef struct doanthang Listdoanthang[MAX]; Listdoanthang S, S_output; danh sách đoạn thẳng đầu vào đầu index[0 n]: lưu số lớn đoạn thẳng từ j-1 mà kết hợp với đoạn j long d[1 n]; lưu độ dài đoạn thẳng a Giải thuật tính các giá trị index(i): for (i=0;i=S[i].a)) j ; index[i]=j; } Số phép so sánh nhiều nhất: 2(1+2+…+n)=n(n+1) Độ phức tạp: O(n ) b Giải thuật tính L(j) void Quyhoachdong() { L[0]=0; for(int j=1;j0) { if ((d[j]+L[index[j]])>L[j-1]) // neu doan j duoc chon HV: Bùi Đức Giang - 11 - Lớp CHKHMT25B13 Bài tập môn Phân tích đánh giá thuật toán GVHD – PGS-TS Đào Thanh Tĩnh { k++; // luu so doan thang duoc chon S_output[k].a= S[j].a; S_output[k].b= S[j].b; file_out

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