Bài giảng Tin học căn bản (Phần 2): Chương 2 - Nguyễn Hồng Phương - Pdf 59

Chương 2:
Thuật toán
Ngo Van Linh
Bộ môn Hệ thống thông tin
Viện Công nghệ thông tin và Truyền thông
Đại học Bách Khoa Hà Nội

1


Nội dung chương này






2.1.
2.2.
2.3.
2.4.
2.5.

Định nghĩa thuật toán
Biểu diễn thuật toán
Một số thuật toán thông dụng
Thuật toán đệ quy
Thuật giải heuristic

2



1. Đặt giá trị lớn nhất tạm thời là số nguyên đầu tiên.
2. So sánh số nguyên kế tiếp trong dãy với giá trị lớn
nhất tạm thời, nếu số nguyên này lớn hơn giá trị lớn
nhất tạm thời thì đặt giá trị lớn nhất tạm thời bằng số
nguyên này.
3. Lặp lại bước 2 nếu còn số nguyên trong dãy chưa
được xét.
4. Dừng nếu không còn số nguyên nào trong dãy chưa
được xét. Giá trị lớn nhất tạm thời lúc này chính là giá
trị lớn nhất trong dãy số.
4


Ví dụ 2: Thuật toán giải phương trình bậc
hai: ax2 + bx + c = 0 (a0)




1. Nhập 3 hệ số a, b, c
2. Tính giá trị Δ = b2 - 4*a*c
3. Xét dấu Δ. Nếu Δ>0 thì thực hiện các thao tác
sau đây:


3.1. Tính các nghiệm theo các công thức:




Nhập (input): có các giá trị nhập từ một tập hợp nhất
định.
Xuất (output): từ mỗi giá trị của tập hợp nhập, tạo ra giá
trị xuất thuộc một tập hợp nhất định.
Tính xác định (definiteness): các bước chính xác, rõ ràng.
Tính hữu hạn (finiteness): cho ra kết quả sau một số hữu
hạn bước.
Tính hiệu quả (effectiveness): được đánh giá dựa trên
một số tiêu chuẩn (khối lượng tính toán, không gian, thời
gian sử dụng).
Tính tổng quát (generaliness): áp dụng được cho tất cả
các bài toán có dạng như mong muốn

6


2.2. Biểu diễn thuật toán


Sử dụng các ngôn ngữ:






Ngôn
Ngôn
Ngôn
Ngôn

Nút thao tác: là một hình chữ nhật có ghi các
lệnh cần thực hiện:
tăng k

Nút nhập/xuất dữ liệu:

Đọc a và b
8


Ngôn ngữ lưu đồ (2)


Nút điều kiện: là một hình thoi có ghi điều kiện
cần kiểm tra, thường có 1 cung đi vào và 2 cung
đi ra (tương ứng với 2 trường hợp đúng/sai)

Đúng



a
Δ=0

sai

x=-b/(2a)
Xuất: phương trình
có nghiệm kép x

Kết thúc

Xuấtphương
trình vô
nghiệm

10


Mã giả






Sử dụng mệnh đề có cấu trúc chuẩn hóa và
vẫn dùng ngôn ngữ tự nhiên.
Sử dụng các ký hiệu toán học, các biến, cấu
trúc kiểu thủ tục.
Hành động gán:


if (điều kiện) then (hành động) end if
if (điều kiện) then (hành động 1)
else (hành động 2)
end if
while (điều kiện) do (hành động) end while
repeat (hành động) until (điều kiện)
for (biến)=(giá trị đầu) to (giá trị cuối) do (hành động) end for
for (biến)=(giá trị cuối) downto (giá trị đầu) do (hành động)
end for

Cấu trúc nhảy


goto nhãn x;

12


Ví dụ: thuật toán giải phương trình bậc 2



Nhập: các hệ số a, b, c
Xuất: kết luận về nghiệm của phương trình bậc hai
Thuật toán:



if a = 0 then


2.3. Một số thuật toán thông dụng








Thuật toán
Thuật toán
nguyên
Thuật toán
dãy
Thuật toán
Thuật toán

kiểm tra số nguyên tố
tìm USCLN, BSCNN của 2 số
tìm phần tử lớn nhất trong một
sắp xếp
tìm kiếm

14


Tìm phần tử lớn nhất trong một dãy hữu hạn số




Định nghĩa giai thừa





0! = 1
n! = n*(n-1)! với n>0

Định nghĩa dãy số Fibonacci: 1, 1, 2, 3, 5, 8, 13,...




f1 = 1,
f2 = 1,
fn = fn-1 + fn-2

16


Thuật toán đệ quy (2)


Thuật toán đệ quy tính giai thừa của 1 số tự
nhiên:






Thuật toán đệ quy (4)


Đặc điểm của thuật toán đệ quy:





Có 1 trường hợp cơ sở/trường hợp dừng
Có phần đệ quy bên trong thuật toán (nó gọi
đến chính nó)
Có sự biến đổi tiến tới trường hợp cơ sở.

19


Bài tập









Viết thuật toán tìm USCLN của hai số tự
nhiên

Các nguyên lý






Nguyên lý vét cạn thông minh: trong bài toán tìm kiếm
khi không gian tìm kiếm lớn => giới hạn không gian tìm
kiếm hoặc thực hiện dò tìm đặc biệt dựa vào đặc thù
của bài toán để nhanh chóng tìm ra mục tiêu
Nguyên lý tham lam: lấy tiêu chuẩn tối ưu toàn cục làm
tiêu chuẩn chọn lựa hành động cục bộ của từng bước
trong quá trình tìm kiếm lời giải
Nguyên lý thứ tự: thực hiện hành động theo thứ tự hợp
lý của không gian khảo sát nhằm nhanh chóng đạt được
một lời giải tốt.
22




Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status