Thuật toán

75 165 1
Tài liệu đã được kiểm tra trùng lặp
Thuật toán

Đ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

1. 1. Khái niệm thuật toán Khái niệm thuật toán - Thuật toán (Algorithm) được biết đến từ Thuật toán (Algorithm) được biết đến từ thế kỷ IX do nhà toán học người Ba tư thế kỷ IX do nhà toán học người Ba tư al-Khowarizmi đưa ra. al-Khowarizmi đưa ra. - Bài toán tính toán (Computation) là một ánh xạ từ tập các đầu vào nào đó vào tập các đầu ra nhất định. - Thuật toán là một thủ tục xác định, bao gồm một dãy các bước cần thực hiện để từ một đầu vào cho trước nó cho một đầu ra. Ví dụ Ví dụ : Bài toán sắp xếp một dãy số theo : Bài toán sắp xếp một dãy số theo thứ tự tăng dần. thứ tự tăng dần. Đầu vào Đầu vào : Một dãy số (a : Một dãy số (a 1 1 , ., a , ., a n n ) ) Đầu ra Đầu ra : Một hoán vị (a : Một hoán vị (a 1 1 (k) (k) , .,a , .,a n n (k) (k) ) sao cho ) sao cho a a 1 1 (k) (k) <=. . . <= a <=. . . <= a n n (k) (k) Thuật toán Insertion-Sort: Thuật toán Insertion-Sort: Procedure Insertion-Sort (a, n) Procedure Insertion-Sort (a, n) For i:=2 to n do do For i:=2 to n do do Begin Begin key := a key := a i i ; ; (* (* Chèn a Chèn a i i vào dãy đã sắp a vào dãy đã sắp a 1 1 a a i-1 i-1 *) *) j:=i-1 j:=i-1 While j>0 and a While j>0 and a i i >key do >key do Begin Begin a a i+1 i+1 := a := a i i ; ; j := j-1; j := j-1; End; End; a a i+1 i+1 := key; := key; End; End; 2. Các tính chất của thuật toán 2. Các tính chất của thuật toán - Tính chính xác (Precision): Thuật toán phải được mô Tính chính xác (Precision): Thuật toán phải được mô tả chính xác. tả chính xác. - Tính hữu hạn (Finiteness): Dừng và cho kết quả sau Tính hữu hạn (Finiteness): Dừng và cho kết quả sau hữu hạn bước. hữu hạn bước. - Tính đơn trị (Uniqueness): Các kết quả trung gian ở Tính đơn trị (Uniqueness): Các kết quả trung gian ở mỗi bước phải được xác định đơn trị phụ thuộc vào mỗi bước phải được xác định đơn trị phụ thuộc vào đầu vào và kết quả của bước trước. đầu vào và kết quả của bước trước. - Tính phổ dụng (Generality): Áp dụng được cho một Tính phổ dụng (Generality): Áp dụng được cho một lớp bài toán. lớp bài toán. Ví dụ Ví dụ : Với thuật toán Insertion-Sort : Với thuật toán Insertion-Sort - Thuật toán mô tả chính xác từng bước thực hiện Thuật toán mô tả chính xác từng bước thực hiện - Thuật toán dừng sau hữu hạn bước Thuật toán dừng sau hữu hạn bước - Các kết quả trung gian ở mỗi bước được xác định một Các kết quả trung gian ở mỗi bước được xác định một cách đơn trị, chỉ phụ thuộc vào và kết quả ở bước cách đơn trị, chỉ phụ thuộc vào và kết quả ở bước trước trước - Thuật toán áp dụng được cho một lớp bài toán Thuật toán áp dụng được cho một lớp bài toán 3. Các cấu trúc của thuật toán 3. Các cấu trúc của thuật toán - Cấu trúc tuần tự Cấu trúc tuần tự - Cấu trúc lựa chọn Cấu trúc lựa chọn - Cấu trúc lặp Cấu trúc lặp 4. Biểu diễn thuật toán 4. Biểu diễn thuật toán - Có nhiều cách biểu diễn Có nhiều cách biểu diễn - Quy ước về biểu diễn thuật toán bằng ngôn Quy ước về biểu diễn thuật toán bằng ngôn ngữ giả code: ngữ giả code: + Việc viết dòng thụt vào biểu thị cấu trúc khối + Việc viết dòng thụt vào biểu thị cấu trúc khối + Ký hiệu “ + Ký hiệu “   ” : Lời chỉ dẫn phía sau ” : Lời chỉ dẫn phía sau + j + j   i: Gán giá trị của i cho j i: Gán giá trị của i cho j + j + j   i i   e: Gán giá trị của e cho i và j e: Gán giá trị của e cho i và j + Các cấu trúc lặp WHILE, FOR, và REPEAT + Các cấu trúc lặp WHILE, FOR, và REPEAT và các cấu trúc điều kiện IF, THEN, và ELSE và các cấu trúc điều kiện IF, THEN, và ELSE được thể hiện giống như trong Pascal. được thể hiện giống như trong Pascal. 5. Phân tích thuật toán? 5. Phân tích thuật toán? - Phân tích thuật toán Phân tích thuật toán là quá trình tìm ra là quá trình tìm ra những đánh giá về thời gian tính và bộ những đánh giá về thời gian tính và bộ nhớ cần thiết để thực hiện thuật toán. nhớ cần thiết để thực hiện thuật toán. - Phân tích có thể cho biết tính khả thi Phân tích có thể cho biết tính khả thi của thuật toán từ đó có thể loại các của thuật toán từ đó có thể loại các thuật toán không tốt. thuật toán không tốt. - Lượng thời gian tính và bộ nhớ cần Lượng thời gian tính và bộ nhớ cần thiết để thực hiện thuật toán được gọi là thiết để thực hiện thuật toán được gọi là độ phức tạp của thuật toán độ phức tạp của thuật toán . . * * Ở đậy ta chỉ quan tâm đánh giá về thời gian Ở đậy ta chỉ quan tâm đánh giá về thời gian tính. tính. 6. Một số khái niệm cơ bản 6. Một số khái niệm cơ bản . . - Kích thước dữ liệu đầu vào: Kích thước dữ liệu đầu vào: Số bít cần thiết Số bít cần thiết để biểu diễn nó. để biểu diễn nó. - Phép toán cơ bản Phép toán cơ bản : Phép toán có thể thực : Phép toán có thể thực hiện với thời gian bị chặn bởi một hằng số hiện với thời gian bị chặn bởi một hằng số không phụ thuộc vào kích thước dữ liệu đầu không phụ thuộc vào kích thước dữ liệu đầu vào ( vào ( Phép tính số học, so sánh, gán, . Phép tính số học, so sánh, gán, . ). ).  Từ số lượng phép toán cơ bản => Thời gian Từ số lượng phép toán cơ bản => Thời gian thuật toán đòi hỏi. thuật toán đòi hỏi.  Đánh giá độ phức tạp thuật toán Đánh giá độ phức tạp thuật toán l l à đánh giá à đánh giá số phép toán cơ bản như là hàm của kích số phép toán cơ bản như là hàm của kích thước dữ liệu đầu vào. thước dữ liệu đầu vào. [...]... tính tốt nhất của thuật toán là thời gian tối thiểu để thực hiện thuật toán với mọi bộ dữ liệu đầu vào kích thước n Thời gian tính tồi nhất của thuật toán là thời gian nhiều nhất để thực hiện thuật toán với mọi bộ dữ liệu đầu vào kích thước n Thời gian tính trung bình của thuật toán là thời gian trung bình để thực hiện thuật toán với mọi bộ dữ liệu đầu vào kích thước n Ví dụ Xét thuật toán tìm số lớn... thời gian tính của thuật toán Nếu thuật toán đòi hỏi thời gian tính tốt nhất là t(n) với kích thước đầu vào n và t(n)=O(g(n)) thì thời gian tính tốt nhất của thuật toán có bậc không quá g(n) (hay thời gian tính tốt nhất của thuật toán có bậc là O(g(n)) Nếu thuật toán đòi hỏi thời gian tính tồi nhất là t(n) với kích thước đầu vào n và t(n)=O(g(n)) thì thời gian tính tồi nhất của thuật toán có bậc không... (hay thời gian tính tồi nhất của thuật toán có bậc là O(g(n)) Nếu thuật toán đòi hỏi thời gian tính trung bình là t(n) với kích thước đầu vào n và t(n)=O(g(n)) thì thời gian tính tồi nhất của thuật toán có bậc không quá g(n) (hay thời gian tính trung bình của thuật toán có bậc là O(g(n)) Khái niệm bậc ít nhất của thời gian tính tốt nhất, tồi nhất, trung bình của thuật toán được định nghĩa tương tự bằng... nghĩa trên Nếu thời gian tính tốt nhất (tồi nhất, trung bình) của thuật toán vừa là O(g(n)) vừa là Ω(g(n)) thì ta nói thời gian tính tốt nhất (tồi nhất, trung bình) của thuật toán là Θ(g(n)) !!! Khi nói thời gian tính của thuật toán là O(f(n)) ta hiểu đó là thời gian tính trong tình huống tồi nhất Còn khi nói thời gian tính của thuật toán là Ω(f(n)) ta hiểu đó là thời gian tính trong tình huống tốt... Θ(n2) Ví dụ 3 Đánh giá thời gian tính của thuật toán sau: Function Linear_Search (s, n, key); Begin i:=0; Repeat i:=i+1; Until (i>=n) or (si=key); Linear_Search := i; End; Rõ ràng, thời gian tính của thuật toán có thể đánh giá bởi số lần thực hiện của câu lệnh i:=i+1; Ta có: Nếu s1:=key => câu lệnh i:=i+1 thực hiện 1 lần => thời gian tính tốt nhất của thuật toán là Θ(1); Nếu key không có trong dãy =>... không có trong dãy => câu lệnh i:=i+1 thực hiện n+1 lần => thời gian tính tồi nhất của thuật toán là Θ(n); Ta sẽ tính thời gian trung bình t(n) của thuật toán Nếu si=key (i=1, 2, , n) => câu lệnh i:=i+1 thực hiện i lần và nếu không tìm thấy thì câu lệnh i:=i+1 thực hiện n lần => thời gian tính trung bình của thuật toán là [(1+2+ +n) +n ]/(n+1) Ta có [(1+2+ +n) +n ]/(n+1)=[n(n+1)/2+n]/(n+1) . - Thuật toán áp dụng được cho một lớp bài toán Thuật toán áp dụng được cho một lớp bài toán 3. Các cấu trúc của thuật toán 3. Các cấu trúc của thuật toán. bài toán. lớp bài toán. Ví dụ Ví dụ : Với thuật toán Insertion-Sort : Với thuật toán Insertion-Sort - Thuật toán mô tả chính xác từng bước thực hiện Thuật

Ngày đăng: 07/07/2013, 01:28

Hình ảnh liên quan

toán tra từ điển trong mô hình tính toán cây - Thuật toán

to.

án tra từ điển trong mô hình tính toán cây Xem tại trang 50 của tài liệu.

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

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

Tài liệu liên quan