Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề THUẬT TOÁN VÀ ỨNG DỤNG THUẬT GIẢI DI TRUYỀN CHO BÀI TOÁN NGƯỜI DU LỊCH

31 1.4K 5
Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề THUẬT TOÁN VÀ ỨNG DỤNG THUẬT GIẢI DI TRUYỀN CHO BÀI TOÁN NGƯỜI DU LỊCH

Đ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

Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÀI TIỂU LUẬN MÔN THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ ĐỀ TÀI: THUẬT TOÁN VÀ ỨNG DỤNG THUẬT GIẢI DI TRUYỀN CHO BÀI TOÁN NGƯỜI DU LỊCH GVHD: PGS.TS ĐỖ VĂN NHƠN HVTH: TRẦN KHÁNH AN MSHV: CH1301076 LỚP: CH08-02 HVTH: CH1301076 - Trần Khánh An 1 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn TP.HCM, tháng 10 năm 2014 MỤC LỤC HVTH: CH1301076 - Trần Khánh An 2 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn MỞ ĐẦU Thuật toán và cách thiết kế, đánh giá thuật toán đóng vai trò quan trọng đối với mỗi kỹ sư công nghệ thông tin. Nó cung cấp những kiến thức giúp phân tích và thiết kế thuật toán, những kỹ năng cần thiết để giải quyết các bài toán, các vấn đề hay gặp trong lĩnh vực công nghệ thông tin. Để giải một bài toán, điều trước tiên là chúng ta phải có thuật toán. Một câu hỏi đặt ra là làm thế nào để tìm ra được thuật toán cho một bài toán? Lớp các bài toán được đặt ra từ các ngành khoa học kỹ thuật, từ các lĩnh vực hoạt động thực tiễn của con người là hết sức phong phú và đa dạng. Các thuật toán giải các lớp bài toán khác nhau cũng rất khác nhau. Để giải quyết được chúng ta cần có các kỹ thuật để thiết kế thuật toán. Mỗi kỹ thuật có các tính chất riêng và chỉ thích hợp cho một số dạng bài toán nào đó. Vì chúng ta không thể áp dụng máy móc một chiến lược cho một vấn đề, mà ta phải phân tích kỹ vấn đề, cấu trúc của vấn đề, các đặc điểm của vấn đề sẽ quyết định chiến lược có khả năng áp dụng. Trong bài tiểu luận em tập trung nghiên cứu về thuật toán, các bước cơ bản để giải quyết bài toán, các kỹ thuật thiết kế và phân tích thuật toán. Bài toán người du lịch là một trong những bài toán được nghiên cứu sâu nhất trong lĩnh vực tối ưu hoá. Báo cáo này sẽ trình bày một hướng tiếp cận giải quyết bài toán người du lịch sử dụng giải thuật di truỵền. Giải thuật di truyền là hướng tiếp cận heuristic nhằm đưa ra lời giải tốt (có thể không là tối ưu nhất) khi mà không thể đưa ra một giải thuật chính xác hay việc vét cạn là trường hợp bất khả thi cho bài toán NP-Hard. HVTH: CH1301076 - Trần Khánh An 3 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn CHƯƠNG 1: VẤN ĐỀ VÀ THUẬT TOÁN 1. Vấn đề và biểu diễn vấn đề 1.1. Khái niệm vấn đề: Vấn đề: là những tình huống không mong muốn hoặc có hại và cần phải được xử lý và khắc phục. • Là một điều đó là khó khăn để đạt được. • Một cuộc tìm tòi bắt đầu từ điều kiện có sẵn nhất định để nghiên cứu hoặc chứng minh một sự thật, kết quả, hoặc quy luật. 1.2. Xác định vấn đề: Những yếu tố sau đây sẽ giúp xác định vấn đề một cách chính xác: • Tình huống, ngữ cảnh, cơ sở dữ liệu-thông tin-tri thức. • Giả thiết. • Mục tiêu, yêu cầu. • Điều kiện, ràng buộc, phạm vi. 2. Thuật toán 2.1. Định nghĩa thuật toán Thuật toán là một khái niệm cơ sở của Toán học và Tin học. Hiểu một cách đơn giản, thuật toán là một tập các hướng dẫn nhằm thực hiện một công việc nào đó. Ðối với việc giải quyết một vấn đề - bài toán thì thuật toán có thể hiểu là một tập hữu hạn các hướng dẫn rõ ràng để người giải toán có thể theo đó mà giải quyết được vấn đề. Như vậy, thuật toán là một phương pháp thể hiện lời giải của vấn đề - bài toán. Việc nghiên cứu về thuật toán có vai trò rất quan trọng trong khoa học máy tính vì máy tính chỉ giải quyết được vấn đề khi đã có hướng dẫn giải rõ ràng và đúng. Nếu hướng dẫn giải sai hoặc không rõ ràng thì máy tính không thể giải đúng được bài toán. Trong khoa học máy tính, thuật toán được định nghĩa là một dãy hữu hạn các bước không mập mờ và có thể thực thi được, quá trình hành động theo các bước này phải dừng và cho được kết quả như mong muốn. . 2.2. Các đặc trưng cơ bản của thuật toán. a. Tính hữu hạn: thuật toán bao giờ cũng phải kết thúc sau hữu hạn bước mặc dù số bước này có thể rất lớn. b. Tính xác định: các bước phải rõ ràng, thực hiện được ra một kết quả nào đó. HVTH: CH1301076 - Trần Khánh An 4 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn c. Tính chính xác: đảm bảo kết quả tính toán hay các thao tác thực hiện được là chính xác. d. Ðầu vào và đầu ra: mọi thuật toán, dù có đơn giản đến mấy cũng phải nhận dữ liệu đầu vào, xử lý nó và cho ra kết quả cuối cùng. e. Tính hiệu quả: tính hiệu quả của thuật toán được đánh giá dựa trên một số tiêu chuẩn như khối lượng tính toán, không gian và thời gian khi thuật toán được thi hành. Tính hiệu quả của thuật toán là một yếu tố quyết định để đánh giá, chọn lựa cách giải quyết vấn đề- bài toán trên thực tế. Có rất nhiều phương pháp để đánh giá tính hiệu quả của thuật toán. Tiêu chuẩn được dùng rộng rãi để đánh giá là độ phức tạp của thuật toán. f. Tính tổng quát: thuật toán có tính tổng quát là thuật toán phải áp dụng được cho mọi trường hợp của bài toán chứ không phải chỉ áp dụng được cho một số trường hợp riêng lẻ nào đó. Chẳng hạn giải phương trình bậc hai sau đây bằng Delta đảm bảo được tính chất này vì nó luôn giải được với mọi giá trị số thực a,b,c bất kỳ. Tuy nhiên, không phải thuật toán nào cũng đảm bảo được tính tổng quát. Trong thực tế, có lúc người ta chỉ xây dựng thuật toán cho một dạng đặc trưng của bài toán mà thôi. 2.3. Phân tích thuật toán. 2.3.1. Nguyên tắc phân tích: Độ phức tạp về thời gian của một thuật toán được xác định bằng số lượng các thao tác căn bản cần thiết để giải quyết vấn đề đặt ra. 2.3.2. Mục tiêu: Đánh giá độ phức tạp thuật toán là đánh giá lượng tài nguyên các loại mà thuật toán đòi hỏi sử dụng. Có hai loại tài nguyên quan trọng là thời gian và bộ nhớ. Ta sẽ tập trung vào phân tích thời gian thực hiện thuật toán, tiêu chuẩn để đánh giá hiệu lực của thuật toán hay đề cập tới. Các loại thời gian tính mà ta sẽ quan tâm đến: • Thời gian tính tốt nhất: thời gian tối thiểu cần thiết để thực hiện thuật toán với mọi bộ dữ liệu đầu vào kích thước . • Thời gian tính trung bình: thời gian trung bình cần thiết để thực hiện thuật toán trên tập hữu hạn dữ liệu đầu vào kích thước • Thời gian tính xấu nhất: thời gian nhiều nhất cần thiết để thực hiện thuật toán với mọi bộ dữ liệu đầu vào kích thước Xem thời gian chạy của thuật toán là một hàm theo kích thước của dữ liệu nhập. Cách xác định xem số lượng các thao tác căn bản phụ thuộc vào kích thước input như sau: n : kích thước input HVTH: CH1301076 - Trần Khánh An 5 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn T(n) : số các thao tác căn bản Ví dụ: Vấn đề tìm x trong một mảng một chiều Thao tác căn bản: So sánh x với một phần tử trong mảng Kích thước input: Số lượng các phần tử trong mảng 2.3.3. Sự phân lớp các thuật toán Hầu hết các thuật toán đều có một tham số chính là N, thông thường đó là số lượng các phần tử dữ liệu được xử lý mà ảnh hưởng rất nhiều tới thời gian chạy. Tham số N có thể là bậc của một đa thức, kích thước của một tập tin được sắp xếp hay tìm kiếm, số nút trong một đồ thị .v.v Hằng số: Hầu hết các chỉ thị của các chương trình đều được thực hiện một lần hay nhiều nhất chỉ một vài lần. Nếu tất cả các chỉ thị của cùng một chương trình có tính chất nầy thì chúng ta sẽ nói rằng thời gian chạy của nó là hằng số. Điều nầy hiển nhiên là hoàn cảnh phấn đấu để đạt được trong việc thiết kế thuật toán. logN: Khi thời gian chạy của chương trình là logarit tức là thời gian chạy chương trình tiến chậm khi N lớn dần. Thời gian chạy thuộc loại nầy xuất hiện trong các chương trình mà giải một bài toán lớn bằng cách chuyển nó thành một bài toán nhỏ hơn, bằng cách cắt bỏ kích thước bớt một hằng số nào đó. Với mục đích của chúng ta, thời gian chạy có được xem như nhỏ hơn một hằng số "lớn". Cơ số của logarit làm thay đổi hằng số đó nhưng không nhiều: khi N là một ngàn thì logN là 3 nếu cơ số là 10, là 10 nếu cơ số là 2; khi N là một triệu, logN được nhân gấp đôi. Bất cứ khi nào N được nhân đôi, logN tăng lên thêm một hằng số, nhưng logN không bị nhân gấp đôi khi N tăng tới N 2 . N: Khi thời gian chạy của một chương trình là tuyến tính, nói chung đây trường hợp mà một số lượng nhỏ các xử lý được làm cho mỗi phần tử dữ liệu nhập. Khi N là một triệu thì thời gian chạy cũng cỡ như vậy. Khi N được nhân gấp đôi thì thời gian chạy cũng được nhân gấp đôi. Đây là tình huống tối ưu cho một thuật toán mà phải xử lý N dữ liệu nhập (hay sản sinh ra N dữ liệu xuất). NlogN: Đây là thời gian chạy tăng dần lên cho các thuật toán mà giải một bài toán bằng cách tách nó thành các bài toán con nhỏ hơn, kế đến giải quyết chúng một cách độc lập và sau đó tổ hợp các lời giải. Bởi vì thiếu một tính từ tốt hơn (có lẻ là "tuyến tính logarit"?), chúng ta nói rằng thời gian chạy của thuật toán như thế là "NlogN". Khi N là một triệu, NlogN có lẽ khoảng hai mươi triệu. Khi N được nhân gấp đôi, thời gian chạy bị nhân lên nhiều hơn gấp đôi (nhưng không nhiều lắm). N 2 : Khi thời gian chạy của một thuật toán là bậc hai, trường hợp nầy chỉ có ý nghĩa thực tế cho các bài toán tương đối nhỏ. Thời gian bình phương thường tăng dần lên trong các thuật toán mà xử lý tất cả các cặp phần tử dữ liệu (có thể là hai vòng lặp lồng nhau). Khi N là một ngàn thì thời gian chạy là một triệu. Khi N được nhân đôi thì thời gian chạy tăng lên gấp bốn lần. HVTH: CH1301076 - Trần Khánh An 6 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn N 3 :Tương tự, một thuật toán mà xử lý các bộ ba của các phần tử dữ liệu (có lẻ là ba vòng lặp lồng nhau) có thời gian chạy bậc ba và cũng chỉ có ý nghĩa thực tế trong các bài toán nhỏ. Khi N là một trăm thì thời gian chạy là một triệu. Khi N được nhân đôi, thời gian chạy tăng lên gấp tám lần. 2 N : Một số ít thuật toán có thời gian chạy lũy thừa lại thích hợp trong một số trường hợp thực tế, mặc dù các thuật toán như thế là "sự ép buộc thô bạo" để giải các bài toán. Khi N là hai mươi thì thời gian chạy là một triệu. Khi N gấp đôi thì thời gian chạy được nâng lên lũy thừa hai! 3. Quy trình xây dựng giải pháp cho vấn đề 3.1 Mô hình hóa vấn đề: Mục đích của việc mô hình hóa vấn đề là làm sáng tỏ vấn đề, giúp chúng ta có thể đưa ra được các lỗi hoặc các thiếu xót của vấn đề. 3.2 Thiết kế thuật toán Để giải một bài toán, điều trước tiên là chúng ta phải có thuật toán. Một câu hỏi đặt ra là làm thế nào để tìm ra được thuật toán cho một bài toán đã đặt ra? Lớp các bài toán được đặt ra từ các ngành khoa học kỹ thuật, từ các lĩnh vực hoạt động của con người là hết sức phong phú và đa dạng. Các thuật toán giải các lớp bài toán khác nhau cũng rất khác nhau. Để thiết kế thuật toán ta có một số kỹ thuật thiết kế thuật toán chung như: Chia để trị (divide-and-conque), phương pháp tham lam (greedy method), qui hoạch động (dynamic programming) Việc nắm được các chiến lược thiết kế thuật toán này là hết sức quan trọng và cần thiết, nó giúp cho ta dễ tìm ra các thuật toán mới cho các bài toán mới được đưa ra. 3.3 Diễn giải thuật toán Sau khi thiết kế thuật toán ta tiến hành diễn giải thuật toán đó. Thông thường ta không nên cụ thể hóa ngay toàn bộ chương trình mà nên tiến hành theo phương pháp tinh chế từng bước từ tổng thế đến chi tiết hơn. Thuật toán có thể diễn đạt dưới nhiều hình thức, chẳng hạn dưới dạng lưu đồ, dạng ngôn ngữ tự nhiên, dạng mã giả hoặc một ngôn ngữ lập trình nào đó. 3.4 Chứng minh tính đúng đắn của thuật toán. Khi một thuật toán được làm ra, ta cần phải chứng minh rằng, thuật toán khi được thực hiện sẽ cho ta kết quả đúng với mọi dữ liệu vào hợp lệ. Điều này gọi là chứng minh tính đúng đắn của thuật toán. Việc chứng minh tính đúng đắn của thuật toán là một công việc không dễ dàng. Trong nhiều trường hợp, nó đòi hỏi ta phải có trình độ và khả năng tư duy toán học tốt. HVTH: CH1301076 - Trần Khánh An 7 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn 3.5 Tính hiệu quả về phương diện lý thuyết và thực hành Khi giải một vấn đề, chúng ta cần chọn trong số các thuật toán, một thuật toán mà chúng ta cho là “tốt” nhất .Vậy ta cần lựa chọn thuật toán dựa trên cơ sở nào? Thông thường ta dựa trên hai tiêu chuẩn sau đây: • Thuật toán đơn giản, dễ hiểu, dễ cài đặt (dễ viết chương trình • Thuật toán sử dụng tiết kiệm nhất các nguồn tài nguyên của máy tính, và đặc biệt chạy nhanh nhất có thể được. Khi ta viết một chương trình chỉ để sử dụng một số ít lần, và cái giá của thời gian viết chương trình vượt xa cái giá của chạy chương trình thì tiêu chuẩn thứ nhất là quan trọng nhất. Nhưng có trường hợp ta cần viết các chương trình (hoặc thủ tục, hàm) để sử dụng nhiều lần, cho nhiều người sử dụng, khi đó giá của thời gian chạy chương trình sẽ vượt xa giá viết nó. Chẳng hạn, các thủ tục sắp xếp, tìm kiếm được sử dụng rất nhiều lần, bởi rất nhiều người trong các bài toán khác nhau. Trong trường hợp này ta cần dựa trên tiêu chuẩn thứ hai. Ta sẽ cài đặt thuật toán có thể sẽ rất phức tạp, miễn là chương trình nhận được chạy nhanh hơn so với các chương trình khác. Tiêu chuẩn hai được xem là tính hiệu quả của thuật toán. Tính hiệu quả của thuật toán bao gồm hai nhân tố cơ bản: • Dung lượng không gian nhớ cần thiết để lưu giữ các dữ liệu vào, các kết quả tính toán trung gian và các kết quả của thuật toán. • Thời gian cần thiết để thực hiện thuật toán (ta gọi là thời gian chạy). Chúng ta chỉ quan tâm đến thời gian thực hiện thuật toán, có nghĩa là ta nói đến đánh giá thời gian thực hiện. Một thuật toán có hiệu quả được xem là thuật toán có thời gian chạy ít hơn so với các thuật toán khác. 3.6 Tối ưu thuật toán Tối ưu thuật toán tức là đi tìm một hàm mục tiêu có chi phí ít nhất, hay lớn nhất trong một tập hợp các hàm khả dĩ để đạt được một mục đích cụ thể. Hiểu theo cách thông thường tối ưu là thủ tục giảm tối thiểu thời gian, không gian,… của thuật toán. CHƯƠNG 2: CÁC PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ 1. Phương pháp trực tiếp: Xác định trực tiếp được lời giải qua một thủ tục tính toán (công thức, hệ thức, định luật, …) hoặc qua các bước căn bản để có được lời giải. Việc giải quyết vấn đề trên máy tính chỉ là thao tác lập trình hay là sự chuyển đổi lời giải từ ngôn ngữ tự nhiên sang ngôn ngữ máy tính. Có ba loại cơ bản: HVTH: CH1301076 - Trần Khánh An 8 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn • Lọai thứ nhất: dùng để biểu diễn cho các bài toán đã có lời giải chính xác bằng một công thức toán học nào đó. Ví dụ: tính tổng n số nguyên dương. • Loại thứ hai, biểu diễn cho các bài toán có công thức giải gần đúng (công thức tính sin, cos, giải phương trình siêu việt, …). Ví dụ: giải phương trình bậc 2 • Loại cuối cùng, biểu diễn các lời giải không tường minh bằng kỹ thuật đệ quy 2. 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ó Mỗi phương pháp có các tính chất riêng và chỉ thích hợp cho một số dạng vấn đề nào đó. Cần nhấn mạnh rằng, ta không thể áp dụng máy móc một chiến lược cho một vấn đề, mà ta phải phân tích kỹ vấn đề. Cấu trúc của vấn đề, các đặc điểm của vấn đề sẽ quyết định chiến lược có khả năng áp dụng. Đối với lớp các vấn đề giải được bằng thuật toán, dựa vào các đặc trưng của quá trình thiết kế của thuật toán cho vấn đề, ta có thể chỉ ra một số các phương pháp thiết kế thuật toán cơ bản sau đây: • Phương pháp chia để trị (Divide-and-Conquer method): Ý tưởng là chia dữ liệu thành từng miền đủ nhỏ, giải bài toán trên các miền đã chia rồi tổng hợp kết quả lại. Chẳng hạn như thuật toán Quicksort. • Phương pháp tham lam (Greedy Method): Ý tưởng là xác định trật tự xử lý để có lợi nhất, Sắp xếp dữ liệu theo trật tự đó, rồi xử lý dữ liệu theo trật tự đã nêu. Công sức bỏ ra là tìm ra trật tự đó. Chẳng hạn thuật toán tìm cây bao trùm nhỏ nhất (Shortest spanning Trees). • Phương pháp Quy hoạch động (Dynamic Programming method): Phương pháp quy hoạch động dựa vào một nguyên lý, gọi là nguyên lý tối ưu của Bellman: “ Nếu lời giải của bài toán là tối ưu thì lời giải của các bài toán con cũng tối ưu ”. Phương pháp này tổ chức tìm kiếm lời giải theo kiểu từ dưới lên. Xuất phát từ các bài toán con nhỏ và đơn giản nhất, tổ hợp các lời giải của chúng để có lời giải của bài toán con lớn hơn và cứ như thế cuối cùng được lời giải của bài toán ban đầu. Chẳng hạn thuật toán “chiếc túi xách” (Knapsack). • Phương pháp nhánh cận (branch-and-bound method): Ý tưởng là trong quá trình tìm kiếm lời giải, ta phân hoạch tập các phương án của bài toán ra thành hai hay nhiều tập HVTH: CH1301076 - Trần Khánh An 9 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn con được biểu diễn như là các nút của cây tìm kiếm và cố găng bằng phép đánh giá cận cho các nút, tìm cách loại bỏ các nhánh của cây mà ta biết chắc không chưa phương án tối ưu. Chẳng hạn thuật toán giải bài toán người du lịch. • Phương pháp vét cạn (Brute force): Đây là phương pháp đơn giản nhất, nhưng cũng không hiểu quả nhất. Phương pháp vét cạn thử tất cả các khả năng xem khả năng nào là nghiệm đúng của bài toán cần giải quyết. 2.1. Phương pháp chia để trị (Divide - and - Conquer) 2.2.1. Ý tưởng: Có lẽ quan trọng và áp dụng rộng rãi nhất là kỹ thuật thiết kế “Chia để trị”. Nó phân rã bài toán kích thước n thành các bài toán con nhỏ hơn mà việc tìm lời giải của chúng là cùng một cách. Lời giải của bài toán đã cho được xây dựng từ lời giải của các bài toán con này. Ta có thể nói vắn tắt ý tưởng chính của phương pháp này là : chia dữ liệu thành từng miền đủ nhỏ, giải bài toán trên các miền đã chia rồi tổng hợp kết quả lại. 2.2.2. Mô hình Nếu gọi DivideAndConquer (R) - Với R là miền dữ liệu - là hàm thể hiện cách giải bài toán theo phương pháp chia để trị thì ta có thể viết : devideAndConquer(R) nếu R đủ nhỏ: giải bài toán. Ngược lại: Phân hoạch R thành các Ri Với mỗi Ri: devideAndConquer(Ri) Tổng hợp kết quả. 2.3. Phương pháp quay lui (Back Tracking) 2.3.1. Ý tưởng: Nét đặc trưng của phương pháp quay lui là các bước hướng tới lời giải cuối cùng của bài toán hoàn toàn được làm thử. Tại mỗi bước, nếu có một lựa chọn được chấp nhận thì ghi nhận lại lựa chọn này và tiến hành các bước thử tiếp theo. Còn ngược lại không có lựa chọn nào thích hợp thì làm lại bước trước, xoá bỏ sự ghi nhận và quay về chu trình thử các lựa chọn còn lại. Hành động này được gọi là quay lui, thuật toán thể hiện phương pháp này gọi là quay lui. Điểm quan trọng của thuật toán là phải ghi nhớ tại mỗi bước đi qua để tránh trùng lặp khi quay lui. Dễ thấy là các thông tin này cần được lưu trử vào một ngăn xếp, nên thuật toán thể hiện ý thiết kế một cách đệ quy. HVTH: CH1301076 - Trần Khánh An 10 [...]... nhỏ hơn một hằng số k nào đó Ta sẽ giải bài toán này bằng thuật giải di truyền 2 Áp dụng giải thuật di truyền giải bài toán người du lịch Biểu di n nhiễm sắc thể HVTH: CH1301076 - Trần Khánh An 26 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn Khó khăn đầu tiên đặt ra cho việc thiết kế thuật giải di truyền là biểu di n nhiễm sắc thể Nếu biểu di n nhị phân cho bài toán TSP có n thành phố, mỗi thành... annealing), giải thuật đàn kiến ACO, tìm kiếm tabu (Tabu search) CHƯƠNG 3: GIẢI THUẬT DI TRUYỀN (GA) 1 Giới thiệu về giải thuật di truyền Giải thuật di truyền là một kỹ thuật của khoa học máy tính nhằm tìm kiếm giải pháp thích hợp cho các bài toán tối ưu tổ hợp (combinatorial optimization) Giải thuật di truyền là một phân ngành của giải thuật tiến hóa vận dụng các nguyên lý của tiến hóa như di truyền, ... Mở rộng khái niệm thuật toán : thuật giải Trong quá trình nghiên cứu giải quyết các vấn đề - bài toán, người ta đã đưa ra những nhận xét như sau :  Có nhiều bài toán cho đến nay vẫn chưa tìm ra một cách giải theo kiểu thuật toán và cũng không biết là có tồn tại thuật toán hay không  Có nhiều bài toán đã có thuật toán để giải nhưng không chấp nhận được vì thời gian giải theo thuật toán đó quá lớn hoặc... trong giải thuật di truyền thì ta luôn muốn tạo ra những phép đột biến cho phép cải thiện lời giải qua từng thế hệ HVTH: CH1301076 - Trần Khánh An 17 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn 3 Mô hình giải thuật di truyền Với các khái niệm được giới thiệu ở trên, giải thuật di truyền được mô tả như sau : Hình: Sơ đồ mô tả giải thuật di truyền 1 [Bắt đầu ] Nhận các tham số cho thuật toán. .. giải HVTH: CH1301076 - Trần Khánh An 16 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn 2 Các khái niệm cơ bản Giải thuật di truyền dựa vào quá trình tiến hoá trong tự nhiên nên các khái niệm và thuật ngữ của nó đều có liên quan đến các thuật ngữ của di truyền học Cá thể, nhiễm sắc thể Trong giải thuật di truyền, một cá thể biểu di n một giải pháp của bài toán Không giống với trong tự nhiên, một... vào có tốt hơn bố mẹ bị loại đi hay không nhưng chắc chắn là những NST con cháu nạp vào nếu là tồi thì sẽ bị loại trong thế hệ tiếp Như vậy nó vẫn đảm bảo qua nhiều thế hệ thì tính chất của quần thể sẽ được cải thiện dần dần CHƯƠNG 4: BÀI TOÁN NGƯỜI DU LỊCH 1 1.1 Xây dựng giải pháp cho bài toán người du lịch Giới thiệu bài toán Bài toán người du lịch (Travelling Salesman problem (TSP)) là một bài toán. .. Trần Khánh An 19 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn hay dùng cho giải thuật di truyền Tuy nhiên, tuỳ thuộc vào các tri thức riêng của từng bài toán mà ta sẽ lựa chọn hay xây dựng cách biểu di n nhiễm sắc thể riêng phù hợp với bài toán của mình Mã hoá nhị phân Trong tất cả các phương pháp mã hóa thì phương pháp mã hoá nhị phân là phương pháp mã hoá nhiễm sắc thể đơn giản và ra đời sớm... lời giải tìm được có dạng bao lồi của tập điểm (thành phố) HVTH: CH1301076 - Trần Khánh An 29 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn Kết quả minh họa 52 thành phố: 100 thành phố: HVTH: CH1301076 - Trần Khánh An 30 Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn TÀI LIỆU THAM KHẢO [1] PGS.TS Đỗ Văn Nhơn (2013), Các Slide bài giảng môn học Thuật toán và Phương pháp giải quyết vấn đề. .. giải pháp gần tối ưu mà chỉ cần máy tính chạy trong vài ngày hoặc vài giờ Các cách giải chấp nhận được nhưng không hoàn toàn đáp ứng đầy đủ các tiêu chuẩn của thuật toán thường được gọi là các thuật giải Khái niệm mở rộng này của thuật toán đã mở rộng cửa cho chúng ta trong việc tìm kiếm phương pháp để giải quyết các bài toán được đặt ra Một trong những thuật giải thường được đề cập đến và sử dụng. .. điều kiện cho thuật toán khó đáp ứng  Có những bài toán được giải theo những cách giải vi phạm thuật toán nhưng vẫn chấp nhận được Từ những nhận định trên, người ta thấy rằng cần phải có những đổi mới cho khái niệm thuật toán Người ta đã mở rộng hai tiêu chuẩn của thuật toán : tính xác định và tính đúng đắn Việc mở rộng tính xác định đối với thuật toán đã được thể hiện qua các giải thuật đệ quy và ngẫu . Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÀI TIỂU LUẬN MÔN THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ ĐỀ TÀI: THUẬT. giải quyết một vấn đề - bài toán thì thuật toán có thể hiểu là một tập hữu hạn các hướng dẫn rõ ràng để người giải toán có thể theo đó mà giải quyết được vấn đề. Như vậy, thuật toán là một phương. quan trọng và cần thiết, nó giúp cho ta dễ tìm ra các thuật toán mới cho các bài toán mới được đưa ra. 3.3 Di n giải thuật toán Sau khi thiết kế thuật toán ta tiến hành di n giải thuật toán đó.

Ngày đăng: 24/05/2015, 09:22

Từ khóa liên quan

Mục lục

  • CHƯƠNG 1: VẤN ĐỀ VÀ THUẬT TOÁN

  • 1. Vấn đề và biểu diễn vấn đề

    • 1.1. Khái niệm vấn đề:

    • 1.2. Xác định vấn đề:

    • 2. Thuật toán

      • 2.1. Định nghĩa thuật toán

      • 2.2. Các đặc trưng cơ bản của thuật toán.

      • 2.3. Phân tích thuật toán.

        • 2.3.1. Nguyên tắc phân tích:

        • 2.3.2. Mục tiêu:

        • 2.3.3. Sự  phân lớp các thuật toán

        • 3. Quy trình xây dựng giải pháp cho vấn đề

          • 3.1 Mô hình hóa vấn đề:

          • 3.2 Thiết kế thuật toán

          • 3.3 Diễn giải thuật toán

          • 3.4 Chứng minh tính đúng đắn của thuật toán.

          • 3.5 Tính hiệu quả về phương diện lý thuyết và thực hành

          • 3.6 Tối ưu thuật toán

          • CHƯƠNG 2: CÁC PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ

          • 1. Phương pháp trực tiếp:

          • 2. Phương pháp gián tiếp:

            • 2.1. Phương pháp chia để trị (Divide - and - Conquer)

              • 2.2.1. Ý tưởng:

              • 2.2.2. Mô hình

              • 2.3. Phương pháp quay lui (Back Tracking)

                • 2.3.1. Ý tưởng:

                • 2.3.2. Mô hình

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

Tài liệu liên quan