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

Bài giảng Thuật toán và tư duy thuật toán

46 28 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

Thông tin cơ bản

Tiêu đề Bài giảng Thuật toán và tư duy thuật toán
Tác giả Hồ Cẩm Hà
Người hướng dẫn ĐHSPHN
Trường học Đại học sư phạm Hà Nội
Chuyên ngành Thuật toán
Thể loại Bài giảng
Định dạng
Số trang 46
Dung lượng 596,5 KB

Nội dung

Bài giảng Thuật toán và tư duy thuật toán với mục tiêu củng cố khái niệm và những đặc trưng cơ bản về thuật toán; củng cố và phân tích thêm về thiết kế thuật toán; nâng cao hiệu quả giảng dạy thuật toán và cài đặt thuật toán ở PT.

Trang 1

RÈN LUYỆN TƯ DUY VÀ KHẢ NĂNG CÀI ĐẶT

THUẬT TOÁN Ở TRƯỜNG PT

Trang 3

1 THUẬT TOÁN

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

• Máy tính và thuật toán

• Đánh giá thuật toán

Trang 4

1.1 KHÁI NIỆM THUẬT TOÁN (1)

• Không đề cập đến khái niệm hình thức chính xác của thuật

toán (định nghĩa thông qua mô hình máy Turing)

Xem xét một số định nghĩa (không hình thức) ít nhiều khác

nhau

• Bản chất mô tả một cách thức mà một nhiệm vụ hay một tiến

trình được thực hiện như thế nào của thuật toán.

Trang 5

1.1 KHÁI NIỆM THUẬT TOÁN (2)

Định nghĩa 1(K.Rosen):

Một thuật toán là một thủ tục xác định để giải một bài toán (vấn đề), sử dụng một số hữu hạn bước Mỗi bước có thể gồm một hoặc một số thao tác/phép toán

Trang 6

1.1 KHÁI NIỆM THUẬT TOÁN (3)

Định nghĩa 2.(G Brookshear) Một thuật toán là một tập hợp có thứ tự các bứớc không nhập nhằng, thực hiện được, xác định một tiến trình có kết thúc,

(tức việc thực hiện thuật toán phải dẫn tới một kết thúc)

Trang 7

1.1 KHÁI NIỆM THUẬT TOÁN (4)

Định nghĩa 3.(A V Aho, J.E Hopcroft, J D Ullman) Thuật toán là một dãy hữu hạn các câu lệnh, mỗi câu lệnh đều

có một ý nghĩa rõ ràng và có thể được thực hiện với một lượng công sức hữu hạn trong một thời gian hữu hạn

Trang 8

1.1 KHÁI NIỆM THUẬT TOÁN (5)

Định nghĩa 4 (C A Shaffer)

Một thuật toán là một bảng chỉ dẫn để giải một bài toán, trong đó

các bước là cụ thể và không nhập nhằng Thuật toán phải đúng đắn theo nghĩa nó phải tính đúng hàm mong muốn , chuyển đổi mỗi đầu vào (dữ liệu vào) thành đầu ra (dữ liệu ra) đúng, có độ dài hữu hạn và phải kết thúc với mọi dữ liệu vào hợp lệ.

Trang 9

1.1 KHÁI NIỆM THUẬT TOÁN (6)

Các tính chất:

 Đầu vào (dữ liệu vào)

có các giá trị đầu vào được lấy từ một tập xác định

Đầu ra (kết quả ra)

Từ một tập các giá trị đầu vào, thuật toán sản sinh ra các giá trị đầu ra thuộc một tập xác định Các giá trị đầu ra chứa lời giải của bài toán

Tính xác định

Các bước trong một thuật toán phải được định nghĩa chính

Trang 10

1.1 KHÁI NIỆM THUẬT TOÁN (7)

Trang 11

1.1 KHÁI NIỆM THUẬT TOÁN (8)

Không chỉ có trong tin học, có nhiều thuật toán mô tả nhiều loại tiến trình của đời sống hàng ngày như đan áo len, làm một loại bánh, chơi một bản nhạc, pha một tách cà phê,

Nói chung, một tác nhân thực hiện một tiến trình được gọi là một

bộ xử lý Một bộ xử lý có thể là một người, một máy tính hay một

thiết bị cơ hoặc điện nào đó

Trang 12

1.2 Máy tính và thuật toán (1)

MT là một bộ xử lý đặc biệt với các đặc trưng về

• Tính tin cậy

Trang 13

1.2 Máy tính và thuật toán (2)

Để bộ xử lý có thể thực thi một tiến trình:

 Nó phải đ ược cung cấp một thuật toán thích hợp

 Nó phải có khả năng lý giải (cũng gọi là thông dịch) thuật toán, tức phải có khả năng :

– hiểu đ ược ý nghĩa mỗi bước của thuật toán ;

– thực hiện đ ược thao tác ( phép toán) t ương ứng.

Trang 14

1.2 Máy tính và thuật toán (3)

Trư ờng hợp bộ xử lý là một máy tính thì thuật toán phải đư ợc biểu thị

d ưới dạng một chư ơng trình

Để thực thi một tiến trình trên một máy tính, cần phải :

 Thiết kế một thuật toán (đư a ra một mô tả tiến trình phải đ ược thực hiện như thế nào);

 Biểu thị thuật toán thành một chư ơng trình trong một ngôn ngữ lập trình thích hợp (cài đặt);

 Cho máy tính thực hiện chư ơng trình (chạy chư ơng trình)

Trang 15

1.2 Máy tính và thuật toán (4)

Vai trò của thuật toán là cơ bản Không có thuật toán không có

chư ơng trình  không có gì để thực hiện

Các thuật toán còn là cơ bản: độc lập với ngôn ngữ đư ợc dùng để biểu thị thuật toán; độc lập với các máy tính thực hiện chúng

 Các thuật toán có thể đ ược thiết kế và nghiên cứu độc lập với công

nghệ hiện hành: các kết quả vẫn giữ nguyên giá trị bất kể sự ra

đời của các máy tính và các ngôn ngữ lập trình mới

Trang 16

1.3 Đánh giá thuật toán

Xem tài liệu

Trang 17

Thế nào là không nhập nhằng?

 Thông tin về trạng thái của tiến trình phải đủ để xác định duy

nhất và đầy đủ các hành động được đòi hỏi ở mỗi bước

 Thực hiện mỗi bước không đòi hỏi kỹ năng sáng tạo mà chỉ

cần có khả năng làm theo các mệnh lệnh

THẢO LUẬN THÊM

Trang 18

2 THIẾT KẾ THUẬT TOÁN (1)

 Các cấu trúc điều khiển

 Tinh chế thuật toán từng bước một

 Tính đơn thể.

 Các chiến lược thiết kế thuật toán

Trang 19

2 THIẾT KẾ THUẬT TOÁN (2)

Việc thiết kế một thuật toán là một công việc trí óc khó

khăn, đòi hỏi phải có sáng tạo, sự am hiểu lĩnh vực

ứng dụng và không thể đư a ra một tập các quy tắc chung

Không có thuật toán nào cho việc thiết kế thuật toán.

Trang 20

2.1 Các cấu trúc điều khiển

Cấu trúc tuần tự

Thông th ường các bước của một thuật toán đ ược thực hiện theo đúng trình tự viết của chúng:

 Các bước đư ợc thực hiện từng bước một ;

 Mỗi bước đư ợc thực hiện đúng một lần ;

 Thứ tự các bứớc đ ược thực hiện chính là thứ tự chúng đư ợc viết trong thuật toán ;

Trang 21

2.1 Các cấu trúc điều khiển

Cấu trúc tuần tự (2)

Dễ thấy là, nếu một thuật toán chỉ là một dãy các bước thì sẽ không mềm dẻo chút nào vì cách thực hiện của nó là cố định và không thể đư

ợc thay đổi theo các tình huống khác nhau

Ví dụ: Thuật toán “pha một cốc cafe tan” để một robot phục vụ:- - -

Đun n ước sôi

-Cho cafe vào cốc

-Cho nư ớc sôi vào cốc

Nếu xảy ra một số tình huống

Trang 22

2.1 Các cấu trúc điều khiển

Trang 23

2.1 Các cấu trúc điều khiển

Trang 24

2.1 Các cấu trúc điều khiển

Cấu trúc lặp

Các cấu trúc tuần tự và tuyển chọn là ch ưa đủ để diễn đạt các

thuật toán có độ dài thay đổi tuỳ theo các tr ường hợp Cái ta cần

là một cách thức lặp lại một số bư ớc trong thuật toán một số lần tuỳ ý

Ví dụ:?

Trang 25

2.1 Các cấu trúc điều khiển

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

Lặp….khi (while Do)

Lặp đến khi (repeat …until)

Sức mạnh của phép lặp là nó cho phép một tiến trình có thời gian không xác định đ ược mô tả bởi một thuật toán có độ dài hữu hạn.

một trong những lỗi thư ờng gặp khi thiết kế thuật toán là xác định không đúng điều kiện kết thúc của một vòng lặp

Trang 26

2.2 TINH CHẾ THUẬT TOÁN (1)

Tinh chế từng bước (hay thiết kế trên-xuống) là cách

tiếp cận cho việc thiết kế thuật toán , thường được sử

dụng rộng rãi và cho kết quả tốt.

Trang 27

2.2 TINH CHẾ THUẬT TOÁN (2)

Ý t ưởng là chia tiến trình phải thực hiện thành một số b ước, mỗi bư ớc có thể được mô tả bởi một thuật toán nhỏ và đơn giản hơn so với thuật toán cho toàn

bộ tiến trình.

Vì mỗi thuật toán nhỏ là đơn giản hơn , ng ười thiết kế th ường có một ý t ưởng sáng rõ hơn về cách thức xây dựng nó và có thể phác thảo nó chi tiết hơn là nếu làm ngay với toàn bộ thuật toán

Tới lư ợt mình, các thuật toán nhỏ lại đư ợc chia thành những phần nhỏ hơn mà với tính đơn giản hơn nữa của chúng, có thể đ ược biểu diễn chi tiết hơn và

chính xác hơn

Tinh chế thuật toán đ ược tiếp tục theo cách đó cho tới khi mỗi một bư ớc của nó

đã đủ chi tiết và chính xác để bộ xử lý có thể thực hiện đư ợc.

Trang 28

2.2 TINH CHẾ THUẬT TOÁN (3)

Ví dụ minh họa

?

Trang 29

2.3 TÍNH ĐƠN THỂ (1)

Trong quá trình thiết kế một thuật toán theo cách tinh chế dần từng b ước, thư ờng thì các thành phần nhỏ hơn thu đư

ợc có thể hoàn toàn độc lập với thuật toán chính theo

nghĩa chúng có thể đ ược thiết kế mà không cần xét tới ngữ cảnh trong đó chúng đ ược sử dụng.

Trang 30

2.3 TÍNH ĐƠN THỂ (2)

Một thành phần như vậy có thể:

 đ ược thiết kế bởi một ngư ời nào đó khác

 có thể được dùng xem nh ư một thành phần của một

thuật toán hoàn toàn khác

Thành phần đ ược “cấy vào”(cắm phích) một khi đã được thiết kế , có thể đư ợc tham gia vào bất kỳ thuật toán nào

Trang 31

2.3 TÍNH ĐƠN THỂ (ví dụ)

Robot có thể giải thích (thông dịch) và thực hiện các lệnh

có dạng :

dịch chuyển (x) Đi thẳng x cm

Trái (x) quay x độ về bên trái

Phải (x) quay x độ về bên phải

Nhấc bút lên nhấc bút lên khỏi mặt giấy

hạ bút xuống đặt bút xuống mặt giấy

Trang 32

2.3 TÍNH ĐƠN THỂ (ví dụ)

Giả sử ta muốn robot vẽ hai hình vuông đồng tâm như

được chỉ ra trong hình sau

Hai hình vuông đồng tâm mà robot phải vẽ khi thoạt đầu

Trang 33

2.3 TÍNH ĐƠN THỂ (ví dụ)

Giả sử robot lúc đó mặt nhìn vào tờ giấy và bút đang được nhấc lên

Phiên bản đầu tiên của thuật toán: (1)

Dịch chuyển tới điểm A

Vẽ một hình vuông có cạnh 10cm

Dịch chuyển tới điểm B

Vẽ một hình vuông có cạnh 20cm

Trang 34

2.3 TÍNH ĐƠN THỂ (ví dụ)

Bước 2 và bước 4 của thuật toán trên bao gồm việc vẽ một hình vuông, là một quá trình tự đầy đủ, hoàn toàn độc lập với phần còn lại của thuật toán

 Một môđun là một thuật toán tự đầy đủ và có thể được thiết kế độc lập với ngữ cảnh trong đó nó được sử dụng

 Một thuật toán sử dụng một môđun được nói là gọi tới

môđun (Chẳng hạn thuật toán trên gọi tới thủ tục vẽ

Trang 36

2.3 TÍNH ĐƠN THỂ (ví dụ)

Tổng quát, một môđun có dạng sau

module têncủamôđun (các tham số hình thức)

{ đặc tả tiến trình đưưîc môđun mô tả }

thân của môđun .

Trang 38

2.3 TÍNH ĐƠN THỂ

 tham số hình thức đ ược xem nh ư biểu diễn thông tin

cần cho môđun khi nó đ ược gọi tới

tham số thực sự là các mảnh thông tin đ ược cung cấp

cho một lần gọi cụ thể và chúng sẽ thế chỗ của các

tham số hình thức khi môđun đ ược thực hiện.

Trang 40

2.3 TÍNH ĐƠN THỂ (ví dụ)

Người thiết kế thuật toán chính không cần biết môđun làm việc như thế nào , mà chỉ cần biết kết quả của việc thực hiện nó (chỉ cần đọc đặc tả ở đầu của môđun)

Điều đó làm giảm độ phức tạp của quá trình thiết kế 

có thiết kế tin cậy hơn

Đặc tả của một thuật toán mô tả thuật toán làm gì mà không đi

Trang 41

2.3 TÍNH ĐƠN THỂ (ví dụ)

Xét một cách tiếp cận khác cho môđun vẽhìnhvuông :

Thiết kế một môđun vẽ hình đa giác đều và sau đó gọi nó với các tham số thực sự thích hợp mỗi khi cần vẽ một hình vuông

Trang 42

trái ( 360/N )

end

Trang 43

2.3 TÍNH ĐƠN THỂ

Các môđun phù hợp một cách tự nhiên với cách

tinh chế thuật toán cho một thiết kế trên-xuống.

 Một môđun là một thành phần tự đầy đủ của một

thuật toán lớn hơn bất kỳ gọi tới nó Việc thiết kế

môđun và thuật toán gọi tới nó có thể được thực hiện

riêng biệt khiến quá trình thiết kế đơn giản và tin

cậy hơn ( ít lỗi, ít sai sót hơn)

Trang 44

2.3 TÍNH ĐƠN THỂ

 Để sáp nhập (cấy) một mô đun vào một thuật toán,

chỉ cần biết thuật toán làm gì mà không cần biết nó

làm như thế nào.

 Dùng môđun làm đơn giản việc thiết kế thuật toán,

nên việc hiểu thuật toán cũng dễ dàng hơn Do đó, trong trường hợp cần phải sửa đổi thuật toán thì công

Trang 45

2.3 TÍNH ĐƠN THỂ

 Một khi một môđun đã được thiết kế, nó có thể được

“cấy” vào một thuật toán cần tới nó  có thể xây

dựng một thư viện các môđun, phục vụ cho những

ứng dụng thuộc một chủ đề nào đó

Trang 46

HỆ THỐNG THÔNG TIN

Ngày đăng: 14/05/2021, 20:12

TỪ KHÓA LIÊN QUAN