1. Trang chủ
  2. » Giáo Dục - Đào Tạo

chương 5: Một số thuật toán thông dụng potx

13 498 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 410,88 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cấu trúc tuần tự • Các bước được thực hiện theo 1 trình tự tuyến tính, hết bước này đến bước khác Bước 1... Cấu trúc lặp • Một tác động/ nhiệm vụ có thể được thực hiện lặp nhiều lần.. Th

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

TIN HỌC ĐẠI CƯƠNG

Bài 5 Một số thuật toán thông dụng

Đỗ Bá Lâm

lamdb-fit@mail.hut.edu.vn

Nội dung

5.1 Các cấu trúc cơ bản trong lập trình

5.2 Giả mã (pseudocode)

5.3 Thuật toán số học

5.4 Thuật toán về dãy

5.5 Thuật toán đệ quy

Trang 2

5.1 Các cấu trúc cơ bản trong lập trình

• Cấu trúc tuần tự

• Cấu trúc rẽ nhánh

• Cấu trúc lặp

5.1.1 Cấu trúc tuần tự

• Các bước được thực hiện theo 1 trình tự tuyến

tính, hết bước này đến bước khác

Bước 1

Trang 3

5.1.2 Cấu trúc rẽ nhánh

• Việc thực hiện bước nào phụ thuộc vào điều

kiện xác định

• Ví dụ: Tìm max của 2 số a, b

– Nếu a > b thì max là a, ngược lại max sẽ là b.

– Diễn giải:

• B1: Nhập 2 số a, b.

• B2: Nếu a > b thì Max = a và đi đến bước kết thúc (B4).

• B3: (a <= b) Max  b.

• B4: Kết thúc

Max  a

a>b

Max  b

5.1.3 Cấu trúc lặp

• Một tác động/ nhiệm vụ

có thể được thực hiện

lặp nhiều lần

• Số lần lặp có thể biết

trước hoặc không biết

trước.Tuy nhiên số lần

lặp phải hữu hạn

Điều kiện

Thực hiện công việc trong vòng lặp

Thực hiện công việc khi thoát khỏi vòng lặp

Trang 4

5.1.3 Cấu trúc lặp (2)

7

Nhập N và dãy số a1, a2,…,aN

i > N “Max là số lớn nhất”Hiển thị Max  a1; i=2

ai> Max

i  i + 1

S

S Đ

Max  ai

Đ

Ví dụ: Tìm số lớn nhất của

một dãy có n số

 Lần lượt phải so sánh số Max

tạm thời (lúc đầu Max được

gán bằng phần tử thứ nhất,

a1) với ai, với i từ 2, 3,…, n.

 Việc so sánh này được thực

hiện lặp nhiều lần giữa Max

và ai.

 Khi kết thúc quá trình lặp, ta

sẽ thu được Max là số lớn

nhất của dãy n số.

Nội dung

5.1 Các cấu trúc cơ bản trong lập trình

5.2 Giả mã (pseudocode)

5.3 Thuật toán số học

5.4 Thuật toán về dãy

5.5 Thuật toán đệ quy

Trang 5

5.2 Mã giả (pseudocode)

• Gán: ; :=

– i  i + 1

– a := b + c

• Cấu trúc chọn

if (điều kiện) then (hành động)

hoặc

if (điều kiện) then (hành động)

else (hành động)

• Cấu trúc nhảy goto:

– goto nhãn x;

9

5.2 Giả mã (2)

• Cấu trúc lặp:

while điều_kiện do hành_động

hoặc

repeat

hành_động

until điều_kiện

hoặc

for biến:= gtrị_đầu to gtrị_cuối do hành_động

hoặc

for biến:= gtrị_đầu downto gtrị_cuối do hành_động

Trang 6

Nội dung

5.1 Các cấu trúc cơ bản trong lập trình

5.2 Giả mã (pseudocode)

5.3 Thuật toán số học

5.4 Thuật toán về dãy

5.5 Thuật toán đệ quy

11

5.3 Thuật toán số học

• Các bài toán về số học

– Xác định một số nguyên có phải là số nguyên

tố/hợp số hay không

– Tìm USCLN, BSCNN của 2 số nguyên

Trang 7

Bài toán số nguyên tố

• Cho một số nguyên dương p Làm thế nào để biết

được p có phải số nguyên tố hay không?

– Input: p nguyên dương

– Output: kết luận về tính nguyên tố của p

• Ý tưởng?

– p = 1?  Không phải số nguyên tố

– p > 1?

• Kiểm tra từ 2 đến p-1 có phải là ước số của p không

• Nếu có thì kết luận p không là số nguyên tố, ngược

lại không có số nào thì kết luận p là số nguyên tố

13

Bài toán số nguyên tố (2)

Nhập p

if p=1 then begin

Xuất: p không nguyên tố;

Dừng thuật toán;

end

flag := TRUE

for k:=2 to p-1 do

if (k là ước số của p) then begin

flag:=FALSE;

break; { ngắt vòng lặp FOR }

end

if flag=TRUE then

Xuất: p là số nguyên tố

else

Trang 8

Nội dung

5.1 Các cấu trúc cơ bản trong lập trình

5.2 Giả mã (pseudocode)

5.3 Thuật toán số học

5.4 Thuật toán về dãy

5.5 Thuật toán đệ quy

15

5.4 Thuật toán về dãy

• Làm việc với một dãy số

• Các bài toán điển hình

– Tìm số lớn nhất, nhỏ nhất trong dãy

– Kiểm tra dãy có phải là dãy tăng hoặc dãy

giảm

– Sắp xếp dãy tăng dần hoặc giảm dần

Trang 9

Ví dụ - Tìm số lớn nhất trong dãy

• Input: dãy số a1, a2, a3,… an

• Output: max là giá trị lớn nhất trong dãy số

đã cho

• Thuật toán:

max:=a1;

for i:=2 to n do

if max < ai then max:= ai

Xuất: max là giá trị lớn nhất trong dãy số

17

Bài tập

• Bài 1 Xây dựng thuật toán tìm phần tử có giá trị truyệt

đối lớn nhất trong dãy gồm n phần tử

• Bài 2 Xây dựng thuật toán tìm tổng của các số chẵn và

tổng của các số lẻ trong dãy gồm n phần tử được nhập

vào từ bàn phím.

• Bài 3 Xây dựng thuật toán kiểm tra xem một dãy số

gồm n phần tử được nhập vào từ bàn phím có phải là

dãy số tăng (hoặc giảm) không.

• Bài 4 Xây dựng thuật toán tính trung bình cộng của các

số dương trong dãy gồm n số được nhập vào từ bàn

phím.

Trang 10

Nội dung

5.1 Các cấu trúc cơ bản trong lập trình

5.2 Giả mã (pseudocode)

5.3 Thuật toán số học

5.4 Thuật toán về dãy

5.5 Thuật toán đệ quy

19

5.5 Thuật toán đệ quy

• Với bài toán có thể đƣợc phân tích và đƣa

tới việc giải một bài toán cùng loại nhƣng

cấp độ thấp hơn

– độ lớn dữ liệu nhập nhỏ hơn

– giá trị cần tính toán nhỏ hơn

Trang 11

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

• Để xây dựng thuật toán đệ quy, cần xác định:

– Trường hợp cơ bản: (Các) trường hợp không cần

thực hiện lại thuật toán.

– Phần tổng quát: Có yêu cầu gọi đệ quy

• Cần xác định nguyên lý đưa trường hợp tổng quát

về trường hợp cơ bản

• Đảm bảo tính dừng của giải thuật đệ quy - chắc

chắn từ trường hợp tổng quát sẽ đến được trường

hợp cơ bản

21

Ví dụ

• Tính giai thừa của n:

– Trường hợp cơ bản: 0! = 1

– Trường hợp tổng quát: n! = (n-1)! * n

• Xây dựng dãy Fibonacci

– Trường hợp cơ bản: F(0) = F(1) = 1

– Trường hợp tổng quát: F(n) = F(n-1) + F(n-2)

Trang 12

Tính giai thừa - Thuật toán đệ quy

• Input: số tự nhiên n

• Output: GT(n)=n!

• Thuật giải:

Nhập n

GT:=1;

if n>0 then

GT := GT(n-1)*n;

Xuất GT

23

Bài tập

• Xây dựng thuật toán cho bài toán tìm số

Fibonacci F(n)

Trang 13

Thuật giải heuristic

• Dùng “mẹo”

• Áp dụng với những bài toán

– Chƣa tìm đƣợc thuật toán và không biết có

tồn tại thuật toán không

– Có thuật toán nhƣng thời gian tính toán quá

lâu hoặc điều kiện của thuật toán khó đáp

ứng

25

Ngày đăng: 12/07/2014, 18:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w