Professional Documents
Culture Documents
Các yếu tố cần quan tâm khi giải một bài toán:
Toán học: Giả thiết và kết luận (ví dụ lên bảng)
Tin học:
Đưa vào máy tính thông tin gì? Cần lấy ra thông tin gì?
Input Output
Bài toán
Input: Hai số a, b.
Output: UCLN(a,b)
Một bài toán được cấu thành bởi hai thành phần
cơ bản là Input và Output
Bài toán
Bài toán
Thuật toán
Thuật toán
Bài toán
b. Sơ đồ khối
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
• Cải
tiến thuật toán
Ý tưởng:
Tìm i tăng dần trong phạm vi từ 2 đến phần nguyên
thỏa điều kiện là ước của N:
- Nếu không tìm được N là số nguyên tố.
- Ngược lại N không là số nguyên tố.
•Cách
liệt kê:
Sơ đồ khối
Nhập
N=25N
Đúng
25
N = 1?
Sai
Đúng
25
N < 4?
Sai
i2 N là số nguyên
tố
Đúng
2>> N5? ?
i5
3
4
Sai
Sai
i i
i+1
3
4
5 25
Ni?
2?
3?
4?
5?
Đúng
25
N không
không phải
phải là
là
số nguyên tố
Nhập
N=29N
Đúng
29
N = 1?
Sai
Đúng
29
N < 4?
Sai
i2 29
N là
là số
số nguyên
nguyên
tố
Đúng
2>> N5? ?
i6
3
4
5
Sai
Sai
i i
i+1
3
4
5
6 29
Ni?
2?
3?
4?
5?
Đúng
N không phải là
số nguyên tố
Bài 4: Bài toán và Thuật toán
(Tiết 4)
Dãy A chưa được sắp xếp Dãy A được sắp xếp
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
2. Ý tưởng:
a. Cách liệt kê
• Bước 1: Nhập N, các số hạng a1, a2,..,an;
• Bước 2: M N;
• Bước 3: Nếu M < 2 thì đưa ra dãy A đã được sắp
xếp, rồi kết thúc;
• Bước 4: M M-1; i 0;
• Bước 5: i i-1;
• Bước 6: Nếu i> M thì quay lại bước 3;
• Bước 7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau;
• Bước 8: Quay lại bước 5;
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
b. Sơ đồ khối
Mô phỏng thực hiện thuật toán
Lần duyệt 1
6 1 5 3 7 8 10 7 12 4
Mô phỏng thực hiện thuật toán
Lần duyệt 1
1 6 5 3 7 8 10 7 12 4
Mô phỏng thực hiện thuật toán
Lần duyệt 1
1 5 6 3 7 8 10 7 12 4
Mô phỏng thực hiện thuật toán
Lần duyệt 1
1 5 3 6 7 8 10 7 12 4
Mô phỏng thực hiện thuật toán
Lần duyệt 1
1 5 3 6 7 8 10 7 12 4
Mô phỏng thực hiện thuật toán
Lần duyệt 1
1 5 3 6 7 8 10 7 12 4
Mô phỏng thực hiện thuật toán
Lần duyệt 1
1 5 3 6 7 8 10 7 12 4
Mô phỏng thực hiện thuật toán
Lần duyệt 1
1 5 3 6 7 8 7 10 12 4
Mô phỏng thực hiện thuật toán
Lần duyệt 1
1 5 3 6 7 8 7 10 12 4
Mô phỏng thực hiện thuật toán
Lần duyệt 1
1 5 3 6 7 8 7 10 4 12
Lần duyệt 2
1 5 3 6 7 8 7 10 4 12
Mô phỏng thực hiện thuật toán
Lần duyệt 2
1 3 5 6 7 8 7 10 4 12
Mô phỏng thực hiện thuật toán
Lần duyệt 2
1 3 5 6 7 8 7 10 4 12
Mô phỏng thực hiện thuật toán
Lần duyệt 2
1 3 5 6 7 8 7 10 4 12
Mô phỏng thực hiện thuật toán
Lần duyệt 2
1 3 5 6 7 8 7 10 4 12
Mô phỏng thực hiện thuật toán
Lần duyệt 2
1 3 5 6 7 7 8 10 4 12
Mô phỏng thực hiện thuật toán
Lần duyệt 2
1 3 5 6 7 7 8 10 4 12
Mô phỏng thực hiện thuật toán
Lần duyệt 2
1 3 5 6 7 7 8 4 10 12
Lần duyệt 3
1 3 5 6 7 7 8 4 10 12
Mô phỏng thực hiện thuật toán
Lần duyệt 3
1 3 5 6 7 7 4 8 10 12
Lần duyệt 4
1 3 5 6 7 7 4 8 10 12
Mô phỏng thực hiện thuật toán
Lần duyệt 4
1 3 5 6 7 4 7 8 10 12
Lần duyệt 5
1 3 5 6 7 4 7 8 10 12
Mô phỏng thực hiện thuật toán
Lần duyệt 5
1 3 5 6 4 7 7 8 10 12
Lần duyệt 6
1 3 5 6 4 7 7 8 10 12
Mô phỏng thực hiện thuật toán
Lần duyệt 6
1 3 5 4 6 7 7 8 10 12
Lần duyệt 7
1 3 5 4 6 7 7 8 10 12
Mô phỏng thực hiện thuật toán
Lần duyệt 7
1 3 4 5 6 7 7 8 10 12
Lần duyệt 8
1 3 4 5 6 7 7 8 10 12
Lần duyệt 9
1 3 5 4 6 7 7 8 10 12
Lần duyệt 10
1 3 5 4 6 7 7 8 10 12
2. Ý tưởng:
Tìm kiếm tuần tự được thực hiện một cách tự
nhiên: lần lượt đi từ số hạng thứ nhất, ta so sánh
giá trị số hạng đang xét với khóa cho đến khi gặp
một số hạng bằng khóa hoặc dãy đã được xét hết
mà không tìm thấy giá trị của khóa trên dãy.
Ví dụ: Bài toán tìm kiếm tuần tự
b. Sơ đồ khối
Mô phỏng: Bài toán tìm kiếm tuần tự
k = 2 và N = 10
A[1] =A[2]
5 <>= 2A[3]
7 <>A[4]
=2 1 <>
=A[5]
42 <>=22 = 2
A 5 7 1 4 2 9 8 11 25 51
i 1 2 3 4 5 - - - - -
2. Ý tưởng:
Sử dụng tính chất dãy A đã sắp xếp tăng, ta tìm cách
thu hẹp nhanh vùng tìm kiếm bằng cách so sánh k
với số hạng ở giữa phạm vi tìm kiếm (agiữa), khi đó
chỉ xảy ra một trong ba trường hợp:
- Nếu agiữa = k =>tìm được chỉ số, kết thúc;
- Nếu agiữa > k =>việc tìm kiếm thu hẹp, chỉ xét từ
agiữa+1acuối (phạm vi).
Quá trình trên được lặp lại cho đến khi tìm thấy
khóa trên dãy A hoặc phạm vi tìm kiếm bằng rỗng.
Ví dụ: Bài toán tìm kiếm nhị phân
3. Xây dựng thuật toán:
a. Cách liệt kê:
Bước 1: Nhập N, các số hạng a1, a2,.., an và giá trị khóa k;
Bước 2: Đầu 1; Cuối N;
Bước 3: Giữa [(Đầu + Cuối)]/2;
Bước 4: Nếu agiữa = k thì thông báo chỉ số Giữa, rồi kết thúc;
Bước 5: Nếu agiữa > k thì đặt Cuối = Giữa -1 rồi sang bước 7;
Bước 6: Đầu Giữa + 1;
Bước 7: Nếu Đầu > Cuối thì thông báo không tìm thấy khóa
k trên dãy rồi kết thúc;
Bước 8: Quay lại bước 3.
Ví dụ: Bài toán tìm kiếm nhị phân
b. Sơ đồ khối
Mô phỏng: Bài toán tìm kiếm nhị phân
k = 21 và N = 10
i 1 2 3 4 5 6 7 8 9 10
A 2 4 5 6 9 21 22 30 31 33
Dau 1 6 6
Cuoi 10 10 7
Giua 5 8 6
A[Giua] 9 30 21
Lần 1 2 3
duyệt