1. Trang chủ
  2. » Cao đẳng - Đại học

lt thuật toán – tamnguyenthi

60 17 0

Đ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

• Các bước của thuật toán phải được xác định thứ tự, tức là xác định rõ bước nào thực hiện trước, bước nào thực hiện sau.. • Mặc dù vậy, không nhất thiết yêu cầu phải thực hiện các dãy b[r]

(1)

TIN HỌC CƠ SỞ

Bài - Thuật tốn

Bộ mơn Tin học ( c BMTH 2019)

Khoa Toán - Cơ - Tin học

(2)

Nội dung

1 Khái niệm thuật toán Khái niệm thuật toán

Các đặc trưng thuật toán Bản chất trừu tượng thuật toán Phát thuật tốn

3 Tính hiệu tính thuật tốn Biểu diễn thuật tốn

(3)

Nội dung

1 Khái niệm thuật toán Khái niệm thuật toán

Các đặc trưng thuật toán Bản chất trừu tượng thuật toán Phát thuật tốn

3 Tính hiệu tính thuật tốn Biểu diễn thuật toán

(4)

Nội dung

1 Khái niệm thuật toán Khái niệm thuật toán

Các đặc trưng thuật toán Bản chất trừu tượng thuật tốn Phát thuật tốn

3 Tính hiệu tính thuật tốn Biểu diễn thuật toán

(5)

Nội dung

1 Khái niệm thuật toán Khái niệm thuật toán

Các đặc trưng thuật toán Bản chất trừu tượng thuật tốn Phát thuật tốn

3 Tính hiệu tính thuật tốn Biểu diễn thuật toán

(6)

Khái niệm thuật toán

Nội dung

1 Khái niệm thuật toán Khái niệm thuật toán

Các đặc trưng thuật toán Bản chất trừu tượng thuật toán Phát thuật tốn

3 Tính hiệu tính thuật toán Biểu diễn thuật toán

(7)

Khái niệm thuật toán Khái niệm thuật toán

Khái niệm thuật toán (Algorithm)

Định nghĩa

Thuật tốn (thuật giải) tập có thứ tự bước (cơng việc) có thể thực được, khơng nhập nhằng, xác định q trình có kết thúc.

Ví dụ:

(8)

Khái niệm thuật toán Các đặc trưng thuật toán

Các đặc trưng thuật tốn

Các bước thuật toán phải xác định thứ tự, tức xác định rõ bước thực trước, bước thực sau

• Mặc dù vậy, khơng thiết yêu cầu phải thực dãy bước bước 1, bước 2, (ví dụ, thuật tốn song song)

Các bước thuật tốn phải thực được, cịn gọi hiệu quả.Ví dụ, thuật tốn khơng thể chứa bước có dạng “Tạo dãy

gồm tất số nguyên dương”, dãy số nguyên dương vơ hạn, bước khơng thực

Các bước thuật tốn phải khơng nhập nhằng.

• Thơng tin trạng thái q trình thực thuật tốn phải

xác định hồn tồn hành động bước thuật toán

(9)

Khái niệm thuật toán Các đặc trưng thuật toán

Các đặc trưng thuật tốn

Các bước thuật tốn phải xác định thứ tự, tức xác định rõ bước thực trước, bước thực sau

• Mặc dù vậy, khơng thiết u cầu phải thực dãy bước bước 1, bước 2, (ví dụ, thuật tốn song song)

Các bước thuật tốn phải thực được, cịn gọi hiệu quả.Ví dụ, thuật tốn khơng thể chứa bước có dạng “Tạo dãy

gồm tất số ngun dương”, dãy số ngun dương vơ hạn, bước khơng thực

Các bước thuật tốn phải khơng nhập nhằng.

• Thơng tin trạng thái trình thực thuật tốn phải

xác định hồn tồn hành động bước thuật toán

(10)

Khái niệm thuật toán Các đặc trưng thuật toán

Các đặc trưng thuật tốn

Các bước thuật tốn phải xác định thứ tự, tức xác định rõ bước thực trước, bước thực sau

• Mặc dù vậy, khơng thiết u cầu phải thực dãy bước bước 1, bước 2, (ví dụ, thuật tốn song song)

Các bước thuật tốn phải thực được, cịn gọi hiệu quả.Ví dụ, thuật tốn khơng thể chứa bước có dạng “Tạo dãy

gồm tất số nguyên dương”, dãy số ngun dương vơ hạn, bước khơng thực

Các bước thuật tốn phải khơng nhập nhằng.

• Thơng tin trạng thái q trình thực thuật tốn phải xác định hoàn toàn hành động bước thuật toán

(11)

Khái niệm thuật toán Các đặc trưng thuật tốn

Các đặc trưng thuật tốn

Các bước thuật toán phải xác định thứ tự, tức xác định rõ bước thực trước, bước thực sau

• Mặc dù vậy, không thiết yêu cầu phải thực dãy bước bước 1, bước 2, (ví dụ, thuật tốn song song)

Các bước thuật tốn phải thực được, cịn gọi hiệu quả.Ví dụ, thuật tốn khơng thể chứa bước có dạng “Tạo dãy

gồm tất số nguyên dương”, dãy số nguyên dương vô hạn, bước không thực

Các bước thuật tốn phải khơng nhập nhằng.

• Thơng tin trạng thái q trình thực thuật tốn phải xác định hoàn toàn hành động bước thuật toán

(12)

Khái niệm thuật toán Bản chất trừu tượng thuật toán

Thuật toán Biểu diễn thuật toán

Cần nhấn mạnh khác thuật toán biểu diễn Tương tự cốt truyện sách

• Cốt truyện : trừu tượng, mang tính khái niệm;

• Cuốn sách : biểu diễn vật lí cốt truyện Khi truyện dịch sang thứ tiếng khác, xuất dạng khác phần biểu diễn thay đổi, cốt truyện khơng đổi

Thuật tốn biểu diễn nhiều dạng khác Ví dụ, thuật toán chuyển từ nhiệt độ C sang nhiệt độ F :

Biểu diễn cơng thức đại số : F =

5C + 32 ;

(13)

Khái niệm thuật toán Bản chất trừu tượng thuật toán

Thuật toán Biểu diễn thuật toán

Cần nhấn mạnh khác thuật toán biểu diễn Tương tự cốt truyện sách

• Cốt truyện : trừu tượng, mang tính khái niệm;

• Cuốn sách : biểu diễn vật lí cốt truyện Khi truyện dịch sang thứ tiếng khác, xuất dạng khác phần biểu diễn thay đổi, cốt truyện khơng đổi

Thuật tốn biểu diễn nhiều dạng khác Ví dụ, thuật tốn chuyển từ nhiệt độ C sang nhiệt độ F :

Biểu diễn cơng thức đại số : F =

5C + 32 ;

(14)

Khái niệm thuật toán Bản chất trừu tượng thuật toán

Thuật toán Biểu diễn thuật tốn Cần phân biệt khái niệm chương trình q trình

Mỗi chương trình (program) biểu diễn thuật tốn dùng cho máy tính

(15)

Khái niệm thuật toán Bản chất trừu tượng thuật toán

Câu hỏi/Bài tập

1 Giải thích bước mơ tả khơng tạo thành thuật tốn:

(16)

Phát thuật toán

Nội dung

1 Khái niệm thuật toán Khái niệm thuật toán

Các đặc trưng thuật toán Bản chất trừu tượng thuật tốn Phát thuật tốn

3 Tính hiệu tính thuật tốn Biểu diễn thuật toán

(17)

Phát thuật toán

Phát thuật toán

Phát triển thuật tốn gồm giai đoạn: • Phát thuật tốn

• Biểu diễn thuật tốn dạng chương trình

Phương pháp phát thuật tốn?Vấn đề q trình phát triển phần mềm

Nhà tốn học G Polya, 1945, phương pháp giải toán: Bước Hiểu toán

Bước Đặt kế hoạch giải toán Bước Thực kế hoạch

(18)

Phát thuật toán

Phát thuật toán

Phát triển thuật tốn gồm giai đoạn: • Phát thuật tốn

• Biểu diễn thuật tốn dạng chương trình

Phương pháp phát thuật tốn?Vấn đề q trình phát triển phần mềm

Nhà tốn học G Polya, 1945, phương pháp giải toán: Bước Hiểu toán

Bước Đặt kế hoạch giải toán Bước Thực kế hoạch

(19)

Phát thuật toán

Phát thuật toán

Trong ngữ cảnh phát triển phần mềm, bước trở thành Bước Hiểu toán

Bước Đưa ý tưởng thuật tốn có khả giải tốn

Bước Trình bày rõ thuật tốn biểu diễn dạng chương trình

Bước Đánh giá tính chương trình khả dùng cơng cụ để giải tốn khác

Chú ý:

• Cần hạn chế q trình thử-và-sai q trình xây dựng thuật tốn

(20)

Tính hiệu tính thuật toán

Nội dung

1 Khái niệm thuật toán Khái niệm thuật toán

Các đặc trưng thuật toán Bản chất trừu tượng thuật toán Phát thuật tốn

3 Tính hiệu tính thuật tốn Biểu diễn thuật tốn

(21)

Tính hiệu tính thuật tốn

Tính hiệu thuật tốn

• Sử dụng kỹ thuật phân tích độ phức tạp thuật tốn • So sánh độ phức tạp thời gian nhớ

• Các kiểu phân tích độ phức tạp thuật tốn • Phân tích trường hợp xấu

• Phân tích trường hợp trung bình • Phân tích xác suất

(22)

Tính hiệu tính thuật tốn

Tính thuật tốn

Làm để biết thuật toán đúng?

Phương pháp kiểm thử (testing) : thử chạy thuật tốn dữ liệu mẫu

Phương pháp chứng minh tính (correctness proof) : chứng minh toán học

(23)

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

Nội dung

1 Khái niệm thuật toán Khái niệm thuật toán

Các đặc trưng thuật toán Bản chất trừu tượng thuật toán Phát thuật tốn

3 Tính hiệu tính thuật toán Biểu diễn thuật toán

(24)

Biểu diễn thuật toán Các cách biểu diễn thuật toán

Các cách biểu diễn thuật toán thường dùng

• Ngơn ngữ tự nhiên • Sơ đồ khối

• Mã giả

(25)

Biểu diễn thuật toán Các cách biểu diễn thuật toán

Dùng ngơn ngữ tự nhiên

Ví dụ:

• Thuật tốn Euclid tìm ước chung lớn hai số nguyên dương x y diễn đạt sau:

(26)

Biểu diễn thuật toán Các cách biểu diễn thuật toán

Dùng sơ đồ khối

(27)

Biểu diễn thuật toán Các cách biểu diễn thuật toán

Dùng mã giả

Mã giả (pseudo-code) hệ thống kí hiệu, thuật ngữ dùng để biểu diễn thuật toán

• Là trừu tượng hóa ngơn ngữ lập trình, khơng phụ thuộc vào ngơn ngữ lập trình cụ thể

(28)

Biểu diễn thuật toán Các cách biểu diễn thuật tốn

Dùng ngơn ngữ lập trình

(29)

Biểu diễn thuật tốn Các cấu trúc ngữ nghĩa

Gán giá trị cho đối tượng (biến)

• Diễn tả việc gắn giá trị cho đối tượng: name ← expression;

trong name tên đối tượng, expression giá trị gán cho name ⇒ vùng nhớ cấp phát cho name ghi giá trị expression • Ví dụ: hốn đổi giá trị biến a b

(30)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Gán giá trị cho đối tượng (biến)

• Diễn tả việc gắn giá trị cho đối tượng: name ← expression;

trong name tên đối tượng, expression giá trị gán cho name ⇒ vùng nhớ cấp phát cho name ghi giá trị expression • Ví dụ: hoán đổi giá trị biến a b

(31)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Cấu trúc rẽ nhánh

• Chọn khả dựa theo điều kiện if (điều kiện) then

(hành động A) else

(hành động B) end if

• Dạng thiếu cấu trúc rẽ nhánh

if (điều kiện) then

(hành động)

end if

(32)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Cấu trúc rẽ nhánh

• Chọn khả dựa theo điều kiện if (điều kiện) then

(hành động A) else

(hành động B) end if

• Dạng thiếu cấu trúc rẽ nhánh if (điều kiện) then

(hành động) end if

(33)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Cấu trúc rẽ nhánh

• Chọn khả dựa theo điều kiện if (điều kiện) then

(hành động A) else

(hành động B) end if

• Dạng thiếu cấu trúc rẽ nhánh if (điều kiện) then

(hành động) end if

(34)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Cấu trúc rẽ nhánh - Sơ đồ khối

Ki m tra i u ki n

Hành ng

úng Sai

Ki m tra

i u ki n

Hành ng A Hành ng B

úng Sai

(35)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Cấu trúc lặp với điều kiện trước while

• Thực thi lặp lặp lại lệnh hay dãy lệnh điều kiện cịn

• Mã giả:

while (điều kiện) do (hành động) end while • Sơ đồ khối:

Các cấu trúc lặp

Cấu trúc lặp while

Cú pháp : while (điều kiện) (hành động) ; Sơ đồ khối :

(36)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Cấu trúc lặp với điều kiện trước while: Ví dụ

• Ngơn ngữ tự nhiên: Trong cịn vé để bán tiếp tục bán vé • Mã giả:

while (còn vé để bán) do

(bán vé tiếp theo)

end while

(37)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Cấu trúc lặp với điều kiện trước while: Ví dụ

• Ngơn ngữ tự nhiên: Trong cịn vé để bán tiếp tục bán vé • Mã giả:

while (còn vé để bán) do (bán vé tiếp theo) end while

(38)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Cấu trúc lặp với điều kiện trước while: Ví dụ

• Ngơn ngữ tự nhiên: Trong cịn vé để bán tiếp tục bán vé • Mã giả:

while (còn vé để bán) do (bán vé tiếp theo) end while

(39)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Các thành phần cấu trúc lặp

Khởi tạo: Lập trạng thái khởi đầu, trạng thái thay đổi để hướng tới điều kiện kết thúc lặp

Kiểm tra: So sánh trạng thái với điều kiện kết thúc lặp dừng trình lặp chúng trùng

Thay đổi: Thay đổi trạng thái theo hướng dịch chuyển điều kiện kết thúc

Cần nhấn mạnh: Quá trình thay đổi trạng thái bước lặp cần hướng tới điều kiện kết thúc lặp, không dẫn tới lỗi lặp vơ hạn (vịng lặp chết) Ví dụ:

number ← 1;

(40)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Cấu trúc lặp với điều kiện sau repeat

• Thực thi lặp lặp lại lệnh hay dãy lệnh thoả mãn điều kiện

• Mã giả: repeat

(hành động) until (điều kiện); • Sơ đồ khối:

Các cấu trúc lặp Cấu trúc lặp repeat

(41)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Thủ tục hàm

• Chương trình tổ chức thành đơn vị nhỏ hơn: chương trình con, thủ tục, mô-đun, hàm, gọi chung thủ tục ⇒ Lập trình hướng thủ tục

Mã giả: Phân biệt khái niệm thủ tục (procedure) hàm (func-tion).

• Thủ tục hàm có đối khơng. • Thủ tục khơng trả lại giá trị, hàm có trả lại giá trị. • Cú pháp thủ tục:

procedure procName(procArguments)

(hành động);

end procedure

• Cú pháp hàm:

function funcName(funcArguments)

(hành động);

return funcValue; câu lệnh thường cuối hàm

(42)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Thủ tục hàm

• Chương trình tổ chức thành đơn vị nhỏ hơn: chương trình con, thủ tục, mơ-đun, hàm, gọi chung thủ tục ⇒ Lập trình hướng thủ tục

Mã giả: Phân biệt khái niệm thủ tục (procedure) hàm (func-tion).

• Thủ tục hàm có đối khơng. • Thủ tục khơng trả lại giá trị, hàm có trả lại giá trị. • Cú pháp thủ tục:

procedure procName(procArguments)

(hành động);

end procedure

• Cú pháp hàm:

function funcName(funcArguments)

(hành động);

(43)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Thủ tục: Ví dụ

• Thủ tụcGREETINGSin lời chào “Xin chào” procedureGREETINGS

count ← 3;

while (count > 0) do In “Xin chào”; count ← count −1; end while

(44)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Hàm: Ví dụ

Thuật tốn nhân hai số tự nhiên x = y ∗ z

Nguyên tắc: Chia z cho z = 0, tương ứng nhân y với 2, bước lặp, z lẻ cộng y vào x.

Do vai trị y z nhau, chọn z số nhỏ để giảm thiểu số bước lặp

Thuật toánMULTIPLYnhân hai số 18 34

No z y

0 18 34

1 68

2 136

3 272

4 544

(45)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Thuật toán nhân hai số tự nhiên: mã giả

1: functionMULTIPLY(y, z) tính x = yz

2: x ← 0;

3: while z > do 4: if (z lẻ) then

5: x ← x + y;

6: end if

7: y ← y ∗ 2; 8: z ← [z/2]; 9: end while 10: return x;

11: end function

(46)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Thuật toán nhân hai số tự nhiên: mã giả

1: functionMULTIPLY(y, z) tính x = yz

2: x ← 0;

3: while z > do 4: if (z lẻ) then

5: x ← x + y;

6: end if

7: y ← y ∗ 2; 8: z ← [z/2]; 9: end while 10: return x;

11: end function

(47)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Bài tập

1 Thuật tốn Euclid tìm ước chung lớn hai số nguyên dương X Y diễn đạt sau:

Chừng X Y khác 0, chia giá trị lớn cho giá trị nhỏ hơn thay X , Y tương ứng số chia phần dư Giá trị cuối cùng X ước chung lớn nhất.

Hãy mô tả thuật toán dạng sơ đồ khối, mã giả (dạng hàm)

2 Xây dựng thuật toán giải tốn tính số tiền thu tài khoản tiết kiệm, biết số vốn ban đầu gửi vào n, số tháng gửi t, lãi suất hàng tháng k%, tiền lãi tháng được cộng dồn vào số tiền có để tính lãi cho tháng Biểu diễn thuật toán dạng sơ đồ khối, mã giả (dạng hàm)

(48)

Biểu diễn thuật toán Các cấu trúc ngữ nghĩa

Chương trình chương trình con

procedure CHUONGTRINHCHINH

Nhap n;

NhapDuLieu(a[1 n]); In max(a[1 n]); end procedure

procedure NHAPDULIEU(a[1 n]) count ← 0;

while (count < n) do Nhap a[count+1]; count ← count +1; end while

(49)

Biểu diễn thuật toán Cấu trúc đệ quy

Giới thiệu

• Đệ quy phương án để cài đặt hành động có tính lặp lại

• Đệ quy xử lí hành động lặp lại có cấu trúc tương tự • Đệ quy phương pháp xây dựng phương pháp chia để

trị Để giải toán:

1 Chia toán cần giải thành tốn nhỏ có cấu trúc tương tự;

2 Giải toán nhỏ;

(50)

Biểu diễn thuật toán Cấu trúc đệ quy

Giới thiệu

• Đệ quy phương án để cài đặt hành động có tính lặp lại

• Đệ quy xử lí hành động lặp lại có cấu trúc tương tự • Đệ quy phương pháp xây dựng phương pháp chia để

trị Để giải toán:

1 Chia toán cần giải thành tốn nhỏ có cấu trúc tương tự; Giải toán nhỏ;

(51)

Biểu diễn thuật toán Cấu trúc đệ quy

Thuật toán săn sư tử sa mạc

1 Chia sa mạc làm nửa A B Sư tử phải nằm 2 nửa, ví dụ A

2 Lại chia tiếp nửa A làm 2, ví dụ A1và A2 Sư tử lại phải nằm

một nửa

(52)

Biểu diễn thuật toán Cấu trúc đệ quy

Thuật toán săn sư tử sa mạc

1 Chia sa mạc làm nửa A B Sư tử phải nằm 2 nửa, ví dụ A

2 Lại chia tiếp nửa A làm 2, ví dụ A1và A2 Sư tử lại phải nằm nửa

(53)

Biểu diễn thuật toán Cấu trúc đệ quy

Thuật toán săn sư tử sa mạc

1 Chia sa mạc làm nửa A B Sư tử phải nằm 2 nửa, ví dụ A

2 Lại chia tiếp nửa A làm 2, ví dụ A1và A2 Sư tử lại phải nằm nửa

(54)

Biểu diễn thuật toán Cấu trúc đệ quy

Tớnh giai tha

ã n! = n ì (n − 1)!, 0! =

• Nếu gọiFACTORIAL(n) hàm tính n! thì

FACTORIAL(n) =

(

1 nếu n = 0

n ×FACTORIAL(n − 1) nếu n > 0

Thuật tốn đệ quy tính n!, n > 0:

functionFACTORIAL(n) tính n!

if (n = 0) then return(1); else

return(n ×FACTORIAL(n − 1));

(55)

Biểu diễn thuật tốn Cấu trúc đệ quy

Tính giai thừa

ã n! = n ì (n 1)!, 0! =

• Nếu gọiFACTORIAL(n) hàm tính n! thì

FACTORIAL(n) = (

1 nếu n = 0

n ìFACTORIAL(n 1) nu n > 0 ã Thuật tốn đệ quy tính n!, n > 0:

functionFACTORIAL(n) tính n!

if (n = 0) then return(1); else

return(n ×FACTORIAL(n − 1));

(56)

Biểu diễn thuật tốn Cấu trúc đệ quy

Tính giai tha

ã n! = n ì (n 1)!, 0! =

• Nếu gọiFACTORIAL(n) hàm tính n! thì

FACTORIAL(n) = (

1 nếu n = 0

n ×FACTORIAL(n − 1) nếu n > 0Thuật tốn đệ quy tính n!, n > 0:

functionFACTORIAL(n) tính n!

if (n = 0) then return(1); else

return(n ×FACTORIAL(n − 1)); end if

(57)

Biểu diễn thuật toán Cấu trúc đệ quy

Thuật toán đệ quy: điều kiện kết thúc

(58)

Biểu diễn thuật toán Cấu trúc đệ quy

Bài tập nhà

1 Số Fibonacci thứ n định nghĩa sau

F (n) =   

 

0, nếu n = 0;

1, nếu n = 1;

(59)

Biểu diễn thuật toán Cấu trúc đệ quy

Bài tập

2 Thuật tốn sau tính tích số ngun khơng âm y z cách tính tổng tích lũy y lần z Thuật tốn có khơng?

x ← z; count ← 1;

while (count < y) do x ← x + z;

count ← count +1; end while

(60)

Phụ lục Tài liệu tham khảo

Tài liệu tham khảo chính

J Glenn Brookshear

Computer Science An Overview, Chapter 5

Pearson, Addison Wesley, Edition 8, 2005 I Parberry and W Gasarch

Problems on Algorithms

Prentice Hall, Inc., 1998 R Sedgewick

Algorithms

Addition Wesley, 1984 A R Mayer

Mathematics for Computer Science

Ngày đăng: 20/04/2021, 02:04

Xem thêm:

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w