Tiểu luận môn thuật toán nâng cao

34 507 2
Tiểu luận môn thuật toán nâng cao

Đ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

Thuật toán F giải bài toán P là dãy các thao tác sơ cấp F1, F2,..,FN trên tập dữ kiện đầu vào (Input) để đưa ra được kết quả ra (Output). F1 F2. .FN (Input) Ouput. • F = F1 F2.. FN được gọi là thuật toán giải bài toán P. Trong đó, mỗi Fi chỉ là các phép tính toán số học hoặc logic. • Input được gọi là tập dữ kiện đầu vào (dữ liệu đầu vào). • Output là kết quả nhận được sau khi thực hiện thuật toán F trên tập Input. Một thuật toán cần thỏa mãn các tính chất dưới đây: • Tính đơn định. Ở mỗi bước của thuật toán, các thao tác sơ cấp phải hết sức rõ ràng, không gây nên sự lộn xộn, nhập nhằng, đa nghĩa. Thực hiện đúng các bước của thuật toán trên tập dữ liệu vào, chỉ cho duy nhất một kết quả ra. • Tính dừng. Thuật toán không được rơi vào quá trình vô hạn. Phải dừng lại và cho kết quả sau một số hữu hạn các bước. • Tính đúng. Sau khi thực hiện tất cả các bước của thuật toán theo đúng qui trình đã định, ta phải nhận được kết quả mong muốn với mọi bộ dữ liệu đầu vào. Kết quả đó được kiểm chứng bằng yêu cầu của bài toán. •Tính phổ dụng. Thuật toán phải dễ sửa đổi để thích ứng được với bất kỳ bài toán nào trong lớp các bài toán cùng loại và có thể làm việc trên nhiều loại dữ liệu khác nhau. • Tính khả thi. Thuật toán phải dễ hiểu, dễ cài đặt, thực hiện được trên máy tính với thời gian cho phép. Trong tiểu luận này, tác giả trình bày 8 thuật toán gồm: Đệ quy, vét cạn (duyệt), quy hoạch động, nhánh cận, sinh, quay lui, tham lam, chia và trị. Mỗi thuật toán có 01 ví dụ cụ thể về cách sử dụng thuật toán đó để giải quyết bài toán. Do thời gian có hạn, lượng kiến thức còn hạn hẹp, tác giả rất mong nhận được sự góp ý để tiểu luận được hoàn thiện hơn.

Tiểu luận Thuật toán nâng cao GV hướng dẫn : TS Nguyễn Duy Phương MỤC LỤC TÀI LIỆU THAM KHẢO 33 Học viên: Ngô Ngọc Thắng – Lớp HTTT 2016 - 1 Tiểu luận Thuật toán nâng cao GV hướng dẫn : TS Nguyễn Duy Phương MỞ ĐẦU Thuật toán F giải toán P dãy thao tác sơ cấp F1, F2, ,FN tập kiện đầu vào (Input) để đưa kết (Output) F1 F2 .FN (Input) →Ouput • F = F1 F2 FN gọi thuật toán giải toán P Trong đó, Fi phép tính toán số học logic • Input gọi tập kiện đầu vào (dữ liệu đầu vào) • Output kết nhận sau thực thuật toán F tập Input Một thuật toán cần thỏa mãn tính chất đây: • Tính đơn định Ở bước thuật toán, thao tác sơ cấp phải rõ ràng, không gây nên lộn xộn, nhập nhằng, đa nghĩa Thực bước thuật toán tập liệu vào, cho kết • Tính dừng Thuật toán không rơi vào trình vô hạn Phải dừng lại cho kết sau số hữu hạn bước • Tính Sau thực tất bước thuật toán theo qui trình định, ta phải nhận kết mong muốn với liệu đầu vào Kết kiểm chứng yêu cầu toán •Tính phổ dụng Thuật toán phải dễ sửa đổi để thích ứng với toán lớp toán loại làm việc nhiều loại liệu khác • Tính khả thi Thuật toán phải dễ hiểu, dễ cài đặt, thực máy tính với thời gian cho phép Trong tiểu luận này, tác giả trình bày thuật toán gồm: Đệ quy, vét cạn (duyệt), quy hoạch động, nhánh cận, sinh, quay lui, tham lam, chia trị Mỗi thuật toán có 01 ví dụ cụ thể cách sử dụng thuật toán để giải toán Do thời gian có hạn, lượng kiến thức hạn hẹp, tác giả mong nhận góp ý để tiểu luận hoàn thiện Học viên: Ngô Ngọc Thắng – Lớp HTTT 2016 - Tiểu luận Thuật toán nâng cao GV hướng dẫn : TS Nguyễn Duy Phương I PHƯƠNG PHÁP ĐỆ QUY 1.1 Khái lược phương pháp đệ quy Phương pháp định nghĩa đệ qui: Một đối tượng định nghĩa trực tiếp gián tiếp thông qua gọi phép định nghĩa đệ qui Thuật toán đệ qui: Thuật toán giải toán P trực tiếp gián tiếp thông qua toán P’ giống P gọi thuật toán đệ qui Một hàm gọi đệ qui gọi trực tiếp gián tiếp đến Một toán giải đệ qui thỏa mãn hai điều kiện: • Phân tích được: Có thể giải toán P toán P’ giống P khác P liệu đầu vào Việc giải toán P’ thực theo cách phân tích giống P • Điều kiện dừng: Dãy toán P’ giống P hữu hạn dừng toán xác định Thuật toán đệ qui tổng quát mô tả sau: Thuật toán Recursion ( P ) { Nếu P thỏa mãn điều kiện dừng: ; Nếu P không thỏa mãn điều kiện dừng: Recursion(P’) } 1.2 Giải toán cụ thể phương pháp đệ quy 1.2.1 Phát biểu toán Cho số nguyên dương a b, viết chương trình tìm ƯCLN (a,b) 1.2.2 Trình bày thuật toán Ước số chung lớn (ƯCLN) số nguyên dương a, b số k lớn cho a b chia hết cho k Một phương pháp đơn giản để tìm ƯCLN a b duyệt từ số nhỏ số a, b 1, Học viên: Ngô Ngọc Thắng – Lớp HTTT 2016 - Tiểu luận Thuật toán nâng cao GV hướng dẫn : TS Nguyễn Duy Phương gặp số mà a b chia hết cho ƯCLN a, b Tuy nhiên, phương pháp cách tìm ƯCLN hiệu Cách 2000 năm, Euclid phát minh giải thuật tìm ƯCLN số nguyên dương a, b hiệu Ý tưởng thuật toán tương tự ý tưởng đệ qui, tức đưa toán toán đơn giản Cụ thể, giả sử a lớn b, việc tính ƯCLN a b đưa toán tính ƯCLN a mod b b ƯCLN(a,b) = ƯCLN(a mod b, b) Thuật toán: int UCLN(int m, int n){ if (n==0) return m; else return UCLN(n,m%n); } Điểm dừng thuật toán n=0 Khi đương nhiên ƯCLN m m, chia hết cho số Khi n khác 0, lời gọi đệ qui ƯCLN(n, m% n) thực Chú ý ta giả sử m >= n thủ tục tính ƯCLN, đó, gọi đệ qui ta gọi ƯCLN (n, m% n) để đảm bảo thứ tự tham số n lớn phần dư phép m cho n Sau lần gọi đệ qui, tham số thủ tục nhỏ dần đi, sau số hữu hạn lời gọi tham số nhỏ Đó điểm dừng thuật toán 1.2.3 Kiểm nghiệm thuật toán Kiểm nghiệm thuật toán để tính ƯCLN 108 45, ta gọi thủ tục ƯCLN(108, 45) Khi đó, thủ tục sau gọi: ƯCLN(108, 45) 108 chia 45 dư 18, gọi ƯCLN(45, 18) 45 chia 18 dư 9, gọi ƯCLN(18, 9) 18 chia dư 0, gọi ƯCLN(9, 0) tham số thứ = 0, kết tham số thứ nhất, tức Học viên: Ngô Ngọc Thắng – Lớp HTTT 2016 - Tiểu luận Thuật toán nâng cao GV hướng dẫn : TS Nguyễn Duy Phương Như vậy, ta tìm ƯCLN 108 45 sau lần gọi thủ tục 1.2.4 Mã hóa thuật toán #include #include int USCLN(int a,int b){ if (b==0) return a; else return USCLN(b,a%b); } int main(void){ int a,b; printf("Nhap a: "); scanf("%d",&a); printf("Nhap b: "); scanf("%d",&b); printf("USCLN(%d,%d)=%3d",a,b,USCLN(a,b)); getch(); } 1.2.5 Kết chạy chương trình II PHƯƠNG PHÁP DUYỆT (VÉT CẠN) 2.1 Khái lược phương pháp vét cạn Vét cạn phương pháp tìm nghiệm toán cách xem xét tất phương án xảy toán Trong đó: Sử dụng công cụ toán học: • Sử dụng định lý, mệnh đề, lập luận suy logic toán học để tìm nghiệm toán • Ưu điểm: dễ dàng máy tính hóa toánthuật giải (MathLab) Học viên: Ngô Ngọc Thắng – Lớp HTTT 2016 - Tiểu luận Thuật toán nâng cao GV hướng dẫn : TS Nguyễn Duy Phương • Nhược điểm: thực lớp toánthuật giải Lớp toán nhỏ so với lớp toán thực tế Sử dụng máy tính công cụ tính toán: • Giải toánthuật giải máy tính • Đối với số toán chưa có thuật giải, ta sử dụng máy tính để xem xét tất khả để từ đưa nghiệm toán Một thuật toán duyệt cần thỏa mãn hai điều kiện: • Không lặp lại khả • Không bỏ sót cấu hình 2.2 Giải toán cụ thể phương pháp vét cạn 2.2.1 Phát biểu toán Trình bày thuật toán viết chương trình kiểm tra số nguyên dương a có phải số nguyên tố hay không? 2.2.2 Trình bày thuật toán Số nguyên tố số nguyên dương chia hết cho Vậy để kiểm tra số a có phải số nguyên tố hay không kiểm tra xem a có chia hết cho số khác a hay không Nếu tồn phép chia hết cho số khác a a số nguyên tố Ta sử dụng phương pháp duyệt (vét cạn) để giải toán Vậy chiến thuật vét cạn cho toán gì? Nếu a ==1 a==2 a số nguyên tố; trường hợp a>2 thực phương pháp lấy a chia cho số từ đến a – 1, tồn giá trị mà a chia hết khoảng từ đến a -1 a số nguyên tố Với cách vòng for phải chạy từ đến a -1; Suy nghĩ thêm chút thấy không cần thiết phải kiểm tra a có chia hết cho tất số từ đến a – mà cần kiểm tra xem a có chia hết số khoảng từ đến a/2 Vì a chia cho số lớn a/2 đến a -1 kết nhận lớn nhỏ Do a không chia hết cho số lớn a/2 Vì không cần phải xét trường hợp Học viên: Ngô Ngọc Thắng – Lớp HTTT 2016 - Tiểu luận Thuật toán nâng cao GV hướng dẫn : TS Nguyễn Duy Phương thuộc khoảng từ a/2 đến a-1 Số phép toán duyệt so với phương pháp Tuy nhiên phương pháp chưa tối ưu a chia hết cho số lớn (trong trường hợp số nguyên) Do ta cần xét xem a có chia hết cho số thuộc khoảng từ đến Số phép toán phải thực giảm thiểu so với phương pháp duyệt xem a có chia hết cho số từ đến a/2 Do thuật toán để kiểm tra a có phải số nguyên tố không sau: int KTNT(int a){ if(a

Ngày đăng: 24/03/2017, 08:10

Từ khóa liên quan

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

Tài liệu liên quan