Mở đầu về thiết kế, đánh giá thuật toán và kiến thức bổ trợ

20 351 0
Mở đầu về thiết kế, đánh giá thuật toán và kiến thức bổ trợ

Đ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

Mở đầu thiết kế, đánh giá thuật toán kiến thức bổ trợ Mở đầu thiết kế, đánh giá thuật toán kiến thức bổ trợ Bởi: Đại Học Phương Đông Khái niệm thuật toán Khái niệm thuật toán Thuật toán (algorithm) khái niệm quan trọng lĩnh vực tin học Thuật ngữ thuật toán xuất phát từ nhà toán học Arập Abu Ja’far Mohammedibn Musa al Khowarizmi (khoảng năm 825) Tuy nhiên lúc nhiều kỷ sau, không mang nội dung ngày quan niệm Thuật toán tiếng có từ thời cổ Hy lạp thuật toán Euclid, thuật toán tìm ước chung lớn hai số nguyên Có thể mô tả thuật toán sau: ThuậttoánEuclid Input: m, n nguyên dương Output: g (ước chung lớn m n) Phương pháp: Bước 1: Tìm r, phần dư m cho n Bước 2: Nếu r = 0, g:=n (gán giá trị n cho g),và dừng lại Trong trường hợp ngược lại (r≠0), m:=n; n:=r quay lại bước Chúng ta quan niệm bước cần thực để làm ăn, mô tả sách dạy chế biến ăn, thuật toán Cũng xem bước cần tiến 1/20 Mở đầu thiết kế, đánh giá thuật toán kiến thức bổ trợ hành để gấp đồ chơi giấy ,được trình bày sách dạy gấp đồ chơi giấy thuật toán Phương pháp cộng nhân số nguuyên, học cấp I thuật toán Vì ta có định nghĩa không hình thức thuật toán sau: Thuật toán dãy hữu hạn bước, bước mô tả xác phép toán, hành động cần thực ta lời giải toán Các yêu cầu thuật toán Định nghĩa thuật toán tất nhiên chứa nhiều điều chưa rõ ràng Để hiểu đầy đủ ý nghĩa khái niệm thuật toán, đưa đặc trưng sau thuật toán Input Mỗi thuật toán có số (có thể không) liệu vào (input) Đó giá trị cần đưa vào thuật toán bắt đầu làm việc Các liệu cần lấy từ tập hợp giá trị cụ thể Chẳng hạn, thuật toán Euclid trên, số m n liệu lấy từ tập số nguyên dương Output Mỗi thuật toán cần có nhiều liệu (output) Đó giá trị có quan hệ hoàn toàn xác định với liệu vào, kết thực thuật toán Trong thuật toán Euclid, có liệu ƯSCLN g, thuật toán dừng lại (trường hợp r=0) giá trị g ước chung lớn m n Tính xác định Ở bước, bước thao tác phải rõ ràng, không gây nên nhập nhằng Nói rõ điều kiện hai xử lý thực thuật toán phải cho kết Nếu biểu diễn thuật toán phương pháp thông thường đảm bảo người đọc hiểu ý người viết thuật toán Để đảm bảo đòi hỏi này, thuật toán cần mô tả ngôn ngữ lập trình (ngôn ngữ máy, hợp ngữ ngôn ngữ bậc cao Pascal ) Trong ngôn ngữ mệnh đề tạo theo qui tắc cú pháp nghiêm ngặt có nghĩa Tính khả thi/đa Tất phép toán có mặt thuật toán phải đủ đơn giản Điều có nghĩa là, phép toán phải cho, nguyên tắc thực người 2/20 Mở đầu thiết kế, đánh giá thuật toán kiến thức bổ trợ giấy trắng bút chì khoảng thời gian hữu hạn Chẳng hạn, thuật toán Euclid ta cần thực phép chia số nguyên, phép gán phép so sánh r=0 hay r ≠ Điều quan trọng thuật toán phải có tính đa làm việc với tất tập hợp liệu đầu vào Tính dừng Với liệu vào thoả mãn điều kiện liệu vào (tức lấy từ tập liệu vào), thuật toán phải dừng lại sau số hữu hạn bước thực Thuật toán Euclid thoả mãn điều kiện Bởi giá trị r nhỏ n (khi thực bước 1), r 0 giá trị n bước i (ký hiệu ni) giá trị ri-1 bước i-1, ta phải có bất đẳng thức n>r =n1>r1 = n2 > r2 Dãy số nguyên dương giảm dần cần phải kết thúc 0, sau số hữu hạn bước giá trị r phải = thuật toán phải dừng lại Với vấn đề đặt ra, có nhiều thuật toán giải Một vấn đề có thuật toán giải gọi vấn đề giải (bằng thuật toán) Chẳng hạn, tìm nghiệm hệ phương trình tuyến tính vấn đề giải Một vấn đề không tồn thuật toán gọi vấn đề không giải (bằng thuật toán) Một thành tựu suất xắc toán học kỷ 20 tìm vấn đề không giải thuật toán Chẳng hạn thuật toán thắng cho người thứ hai cờ ca rô thuật toán xác định xem máy Turing có dừng lại sau n bước không, đềulà vấn đề không tồn thuật toán giải Thiết kế thuật toán Để giải toán máy tính điện tử (MTĐT), điều trước tiên phải có thuật toán Một câu hỏi đặt làm để tìm thuật toán cho toán đặt ra- Lớp toán đặt từ ngành khoa học kỹ thuật, từ lĩnh vực hoạt động người phong phú đa dạng Các thuật toán giải lớp toán khác khác Tuy nhiên, có số kỹ thuật thiết kế thuật toán chung như: Chia để trị (divide-and-conque), phương pháp tham ăn (greedy method), qui hoạch động (dynamic programming) Việc nắm chiến lược thiết kế thuật toán quan trọng cần thiết giúp cho ta dễ tìm thuật toán cho toán đưa Tính đắn thuật toán Khi thuật toán làm ra, ta cần phải chứng minh rằng, thuật toán thực cho ta kết với liệu vào hợp lệ Điều gọi chứng minh tính đắn thuật toán Việc chứng minh tính đắn thuật toán công việc 3/20 Mở đầu thiết kế, đánh giá thuật toán kiến thức bổ trợ không dễ dàng Trong nhiều trường hợp, đòi hỏi ta phải có trình độ khả tư toán học tốt Sau ta rằng, thực thuật toán Euclid, g ước chung lớn hai số nguyên dương m, n Thật vậy, thực bước 1, ta có m = qn + r, q số nguyên Nếu r = n ước m hiển nhiên n (do g) ước chung lớn m n Nếu r ước chung m n ước chung n r (vì r=m-qn) Ngược lại ước chung n r ước chung m n (vì m = qn + r) Do ước chung lớn n r ước chung lớn ma n Vì vậy, thực lặp lại bước 1, với thay đổi giá trị m n, thay đổi giá trị n r, r=0 ta nhận giá trị g ước chung lớn giá trị m n ban đầu Phân tích thuật toán Giả sử, với số toán có số thuật toán giải Một câu hỏi xuất là, cần chọn thuật toán số thuật toán để áp dụng Việc phân tích thuật toán, đánh giá độ phức tạp thuật toán nội dung phần giải vấn đề Đánh giá hiệu thuật toán Khi giải vấn đề, cần chọn số thuật toán, thuật toán mà cho “tốt” Vậy ta cần lựa chọn thuật toán dựa sở nào- Thông thường ta dựa hai tiêu chuẩn sau đây: • Thuật toán đơn giản, dễ hiểu, dễ cài đặt (dễ viết chương trình) • Thuật toán sử dụng tiết kiệm nguồn tài nguyên máy tính, đặc biệt chạy nhanh Khi ta viết chương trình để sử dụng số lần, giá thời gian viết chương trình vượt xa giá chạy chương trình tiêu chuẩn (1) quan trọng Nhưng có trường hợp ta cần viết chương trình (hoặc thủ tục, hàm) để sử dụng nhiều lần, cho nhiều người sử dụng, giá thời gian chạy chương trình vượt xa giá viết Chẳng hạn, thủ tục xếp, tìm kiếm sử dụng nhiều lần, nhiều người toán khác Trong trường hợp ta cần dựa tiêu chuẩn Ta cài đặt thuật táon phức tạp, miễn chương trình nhận chạy nhanh so với chương trình khác Tiêu chuẩn xem tínhhiệuquảcủa thuật toán Tính hiệu thuật toán bao gồm hai nhân tố bản: 4/20 Mở đầu thiết kế, đánh giá thuật toán kiến thức bổ trợ Dung lượng không gian nhớ cần thiết để lưu giữ giữ liệu vào, kết tính toán trung gian kết thuật toán Thời gian cần thiết để thực thuật toán (ta gọi thời gian chạy) Chúng ta quan tâm đến thời gian thực thuậ toán, có nghĩa ta nói đến đánh giá thời gian thực Một thuật toán có hiệu xem thuật toán có thời gian chạy so với thuật toán khác Các phương pháp biểu diễn thuật toán Có nhiều phương pháp biểu diễn thuật toán Có thể biểu diễn thuật toán danh sách bước, bước diễn đạt ngôn ngữ thông thường ký hiệu toán học Có thể biểu diễn thuật toán sơ đồ khối Tuy nhiên, để đảm bảo tính xác định thuật toán trình bày trên, thuật toán cần viết ngôn ngữ lập trình Một chương trình biểu diễn thuật toán ngôn ngữ lập trình chọn Thông thường ta dùng ngôn ngữ lập trình Pascal, ngôn ngữ thường chọn để trình bày thuật toán sách báo Ngôn ngữ thuật toán ngôn ngữ dùng để miêu tả thuật toán Thông thường ngôn ngữ thuật toán bao gồm ba loại: + Ngôn ngữ liệt kê bước; + Sơ đồ khối; + Ngôn ngữ lập trình; Phương pháp liệt kê bước Ngôn ngữ liệt kê bước nội dung sau: Thuật toán: Tên thuật toán chức Vào: Dữ liệu vào với tên kiểu Ra: Các liệu với tên kiểu Biến phụ (nếu có) gồm tên kiểu Hành động thao tác với lệnh có nhãn số tự nhiên Để giải phương trình bậc hai ax2 + bx +c = 0, ta mô tả thuật toán ngôn ngữ liệt kê sau: 5/20 Mở đầu thiết kế, đánh giá thuật toán kiến thức bổ trợ Bước 1: Xác định hệ số a, b, c Bước 2: Kiểm tra xem hệ số a, b, c có khác hay không- Nếu a=0 quay lại thực bước Bước 3: Tính biểu thức Δ= b2 – 4*a*c Bước 4: Nếu Δ [...]... một dãy số thực cho trước Dành cho độc giả Viết các thuật toán của bạn bằng ngôn ngữ tựa Pascal: a) Thuật toán tìm phần tử lớn nhất của một dãy hữu hạn số thực b) Thuật toán tìm phần tử bé nhất của một tập hợp con của tập hợp c) Thuật toán xếp lại một dãy theo thứ tự tăng dần 19/20 Mở đầu về thiết kế, đánh giá thuật toán và kiến thức bổ trợ d) Thuật toán tìm một dãy các số liên tiếp nhau (dài nhất có... hạn, câu lệnh Function max(a,b,c); Cho biết tên của thuật toán là max và các biến là a, b, c Procedure move(n,A,B,C); Cho biết tên thuật toán được mô tả là move với các biến là n, A, B, C; Các bước của thuật toán được mô tả trong thân thủ tục (hàm) được bắt đầu bởi Begin và kết thúc bởi end 15/20 Mở đầu về thiết kế, đánh giá thuật toán và kiến thức bổ trợ Function max(a,b,c); Begin (thân hàm) End; Procedure... Ở đây ta đề cập đến một số phép toán thường gặp nhất như sau : - Thủ tục UNION(A,B,C)nhận vào 3 tham số là A,B,C; Thực hiện phép toán lấy hợp của hai tập A và B và trả ra kết quả là tập hợp C = A ?B 13/20 Mở đầu về thiết kế, đánh giá thuật toán và kiến thức bổ trợ - Thủ tục INTERSECTION(A,B,C)nhận vào 3 tham số là A,B,C; Thực hiện phép toánlấy giao của hai tập A và B và trả ra kết quả là tập hợp C =... Biểu thức duyệt hậu tự của cây T là biểu thức duyệt hậu tự của các cây T1, T2, , Tn theo thứ tự đó rồi đến nút n Cho cây như trong hình 11/20 Mở đầu về thiết kế, đánh giá thuật toán và kiến thức bổ trợ Biểu thức duyệt tiền tự: A B C D E F H K L Trung tự: C B E D F A K H L Hậu tự: C E F D B K L H A Các phép toán trên cây - Hàm PARENT(n,T)cho nút cha của nút n trên cây T, nếu n là nút gốc thì hàm cho giá. .. thức Các ký tự la tinh: A, a Z, z Chữ số: 0…9 Các phép toán số học: +, - , *, / Các phép toán quan hệ : < , >, =, Giá trị logic: T (true), F (false) Phép toán logic: and, or, not 14/20 Mở đầu về thiết kế, đánh giá thuật toán và kiến thức bổ trợ Hằng đó là các giá trị cụ thể nào đó Tên biến: Là một dãy kí tự mà kí tự đầu phải là chữ cái Có hai loại biến chính: Loại integer (biến nguyên) Var bien: integer;... biệt:’); Write(‘x1 = ‘ , x1 , ’x2 = ‘,x2); Exit; 18/20 Mở đầu về thiết kế, đánh giá thuật toán và kiến thức bổ trợ End; End; Readln; End Bài tập chương Xác định số phép tính so sánh nhiều nhất có thể trong thuật toán của bạn tìm phần tử lớn nhất của một dãy n số thực cho trước Dành cho độc giả Xác định số phép tính so sánh nhiều nhất có thể trong thuật toán của bạn để xếp lại một dãy có n số thực theo thứ... diễn theo con trái nhất và anh em ruột phải: 12/20 Mở đầu về thiết kế, đánh giá thuật toán và kiến thức bổ trợ Cây nhị phân (Binary Trees) Cây nhị phân là cây rỗng hoặc là cây mà mỗi nút có tối đa hai nút con Hơn nữa các nút con của cây được phân biệt thứ tự rõ ràng, một nút con gọi là nút con trái và một nút con gọi là nút con phải Ta qui ước vẽ nút con trái bên trái nút cha và nút con phải bên phải... vòng lặp được thực hiện, điều đó có thể sẽ dẫn đến sự thay đổi giá trị của các biến trong điều kiện Nếu điều kiện vẫn là đúng, thì câu lệnh lại được thực hiện Điều đó sẽ tiếp diễn cho đến khi điều kiện là đúng 17/20 Mở đầu về thiết kế, đánh giá thuật toán và kiến thức bổ trợ Để giải phương trình bậc hai ax2 + bx + c = 0 ta mô tả thuật toán bằng một chương trình viết trên Pascal như sau: Program giai_PT;... biến := giá trị đầu to giá trị cuối do câu lệnh; Tại đầu vòng lặp, biến được sẽ gán cho giá trị đầu, nếu giá trị đầu nhỏ hơn hơn hoặc bằng giá trị cuối và câu lệnh được thực hiện với giá trị này của biến Tiếp đến giá trị của biến sẽ tăng lên 1và câu lệnh sẽ được thực hiện với giá trị mới của biến Quá trình sẽ được tiếp tục cho đến khi biến bằng giá trị cuối Sau khi thực hiện câu lệnh với biến bằng giá. .. lệnh 2; Câu lệnh n; End; Các câu lệnh trong khối được thực hiện tuần tự Dưới đây thuật ngữ câu lệnh được dùng để chỉ chung một câu lệnh cũng như một khối câu lệnh (*a là số phần tử lớn nhất trong danh sách L*) k là số phần tử của danh sách L Câu lệnh điều kiện 16/20 Mở đầu về thiết kế, đánh giá thuật toán và kiến thức bổ trợ Câu lệnh đơn giản là If điều kiện then câu lệnh; Khi thực hiện câu lệnh, điều ... tínhhiệuquảcủa thuật toán Tính hiệu thuật toán bao gồm hai nhân tố bản: 4/20 Mở đầu thiết kế, đánh giá thuật toán kiến thức bổ trợ Dung lượng không gian nhớ cần thiết để lưu giữ giữ liệu vào, kết tính toán. .. cho ta kết với liệu vào hợp lệ Điều gọi chứng minh tính đắn thuật toán Việc chứng minh tính đắn thuật toán công việc 3/20 Mở đầu thiết kế, đánh giá thuật toán kiến thức bổ trợ không dễ dàng Trong... Cho biết tên thuật toán mô tả move với biến n, A, B, C; Các bước thuật toán mô tả thân thủ tục (hàm) bắt đầu Begin kết thúc end 15/20 Mở đầu thiết kế, đánh giá thuật toán kiến thức bổ trợ Function

Ngày đăng: 30/12/2015, 09:40

Từ khóa liên quan

Mục lục

  • Mở đầu về thiết kế, đánh giá thuật toán và kiến thức bổ trợ

  • Khái niệm thuật toán

    • Khái niệm về thuật toán

    • Các yêu cầu về thuật toán

      • Input

      • Output

      • Tính xác định

      • Tính khả thi/đa năng

      • Tính dừng

      • Thiết kế thuật toán

      • Tính đúng đắn của thuật toán

      • Phân tích thuật toán

      • Đánh giá hiệu quả của thuật toán

      • Các phương pháp biểu diễn thuật toán

        • Phương pháp liệt kê từng bước

        • Phương pháp sơ đồ

        • Một số cấu trúc dữ liệu cơ bản

          • Danh sách

          • Đồ thị

            • Các định nghĩa

            • Biểu diễn đồ thị

            • Các phép duyệt đồ thị

            • Cây

              • Các thuật ngữ cơ bản trên cây

              • Định nghĩa

              • Các thứ tự duyệt cây quan trọng

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

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

Tài liệu liên quan