Tải bản đầy đủ (.ppt) (19 trang)

Bai 4 Bai toan va Thuat toan

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (119.86 KB, 19 trang )

Bài 3

$4. Bài toán
và thuật toán
1.- Khái niệm bài toán
2.- Khái niệm thuật tốn
3.- Một số ví dụ về thuật toán


1.- Khái niệm bài tốn
• Trong phạm vi Tin học, bài tốn là một
việc nào đó ta muốn máy thực hiện.
Như vậy, ta cần quan tâm 2 yếu tố:
Đầu vào và đầu ra: Đưa cho máy cái gì
để thu được cái gì?
• Đầu vào (Input) là các thơng tin đã có.
• Đầu ra (output) là các thơng tin cần có
từ đầu vào.


2.- Khái niệm thuật tốn
• Chương trình là dãy hữu hạn các cơng việc
có thể làm được để đạt được mục đích đề ra.
• Làm thế nào để từ Input lần tìm ra Output là
cả một vấn đề mưu mẹo, chiến lược, khơn
khéo…
• Việc chỉ ra tường minh cách lần tìm ra
Output của bài tốn dược gọi là thuật tốn.
• Tuy nhiên, thuật toán cũng là một phần hoặc
cả chương trình.
• Do vậy, có thể nói:


Thuật tốn là một dãy hữu hạn các thao tác
xác định để từ Input ta nhận được Output.


Định nghĩa này khơng chỉ dùng trong
Tin học, mà cịn trong hầu hết các lĩnh
vực của cuộc sống, chẳng hạn:
• Thuật tốn quay Rubic.
• Thuật tốn Gauss để giải hệ n phương
trình bậc nhất n ẩn.
• Thuật tốn khai căn tay.
• Thuật tốn Horner để tính nhanh giá trị
của một đa thức…


Bài tốn:
Tính trung bình cộng của n số tự
nhiên đầu tiên, n>1
Chương trình:





Bước 1. Nhập n từ bàn phím.
Bước 2. Tính tổng s = 1+2+…+n.
Bước 3. Tính kết quả = s/n.
Bước 4. Đáp số: kq.

Thuật tốn thì có nhiều:



Thuật tốn ở bước 2:
Tính tổng s = 1+2+..+n?
• Thuật toán 1. (Cơ bắp – cộng dồn):
Bước 1. Cho S = 0 và k = 1.
Bước 2. Cho S = S + k, tức tăng S thêm k đơn vị.
Bước 3. Cho k = k+1, tức là tăng k lên 1 đơn vị.
Bước 4. Nều k>n thì dược s và kết thúc!
Trái lại thì quay về thực hiện bước 2.
Cách làm trên, phải mất n-1 phép cộng, vô cùng
vất vả khi n rất lớn!


Thuật tốn 2. (
Gauss – nhà tốn học Đức):
• Hồi học lớp 4, gặp bài toán 1+2+3+…
+100 = ? Gauss trả lời ngay đáp số là
5050.
• Thầy giáo vơ cùng ngạc nhiên hỏi: “Em
làm ở nhà rồi à?”. Gauss bảo là không
phải như vậy, mà nhận xét: 1+100 =
2+99 = 3+98 = … đều bằng 101 cả, mà
có 50 cặp, nên tổng = 5050…
• Vậy theo Gauss, với n tự nhiên tùy ý >
1, s = 1+2+…+n = (1+n)*n/2. Chỉ cần 3
phép tính!


3.- Một số ví dụ về thuật tốn

• Ví dụ 1: Kiểm tra tính nguyên tố của
một số tự nhiên n>10.
• Chẳng hạn n= 97. Phân tích:
• Thuật tốn 1.
• Thử các phép chia 97 cho 2,3,4,5…,96.
Nếu không khi nào chia hết thì 97 là số
nguyên tố, trái lại 97 không là số Tổng
quát hết n-2 phép thử.


Thuật tốn 2.
• Thử các phép chia 97 cho 3, 5, 7, …, 95.
• Cách này mất [(n-2)/2] phép thử và ít
hơn Thuật tốn 1.
Thuật tốn 3.
• Thử các phép chia 97 cho 3,5,7,…,47
thơi, vì 97 lẻ khơng cần thử chia cho số
chẵn và không chia hết cho các số lớn
hơn n/2.
• Cách này mất [(n-2)/4] phép thử và ít
hơn Thuật toán 2.


• Thuật toán 4.
• Thử các phép chia 97 cho 3,5,7,9 thơi, vì 97 lẻ
khơng cần thử chia cho số chẵn và không
cần xét thử chia các số lớn hơn sqrt(n), vì
nếu n chia hết cho số a > sqrt(n), thì n = a*b,
b sẽ <= sqrt(n), đã được xét trong khoảng từ
3 đến sqrt(n) rồi.

• Cách này mất [sqrt(n)/2] phép thử và ít hơn
Thuật tốn 3. Và có lẽ ngắn hơn cả!
Thuật toán trong SGK, trang 36 chưa là tốt
nhất vì họ phải mất [sqrt(n)] phép chia thử.


• Ví dụ ở thuật tốn 4.
• n = 97, [sqrt(n)] = 9, chỉ xét thử chia cho
3,5,7,9. Ta thấy khơng lúc nào chia hết,
nên n là số ngun tố.
• n = 91, [sqrt(n)] = 9 được lần lượt xét
thử chia cho 3,5,7,9 thấy nó chia hết
cho 7, n khơng là số ngun tố.
• n = 32749 xem nó có là số nguyên tố
không nhé!


Cách trình bày một thuật tốn
• Cách 1.
Nêu ra từng bước cụ thể. Cách này rất hay dùng
để trình bày nhanh phương án giải bài tốn.
• Cách 2.
Vẽ sơ đồ khối, công phu hơn, nhưng trực quan
hơn, hiện đại hơn. Các nhà khoa học, các nhà
quản lý và các nhà doanh nghiệp rất hay làm
theo cách này.


Ví dụ: Giải phương trình:
ax + b = 0.

Cách 1.
• Bước 1. Nhập a, b là 2 số thực.
• Bước 2. Xét a:
Nếu a  0 thì cho x = -b/a, đáp số rồi hết.
Trái lại, trong bối cảnh đó:
Nếu b  0 thì trả lời Vơ nghiệm và hết.
Trái lại trả lời mọi x thức đều là nghiệm


• Cách 2.


Một số thuật tốn thơng dụng
trong kỹ thuật
• Ví dụ: Thuật toán cho cái máy giặt:
Bước 1. Hút nước vào.
Bước 2. Đun nước nóng lên.
Bước 3. Quay vật vã cho bật ghét bẩn thôi ra.
Bước 4. Xả nước ra và đo độ đục của nước.
Bước 5. Xét độ đục:
Nếu còn đục thì quay về Bước 1.
Bước 6. Lúc này hết đục rồi thì mà quay ly tâm
để vắt nước ra và kết thúc.


• Ví dụ: Thượng để lập trình cho con chó:
• Bước 1. Sủa và ngửi mùi khách.
• Bước 2. So sánh mùi đó với các mùi trong cơ
sở dữ liệu lưu từ trước:
Nếu là mùi người quen thì khơng sủa nữa, mà

đổi thái độ sang mừng rỡ và hết.
Trái lại, thì sửa tiếp và chờ “ý kiến” của chủ
nhà.
• Bước 3. Nếu chủ nhà bảo “Thôi im đi, không
sửa nữa” thì nó mới thơi và lưu mùi đó vào cơ
sở dữ liệu để dùng về sau.
Trái lại thì tiếp tục sủa/cắn cho đến khi người lạ
bỏ đi… và hết.


Trên Internet?
• Ví dụ: Tìm kiếm trên mạng
Hãng www.google.com khi nhận được
từ khóa thì đi tìm trong hàng triệu trang
web xem có trang nào có từ khóa đó thì
thu thập lại, và hiện ra kết quả tóm tắt
tên của các đường link, từng 10 cái
một mỗi lần…


• Ví dụ:
Hãng yahoo khi thấy người sử dụng tạo tài
khoán thư diện tử xin đăng ký một user
name nào đó, thì lập tức tìm lục trong hàng
triệu tài khoản email để xem name đó có
trùng với ai khơng.
Nếu trùng thì báo cho người sử dụng rằng
đã có người đặt rồi, và người sử dụng đó
phải đặt cái tên khác,… cho đến khi không
trùng với ai cả… hoặc bỏ cuộc!

Vấn đề ở chỗ họ có thủ thuật tìm kiếm thế
nào mà nhanh như vậy! Chỉ trong giây
lát…


• Học thuật tốn, rèn luyện thuật tốn,
khơng chỉ cho máy tính, mà hãy lập
trình cho chính cơng việc mình: Từng
giai đoạn nào làm gì? Làm như thế
nào?
• Cuối cùng là để trở thành người có ích
cho xã hội và thành đạt trong cuộc đời
đầy sóng gió này!
• Chúc các bạn thành công!

www.lightsmok.wordpress.com



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×