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 TỐI ƯU BẦY KIẾN TRONG BÀI TOÁN NGƯỜI DU LỊCH

30 727 2
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 TỐI ƯU BẦY KIẾN TRONG 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

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN __ Bài thu hoạch THUẬT TOÁN VÀ GIẢI QUYẾT VẤN ĐỀ THUẬT TOÁN TỐI ƯU BẦY KIẾN TRONG BÀI TOÁN NGƯỜI DU LỊCH Giảng viên hướng dẫn: TS. Đỗ Văn Nhơn Học viên thực hiện: Huỳnh Văn Trận MSHV: CH1301066 Lớp: Cao Học Khóa 8 Tháng 10/2014 2 Mục Lục CHƯƠNG 1 GIỚI THIỆU 6 CHƯƠNG 2 BÀI TOÁN 7 CHƯƠNG 3 CƠ SỞ LÝ THUYẾT 8 3.1 Các khái niệm cơ bản về đồ thị 8 3.1.1 Định nghĩa đồ thị 8 3.1.2 Các thuật ngữ cơ bản 9 3.1.3 Đường đi, chu trình và đồ thị liên thông 10 3.1.4 Chu trình Euler 12 3.1.5 Chu trình Hamilton 12 3.1.6 Đồ thị có trọng số 13 3.1.7 Các cấu trúc dữ liệu biểu diễn đồ thị 14 3.2 Khái niệm về lớp các bài toán P và NP 15 3.2.1 Khái niệm các loại thời gian tính 15 3.2.2 Bằng chứng ngắn gọn dễ kiểm tra 16 3.2.3 Khái niệm quy dẫn 16 3.2.4 Lớp bài toán P 17 3.2.5 Lớp bài toán NP 17 3.2.6 Lớp bài toán Co-NP 17 3.2.7 Lớp bài toán NP-đầy đủ (NP-Complete) 17 3.2.8 Lớp bài toán NP- khó (NP-Hard) 18 3.3 Mô hình phân lớp các bài toán 19 CHƯƠNG 4 THUẬT TOÁN BẦY KIẾN 22 4.1 Ý tưởng 22 4.2 Thuật toán 23 4.3 Quá trình phát triển 26 4.4 Demo 27 CHƯƠNG 5 KẾT LUẬN 30 3 Bảng viết tắt STT Viết tắt Ý nghĩa 1 ACO Ant colony Optimization (Tối ưu hóa bầy kiến) 2 AS Ant system (Hệ kiến) 3 ACS Ant Colony System (Hệ kiến ACS) 4 MMAS Min-Max Ant System (Hệ kiến ACS) 5 MLAS Multi-level Ant System (Hệ kiến MMAS) 6 TSP Travelling Salesman Problem (Bài toán người du lịch/chào hang) 7 JSS Job shop scheduling (Bài toán lập lịch sản xuất) 8 EA Evolutionary Algorithm (Thuật toán tiến hóa) 4 LỜI MỞ ĐẦU Tìm đường đi ngắn nhất là một trong những bài toán luôn luôn thu hút giới nghiên cứu. Làm sao có thể tìm được đường đi ngắn nhất từ 1 điểm đến 1 điểm khác một cách ít tốn chi phí nhất trên một bản đồ có thể có những chướng ngại vật. Hiện nay đã có rất nhiều thuật toán, công trình nghiên cứu về tìm đường đi ngắn nhất ứng với từng hoàn cảnh khác nhau. Áp dụng tất cả những gì tự nhiên vào trong máy tính là một trong những bước chuyển biến mang tính chất đột phá của khoa học máy tính. Vì những gì ngoài tự nhiên thì đã tồn tại rất lâu rồi, đã được đút kết rất nhìu kinh nghiệm, do vậy áp dụng nó vào máy tính sẽ đạt được mức độ tối ưu nhất định. Các bài toán thực tế được nghiên cứu tìm ra những ưu điểm của nó để áp dụng vào trong những hệ thống trên máy tính. Các hệ thống này gọi là hệ thống mô phỏng sinh học. Một trong những mô hình tính toán mô phỏng hoạt động sinh học ngoài đời thực vào trong máy tính tốt nhất cho các bài toán tối ưu tổ hợp, đó chính là mô hình giải thuật bầy kiến. Mô phỏng lối di chuyển ngoài đời thực của bầy kiến. Trong bài báo cáo này sẽ mô phỏng cách duy chuyển, hoạt động của bầy kiến, từ đó mô hình nên giải thuật bầy kiến. Áp dụng trong bài toán người du lịch (TSP – Travelling Saleman Prolem). Bài toán người du lịch là một trong những bài toán kinh điển và khó trong tin học. Và cũng có rất nhiều giải pháp thuật toán cho bài toán này. Và trong báo cáo này sẽ mô tả một các tiếp cần theo mô hình sinh học, tự nhiên mà cách di chuyển của đàn kiếm sẽ áp dụng cho người du lịch. 5 CHƯƠNG 1 GIỚI THIỆU Hệ thống tính toán phỏng sinh học được phát triển theo nguyên lý chung là dựa vào các hiện tượng sinh học tự nhiên. Các tính toán này bao gồm lớp các thuật toán mô phỏng sinh học (EA – Evolutionary Algorithm) trong đó chứa các giải thuật tìm kiếm dựa trên tri thức kinh nghiệm. Các tri thức này được sử dụng để tìm kiếm các lời giải tốt cho các bài toán khó. Các tính toán này sẽ tìm lời giải tốt hơn những lời giải đã có trước, đặt biệt phù hợp với những bài toàn không tồn tại lời giải hiệu quả. Các giải thuật này thường đơn giản, mang tính chất tổng quát và có thể áp dụng trong các bài toán tìm kiếm và tối ưu. Để tìm được lời giải tối ưu hơn lời giải trước người ta xây dựng phương pháp gọi là Heuristic. Phương pháp Heuristic thể hiện lối suy nghĩ tự nhiên, gần gũi với cách suy nghĩ của con người. Áp dụng những nguyên lý: - Nguyên lý vét cạn thông minh: khi không gian tìm kiếm lớn, thường sẽ giới hạn lại không gian tìm kiếm hoặc thực hiện một kiểu dò tìm nào đó dựa trên một số đặt trưng của bài toán để nhanh chống tìm ra mục tiêu. - Nguyên lý tham lam: lấy tiêu chuẩn tối ưu trên phạm vi toàn cục để làm tiêu chuẩn lựa chọn hành động cho phạm vi cục bộ của từng bước (giai đoạn) trong quá trình tìm kiếm lời giải. - Nguyên lý thứ tự: Thực hiện hành động dựa trên một cấu trúc thứ tự hợp lý của không gian khảo sát nhằm nhanh chóng đạt được một lời giải tốt. - Hàm Heuristic: Trong việc xây dựng các thuật giải Heuristic, người ta thường dùng các hàm Heuristic. Ðó là các hàm đánh giá thô, giá trị của hàm phụ thuộc vào trạng thái hiện tại của bài toán tại mỗi bước giải. Nhờ giá trị này, ta có thể chọn được cách hành động tương đối hợp lý trong từng bước của thuật giải. Với những đặc trưng như vậy, Heuristic đã được áp dụng rất nhiều trong những bài toán khó. Thuật toán bầy kiến là một phương pháp Heuristic vận dụng những nguyên lý trên để tìm lời giải hợp lý cho bài toàn người du lịch. 6 CHƯƠNG 2 BÀI TOÁN Bài toán Người du lịch, tìm đường đi ngắn nhất cho người thương nhân (salesman), hay còn gọi là người chào hàng xuất phát từ một thành phố, đi qua lần lượt tất cả các thành phố duy nhất một lần và quay về thành phố ban đầu với chi phí rẻ nhất, được phát biểu vào thế kỷ 17 bởi hai nhà toán học vương quốc Anh là Sir William Rowan Hamilton và Thomas Penyngton Kirkman, và được ghi trong cuốn giáo trình Lý thuyết đồ thị nổi tiếng của Oxford. Nó nhanh chóng trở thành bài toán khó thách thức toàn thế giới bởi độ phức tạp thuật toán tăng theo hàm số mũ (trong chuyên ngành thuật toán người ta còn gọi chúng là những bài toán NP-khó). Người ta bắt đầu thử và công bố các kết quả giải bài toán này trên máy tính từ năm 1954 (49 đỉnh), cho đến năm 2004 bài toán giải được với số đỉnh lên tới 24.978, và dự báo sẽ còn tiếp tục tăng cao nữa. Bài toán có thể phát biểu dưới ngôn ngữ đồ thị như sau : Cho đồ thị n đỉnh đầy đủ và có trọng số G=(V-tập đỉnh,E-tập cạnh) có hoặc vô hướng. Tìm chu trình Halmilton có trọng số là nhỏ nhất. l 7 CHƯƠNG 3 CƠ SỞ LÝ THUYẾT 3.1 Các khái niệm cơ bản về đồ thị 3.1.1 Định nghĩa đồ thị Trong toán học và tin học, đồ thị là đối tượng nghiên cứu cơ bản của lý thuyết đồ thị. Một cách không chính thức, đồ thị là một tập các đối tượng gọi là đỉnh nối với nhau bởi các cạnh. Thông thường, đồ thị được vẽ dưới dạng một tập các điểm (đỉnh, nút) nối với nhau bởi các đoạn thẳng (cạnh). Tùy theo ứng dụng mà một số cạnh có thể có hướng.Chúng ta phân biệt các loại đồ thị khác nhau bởi kiểu và số lượng cạnh nối hai đỉnh nào đó của đồ thị. Định nghĩa 1.1. Đơn đồ thị vô hướng G=(V,E) bao gồm V là tập các đỉnh, và E là tập các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh. Định nghĩa 1.2. Đa đồ thị vô hướng G=(V,E) bao gồm V là tập các đỉnh, và E là họ các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh. Hai cạnh e 1 và e 2 được gọi là cạnh lặp nếu chúng cùng tương ứng với một cặp đỉnh. Định nghĩa 1.3. Đơn đồ thị có hướng G=(V,E) bao gồm V là tập các đỉnh, và E là tập các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung. Định nghĩa 1.4. Đa đồ thị có hướng G=(V,E) bao gồm V là tập các đỉnh, và E là họ các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung. Hai cung e 1 và e 2 được gọi là cung lặp nếu chúng cùng tương ứng với một cặp đỉnh. 8 Hai loại đồ thị cơ bản: a) Đồ thị vô hướng(6 đỉnh, 9 cạnh). b) Đồ thị có hướng(5 đỉnh, 7 cung). Định nghĩa 1.5. Đồ thị hỗn hợp G=(V, E, A ) bao gồm V là tập các đỉnh, E là tập các cạnh (E≠Ø) và A là tập các cung (A ≠Ø) của đồ thị. Đồ thị hỗn hợp(6 đỉnh 5 cạnh, 4 cung) Số đỉnh của đồ thị G là số phần tử trong V. Chúng ta có thể coi các đồ thị vô hướng và có hướng là các trường hợp riêng của đồ thị hỗn hợp G=(V, E, A) khi mà A =Ø hoặc E=Ø. 3.1.2 Các thuật ngữ cơ bản Định nghĩa 1.6. Hai đỉnh u và v của đồ thị vô hướng G được gọi là kề nhau nếu (u,v) là cạnh của đồ thị G. Nếu e=(u,v) là cạnh của đồ thị thì chúng ta nói cạnh này là liên thuộc với hai đỉnh u và v, hoặc cũng nói là cạnh e là nối đỉnh u và đỉnh v, đồng thời các đỉnh u và v sẽ được gọi là các đỉnh đầu cuả cạnh (u,v). Để có thể biết được bao nhiêu cạnh liên thuộc với một đỉnh, chúng ta đưa vào định nghĩa sau 9 Định nghĩa 1.7. Chúng ta gọi bậc của đỉnh v trong đồ thị vô hướng là số cạnh liên thuộc với nó và sẽ kí hiệu là deg(v). Định lý 1.1. Giả sử G=(V,E) là đồ thị vô hướng với m cạnh. Khi đó Hệ quả 1.1. Trong đồ thị vô hướng, số đỉnh bậc lẻ(nghĩa là có bậc là số lẻ) là một số chẵn Định nghĩa 1.8. Nếu e=(u,v) là cung của đồ thị có hướng G thì chúng ta nói hai đỉnh u và v là kề nhau, và nói cung (u,v) nối đỉnh u và đỉnh v hoặc cũng nói cung này là đi ra khỏi đỉnh u và đi vào đỉnh v. Đỉnh u (v) sẽ được gọi là đỉnh đầu (cuối) của cung (u,v) Định nghĩa 1.9. Chúng ta gọi bán bậc ra (bán bậc vào) của đỉnh v trong đồ thị có hướng là số cung của đồ thị đi ra khỏi nó (đi vào nó) và ký hiệu làError! Objects cannot be created from editing field codes. Định lý 1.2. Giả sử G=(V,E) là đồ thị có hướng. Khi đó Tương tự như trên , chúng ta xét các thuật ngữ cơ bản cho đồ thị hỗn hợp Quy ước. Kí hiệu với S là một tập hợp thì #(S) hay |S| là số phần tử của tập S. Cho đồ thị hỗn hợp G =(V,E,A). Nếu e=(u,v) thuộc E, thì chúng ta nói cạnh e kề với đỉnh u, và v. Nếu e=(u,v) thuộc A, thì chúng ta nói cung e kề với đỉnh u, và v. Định nghĩa 1.10. Cho đồ thị hỗn hợp G=(V, E, A). Kí hiệu deg(v) là bậc của đỉnh v trong đồ thị. Giá trị của deg(v) được tính theo công thức sau: deg(v)= #(các cạnh kề với đỉnh v)+ # (các cung kề với đỉnh v) Định nghĩa 1.11. Chúng ta gọi bán bậc ra( bán bậc vào) của đỉnh v trong đồ thị hỗn hợp G là số cung của đồ thị đi ra khỏi nó (đi vào nó) và kí hiệu là indegree(v) (outdegree(v)). 3.1.3 Đường đi, chu trình và đồ thị liên thông Định nghĩa 1.12. Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên dương, trên đồ thị vô hướng G=(V,E) là dãy 10 x 0 ,x 1, …,x n-1, x n trong đó u=x 0 , v= x n , (x i, x i+1 ) ∈ E, i = 0,1,2,…,n-1. Đường đi nói trên còn có thể biểu diễn dưới dạng dãy các cạnh: (x 0 , x 1 ), (x 1 , x 2 ), …, (x n-1 , x n ). Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi. Đường đi có đỉnh đầu trùng với đỉnh cuối (tức là u=v) được gọi là chu trình. Đường đi hay chu trình được gọi là đơn nếu như không có cạnh nào bị lặp lại Định nghĩa 1.13. Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên dương, trên đồ thị có hướng G=(V, A) là dãy x0,x1, …,xn-1,xn trong đó u=x0 , v= xn , (xi,xi+1) ∈ A, i = 0,1,2,…,n-1. Đường đi nói trên còn có thể biểu diễn dưới dạng dãy các cung: (x0, x1), (x1, x2), …, (xn-1, xn). Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi. Đường đi có đỉnh đầu trùng với đỉnh cuối (tức là u=v) được gọi là chu trình. Đường đi hay chu trình được gọi là đơn nếu như không có cung nào bị lặp lại Định nghĩa 1.14. Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên dương, trên đồ thị hỗn hợp G=(V, E, A) là dãy x0,x1, …,xn-1,xn trong đó u=x0 , v= xn , (xi,xi+1) ∈ E, hoặc (xi,xi+1) ∈ A, i = 0,1,2,…,n-1. Đường đi nói trên còn có thể biểu diễn dưới dạng dãy các cạnh, cung: (x0, x1), (x1, x2), …, (xn-1, xn). Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi. Đường đi có đỉnh đầu trùng với đỉnh cuối (tức là u=v) được gọi là chu trình. Đường đi hay chu trình được gọi là đơn nếu như không có cạnh hay cung nào bị lặp lại. Định nghĩa 1.15. Đồ thị vô hướng G=(V, E) được gọi là liên thông nếu luôn tìm được đường đi giữa hai đỉnh bất kì của nó. Định nghĩa 1.16. Chúng ta gọi đồ thị con của đồ thị G=(V, E) là đồ thị H=(W, F), trong đó W V và F E. 11 [...]... lời giải khả thi Mục tiêu bài toán là tìm ra một lời giải khả thi tối ưu toàn cục s* Với các bài toán tối ưu hóa cực tiểu là tìm lời giải s * với giá nhỏ nhất, nghĩa là f(s*) ≤ f(s) với mọi lời giải s ⊆ S Ngược lại bài toán tối ưu hóa cực đại là tìm 20 lời giải s* với giá lớn nhất, nghĩa là f(s*) ≥ f(s) với mọi lời giải s ⊆ S Bài toán tối ưu hóa tổ hợp có thể chia 2 loại: Bài toán tĩnh và bài toán. .. toán tĩnh và bài toán động Bài toán tối ưu hóa tổ hợp tĩnh (Static Combinatorial optimization): Là bài toán tối ưu hóa tổ hợp trong đó cấu trúc (topology) và giá (cost) không thay đổi khi bài toán đang được giải quyết Ví dụ là bài toán người du lịch Khi thực hiện thuật toán để giải bài toán vị trí các thành phố, khoảng cách giữa các thành phố là không thay đổi Bài toán tối ưu hóa tổ hợp động (Dynamic... đề Giả sử bài toán A là NP-đầy đủ, bài toán B thuộc NP, và bài toán A qui dẫn được về bài toán B Khi đó bài toán B cũng là NP-đầy đủ 3.2.8 Lớp bài toán NP- khó (NP-Hard) Một cách ngắn gọn có thể hiểu bài toán NP-khó là bài toán mà không có thuật toán thời gian tính đa thức để giải nó trừ khi P = NP, mà chỉ có các thuật toán giải trong thời gian hàm mũ Sau đây là định nghĩa chính thức của bài toán NP-khó... và việc thực thi nó là bất khả thi Khi mà việc 19 tìm các lời giải tối ưu là bất khả thi thì người ta quan tâm đến các lời giải gần tối ưu mà chúng ta gọi đó là thuật toán xấp xỉ Giả sử chúng ta đang làm việc trên một bài toán tối ưu, ở đó mỗi giải pháp tiềm năng mang một chi phí dương, và chúng ta muốn giải pháp gần tối ưu Giả sử rằng một bài toán cần tìm ra lời giải với chi phí là f* là giá trị tối. .. optimization): Là bài toán tối ưu hóa tổ hợp trong đó cấu trúc (topology) và giá (cost) có thể thay đổi khi bài toán đang được giải quyết Ví dụ là bài toán định hướng trong mạng viễn thông, trong đó mô hình mạng và dung lượng yêu cầu luôn thay đổi 21 CHƯƠNG 4 THUẬT TOÁN BẦY KIẾN 4.1 Ý tưởng Năm 1989, nhà bác học người Đan Mạnh Deneubourg và các cộng sự công bố kết quả nghiên cứu về thí nghiệm trên đàn kiến Argentina... nhanh hơn trong cùng một khoảng thời gian Năm 1991, với cơ sở là kết quả của thí nghiệm nổi tiếng trên, nhà khoa học người Bỉ Marco Dorigo đã xây dựng thuật toán đàn kiến (Ant Algorithm, hay còn gọi là Hệ kiến, Ant System) đầu tiên ứng dụng vào giải bài toán người du lịch, và công bố trong luận án tiến sĩ của ông Trong bài báo này, các tác giả muốn giới thiệu về thuật toán cơ bản Ant-Cycle (thuật toán nổi... của ông năm 1991 Thuật toán AS hướng đến giải quyết bài toàn tìm đường đi tối ưu trong đồ thị Mạc dù thật toán AS vẫn còn thua kém các thuật toán tốt nhất trong việc giải bài toán trên, tuy nhiên ý tưởng của nó thật sự là mới mẻ mà tỏ ra triển vọng Về sau đã có rất nhiều nhà cải tiến thuật toán này do chinh Dorigo đề xuất, cũng như rất nhiều các thuật toán ACO khác đều dựa trên thật toán AS song đã... Chúng ta nói một thuật toán đối với bài toán có tỉ số là P nếu như với mọi đầu vào sau một thời gian tính đa thức chúng ta thu được một lời giải f mà so với lời giải tối ưu f* chúng ta có max (f/f*, f*/f) . MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN __ Bài thu hoạch THUẬT TOÁN VÀ GIẢI QUYẾT VẤN ĐỀ THUẬT TOÁN TỐI ƯU BẦY KIẾN TRONG BÀI TOÁN NGƯỜI DU LỊCH Giảng viên hướng dẫn: TS. Đỗ Văn Nhơn Học. Travelling Saleman Prolem). Bài toán người du lịch là một trong những bài toán kinh điển và khó trong tin học. Và cũng có rất nhiều giải pháp thuật toán cho bài toán này. Và trong báo cáo này sẽ mô. những bài toán khó. Thuật toán bầy kiến là một phương pháp Heuristic vận dụng những nguyên lý trên để tìm lời giải hợp lý cho bài toàn người du lịch. 6 CHƯƠNG 2 BÀI TOÁN Bài toán Người du lịch,

Ngày đăng: 23/05/2015, 21:03

Từ khóa liên quan

Mục lục

  • CHƯƠNG 1 GIỚI THIỆU

  • CHƯƠNG 2 BÀI TOÁN

  • CHƯƠNG 3 CƠ SỞ LÝ THUYẾT

    • 3.1 Các khái niệm cơ bản về đồ thị

      • 3.1.1 Định nghĩa đồ thị

      • 3.1.2 Các thuật ngữ cơ bản

      • 3.1.3 Đường đi, chu trình và đồ thị liên thông

      • 3.1.4 Chu trình Euler

      • 3.1.5 Chu trình Hamilton

        • 3.1.5.1 Định lý Bondy-Chvátal

        • 3.1.5.2 Định lý Bondy-Chvátal (1972)

        • 3.1.5.3 Định lý Dirac (1952)

        • 3.1.5.4 Định lý Ore (1960)

        • 3.1.6 Đồ thị có trọng số

        • 3.1.7 Các cấu trúc dữ liệu biểu diễn đồ thị

          • 3.1.7.1 Các cấu trúc danh sách

          • 3.1.7.2 Các cấu trúc ma trận

          • 3.2 Khái niệm về lớp các bài toán P và NP

            • 3.2.1 Khái niệm các loại thời gian tính

            • 3.2.2 Bằng chứng ngắn gọn dễ kiểm tra

            • 3.2.3 Khái niệm quy dẫn

            • 3.2.4 Lớp bài toán P.

            • 3.2.5 Lớp bài toán NP.

            • 3.2.6 Lớp bài toán Co-NP.

            • 3.2.7 Lớp bài toán NP-đầy đủ (NP-Complete).

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

Tài liệu liên quan