Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 44 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
44
Dung lượng
446 KB
Nội dung
08/14/14 (c)2001-2003, Michae l P. Frank 1 Module #5 - Algorithms University of Florida Dept. of Computer & Information Science & Engineering COT 3100 Applications of Discrete Structures Dr. Michael P. Frank Slides for a Course Based on the Text Slides for a Course Based on the Text Discrete Mathematics & Its Applications Discrete Mathematics & Its Applications (5 (5 th th Edition) Edition) by Kenneth H. Rosen by Kenneth H. Rosen 08/14/14 (c)2001-2003, Michae l P. Frank 2 Module #5 - Algorithms Module #5: Thuật toán Algorithms Rosen 5 Rosen 5 th th ed., §2.1 ed., §2.1 ~31 slides, ~1 lecture ~31 slides, ~1 lecture Abu al-Khowarizmi (ca. 780-850) 08/14/14 (c)2001-2003, Michae l P. Frank 3 Module #5 - Algorithms Chapter 2: More Fundamentals • §2.1: Algorithms §2.1: Algorithms – Formal procedures Formal procedures • §2.2: Orders of Growth §2.2: Orders of Growth • §2.3: Complexity of §2.3: Complexity of algorithms algorithms – Analysis using order-of- Analysis using order-of- growth notation. growth notation. • §2.4: The Integers & §2.4: The Integers & Division Division – Some basic number theory. Some basic number theory. • §2.5: Integers & §2.5: Integers & Algorithms Algorithms – Alternate bases, algorithms Alternate bases, algorithms for basic arithmetic for basic arithmetic • §2.6: Number theory §2.6: Number theory applications applications – Public-Key Cryptography Public-Key Cryptography • §2.7: Matrices §2.7: Matrices – Some basic linear algebra. Some basic linear algebra. 08/14/14 (c)2001-2003, Michae l P. Frank 4 Module #5 - Algorithms §2.1: Thuật toán - Algorithms • L L à c à c ơ sở của lập trình trên máy tính. ơ sở của lập trình trên máy tính. • T T ổng quát nhất ổng quát nhất , thu , thu ật toán là thủ tục xác định để ật toán là thủ tục xác định để thực hiện một nhiệm vụ nào đó. thực hiện một nhiệm vụ nào đó. • Ch Ch ương trình máy tính là sử thể hiện thuật toán ương trình máy tính là sử thể hiện thuật toán bằng ngôn ngữ chính xác để máy tính hiểu được, bằng ngôn ngữ chính xác để máy tính hiểu được, chỉ được dùng một số thao tác mà máy tính biết chỉ được dùng một số thao tác mà máy tính biết cách tính cách tính . . • Ta n Ta n ói rằng chương trình cài đặt ( ói rằng chương trình cài đặt ( implements) implements) thu thu ật toán của nó ật toán của nó . . 08/14/14 (c)2001-2003, Michae l P. Frank 5 Module #5 - Algorithms Các thuật toán mà bạn đã biết • Các thuật toán số học ở phổ thông: Các thuật toán số học ở phổ thông: – How to add any two natural numbers written in How to add any two natural numbers written in decimal on paper, using carries. decimal on paper, using carries. – Similar: Subtraction using borrowing. Similar: Subtraction using borrowing. – Multiplication & long division. Multiplication & long division. • Your favorite cooking recipe. Your favorite cooking recipe. • How to register for classes at UF. How to register for classes at UF. 08/14/14 (c)2001-2003, Michae l P. Frank 6 Module #5 - Algorithms Programming Languages • Một số ngôn ngữ lập trình: Một số ngôn ngữ lập trình: – Newer: Newer: Java, C, C++, C#, Visual Basic, JavaScript, Java, C, C++, C#, Visual Basic, JavaScript, Perl, Tcl, Pascal, many others… Perl, Tcl, Pascal, many others… – Older: Older: Fortran, Cobol, Lisp, Basic Fortran, Cobol, Lisp, Basic – Assembly languages, for low-level coding. Assembly languages, for low-level coding. • Đôi khi người ta dùng ngôn ngữ mô tả, giả code Đôi khi người ta dùng ngôn ngữ mô tả, giả code tựa Pascal (“ tựa Pascal (“ pseudo-code pseudo-code ” language). ” language). • Bạn cần phải biết tốt ít nhất một ngôn ngữ lập Bạn cần phải biết tốt ít nhất một ngôn ngữ lập trình! trình! 08/14/14 (c)2001-2003, Michae l P. Frank 7 Module #5 - Algorithms Ví dụ thuật toán • Task: Task: Given a sequence { Given a sequence { a a i i }= }= a a 1 1 ,…, ,…, a a n n , , a a i i ∈ ∈ N N , say , say what its largest element is. what its largest element is. • Một thuật toán giải nó là: Một thuật toán giải nó là: – Đặt giá trị cho biến tạm thời Đặt giá trị cho biến tạm thời v v (phần tử lớn nhất đang (phần tử lớn nhất đang có) là giá trị của có) là giá trị của a a 1 1 . . – Xét phần tử tiếp theo Xét phần tử tiếp theo a a i i trong dãy. trong dãy. – Nếu Nếu a a i i > > v v , thì gán lại , thì gán lại v v bằng bằng a a i i . . – Lặp lại hai bước trên cho đến khi không còn phần tử Lặp lại hai bước trên cho đến khi không còn phần tử nào trong dãy và trả về nào trong dãy và trả về v v . . • Nếu thêm yêu cầu cho biết thứ tự của phần tử lớn Nếu thêm yêu cầu cho biết thứ tự của phần tử lớn nhất đó? nhất đó? 08/14/14 (c)2001-2003, Michae l P. Frank 8 Module #5 - Algorithms Thực hiện thuật toán Executing an Algorithm • Khi bạn khởi động một phần mềm, bạn nói Khi bạn khởi động một phần mềm, bạn nói chương trình hoặc thuật toán của nó bắt đầu chạy chương trình hoặc thuật toán của nó bắt đầu chạy hoặc thực hiện bởi máy tính. hoặc thực hiện bởi máy tính. • Cho mô tả bạn có thể tính bằng tay thuật toán Cho mô tả bạn có thể tính bằng tay thuật toán bằng cách làm từng bước với bút và giấy. bằng cách làm từng bước với bút và giấy. • Trước ~1940, “computer” là người mà công việc Trước ~1940, “computer” là người mà công việc là thực hiện thuật toán. là thực hiện thuật toán. 08/14/14 (c)2001-2003, Michae l P. Frank 9 Module #5 - Algorithms Executing the Max algorithm • Let { Let { a a i i }=7,12,3,15,8. Find its maximum… }=7,12,3,15,8. Find its maximum… • Set Set v v = = a a 1 1 = 7. = 7. • Look at next element: Look at next element: a a 2 2 = 12. = 12. • Is Is a a 2 2 > > v v ? Yes, so change ? Yes, so change v v to 12. to 12. • Look at next element: Look at next element: a a 2 2 = 3. = 3. • Is 3>12? No, leave Is 3>12? No, leave v v alone…. alone…. • Is 15>12? Yes, Is 15>12? Yes, v v =15… =15… 08/14/14 (c)2001-2003, Michae l P. Frank 10 Module #5 - Algorithms Các đặc trưng của thuật toán Algorithm Characteristics M M ột s ột s ố tính chất chung quan trọng của thuật toán: ố tính chất chung quan trọng của thuật toán: • Input Input . Th . Th ông tin và dữ liệu nhập vào ông tin và dữ liệu nhập vào . . • Output. Output. Th Th ông tin và dữ liệu lấy ra ông tin và dữ liệu lấy ra . . • Definiteness. Thu Definiteness. Thu ật toán được xác định chính xác ật toán được xác định chính xác • Correctness. Correctness. Outputs ph Outputs ph ản ánh đúng ản ánh đúng inputs. inputs. • Finiteness. Kh Finiteness. Kh ông chạy mãi mãi ông chạy mãi mãi . . • Effectiveness. C Effectiveness. C ác bước nhỏ để khả thi ác bước nhỏ để khả thi . . • Generality. L Generality. L àm việc với nhiều đầu vào có thể àm việc với nhiều đầu vào có thể . . • Efficiency. Efficiency. Th Th ời gian và bộ nhớ để chạy ời gian và bộ nhớ để chạy . . [...]... Module #5 - Algorithms begin statements end • Groups a sequence of statements together: begin statement 1 statement 2 … statement n end Curly braces {} are used instead in many languages 08/14/14 • Cho phép dùng một dãy các câu lệnh như một lệnh đơn • Có thể dùng: – Sau khai báo thủ tục – Trong lệnh if …sau then hoặc else – Trong thân của vòng for hoặc while (c)2001-2003, Michae 15 Module #5 - Algorithms... Michae 24 Module #5 - Algorithms Ví dụ nghĩ ra thuật toán • G/s ta phải viết thuật toán để tính vị từ: IsPrime:N→{T,F} – Tính xem số tự nhiên cho trước có phải là số nguyên tố không • Trước hết, bắt đầu bằng định nghĩa của logic vị từ về hàm định nghĩa số nguyên tố: ∀n: IsPrime(n) ¬∃1 (n1/2)2 = n, an absurdity Further optimizations are possible: - E.g., only try divisors that are primes less than n1/2 08/14/14 (c)2001-2003, Michae 27 Module #5 - Algorithms Another example task • Bài toán tìm kiếm trong danh sách được sắp xếp Problem of searching an ordered list – Given a list L of n elements that are sorted into a definite order (e.g., numeric, alphabetical),... Module #5 - Algorithms Search alg #1: Linear Search procedure linear search (x: integer, a1, a2, …, an: distinct integers) i := 1 {start at beginning of list} while (i ≤ n ∧ x ≠ ai) {not done, not found} i := i + 1 {go to the next position} if i ≤ n then location := i {it was found} else location := 0 {it wasn’t found} return location {index or 0 if not found} 08/14/14 (c)2001-2003, Michae 29 Module #5 - . (5 (5 th th Edition) Edition) by Kenneth H. Rosen by Kenneth H. Rosen 08/14/14 (c)2001-2003, Michae l P. Frank 2 Module #5 - Algorithms Module #5: Thuật toán Algorithms Rosen 5 Rosen 5 th th . 3>12? No, leave v v alone…. alone…. • Is 15& gt;12? Yes, Is 15& gt;12? Yes, v v = 15 = 15 08/14/14 (c)2001-2003, Michae l P. Frank 10 Module #5 - Algorithms Các đặc trưng của thuật toán Algorithm. (c)2001-2003, Michae l P. Frank 9 Module #5 - Algorithms Executing the Max algorithm • Let { Let { a a i i }=7,12,3, 15, 8. Find its maximum… }=7,12,3, 15, 8. Find its maximum… • Set Set v v =