1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Kỹ thuật lập trình: Các phương pháp giải quyết bài toán trên máy tính - Trịnh Tấn Đạt

22 74 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

Định dạng
Số trang 22
Dung lượng 664,36 KB

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

Nội dung

Bài giảng Kỹ thuật lập trình: Các phương pháp giải quyết bài toán trên máy tính cung cấp cho người học các kiến thức: Phương pháp trực tiếp, phương pháp gián tiếp hoặc tìm kiếm lời giải. Mời các bạn cùng tham khảo.

Trang 1

Các phương pháp giải quyết

bài toán trên máy tính

Trịnh Tấn Đạt

Khoa CNTT - Đại Học Sài Gòn

Email: trinhtandat@sgu.edu.vn

Website: https://sites.google.com/site/ttdat88/

Trang 2

Nội dung

▪ Phương pháp trực tiếp

▪ Phương pháp gián tiếp hoặc tìm kiếm lời giải

Trang 4

Phương pháp trực tiếp

Ví dụ: Lọai thứ nhất - đã có lời giải chính xác bằng một công thức toán học nào đó

▪ Tính tổng n số nguyên đầu tiên

▪ Tinh tổng sau:

▪ Tính tổng hai ma trận vuông:

2

) 1

(

3 2

= +

+ +

2

) 1 2

(

5 3

1 + + + + n − = n

n j

i b

a

cij = ij + ij; 0  , 

Trang 7

Chuyển đổi dữ liệu bài toán thành dữ

liệu chương trình

▪ Nguyên lý 1: Dữ liệu của bài toán sẽ được biểu diễn lại dưới dạng các biến của

chương trình thông qua các quy tắc xác định của ngôn ngữ lập trình cụ thể

1 Biến - phương tiện biểu diễn dữ liệu của chương trình

2 Thay đổi giá trị của biến - lệnh gán

3 Kiểu dữ liệu

4 Hằng số

5 Cấu trúc chương trình

Trang 8

Chuyển đổi dữ liệu bài toán thành dữ

liệu chương trình

▪ Nguyên lý 2 (Định lý Bohn- Jacopini, a.k.a the structured program theorem): Mọi

quá trình tính toán đều có thể mô tả và thực hiện dựa trên ba cấu trúc cơ bản: tuần tự,

Trang 9

Phân chia bài toán ban đầu thành những bài toán nhỏ hơn

▪ Nguyên lý 3: Mọi bài toán lớn đều có thể giải quyết bằng cách phân chia thành

những bài toán nhỏ hơn

1 Thủ tục và hàm - phương pháp phân chia chương trình thành những chương trìnhcon

2 Biến cục bộ và biến toàn cục (thời gian tồn tại và phạm vi)

3 Tham số - dữ liệu đầu vào/đầu ra của hàm

Trang 10

Biểu diễn tính toán không tường minh

Trang 11

Phương pháp gián tiếp

▪ Được sử dụng khi chưa tìm ra lời giải chính xác của vấn đề

▪ Đây là cách tiếp cận chủ yếu của loài người từ xưa đến nay

▪ Lời giải trực tiếp bao giờ cũng tốt hơn, nhưng không phải lúc nào cũng có

Trang 12

Phân lọai phương pháp gián tiếp

1 Phương pháp thử-sai (Trial and Error):

▪ Tuần tự thử triển khai các giả thuyết, loại bỏ dần các giả thuyết không đúng cho đến khi xác định được giải pháp tốt nhất

▪ Là cơ chế của sự tiến hóa và phát triển cả trong tự nhiên và xã hội loài người cho đến nay.

▪ Phương pháp này thường mất nhiều thời gian, tốn kém và không thúc đẩy phát huy tư duy đột phá.

2 Phương pháp Heuristic (Heuristic - ước lượng về khả năng dẫn đến lời giải):

▪ Thường tìm được lời giải tốt (nhưng không chắc là lời giải tốt nhất)

▪ Thường dễ dàng và nhanh chóng đưa ra kết quả hơn so với giải thuật tối ưu, vì vậy chi phí

thấp hơn.

▪ Thường thể hiện khá tự nhiên, gần gũi với cách suy nghĩ và hành động của con người.

3 Phương pháp trí tuệ nhân tạo (Artificial Intelligence):

▪ Gồm các cơ sở lý thuyết và việc lập trình xây dựng của các hệ thống máy tính có thể thực

hiện các nhiệm vụ thường đòi hỏi trí thông minh của con người.

▪ Suy nghĩ giống người, hành động giống người, suy nghĩ hợp lý, hành động hợp lý.

Trang 13

Phương pháp thử-sai

▪ Cách tìm một cây kim trong một đống rơm: “trong khi chưa nghĩ ra được một cáchthật hay thì cứ việc rút từng cọng rơm cho đến khi rút được cây kim”

▪ Phương pháp này dựa trên 3 nguyên lý:

1 Nguyên lý vét cạn (brute-force, duyệt toàn bộ): liệt kê tất cả các trường hợp xảy

ra và xem xét chúng

Ví dụ: Liệt kê tất cả số nguyên tố từ m đến n

2 Nguyên lý ngẫu nhiên: dựa trên việc thử một số khả năng được chọn một cách

ngẫu nhiên trong tập khả năng (thường rất lớn, nếu áp dụng nguyên lý toàn bộ sẽ tốnnhiều thời gian) Khả năng tìm lời giải đúng (hoặc gần đúng) sẽ phụ thuộc vào chiếnlược chọn ngẫu nhiên và một số điều kiện cụ thể

▪ Nguyên lý được phát triên thành phương pháp Monté-Carlos Càng ngày nguyên lýngẫu nhiên càng phát triển mạnh mẽ, trong số đó có một phương pháp nổi bật làphương pháp Genetic

Ví dụ: kiểm tra chất lượng trong quá trình sản xuất của một đoàn kiểm tra Một lôhàng có 1000 thùng, chọn ngẫu nhiên 10 thùng, mỗi thùng có 24 sản phẩm, chọnngẫu nhiên 5 sản phẩm,

Trang 14

Phương pháp thử-sai

3 Nguyên lý mê cung: nguyên lý này được áp dụng khi chúng ta không biết chính

xác "hình dạng" của lời giải, mà phải xây dựng lời giải dần qua từng bước, giống nhưtìm được ra khỏi mê cung

Trang 15

Phương pháp thử-sai

Để thực hiện tốt phương pháp thử - sai, chúng ta nên áp dụng các nguyên lý sau:

1 Nguyên lý vét cạn (duyệt toàn bộ): muốn tìm cây kim trong đống rơm, hãy lần

lượt rút từng cọng rơm đến khi rút được cây kim

Thuật giải: gọi D là không gian bài toán (tập tất cả khả năng xảy ra),

D ={(x1,x2, ,xn)/xi∈ Di với Di là tập hữu hạn có mi phần tử}

gọi f : D{true, false} là quy tắc xác định lời giải.

Ví dụ: tìm tội phạm trong một đám đông

tìm cặp điểm gần nhau nhất trên mặt phẳng

Trang 16

Tìm nghiệm phương trình trong một đoạn.

3 Nguyên lý mê cung: Muốn thóat khỏi mê cung thì phải biết quay lui và biết đánh

dấu những nơi đã đi qua

Ví dụ:

Tìm đường đi ngắn nhất

Trang 17

Phương pháp thử-sai

4 Nguyên lý chung về giảm độ phức tạp của thử-sai: thu hẹp tập trường hợp trước

và trong khi duyệt, đồng thời đơn giản hóa tối đa điều kiện chấp nhận một trườnghợp

Quy tắc:

o Đơn giản điều kiện: tránh tính lại trong vòng lặp và thừa kế kết quả tính toán củabước trước: phương pháp qui hoạch động

o Kỹ thuật cầm canh: mã đi tuần,

Ví dụ: tìm số âm đầu tiên trong mảng: điều kiện while(x[i]>0&&i<=n) do ;

cách khác x[n+1]=-1; while(x[i]>0) do

5 Nguyên lý thu gọn không gian tìm kiếm: loại bỏ những trường hợp hoặc nhóm

trường hợp chắc chắn không dẫn đến lời giải

Trang 18

Phương pháp thử-sai

▪ Qui tắc rút gọn:

o Dựa trên đánh giá toàn cục: tìm điều kiện để rút gọn tập khả năng đề cử trongmột bước xây dựng một thành phần

Ví dụ: tìm tổ hợp chặp n của k ; tìm kiếm nhị phân

o Dựa trên đánh giá cục bộ: xây dựng phép kiểm tra đơn giản để nhanh chóngloại bỏ được các khả năng cho thành phần x[i] mà không phải xây dựng toàn

bộ n-i thành phần còn lại của lời giải

Ví dụ: cho sáu số tự nhiên A={1,7,2,9,3,5}.Tìm dãy con của A sao cho tổng cácphần tử trong dãy con bằng 8

6 Quay lui dựa trên vét cạn/ nhánh cận

Trang 19

Phương pháp Heuristic

▪ Trong nhiều bài toán dùng phương pháp thử - sai sẽ dẫn đến số lượng thử quá lớn

 không chấp nhận được

▪ Heuristic chính là ước lượng về khả năng dẫn đến lời giải của một trạng thái:

phương pháp vét cạn nhưng có thêm tri thức đi kèm, tối ưu cục bộ, nguyên lýhướng đích, nguyên lý sắp thứ tự,

▪ Để áp dụng tốt phương pháp heuristic, chúng ta nên áp dụng các nguyên lý sau:

o Nguyên lý leo núi: muốn leo lên đỉnh núi thì bước sau phải “cao hơn” bước

Trang 20

Tìm kiếm theo chiều sâu và chiều rộng

▪ Tìm kiếm theo chiều sâu: Là thử-sai theo nguyên lý mê cung hay chính là thử -sai

kết hợp lần ngược

▪ Ngược với tìm kiếm theo chiều sâu, tìm kiếm theo chiều rộng mang hình ảnh của

vết dầu loang

Phân đoạn ảnh

Trang 21

Phương pháp trí tuệ nhân tạo

▪ "Dạy" máy tính để có "trí thông minh" như con người bắt chước khả năng "suyluận" của con người

▪ Một số phương pháp chuyển giao tri thức

o Biểu diễn tri thức

Trang 22

Machine learning applications

Image Recognition Sentiment Analysis News Classification

Ngày đăng: 15/05/2020, 22:56

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