Thuật toán
v 1.0 - 10/2012
Lê Viết Mẫn -
1
Thuật toán
chúng ta đã học...
1. Lập trình là gì ?
1.1. Lập trình và ngơn ngữ lập trình
1.2. Lịch sử và các hướng lập trình
1.3. Chương trình và thuật tốn
1.4. Các bước trong lập trình
2. C# và .NET
Lê Viết Mẫn -
2
Thuật toán
Giải bài tốn trên máy tính
1. Xác định bài tốn
2. Thiết kế thuật tốn
3. Phân tích thuật tốn
4. Cài đặt thuật toán
5. Kiểm tra / Bắt lỗi
6. [ Sửa lỗi ]
Lê Viết Mẫn -
3
Thuật toán
Nội dung
1. Thuật tốn
1.1. Khái niệm
1.2. Các tính chất
1.3. Phát triển thuật tốn
2. Mơ tả thuật tốn
3. Các dạng thuật tốn cơ bản
4. Ví dụ
Lê Viết Mẫn -
4
Thuật tốn
Thuật toán
Lê Viết Mẫn -
5
Thuật toán
Thuật tốn
•
•
•
Một tập các chỉ thị / lệnh đơn giản được xác định rõ ràng để giải
quyết một bài toán nào đó
•
•
Tính tốn và trả ra một hoặc một tập các giá trị ở đầu ra (output)
Thuật toán = Logic + Điều khiển
Logic - trả lời câu hỏi “Thuật toán làm gì ? Giải quyết vấn đề
gì ? Những yếu tố trong bài tốn có quan hệ với nhau thế
nào ?...”
•
•
•
Nhận một tập các giá trị ở đầu vào (input)
Gồm các kiến thức chuyên môn mà bạn phải biết để có thể giải bài tốn
Để giải bài tốn tính diện tích hình cầu, bạn phải biết cơng thức tính diện
tích hình cầu
Điều khiển - trả lời câu hỏi “Giải thuật phải làm như thế nào ?”
Lê Viết Mẫn -
6
Thuật toán
Thuật tốn
•
•
•
Có thể được mơ tả bằng...
•
•
•
•
Ngơn ngữ tự nhiên
Ngơn ngữ lập trình
Mã giả
Lưu đồ
Cấu trúc dữ liệu - Phương pháp tổ chức dữ liệu
Chương trình = Thuật tốn + Cấu trúc dữ liệu
Lê Viết Mẫn -
7
Thuật toán
Ví dụ - giải p.t bậc nhất
ax + b = 0
Lê Viết Mẫn -
8
Thuật toán
Ví dụ - giải p.t bậc nhất
ax + b = 0
Nếu a ≠ 0: x = -b/a
Ngược lại, a = 0:
Nếu b = 0: pt có vơ số nghiệm
Nếu b ≠ 0: pt vơ nghiệm
Lê Viết Mẫn -
9
Thuật tốn
Ví dụ - tìm số lớn nhất
Cho ba số a, b, c. Tìm số lớn nhất trong ba số đó
Lê Viết Mẫn -
10
Thuật toán
Ví dụ - tìm số lớn nhất
Cho ba số a, b, c. Tìm số lớn nhất trong ba số đó
Bước 1 : Cho Max = a
Bước 2 : So sánh b với Max. Nếu b > Max thì cho Max = b
Bước 3 : So sánh c với Max. Nếu c > Max thì cho Max = c
Bước 4 : Trả ra Max là giá trị lớn nhất
Bước 5 : Dừng
Lê Viết Mẫn -
11
Thuật toán
Các câu hỏi về thuật tốn
•
•
•
•
Thuật tốn đã giải quyết được bài toán được phát biểu ?
Thuật toán đã được định nghĩa tốt ?
Thuật toán đưa ra được một kết quả ?
Thuật tốn kết thúc sau thời gian tính tốn hợp lý ?
Lê Viết Mẫn -
12
Thuật toán
Tính chất
Tính kết thúc (tính dừng)
•
... q trình thực hiện thuật toán phải kết thúc sau khi thực hiện
một số hữu hạn các bước cơng việc
Thuật tốn tính tổng các số tự nhiên
Bước 1 : Cho s = 0, i = 1
Bước 2 : Cộng thêm i vào s ( s = s + i )
Bước 3 : Tăng i thêm 1 ( i = i + 1 )
Bước 4 : Quay lại bước 2
Bước 5 : Nhận s là kết quả giải bài toán
Bước 6 : Dừng
Lê Viết Mẫn -
13
Thuật toán
Tính chất
Tính xác định
•
... nếu trong những điều kiện như nhau thì kết quả thực hiện
khơng phụ thuộc vào đối tượng thực hiện thuật tốn
•
thuật tốn phải rõ ràng, khơng nhập nhằng, khơng thể hiểu theo nhiều nghĩa
Thuật tốn tìm giá trị lớn nhất
Bước 1 : Cho Max = a
Bước 2 : So sánh b với Max. Nếu b > Max thì cho Max = b
Bước 3 : So sánh c với Max. Nếu c > Max thì cho Max = c
Bước 4 : Trả ra Max là giá trị lớn nhất
Bước 5 : Dừng
Lê Viết Mẫn -
14
Thuật toán
Tính chất
Tính tổng qt
•
... nếu thuật tốn được dùng để giải cả một lớp bài tốn cùng loại
Thuật tốn tìm giá trị lớn nhất
Bước 1 : Cho Max = a
Bước 2 : So sánh b với Max. Nếu b > Max thì cho Max = b
Bước 3 : So sánh c với Max. Nếu c > Max thì cho Max = c
Bước 4 : Trả ra Max là giá trị lớn nhất
Bước 5 : Dừng
Lê Viết Mẫn -
15
Thuật toán
Tính chất
Tính xác định đầu vào - đầu ra
•
... nếu xác định rõ các dữ liệu đầu vào và các dữ liệu đầu ra
•
đầu vào, đầu ra được xác định càng chính xác thì q trình xây dựng thuật
tốn càng thuận lợi và thuật tốn càng có chất lượng cao hơn
Thuật tốn tìm giá trị lớn nhất
Bước 1 : Cho Max = a
Bước 2 : So sánh b với Max. Nếu b > Max thì cho Max = b
Bước 3 : So sánh c với Max. Nếu c > Max thì cho Max = c
Bước 4 : Trả ra Max là giá trị lớn nhất
Bước 5 : Dừng
Lê Viết Mẫn -
16
Thuật toán
Tính chất
Tính hiệu quả
•
... nếu cho ra kết quả đúng trong mức chi phí ít nhất về thời gian,
khơng gian
Thuật tốn tìm giá trị lớn nhất
Bước 1 : Cho Max = a
Bước 2 : So sánh b với Max. Nếu b > Max thì cho Max = b
Bước 3 : So sánh c với Max. Nếu c > Max thì cho Max = c
Bước 4 : Trả ra Max là giá trị lớn nhất
Bước 5 : Dừng
Lê Viết Mẫn -
17
Thuật toán
Phát triển thuật tốn
•
•
•
•
•
Xác định đầu vào (Input)
Xác định các bước xử lý (Process)
Xác định đầu ra (Output)
Vẽ biểu đồ HIPO
Xác định các chương trình con (Module)
Lê Viết Mẫn -
18
Thuật toán
Xác định đầu vào
•
•
•
Chúng ta cần dữ liệu gì ?
Chúng ta lấy dữ liệu đó như thế nào ?
Dữ liệu tồn tại ở dạng nào ?
Lê Viết Mẫn -
19
Thuật toán
Xác định đầu ra
•
Những kết quả nào chương trình phải trả ra cho người sử
dụng ?
•
Kết quả phải được trả ra ở dạng nào ?
Lê Viết Mẫn -
20
Thuật toán
Xác định các bước xử lý
•
•
Cách xử lý dữ liệu để đạt được kết quả có ý nghĩa ?
Áp dụng cơng thức gì ?
Lê Viết Mẫn -
21
Thuật tốn
Vẽ biểu đồ HIPO
Hierarchy of Inputs Processes & Outputs
Bài toán
Đầu vào
C.t. con
C.t. con
Xử lý
C.t. con
Lê Viết Mẫn -
C.t. con
22
Đầu ra
C.t. con
C.t. con
Thuật toán
Xác định các c.t. con
•
Cách nào để chia các vấn đề lớn thành các vấn đề nhỏ hơn, dễ
quản lý hơn ?
•
•
•
Các chương trình con cần những đầu vào nào ?
Các xử lý nào là cần thiết cho mỗi chương trình con ?
Đầu ra nào là được chờ đợi tại mỗi chương trình con ?
Lê Viết Mẫn -
23
Thuật tốn
Mơ tả thuật tốn
Lê Viết Mẫn -
24
Thuật tốn
Ngôn ngữ tự nhiên
ax + b = 0
Nếu a ≠ 0: x = -b/a
Ngược lại, a = 0:
Nếu b = 0: pt có vơ số nghiệm
Nếu b ≠ 0: pt vơ nghiệm
•
•
•
Sử dụng ngơn ngữ thường ngày (tiếng mẹ đẻ)
Dễ trình bày vấn đề
Dài dịng, khơng trình bày rõ cấu trúc thuật tốn, khó hiểu
Lê Viết Mẫn -
25
Thuật tốn