Tìm hiểu bài toán tìm đường đi ngắn nhất & ứng dụng giải thuật di truyền cho bài toán phát thư

47 1.1K 1
Tìm hiểu bài toán tìm đường đi ngắn nhất & ứng dụng giải thuật di truyền cho bài toán phát thư

Đ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 VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ Huỳnh Thanh Việt – CH1301114 NHẬN XÉT CỦA GIẢNG VIÊN THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ Huỳnh Thanh Việt – CH1301114 MỤC LỤC LỜI CÁM ƠN 1 LỜI NÓI ĐẦU 2 CHƢƠNG 1 : BÀI TOÁN TÌM ĐƢỜNG ĐI NGẮN NHẤT 3 I. Giới thiệu bài toán 3 II. Xây dựng giải pháp cho vấn đề 3 CHƢƠNG 2 : GIẢI THUẬT DI TRUYỀN 11 I. Tổng quan về thuật giải di truyền 11 II. Các thao tác cơ bản: 12 1. Mã hóa: 12 2. Phát sinh quần thể ban đầu: 13 3. Hàm đánh giá và hàm thích nghi: 13 4. Các toán tử di truyền: 14 5. Các tham số của thuật giải: 15 III. Các toán tử và kỹ thuật di truyền nâng cao 16 1. Thể lƣỡng bội (Diploidy), thể trội (Dominicance) và thể khuyết (Abeyance): 16 2. Thể đa bội (Multiploid): 18 3. Một số toán tử vi mô tái thiết lập thứ tự: 19 4. Vùng thích nghi (Niche) và sự hình thành loài (Speciation): 23 5. Tối ƣu hóa đa mục tiêu: 30 6. Tối ƣu tổ hợp: 31 CHƢƠNG 3: BÀI TOÁN PHÁT THƢ TP.HCM 32 I. Giới thiệu Bƣu Điện Thành Phố: 32 II. Bài toán lấy thƣ hằng ngày: 34 KẾT LUẬN 44 TÀI LIỆU THAM KHẢO 45 THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ Huỳnh Thanh Việt – CH1301114 Trang 1 LỜI CÁM ƠN Đầu tiên, em xin chân thành cám ơn thầy PGS.TS Đỗ Văn Nhơn đã truyền đạt hết sức nhiệt tình cho chúng em những kiến thức quý báu trong môn Thuật toán và phương pháp giải quyết vấn đề để em hoàn thành đề tài này. Em cũng xin gửi lời cám ơn chân thành đến các thầy cô trong trƣờng Đại học Công Nghệ Thông Tin đã tận tình giúp đỡ em trong thời gian học vừa qua. Xin cảm ơn tất bạn bè đã và đang động viên, giúp đỡ tôi trong quá trình học tập và hoàn thành đề tài này. TPHCM, ngày 09 tháng 10 năm 2014 Lớp CH08 Học viên thực hiện Huỳnh Thanh Việt THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ Huỳnh Thanh Việt – CH1301114 Trang 2 LỜI NÓI ĐẦU Cuộc sống của chúng ta luôn có rất nhiều vấn đề đƣợc đặt ra đòi hỏi ta cần phải giải quyết. Máy tính giúp chúng ta giải quyết các vấn đề một cách chính xác và thông minh. Sau khi hoàn thành môn học Thuật toán và phương pháp giải quyết vấn đề do thầy Đỗ Văn Nhơn phụ trách em đã nắm bắt đƣợc một số kiến thức quan trọng về thuật toán và phƣơng pháp để giải quyết những bài toán trong thực tế. Trong bài báo cáo này em xin đƣợc nêu một vài điểm tìm hiểm bài toán tìm đƣờng đi ngắn nhất và thuật giải di truyền. Từ thuật giải di truyền em đã xây dựng một chƣơng trình demo giải bài toán phát thƣ khu vực TPHCM. THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ Huỳnh Thanh Việt – CH1301114 Trang 3 CHƢƠNG 1 : BÀI TOÁN TÌM ĐƢỜNG ĐI NGẮN NHẤT I. Giới thiệu bài toán Bài toán đƣờng đi ngắn nhất trong mạng giao thông là bài toán tìm một đƣờng đi giữa hai điểm sao cho tổng các trọng số của các cạnh tạo nên đƣờng đi đó là nhỏ nhất. Hay nói một cách toán học là: Cho đơn đồ thị liên thông, có trọng số G=(V,E). Tìm khoảng cách d(a,b) từ một đỉnh a cho trƣớc đến một đỉnh b bất kỳ của G và tìm đƣờng đi ngắn nhất từ a đến b. II. Xây dựng giải pháp cho vấn đề Bước 1: Mô hình hóa vấn đề  Vấn đề thực tế và vấn đề cần giải quyết: o Khảo sát và thu thập dữ liệu, thông tin và tri thức (DIK):  Giao lộ và các con đƣờng  Thuộc tính đƣờng: độ dài, 1 chiều hay 2 chiều  Mật độ giao thông  Chất lƣợng con đƣờng, có cầu vƣợt? o Chọn lọc vấn đề và chuẩn hóa DIK + Xác định cơ sở DIK cho vấn đề.  Con đƣờng đƣợc hiểu là đƣờng đi từ giao lộ này đến giao lộ kế nó  Độ dài, 1 chiều/ 2 chiều o Mô tả giả thiết của vấn đề.  Điểm đầu/ xuất phát: giao lộ (bắt đầu)  Điểm cuối: Đích đến là 1 giao lộ nào đó o Mô tả mục tiêu hay kết luận của vấn đề: Đƣờng đi ngắn nhất từ điểm đầu đến điểm cuối o Mô tả các điều kiện hay ràng buộc liên quan: Không có THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ Huỳnh Thanh Việt – CH1301114 Trang 4  Xây dựng mô hình: o Mô hình cho DIK Đƣợc mô hình hóa bằng đồ thị có hƣớng, có trọng số dƣơng. Trong đó:  Các đỉnh: là các giao lộ  Cung: là đƣờng 1 chiều đi từ đỉnh này đến đỉnh kia  Trọng số: Độ dài con đƣờng (độ dài cạnh) G = (V, E) V = {x1, …, xn} E = {e1, …, en}; e  E liên kết xi và xj w: E  R + ; e  w (e) o Mô hình cho giả thiết.  Input: a  V; z  V  Output: Đƣờng đi P nối a tới z sao cho:  w(P) ≤ w(Q), Q nối a  z o Mô hình cho mục tiêu. (a, z)  P (a, z) o Mô hình cho các điều kiện và các ràng buộc.  Mô hình cho vấn đề tổng thể:  Dạng frame.  Dạng tổng quát.  Các dạng lai. Bước 2: Thiết kế thuật toán / thuật giải THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ Huỳnh Thanh Việt – CH1301114 Trang 5  Chọn lựa phương pháp giải quyết vấn đề dựa trên những phương pháp đã biết: Dùng thuật giải Dijkstra  Ý tưởng giải thuật: o Ta xác định đường đi ngắn nhất từ đỉnh nguồn s tới các đỉnh còn lại,qua các bƣớc, mỗi bƣớc ta xác định đƣờng đi ngắn nhất từ nguồn tới một đỉnh. o Ta lưu các đỉnh đã xác định đường đi ngắn nhất từ nguồn tới chúng vào tập S. Ban đầu tập S chỉ chứa một đỉnh nguồn s. o Chúng ta sẽ gọi đường đi từ nguồn s tới đỉnh v là đường đi đặc biệt, nếu đƣờng đi đó chỉ đi qua các đỉnh trong S, tức là các đƣờng đi (s = v 0 , v 1 ,…,v k-1 ,v k = v), trong đó v 0 , v 1 , …v k-1 ∈ S. o Một mảng D được sử dụng để lưu độ dài của đường đi đặc biệt, D[v] là độ dài đƣờng đi đặc biệt từ nguồn tới v. o Ban đầu vì S chỉ chứa một đỉnh nguồn s, nên ta lấy D[s] = 0, và D[v] = c(s,v) với mọi v ≠ s. o Tại mỗi bước ta sẽ chọn một đỉnh u không thuộc S mà D[u] nhỏ nhất và thêm u vào S, ta xem D[u] là độ dài đường đi ngắn nhất từ nguồn tới u (sau này ta sẽ chứng minh D[u] đúng là độ dài đƣờng đi ngắn nhất từ nguồn tới u). Sau khi thêm u vào S, ta xác định lại các D[v] với v ở ngoài S. nếu độ dài đƣờng đi đặc biệt qua đỉnh u (vừa đƣợc chọn) để tới v nhỏ hơn D[v] thì ta lấy D[v] là độ dài đƣờng đi đó. o Bước trên đây được lặp lại cho tới khi S gồm tất cả các đỉnh của đồ thị, và lúc đó mảng D[u] sẽ lƣu độ dài đƣờng đi ngắn nhất từ nguồn tới u, với mọi u ∈V. Dijktra (G,s)  Biểu diễn thuật toán dạng mã giả (nêu thuật giải đã có): // Khởi tạo //Tìm đƣờng đi ngắn nhất trong đồ thị G = (V,E) từ đỉnh nguồn s { Khởi tạo tập S chỉ chứa đỉnh nguồn s; (1) for (mỗi đỉnh v∈V) D[v] = c(s,v); D[s] = 0; THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ Huỳnh Thanh Việt – CH1301114 Trang 6 while (V – S ≠ Ǿ ) { (2) chọn đỉnh u ∈ V - S mà D[u] nhỏ nhất; S = S U {u}; // bổ sung u vào S for ( mỗi v không ∈ V - S) // xác định lại D[v] (3) if (D[u] + c(u,v) < D[v]) D[v] = D[u] + c(u,v); } } Bước 3: Chứng minh tính đúng đắn : Chúng ta sẽ chứng minh rằng, khi kết thúc thuật toán, tức là khi S = V, thì D[u] sẽ là độ dài đướng đi ngắn nhất từ đỉnh nguồn tới u với mọi u ∈ S = V. Điều này đƣợc chứng minh bằng quy nạp theo cỡ của tập S. Khi S chỉ chứa đỉnh nguồn s thì D[s] = 0, đƣơng nhiên giả thiết quy nạp đúng. Giả sử rằng tại một thời điểm nào đó ta đã có D[a] là độ dài đƣờng đi ngắn nhất từ nguồn tới a, với mọi đỉnh a ∈ S, và u là đỉnh đƣợc chọn bởi lệnh (2) trong thuật toán để bổ sung vào S. Ta cần chứng minh rằng khi đó D[u] là độ dài đƣờng đi ngắn nhất từ nguồn tới u. Mỗi khi bổ xung thêm vào tập S một đỉnh mới (lệnh(2)), thì các đỉnh v còn lại không nằm trong S đƣợc xác định lại D[v] bởi lệnh (3). Từ đó bằng quy nạp, dễ dàng chứng minh đƣợc nhận xét sau: Nếu a là đỉnh bất kỳ trong S và b là đỉnh bất kỳ ngoài S thì D[b] <= D[a] + c(a,b). Giả sử ta có một đƣờng đi bất kỳ từ nguồn s tới u, độ dài của nó đƣợc ký hiệu là d(s,u). Giả sử trên đƣờng đi đó a là đỉnh sau cùng ở trong S và b là đỉnh đầu tiên ở ngoài S nhƣ trong hình vẽ sau: THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ Huỳnh Thanh Việt – CH1301114 Trang 7 Theo cách chọn đỉnh u (lệnh(2)), D[u] là nhỏ nhất trong số các đỉnh ở ngoài S. Vì vậy, D[u] <= D[b]. Theo nhận xét đã đƣa ra ở trên, D[b] <= D[a] + c(a,b). Mặt khác, theo giả thiết quy nạp, D[a] là độ dài đƣờng đi ngắn nhất từ nguồn tới a. Do đó, nếu ký hiệu d(s,a) là độ dài đoạn đƣờng từ s tới a, còn d(b,u) là độ dài đoạn đƣờng từ b tới u, ta có: D[u] <= D[b] <= D[a] + c(a,b) <= d(s,a) + c(a,b) <= d(s,a) + c(a,b) + d(b,s) = d(s,u) Nhƣ vậy ta đã chứng minh đƣợc D[u] nhỏ hơn hoặc bằng độ dài d(s,u) của đƣờng đi bất kỳ từ nguồn s tới u. Trong thuật toán Dijkstra, tại mỗi bƣớc ta cần chọn một đỉnh u không nằm trong S mà D[u] là nhỏ nhất (lệnh (2)), và sau đó với các đỉnh v còn lại không nằm trong S, D[v] có thể bị giảm đi bởi lệnh (3). Vì vậy để cho lệnh (2) đƣợc thực hiện hiệu quả, ta có thể sử dụng hàng ƣu tiên P để cài đặt tập đỉnh V - S với khoá của đỉnh v ∈ V - S là D[v]. Chúng ta có thuật toán sau: Dijkstra(G,s) { (1) for (mỗi đỉnh v ∈ V) D[v] = c(s,v); D[s] = 0; (2) Khởi tạo hàng ƣu tiên P chứa các đỉnh v ≠ s với khoá là D[v]; (3) while (P không rỗng) { (4) u = DeleteMin(P); (5) for (mỗi đỉnh v kề u) if (D[u] + c(u,v) < D[v]) { D[v] = D[u] + c(u,v); (6) DecreaseKey(P,v,D[v]); } } } THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ Huỳnh Thanh Việt – CH1301114 Trang 8 Bước 4: Phân tích thuật toán / thuật giải  Lệnh lặp (1) cần thời gian O(|V|), trong đó |V| ký hiệu số đỉnh của đồ thị. Ta có thể khởi tạo ra hàng ƣu tiên P (lệnh(2)) với thời gian là O(|V|)  Số lần lặp trong lệnh lặp (3) là |V|.  Trong mỗi lần lặp, phép toán DeleteMin đòi hỏi thời gian O(log|V|); do đó, tổng thời gian thực hiện các lệnh (4) là O(|V|log|V|).  Tổng số lần lặp trong các lệnh lặp (5) trong tất cả các lần lặp của lệnh lặp (3) tối đa là số cung của đồ thị |E|.  Trong mỗi lần lặp đó, nhiều nhất là một phép toán DecreaseKey (lệnh(6)) đƣợc thực hiện.  Phép toán DecreaseKey chỉ cần thời gian O(log(|V|) khi ta cài đặt hàng ƣu tiên P bởi cây thứ tự bộ phận . Vì vậy, thời gian thực hiện các lệnh lặp (5) trong các lần lặp của lệnh lặp (3) là O(|E|log|V|).  Tổng kết lại, thời gian chạy của thuật toán Dijkstra, nếu ta sử dụng hàng ƣu tiên đƣợc cài đặt bởi cây thứ tự bộ phận, là O(|V|log|V| + |E|log|V|). Do đó thuật toán có độ phức tạp O(n2). Bước 5: Nghiên cứu cải thiện, nâng cao hiệu quả thuật giải Cải tiến: áp dụng thuật giải A*  Mô tả: A* lƣu giữ một tập các lời giải chƣa hoàn chỉnh, nghĩa là các đƣờng đi qua đồ thị, bắt đầu từ nút xuất phát. Tập lời giải này đƣợc lƣu trong một hàng đợi ƣu tiên (priority queue). Thứ tự ƣu tiên gán cho một đƣờng đi đƣợc quyết định bởi hàm . Trong đó, là chi phí của đƣờng đi cho đến thời điểm hiện tại, nghĩa là tổng trọng số của các cạnh đã đi qua. là hàm đánh giá heuristic về chi phí nhỏ nhất để đến đích từ . Ví dụ, nếu "chi phí" đƣợc tính là khoảng cách đã đi qua, khoảng cách đƣờng chim bay giữa hai điểm trên một bản đồ là một đánh giá heuristic cho khoảng cách còn phải đi tiếp. Hàm có giá trị càng thấp thì độ ƣu tiên của càng cao (do đó có thể sử dụng một cấu trúc heap tối thiểu để cài đặt hàng đợi ưu tiên này) [...]... để tìm kiếm lời giải cho các bài toán tối ƣu tổ hợp hay các bài toán chƣa có thuật toán để tìm chính xác lời giải Thuật giải di truyền sử dụng ngôn ngữ máy tính để mô phỏng lại quá trình tiến hóa tự nhiên của một tập các đối tƣợng trừu tƣợng (gọi là quần thể) Mỗi đối tƣợng trừu tƣợng (gọi là các nhiễm sắc thể) đại di n cho một giải pháp khả dĩ (gọi là cá thể) của bài toán tối ƣu hóa Ngoài ra, mỗi giải. .. xây dựng một giải pháp theo sự hoán vị và kết hợp đó Các toán tử và kỹ thuật nâng cao đã đƣợc trình bày trên đây dẫn đến sự cải thiện đáng kể hiệu quả và năng lực của thuật giải di truyền Sau đây là chƣơng trình minh họa cách giải một số bài toán dùng thuật giải di truyền và toán tử trên Huỳnh Thanh Việt – CH1301114 Trang 31 THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ CHƢƠNG 3: BÀI TOÁN PHÁT THƢ TP.HCM... P(T); Đánh giá độ thích nghi cho các cá thể trong P(T); end end Các toán tử và kỹ thuật đƣợc áp dụng trong thủ tục trên sẽ đƣợc mô tả chi tiết hơn trong các phần tiếp theo II Các thao tác cơ bản: Để giải một bài toán tối ƣu bằng cách áp dụng thuật giải di truyền, ta thƣờng phải giải quyết 5 vấn đề:  Biểu di n di truyền hay chọn cách mã hóa các lời giải của bài toán  Phát sinh quần thể ban đầu P(0)... của lời giải  Áp dụng các toán tử di truyền (lai ghép, đột biến) để tạo ra các cá thể mới  Xác định các tham số đầu vào của thuật giải Chẳng hạn nhƣ kích thƣớc quần thể, xác suất lai ghép, xác suất đột biến,… 1 Mã hóa: Mã hóa là việc xác định cách thức biểu di n di truyền đối với lời giải của bài toán Việc mã hóa phụ thuộc nhiều vào từng bài toán cụ thể Một số cách biểu di n thông dụng:  Biểu di n... hợp của các mục theo một số ràng buộc Một đặc trƣng chung của các bài toán là nếu hoán vị và/hoặc tổ hợp có thể xác định đƣợc thì giải pháp có thể dễ dàng dẫn xuất ra bằng một thủ tục cụ thể cho bài toán Vì vậy, phƣơng pháp tiếp cận chung cho việc áp dụng thuật giải di truyền đối với các vấn đề này là:  Sử dụng thuật giải di truyền để phát triển một hoán vị và/hoặc tổ hợp thích hợp của các mục đƣợc... tối ƣu, nghĩa là hàm cho kết quả là chi phí chính xác để đi từ tới đích Nói cách khác, sai số của h không nên tăng nhanh hơn logarit của "heuristic hoàn hảo" - hàm trả về khoảng cách thực từ x tới đích Huỳnh Thanh Việt – CH1301114 Trang 10 THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ CHƢƠNG 2 : GIẢI THUẬT DI TRUYỀN I Tổng quan về thuật giải di truyền Thuật giải di truyền là một kỹ thuật của khoa học... khác… II Bài toán lấy thƣ hằng ngày: 1 Xác định vấn đề: Cho một danh sách gồm một số bƣu cục trong thành phố và khoảng cách giữa chúng , nhiệm vụ là phải tìm đƣờng đi ngắn nhất có thể, mà chỉ ghé mỗi bƣu cục đúng một lần và cuối cùng trở về bƣu cục trung tâm Trong báo cáo này, em xin sử dụng thuật giải di truyền trong khai phá dữ liệu phân lớp để tìm tuyến đƣờng ngắn nhất Các bƣớc thực hiện giải thuật: ... nữa để bài toán hƣớng đến giải pháp tối ƣu Nhƣ vậy, thuật giải di truyền đối mặt với một vấn đề khó khăn Đó là làm thế nào để quần thể có thể hội tụ về một giải pháp mà vẫn duy trì tính đa dạng Những toán tử di truyền gây ra hội tụ - nhƣ phép lai hay sinh sản - phải đƣợc thay đổi bằng cách nào đó Một hạn chế khác đối với thuật giải di truyền đó là thời gian tham gia vào việc dẫn xuất ra một giải pháp... pháp tham lam (greedy) Tùy vào đặc trƣng của từng bài toán cụ thể, ta có thể phát sinh ra các cá thể sao cho có khả năng gần với lời giải nhất có thể Ví dụ, với bài toán ngƣời du lịch, tại gen thứ k, ta chọn đỉnh gần nhất với đỉnh trong gen thứ k-1 và chƣa đƣợc chọn 3 Hàm đánh giá và hàm thích nghi: Trong hầu hết các bài toán áp dụng thuật giải di truyền, ta quy về việc tối ƣu cực đại (hoặc cực tiểu)... neural, tìm kiếm leo đồi, các phƣơng pháp dựa trên luật v.v , thuật giải di truyền nặng về mặt ngẫu nhiên và không đảm bảo sẽ hƣớng đến kết quả trong một thời gian xác định Việc xảy ra một tỉ lệ lớn những lần chạy mà không tìm ra giải pháp tối ƣu là bình thƣờng đối với thuật giải di truyền Để giải quyết vấn đề này, ngƣời ta đề xuất hai khái niệm, đó là vùng thích nghi và loài Trong nhiều bài toán thực . Trang 3 CHƢƠNG 1 : BÀI TOÁN TÌM ĐƢỜNG ĐI NGẮN NHẤT I. Giới thiệu bài toán Bài toán đƣờng đi ngắn nhất trong mạng giao thông là bài toán tìm một đƣờng đi giữa hai đi m sao cho tổng các trọng. trọng về thuật toán và phƣơng pháp để giải quyết những bài toán trong thực tế. Trong bài báo cáo này em xin đƣợc nêu một vài đi m tìm hiểm bài toán tìm đƣờng đi ngắn nhất và thuật giải di truyền. . 2 CHƢƠNG 1 : BÀI TOÁN TÌM ĐƢỜNG ĐI NGẮN NHẤT 3 I. Giới thiệu bài toán 3 II. Xây dựng giải pháp cho vấn đề 3 CHƢƠNG 2 : GIẢI THUẬT DI TRUYỀN 11 I. Tổng quan về thuật giải di truyền 11 II.

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

Từ khóa liên quan

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

Tài liệu liên quan