Tài liệu CÁC PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN TRÊN MÁY TÍNH pdf

10 787 1
Tài liệu CÁC PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN TRÊN MÁY TÍNH pdf

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

Thông tin tài liệu

03/04/2008 1 CÁC PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN TRÊN MÁY TÍNH Phạm Thế Bảo Khoa Toán – Tin học Trường Đại học Khoa học Tự nhiên Tp.HCM Phân lọai 1 Ph há iế 1 . Ph ương p há ptrựct iế p 2. Phương pháp gián tiếphoặc tìm kiếmlờigiải Phạm Thế Bảo 03/04/2008 2 Phương pháp trựctiếp • Xác định trựctiếp đượclờigiải qua mộtthủ tục tính toán (công thức, hệ thức, định luật, …) hoặc qua các bướccăn bản để có đượclờigiải. Việ iải ết ấ đề tê á tí h hỉ là th tá lậ tì h • Việ cg iải quy ết v ấ n đề t r ê nm á y tí n h c hỉ là th ao tá c lậ p t r ì n h hay là sự chuyển đổilờigiảitừ ngôn ngữ tự nhiên sang ngôn ngữ máy tính Æ kỹ thuậtlập trình trên máy tính. • Có ba loạicơ bản: o Lọai thứ nhất, dùng để biểudiễn cho các bài toán đãcólờigiải chính xác bằng một công thứctoánhọcnàođó. ví dụ: tính tổngnsố nguyên dương. ể ễ ầ (1) 1 2 2 nn n + ++ + = o Loạith ứ hai, b i ể udi ễ n cho các b ài toán có công thứcgiảig ầ n đúng (công thức tính sin, cos, giảiphương trình siêu việt, …). ví dụ:giảiphương trình bậc2 o Loạicuối cùng, biểudiễn các lờigiải không tường minh bằng kỹ thuật đệ quy. Phạm Thế Bảo Chuyển đổidữ liệu bài toán thành dữ liệuchương trình Nguyên lý 1: Dữ liệucủabàitoánsẽđượcbiểudiễnlạidướidạng các biếncủachương trình thông qua các quy tắcxácđịnh của ể ngôn ngữ lập trình cụ th ể 1. Biến-phương tiệnbiểidiễndữ liệucủachương trình 2. Thay đổi giá trị củabiến-lệnh gán 3. Kiểudữ liệu 4. Hằng số 5 Cấu trúc một chương trình 5 . Cấu trúc một chương trình Phạm Thế Bảo 03/04/2008 3 Chuyển đổi quá trình tính toán của bài toán thành các cấutrúccủachương trình • Nguyên lý 2 (Định lý Bohn-Jacopini): Mọi quá trình tính toá n đềucóthể mô tả và thựchiệndựatrên b acấutrúcc ơ bản: tuầntự,rẽ nhánh và lặp. 1. Cấutrúctuầntự 2. Cấutrúcrẽ nhánh 1. Rẽ nhánh có điềukiện: if (condition) • rẽ nhánh đơn: if () • rẽ nhánh đôi: if () else 2. Rẽ nhiều nhánh : case 2. Rẽ nhiều nhánh : case 3. Rẽ nhánh không có điềukiện: LABEL và GOTO 3. Cấutrúclặp: 1. Lặpxácđịnh 2. Lặp không xác định Phạm Thế Bảo 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ọibàitoánlớn đềucóthể giải quyếtbằng cách phân chia thành những bài toán nhỏ hơn cách phân chia thành những bài toán nhỏ hơn 1. Thủ tụcvàhàm-phương pháp phân chia chương trình thành những chương trình con. 2. Biếncụcbộ và biếntoàncục 3. Tham số -dữ liệu đầuvào/đầuracủahàm Phạm Thế Bảo 03/04/2008 4 Biểudiễn tính toán không tường minh bằng đệ quy • Nguyên lý 4: quá trình đệ quy trong máy tính không đơngiản như các biểu thức quy nạp trong toán học như các biểu thức quy nạp trong toán học • Xem phầntrước. Phạm Thế Bảo Phương pháp gián tiếp • Đượcsử dụng khi chưatìmralờigiải chính á ủ ấ đề x á cc ủ av ấ n đề . • Đây là cách tiếpcậnchủ yếucủaloàingười từ xưa đếnnay. • Lờigiảitrựctiếpbaogiờ cũng tốthơn, nhưng không phải lúc nào cũng có không phải lúc nào cũng có Phạm Thế Bảo 03/04/2008 5 Phân lọai phương pháp gián tiếp 1. Phương pháp thử -sai ố 1. Thử -saihệ th ố ng 2. Thử - sai phân lớp 3. Thử -saingẫu nhiên 2. Phương pháp Heuristic 3 Phương pháp trí tuệ nhân tạo 3 . Phương pháp trí tuệ nhân tạo Phạm Thế Bảo Phương pháp thử -sai Thomas Edison – phát biểu cách tìm một cây kim trong một đống rơm: “trong khi chưa nghĩ ra đượcmột cách thậthay thì cứ việc rút từng cọng rơmchođến khi rút đượccây kim”. Phương pháp này dự trên 3 nguyên lý: 1. Nguyên lý vét cạn(duyệttoànbộ): liệtkêtấtcả các trường hợp xảy ra và xem xét chúng. Ví dụ:liệtkêtấtcả số nguyên tố từ m đếnn. 2. Nguyên lý ngẫu nhiên: dựatrênviệcthử mộtsố khả năng được chọnmột cách ngẫu nhiên trong tậpkhả năng (thường rấtlớn, nếuápdụng nguyên lý toàn bộ sẽ tốnnhiềuthờigian).Khả năng tìm lời giải đúng ( hoặc gần đúng ) sẽ phụ thuộc vào chiến năng tìm lời giải đúng ( hoặc gần đúng ) sẽ phụ thuộc vào chiến lượcchọnngẫu nhiên và mộtsốđiềukiệncụ thể. Ví dụ:kiểmtrachấtlượng trong quá trình sảnxuấtcủamột đoàn kiểmtra. Một lô hàng có 1000 thùng, chọnngẫu nhiên 10 thùng, mỗi thùng có 24 sảnphNm, chọnngẫu nhiên 5 sảnphNm, Phạm Thế Bảo 03/04/2008 6 N guyê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ểnmạnh mẽ, trong sốđócómộtphương pháp nổibậtlàphươn gpháp Genetic . 3. N guyên lý mê cung: nguyên lý này đượcápdụng khi chúng ta khô biết hí h á " hì h d " ủ lời iải à hải â khô ng biết c hí n h x á c " hì n h d ạng " c ủ a lời g iải ,m à p hải x â y dựng lờigiảidần qua từng bước, giống như tìm đượcrakhỏi mê cung. Phạm Thế Bảo Thử sai - hệ thống 1. N guyên lý vét cạntoànbộ:muốn tìm cây kim trong đống rơm, hãy lầnlượt rút từng cọng rơm đến khi rút đượccây kim. Thuậtgiải: gọi D là không gian bài toán (tậptấtcả khả năng xảyra),D={(x 1 ,x 2 , ,x n )/x i ∈D i vớiD i là tậphữuhạncóm i phầntử}. gọi f: D {true, false} là quy tắcxácđịnh lờigiải. Ví dụ:một đàn gà và mộtbầy chó có tổng cộng N chân, đàn gà đông hơn bầy chó M con Hỏi có bao nhiêu gà và chó ? gà đông hơn bầy chó M con . Hỏi có bao nhiêu gà và chó ? Phạm Thế Bảo 03/04/2008 7 2. N guyên lý mắtlưới: lướibắtcáchỉ bắt đượcnhững con cá có kích thướclớnhơnkíchthướcmắtlưới. Ví dụ: Tìm nghiệmphương trình trong một đoạn Khử nhiễu trong ảnh 3. N guyên lý mê cung: Muốn thóat khỏimêcungthìphảibiết quay lui và biết đánh dấunhững nơi đã đi qua. Ví dụ: Tìm đường đingắnnhất Phạm Thế Bảo Thử - sai phân lớp 1. N guyên lý chung về giảm độ phứctạpcủathử - sai: thu hẹp tập trường hợp trước và trong khi duyệt , đồng thời đơn giản 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ềukiệnchấpnhậnmộttrường hợp. 2. Quy tắc: 1. đơngiản điềukiện: tránh tính lại trong vòng lặpvàthừakế kếtquả tính toán củabướctrước: tổ hợpchỉnh hợp, heap sort, 2. Kỹ thuậtcầm canh: mã đituần, • số âm đầutiêntrongmảng: điềukiện while(x[i]>0&&i<=n) do có bao nhiêu so áh ? iế l i [ 1 ] 1 hil ( [ i ] 0 ) d s á n h ? v iết l ạ i : a [ n+ 1 ] =- 1 ;w hil e ( x [ i ] > 0 ) d o 3. N guyên lý thu gọn không gian tìm kiếm: loạibỏ những trường hợphoặc nhóm trường hợpchắcchắn không dẫn đến lờigiải. Phạm Thế Bảo 03/04/2008 8 • Quy tắc rút gọn: 1. Dựatrênđánh giá toàn cục: tìm điềukiện để rút gọntậpkhả năng đề cử trong mộtbướcxâydựng một thành phần. Ví dụ: tìm tổ hợpchặpncủak. 2. Dựatrênđánh giá cụcbộ:xâydựng phép kiểmtrađơngiản để nhanh chóng loại bỏ được các khả năng cho thành phần x[ i ] mà không phải chóng loạ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ầncònlạicủalờigiải. Ví dụ:chosáusố tự nhiên A={1,7,2,9,3,5}. Tìm dãy con củaAsao cho tổng các phầntử trong dãy con bằng 8. 4. N guyên lý đánh giá nhánh cận: nhánh có chứaquả phảinặng hơntrọng lượng củaquả. Ví dụ: bài toán ngườidulịch. 5. Quay lui không dùng đệ quy 6. Phương pháp sinh lờigiải Phạm Thế Bảo 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 sẽ dẫn đến số lượng thử quá lớn không chấp nhận được. • Heuristic chính là ướclượng về khả năng dẫn đến lờigiảicủamộttrạng thái: phương pháp vét cạn nhưng có thêm tri thức đikèm,tối ưucụcbộ, nguyên lý hướng đích, nguyên lý sắpthứ tự, – ví dụ : ví dụ : Mộtembébị lạc đường về nhà, em nhớ nhà mình cao nhất trong khu vực, em sẽ tìm đến tòa nhà cao nhất trong vùng em thấy, rồilạitiếptục , Giảiphương trình bậc2,đoán nghiệmtheoVi-ét Phạm Thế Bảo 03/04/2008 9 Tìm kiếm theo chiều sâu và chiềurộng • Là thử - sai theo nguyên lý mê cung hay hí h là thử i kết h lầ c hí n h là thử -sa i kết h ợp lầ nngược. • N gượcvớitìmkiếmtheochiềusâu,tìmkiếm theo chiềurộng mang hình ảnh củavếtdầu loang. Phạm Thế Bảo GiảithuậtA * Phương pháp trí tuệ nhân tạo • "Dạy" máy tính để có "trí thông minh" như ời bắt h ớ khả ă " l ậ " ủ con ngư ời bắt c h ư ớ c khả n ă ng " suy l u ậ n " c ủ a con người. ví dụ: bài toán đong nước, có 3 bình A, B, và C có dung tích 5, 8, và 13 lít. Làm sao đong được 11 lít nước trong bình C? Bình C ban được 11 lít nước trong bình C? Bình C ban đầu đầynước. Phạm Thế Bảo 03/04/2008 10 Mộtsố phương pháp chuyểngiaotri thức 1. Biểudiễntri thức 2. Hệ chuyên gia 3. Máy học Phạm Thế Bảo . chia bài toán ban đầu thành những bài toán nhỏ hơn • Nguyên lý 3: Mọibàitoánlớn đềucóthể giải quyếtbằng cách phân chia thành những bài toán nhỏ hơn cách phân chia thành những bài toán nhỏ hơn 1 03/04/2008 1 CÁC PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN TRÊN MÁY TÍNH Phạm Thế Bảo Khoa Toán – Tin học Trường Đại học Khoa học Tự

Ngày đăng: 16/01/2014, 23:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan