Tính toán đường đi trong môi trường giao thông động

69 214 0
Tính toán đường đi trong môi trường giao thông động

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2 ĐỖ THỊ THANH TÍNH TOÁN ĐƯỜNG ĐI TRONG MÔI TRƯỜNG GIAO THÔNG ĐỘNG LUẬN VĂN THẠC SĨ MÁY TÍNH HÀ NỘI, 2014 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2 ĐỖ THỊ THANH TÍNH TOÁN ĐƯỜNG ĐI TRONG MÔI TRƯỜNG GIAO THÔNG ĐỘNG Chuyên ngành: Khoa học máy tính Mã số: 60 48 01 01 LUẬN VĂN THẠC SĨ MÁY TÍNH Người hướng dẫn khoa học: PGS.TS Đỗ Năng Toàn HÀ NỘI, 2014 1 LỜI CẢM ƠN Trong quá trình thực hiện luận văn này, em luôn nhận được sự hướng dẫn, chỉ bảo tận tình của PGS. TS Đỗ Năng Toàn, Phó Viện trưởng - Viện Công nghệ thông tin là cán bộ trực tiếp hướng dẫn khoa học cho em. Em xin chân thành cảm ơn sự giúp đỡ quý báu của thầy. Em xin chân thành cảm ơn các Thầy, Cô giáo trong khoa Công nghệ thông tin và các cán bộ, nhân viên phòng Đào tạo Sau đại học, trường Đại học sư phạm Hà Nội 2 cùng các anh chị đồng nghiệp trong cơ quan đã tạo những điều kiện thuận lợi cho tôi học tập và nghiên cứu tại trường Đại học Sư Phạm Hà Nội 2. Xin chân thành cảm ơn các anh, các chị và các bạn học viên lớp Cao học K16KHMT- trường Đại học sư phạm Hà Nội 2 đã luôn động viên, giúp đỡ và nhiệt tình chia sẻ với tôi những kinh nghiệm học tập, công tác trong suốt khoá học. Cuối cùng, tôi muốn gửi lời cảm ơn tới gia đình, bạn bè, những người thân yêu luôn bên cạnh và động viên tôi trong suốt quá trình thực hiện khóa luận tốt nghiệp. Mặc dù rất cố gắng, song luận văn này không thể tránh khỏi những thiếu sót, kính mong được sự chỉ dẫn của các quý thầy cô và các bạn. Hà Nội, ngày 12 tháng 12 năm 2014 Tác giả Đỗ Thị Thanh 2 LỜI CAM ĐOAN Tôi xin cam đoan rằng số liệu và kết quả nghiên cứu trong luận văn này là trung thực và không trùng lặp với các đề tài khác. Tôi cũng xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn này đã được cảm ơn và các thông tin trích dẫn trong luận văn đã được chỉ rõ nguồn gốc. Hà Nội, ngày 12 tháng 12 năm 2014 Tác giả Đỗ Thị Thanh 3 MỤC LỤC LỜI CẢM ƠN 1 LỜI CAM ĐOAN 2 DANH MỤC CÁC HÌNH 4 MỞ ĐẦU 5 NỘI DUNG 7 CHƯƠNG 1: KHÁI QUÁT VỀ GIẢI THUẬT TÌM ĐƯỜNG ĐI 7 1.1. Khái quát về giải thuật tìm đường 7 1.1.1. Khái niệm cơ bản về lý thuyết đồ thị 7 1.1.2. Các thuật toán tìm đường 27 1.2. Bài toán tìm đường đi trong môi trường giao thông động 37 CHƯƠNG 2. TÍNH TOÁN ĐƯỜNG ĐI TRONG MÔI TRƯỜNG GIAO THÔNG ĐỘNG 38 2.1. Heuristic 38 2.1.1. Heuristic trong thuật toán A* 38 2.1.2. Tốc độ hay sự chính xác? 39 2.1.3. Tỉ lệ 41 2.1.4. Heuristic chính xác 41 2.1.5. Heuristic cho bản đồ chia lưới 42 2.2. Các biến thể của A* 49 2.2.1. Giới hạn kích thước tập Open 49 2.2.2. Lặp theo chiều sâu 49 2.2.3. Trọng số động 50 2.2.4. Tìm kiếm theo chiều rộng 50 2.2.5. Tìm kiếm hai hướng 51 2.3. Cách thức xử lý với vật cản di động 52 2.3.1. Tính toán lại đường đi 52 2.3.2. Nối ghép đường đi 53 2.3.3. Quan sát thay đổi của địa hình 55 2.3.4. Đoán nhận vật cản di chuyển 55 CHƯƠNG 3. CHƯƠNG TRÌNH THỰC NGHIỆM 57 3.1. Phân tích và thiết kế lựa chọn công cụ 57 3.1.1. Phác thảo chương trình 57 3.1.2. Không gian bộ nhớ cần để tính toán lại đường đi 58 3.2. Một số kết quả của chương trình 62 KẾT LUẬN 65 TÀI LIỆU THAM KHẢO 67 4 DANH MỤC CÁC HÌNH Hình1.1: Đơn đồ thị, giả đồ thị. 8 Hình 1.2: Đồ thị có hướng và đa đồ thị có hướng 9 Hình 1.3: Bậc của đồ thị 10 Hình 1.4: Bậc của đồ thị có hướng 11 Hình 1.5: Biểu diễn đồ thị vô hướng bằng ma trận liền kề 12 Hình 1.6: Biểu diễn đồ thị có hướng bằng ma trận liền kề 13 Hình 1.7: Biểu diễn đồ thị bằng ma trận liên thuộc 13 Hình 1.8: Biểu diễn đường đi sơ cấp 14 Hình 1.9: Biểu diễn đồ thị liên thông và không liên thông 14 Hình1.10: Biểu diễn các đỉnh cắt và cầu. 15 Hình 1.11: Đồ thị liên thông mạnh và liên thông yếu 18 Hình 1.12: Biểu diễn Đường đi Euler và đồ thị Euler 19 Hình 1.13: Đồ thị Euler và nửa Euler 20 Hình 1.14: Xây dựng đường đi 20 Hình 1.15: Xây dựng chu trình Euler 21 Hình 1.16: Xây dựng đường đi 22 Hình 1.17: Chu trình sơ cấp chứa tất cả các đỉnh của đồ thị 23 Hình 1.18: Chu trình Hamilton 25 Hình 1.19: Đồ thị Hamilton 26 Hình 1.20: Đồ thị phân đôi 27 Hình 1.21: Lưới đồ thị trong thuật toán tìm đường 27 Hình 1.22: Đồ thị trong thuật toán tìm đường Dijkstra 28 Hình1.23: Đồ thị trong thuật toán tìm đường BFS. 29 Hình 1.24: Một tình huống vật cản có hình dạng chữ “U” đối với Dijkstra 30 Hình 1.25: Một tình huống vật cản có hình dạng chữ “U” đối với BFS 30 Hình 1.26: Trường hợp đơn giản khi áp dụng A* 35 Hình 1.27: Thuật toán A* với trường hợp vật cản có hình dạng chữ “U” 36 Hình 2.1: Heuristic sử dụng khoảng cách Manhattan 42 Hình 2.2: Heuristic sử dụng khoảng cách Euclide 44 Hình 2.3: Heuristic sử dụng trung bình phương khoảng cách Euclide 44 Hình 2.4: Heuristic chưa sử dụng công cụ gỡ rối 45 Hình 2.5: Heuristic sử dụng công cụ gỡ rối trong trường hợp đơn giản 46 Hình 2.6: Heuristic sử dụng công cụ gỡ rối trong khi có vật cản 47 Hình 2.7: Heuristic sử dụng công cụ gỡ rối khác 48 Hình 2.8: Heuristic sử dụng công cụ gỡ rối trong trường hợp có vật cản 48 Hình 2.9: Tránh vật cản động bằng phương pháp ghép nối đường đi 53 Hình 3.1: Giao diện chương trình đề mô 62 Hình 3.2: Chức năng tìm đường đi cho đối tượng 63 Hình 3.3: Chức năng tạo khung cảnh 64 Hình 3.4: Thông tin tác giả 64 5 MỞ ĐẦU 1. Lý do chọn đề tài Trong thực tế ta thường sử dụng đến mạng lưới điện thoại, giao thông, mạng máy tính. Chúng giữ một vị trí rất quan trọng trong cuộc sống. Việc nghiên cứu và phát triễn kỹ thuật luôn được chú trọng, nhằm giải quyết các công việc trong những lĩnh vực này một cách linh hoạt, ví dụ như giảm chi phí, ít tốn kém thời gian và còn nhiều hiệu quả khác. Để giải quyết những tổn hao đó, việc nghiên cứu phải dựa trên ngành toán học đó là lý thuyết đồ thị (GRAPH THEORY) hay nói một cách chung lý thuyết đồ thị là một công cụ toán học xây dựng mô hình cho các vấn đề trên. Như ta đã biết một mạng điện thoại, mạng máy tính hay một mạng thông tin nói chung thường có một cấu trúc chung đó là các điểm liên hệ với nhau. Để mô hình sự liên hệ này, trong toán học lý thuyết đồ thị sẽ biễu diển bởi một đồ thị, trong đó đỉnh của đồ thị là điểm thông tin, cạnh của đồ thị là sự liên hệ của các điểm thông tin, số được gán trên cạnh của đồ thị và biễu diễn khoảng cách hay chi phí các nút thông tin. Bài toán tìm đường đi ngắn nhất là một bài toán lớn và được ứng dụng trong nhiều lĩnh vực, đặc biệt là tìm đường đi trong hệ thống giao thông. Đã có nhiều giải thuật tuần tự cũng như song song được đưa ra để giải quyết vấn đề này. Bên cạnh đó còn có giải thuật tìm đường tĩnh và tìm đường động cũng được đưa ra giải quyết vấn đề này. Bài toán tìm đường đi có nhiều dạng, chẳng hạn như tìm đường đi của đồ thị có hướng, vô hướng, trọng số của đồ thị có thể là khoảng cách giữa hai node hay chi phí để đi từ node này đến node kia. Để hiểu được các qui tắc, giảm được thời gian và chi phí trên các ứng dụng thực tế cũng như lý thuyết, em đã chọn đề tài “Tính toán đường đi trong môi trường giao thông động” làm luận văn tốt nghiệp của mình. 2. Mục đích nghiên cứu - Đề tài nghiên cứu về những giải thuật tìm đường đi ngắn nhất giữa hai đỉnh nguồn (X) và đỉnh đích (Y) nào đó. 6 - Nghiên cứu về tìm đường đi tại một nút theo phương án tối ưu. - Nghiên cứu và đưa ra một vài phương pháp đường đi trong môi trường giao thông động. 3. Nhiệm vụ nghiên cứu - Nghiên cứu, tìm hiểu các giải thuật tìm đường đi ngắn nhất - Nghiên cứu tìm hiểu về đường đi trong môi trường giao thông động - Thực nghiệm bằng phần mềm hỗ trợ - Đưa ra và triển khai một vài biện pháp nhằm đưa ra đường đi hiệu quả nhất trong môi trường giao thông động. 4. Đối tượng và phạm vi nghiên cứu - Nghiên cứu, tìm hiểu các giải thuật tìm đường đi ngắn nhất. - Nghiên cứu và kết hợp một vài phương pháp tìm đường đi hiệu quả nhất trong môi trường giao thông động. 5. Phương pháp nghiên cứu - Thu thập các tài liệu cần nghiên cứu. - Nghiên cứu lý thuyết các tài liệu về các phương pháp tìm đường đi trong môi trường giao thông động. - Thực nghiệm một số phương pháp tính toán đường đi trong môi trường giao thông động. - Thảo luận và tiếp thu ý kiến đóng góp của thầy cô, bạn bè và đồng nghiệp. 7 NỘI DUNG Chương 1: KHÁI QUÁT VỀ GIẢI THUẬT TÌM ĐƯỜNG ĐI 1.1. Khái quát về giải thuật tìm đường 1.1.1. Khái niệm cơ bản về lý thuyết đồ thị Lý thuyết đồ thị là ngành khoa học được phát triển từ lâu nhưng lại có nhiều ứng dụng hiện đại. Những ý tưởng cơ bản của nó được đưa ra từ thế kỷ thứ 18 bởi nhà toán học Thụy Sĩ tên là Leonard Euler. Ông đã dùng đồ thị để giải quyết bài toán cầu Konigsberg nổi tiếng. Đồ thị được dùng để giải quyết nhiều bài toán khác nhau. Ví dụ dùng đồ thị để xác định xem có thực hiện được một mạch điện trên một bảng điện phẳng không. Chúng ta cũng có thể phân biệt hai hợp chất hóa học có cùng công thức phân tử nhưng có cấu trúc khác nhau nhờ đồ thị. Chúng ta cũng có thể xác định xem hai máy tính có được nối với nhau bằng một đường truyền thông hay không nếu dùng mô hình đồ thị mạng máy tính. Đồ thị với các trọng số được gán cho các cạnh của nó có thể dùng để giải các bài toán như bài toán: “ Tìm đường đi ngắn nhất” giữa hai thành phố trong một mạng giao thông. 1.1.1.1. Các định nghĩa về đồ thị [3] Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnh đó. Người ta thường ký hiệu đồ thị G = (V,E), trong đó V là tập hợp các đỉnh (Verterx), E là tập hợp các cạnh (Edge). Người ta phân loại đồ thị theo các đặc tính và số cạnh nối các cặp đỉnh của đồ thị. * Định nghĩa 1: Một đơn đồ thị G = (V, E) gồm một tập khác rỗng V mà các phần tử của nó gọi là các đỉnh và một tập E mà các phần tử của nó gọi là các cạnh, đó là các cặp không có thứ tự của các đỉnh phân biệt. * Định nghĩa 2: Một đa đồ thị G = (V, E) gồm một tập khác rỗng V mà các phần tử của nó gọi là các đỉnh và một họ E mà các phần tử của nó gọi là các cạnh, 8 đó là các cặp không có thứ tự của các đỉnh phân biệt. Hai cạnh được gọi là cạnh bội hay song song nếu chúng cùng tương ứng với một cặp đỉnh. Rõ ràng mỗi đơn đồ thị là đa đồ thị, nhưng không phải đa đồ thị nào cũng là đơn đồ thị. * Định nghĩa 3: Một giả đồ thị G = (V, E) gồm một tập khác rỗng V mà các phần tử của nó gọi là các đỉnh và một họ E mà các phần tử của nó gọi là các cạnh, đó là các cặp không có thứ tự của các đỉnh (không nhất thiết là phân biệt). Với vV, nếu (v,v)E thì ta nói có một khuyên tại đỉnh v. Tóm lại, giả đồ thị là loại đồ thị vô hướng tổng quát nhất vì nó có thể chứa các khuyên và các cạnh bội. Đa đồ thị là loại đồ thị vô hướng có thể chứa cạnh bội nhưng không thể có các khuyên, còn đơn đồ thị là loại đồ thị vô hướng không chứa cạnh bội hoặc các khuyên. Đơn đồ thị Giả đồ thị Hình 1.1 Đơn đồ thị, giả đồ thị * Định nghĩa 4: Một đồ thị có hướng G = (V, E) gồm một tập khác rỗng V mà các phần tử của nó gọi là các đỉnh và một tập E mà các phần tử của nó gọi là các cung, đó là các cặp có thứ tự của các phần tử thuộc V. * Định nghĩa 5: Một đa đồ thị có hướng G = (V, E) gồm một tập khác rỗng V mà các phần tử của nó gọi là các đỉnh và một họ E mà các phần tử của nó gọi là các cung, đó là các cặp có thứ tự của các phần tử thuộc V. v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 1 v 2 v 3 v 4 v 5 v 6 [...]... thuộc với nó là không liên thông Giả sử G2, G3 là hai trong các thành phần liên thông của G1 Lấy u là đỉnh trong G2 và v là đỉnh trong G3 Do u, v thuộc hai thành phần liên thông khác nhau, nên trong G1 các đỉnh u, v không liên thông Nhưng trong G các đỉnh u, v lại liên thông, nên mọi đường đi nối u, v đều phải đi qua đỉnh x Đi u kiện đủ: Giả sử mọi đường đi nối u, v đều đi qua đỉnh x, nên nếu bỏ đỉnh... liên thông luôn có đường đi sơ cấp Chứng minh: Giả sử u và v là hai đỉnh phân biệt của một đồ thị liên thông G Vì G liên thông nên có ít nhất một đường đi giữa u và v Gọi x0, x1, , xn, với x0=u và xn=v, là dãy các đỉnh của đường đi có độ dài ngắn nhất Đây chính là đường đi sơ cấp cần tìm Thật vậy, giả sử nó không là đường đi đơn, khi đó xi=xj với 0  i < j Đi u này có nghĩa là giữa các đỉnh u và v có đường. .. một đỉnh Đường đi hoặc chu trình gọi là đơn nếu nó không chứa cùng một cạnh (hoặc cung) 14 quá một lần Một đường đi hoặc chu trình không đi qua đỉnh nào quá một lần (trừ đỉnh đầu và đỉnh cuối của chu trình là trùng nhau) được gọi là đường đi hoặc chu trình sơ cấp Rõ ràng rằng một đường đi (t.ư chu trình) sơ cấp là đường đi (t.ư chu trình) đơn x y z w v u Hình 1.8 Biểu diễn đường đi sơ cấp Trong đơn... G có tính chất là với hai đỉnh phân biệt bất kỳ u và v, có một và chỉ một trong hai cung (u,v) hoặc (v,u), đồ thị như thế được gọi là đồ thị có hướng đầy đủ Từ mệnh đề dưới đây, G là một đồ thị nửa Hamilton Khi đó đường đi Hamilton trong G cho ta sự sắp xếp cần tìm Đường đi Hamilton tương tự đường đi Euler trong cách phát biểu: Đường đi Euler qua mọi cạnh (cung) của đồ thị đúng một lần, đường đi Hamilton... so với thuật toán Dijkstra Hình 1.23 Đồ thị trong thuật toán tìm đường BFS 30 Tuy vậy cả hai ví dụ mà ta vừa xem xét đều chỉ là những ví dụ hết sức đơn giản, khi mà không hề tồn tại bất kì vật cản nào trên đường đi, và đường đi ngắn nhất chỉ là một đường thẳng Hãy cùng xem xét tới trường hợp vật cản có dạng hình chữ “U” như trong hình 1.24, thuật toán Dijkstra sẽ thực hiện lượng tính toán nhiều hơn... đường đi, và cố gắng di chuyển về hướng đi m đích mặc dù đó không phải là hướng đi đúng đắn Khi mà thuật toán này chỉ quan tâm tới chi phí còn phải trả để đi tới đi m đích mà không quan tâm tới chi phí đã phải trả trên đường, và nó vẫn tiếp tục thực hiện đường đi kể cả khi đường đi này đã trở nên quá dài Từ ý tưởng liệu có thể tìm ra được một thuật toán khác kết hợp được các ưu đi m của hai thuật toán. .. nghĩ này thì thuật toán A* đã được đề xuất, thuật toán này sử dụng phép ước lượng của thuật toán BFS và thực hiện tính toán tương tự như thuật toán Dijkstra Hơi khác một chút so với cách thức ước lượng của thuật toán BFS khi mà thuật toán này luôn đưa ra một đường đi xấp xỉ để giải quyết vấn đề mà không đảm bảo đuợc chắc chắn đường đi đó có phải là tốt nhất hay không, còn trong thuật toán A* thì phép... thuật toán nhưng trong cả thuật toán A* thì nó có thể đảm bảo được sự đúng đắn của mình 1.1.2.3 Thuật toán A* Trong phần này tôi sẽ tập trung vào phân tích thuật toán A* Đây là thuật toán thông dụng nhất để giải quyết bài toán tìm đường bởi vì nó khá linh hoạt và có thể giải quyết được khá nhiều trường hợp A* cũng giống như những thuật toán tìm kiếm bằng đồ thị khác, nó có thể thực hiện tìm kiếm trong. .. ta đường đi ngắn nhất Hình 1.24 Một tình huống vật cản có hình dạng chữ "U" đối với Dijkstra Còn trong trường hợp này, thuật toán BFS thì ngược lại thực hiện tính toán ít hơn tuy nhiên kết quả thì lại rất không tốt Hình 1.25 Một tình huống vật cản có hình dạng chữ "U" đối với BFS 31 Vấn đề là ở chỗ thuật toán BFS dựa trên chính tính chất tập trung hướng đi của mình về phía đi m đích để xây dựng đường. .. Đồ thị có hướng G được gọi là liên thông mạnh nếu với hai đỉnh phân biệt bất kỳ u và v của G đều có đường đi từ u tới v và đường đi từ v tới u Đồ thị có hướng G được gọi là liên thông yếu nếu đồ thị vô hướng nền của nó là liên thông Đồ thị có hướng G được gọi là liên thông một chiều nếu với hai đỉnh phân biệt bất kỳ u và v của G đều có đường đi từ u tới v hoặc đường đi từ v tới u 18 u v w u v w x y . TÌM ĐƯỜNG ĐI 7 1.1. Khái quát về giải thuật tìm đường 7 1.1.1. Khái niệm cơ bản về lý thuyết đồ thị 7 1.1.2. Các thuật toán tìm đường 27 1.2. Bài toán tìm đường đi trong môi trường giao thông. đường đi trong môi trường giao thông động 37 CHƯƠNG 2. TÍNH TOÁN ĐƯỜNG ĐI TRONG MÔI TRƯỜNG GIAO THÔNG ĐỘNG 38 2.1. Heuristic 38 2.1.1. Heuristic trong thuật toán A* 38 2.1.2. Tốc độ hay sự chính. BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2 ĐỖ THỊ THANH TÍNH TOÁN ĐƯỜNG ĐI TRONG MÔI TRƯỜNG GIAO THÔNG ĐỘNG LUẬN VĂN THẠC SĨ MÁY TÍNH HÀ

Ngày đăng: 04/09/2015, 09:53

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

Tài liệu liên quan