Hình 4.1 Sơ đồ User Case 4.1.2 Đặc tả chi tiết
4.1.2.1 Use Case “Chọn địa điểm”
Use case này mơ tả cách chọn địa điểm du lịch
Dịng sự kiện:
o Use case này bắt đầu khi các ngƣời dùng muốn chọn các địa điểm du lịch .
o Hệ thống này sẽ yêu cầu ngƣời dùng nhập địa điểm cần đến.
o Hệ thống gọi Google Maps JavaScript API v3, kiểm tra địa điểm nếu tìm thấy địa điểm sẽ hiển thị lên màn hình kinh độ và vĩ độ địa điểm vừa chọn, nếu khơng tìm thấy sẽ thơng báo lỗi.
o Nguời dùng lƣu thơng tin vào cơ sở dữ liệu.
4.1.2.2 Use Case “Tính khoảng cách”
Use case này mơ tả cách tính khoảng cách các điểm du lịch
Dịng sự kiện:
o Use case này bắt đầu khi các ngƣời dùng muốn tìm khoảng cách giữa các điểm du lịch.
o Hệ thống sẽ truy vấn trong cơ sở dữ liệu lấy thơng các điểm du lịch đã lƣu trong cơ sở dữ liệu.
o Hệ thống gọi VietBanDo Maps API để tìm đƣờng đi tối ƣu nhất giữa các điểm du lịch.
o Hệ thống lƣu thơng tin vào cơ sở dữ liệu.
4.1.2.3 Use Case “Tìm đường”
Use case này mơ tả tìm đƣờng đi tối ƣu giữa 2 điểm du lịch.
Dịng sự kiện:
o Use case này bắt đầu khi các ngƣời dùng muốn tìm đƣờng đi giữa 2 địa điểm du lịch.
o Hệ thống gọi VietBanDo Maps API để tìm đƣờng đi tối ƣu nhất giữa 2 điểm du lịch.
o Hệ thống hiển thị kết quả ra màn hình.
4.1.2.4 Use Case “Hiển thị kết quả”
Use case này mơ tả cách hiển thị chu trình đƣờng đi qua địa điểm du lịch trên bản đồ.
Dịng sự kiện:
o Use case này bắt đầu khi các ngƣời dùng muốn chu trình đƣờng đi qua địa điểm du lịch trên bản đồ.
o Hệ thống truy vấn cơ sở dữ liệu để lấy kết quả.
o Hệ thống gọi VietBanDo Maps API hiển thị.
o Hệ thống hiển thị kết quả ra màn hình.
4.1.2.5 Use Case “Tìm giải pháp”
Use-case này mơ tả cách tìm chu trình đƣờng đi qua địa điểm du lịch trên bản đồ.
Dịng sự kiện:
o Use case này bắt đầu khi các ngƣời dùng muốn chu trình đƣờng đi qua địa điểm du lịch trên bản đồ.
o Hệ thống truy vấn cơ sở dữ liệu để lấy thơng tin khoảng cách giữa các điểm du lịch.
o Hệ thống tạo đồ thị vơ hƣớng G=(E,V).
o Hệ thống tìm cây bao trùm nhỏ nhỏ nhất T của đồ thị G.
o Hệ thống tìm các đỉnh cĩ đỉnh bậc lẻ của cây T và tạo đồ thị G‟=(V‟,E‟) với V‟ là đỉnh cĩ bậc lẻ của T, E‟ là cạnh của G‟.
o Hệ thống tìm cặp ghép đầy đủ M.
o Hệ thống tìm một chu trình Euler trên H ( đồ thị H cĩ các đỉnh đều bậc chẵn).
o Hệ thống biến đổi chu trình Euler thành chu trinh Hamilton.
o Hệ thống lƣu kết quả vào cơ sở dữ liệu.
Hoạt động của chức năng này cĩ thể mơ tả bằng sơ đồ sau:
4.2 Đặc Tả Cấu Trúc Dữ Liệu
Thơng tin của 1 điểm du lịch bao gồm:
Mã số điểm Dùng để tổ chức dữ liệu, mỗi điểm cĩ 1 mã số
duy nhất, khơng trùng nhau giữa 2 điểm bất kì.
Địa chỉ điểm
1 dạng thơng tin cơ bản và thơng dụng nhất mà ngƣời dùng cĩ thể dễ dàng nhận biết, bao gồm số nhà, tên đƣờng, tên quận.
Tọa độ điểm trên bản đồ Mỗi điểm đƣợc xác định vị trí thơng qua kinh
độ, vĩ độ. Thơng tin đƣờng đi giữa 2 điểm:
Để bài tốn trở nên đơn giản hơn, ta qui ƣớc giữa 2 điểm cĩ duy nhất 1 đƣờng đi từ điểm này đến điểm kia và ngƣợc lại.
4.2.1 Lƣợt đồ quan hệ dữ liệu Node(NodeID, Address,Lat,Lng,Direction). Node(NodeID, Address,Lat,Lng,Direction). Edge(Node1, Node2,Distance,Note). Solve(NodeId,index). Là các điểm du lịch trên bản đồ cĩ địa chỉ ,kinh độ và vĩ độ. Tập đỉnh Là những đƣờng đi giữa các điểm du lịch với nhau
Tập cung Đồ thị vơ
4.2.2 Đặc tả cấu trúc bảng
Bảng điểm du lịch (Node)
Field Type Null Action Comments
NodeID Int No Primary ID điểm du lịch
Address Varchar No Địa chỉ điểm du lịch
Lat Varchar No Kinh độ điểm du lịch
Lng Varchar No Vĩ độ điểm du lịch
Direction Varchar Yes Diễn tả điểm du lịch
Bảng các cung (Edge)
Field Type Null Action Comments
Node1 Int No Primary ID điểm du lịch 1
Node2 Int No Primary ID điểm du lịch 2
Distance Varchar No
Khoảng cách giữa 2 điểm.
Note Varchar No Ghi chú
Bảng giải pháp (solve)
Field Type Null Action Comments
NodeID Int No Primary ID điểm du lịch
Index Varchar No Thứ tự của chu trình
4.3 Cài đặt và đánh giá hiệu quả thuật tốn Christofides 4.3.1 Cài đặt thuật tốn Christofides 4.3.1 Cài đặt thuật tốn Christofides
Áp dụng thuật tốn Prim
- Bƣớc 1.1. khởi tạo (giả sử bắt đầu từ đỉnh s)
Khởi tạo đỉnh s cĩ nhãn khoảng cách bằng 0 (d[s]=0) , các đỉnh khác cĩ nhãn khoảng cách +. Cây T ban đầu bằng rỗng.
- Bƣớc 1.2. Chọn đỉnh u chƣa kết nạp cĩ d[u] nhỏ nhất.
Nếu khơng chọn đƣợc u thì đồ thị khơng liên thơng kết thúc, ngƣợc lại nếu chọn đƣợc u thì đánh dấu u đã kết nạp. Tính lại các nhãn khoảng cách d[v] (v chƣa kết nạp). Lặp lại bƣớc 1.2.
Bƣớc 2: Tạo đồ thị con G‟=(V‟,E‟) của đồ thị G. Trong đĩ V‟ là đỉnh cĩ bậc lẻ trong T và E‟ là các cạnh của các đỉnh V‟. Sau đĩ, tìm cặp ghép đầy đủ M của các đỉnh trong V‟ của đồ thị G‟ với tổng trọng số nhỏ nhất.
- Bƣớc 2.1: Khởi tạo mảng cĩ cấu trúc Node chứa các đỉnh của đồ thị.
- Bƣớc 2.2: Tính bậc của các node trong cây T.
- Bƣớc 2.3: Tạo một mảng gồm các Node cĩ đỉnh bậc lẻ.
- Bƣớc 2.4: Tạo trận hai chiều cĩ cấu trúc Link của các đỉnh cĩ Node bậc lẻ, sắp xếp từng các Link theo thứ tự tăng dần theo trọng số.
- Bƣớc 2.5: Tại mỗi Node chọn link cĩ trọng số nhỏ nhất mà hai đầu chƣa đƣợc chọn đƣa vào M. Lặp lại bƣớc 2.5 cho đến khi duyệt hết các Node.
Bƣớc 3: Hợp các cạnh của M và T thành một đồ thị H.
- Bƣớc 3.1: Khởi tạo một mảng H cĩ cấu trúc GraphNode. - Bƣớc 3.2: Duyệt các cạnh của T cập nhập vào H.
- Bƣớc 3.3: Duyệt các cạnh M cập nhập vào H.
Bƣớc 4: Tìm một chu trình Euler trên H (H cĩ chu trình Euler do nĩ liên thơng và tất cả các đỉnh đều cĩ bậc chẵn).
Áp dụng thuật tốn fleury tìm chu trình Euler:
Xuất phát từ một đỉnh trên đồ thị H, chọn một cạnh liên thuộc với nĩ để đi tiếp theo hai nguyên tắc sau:
Xĩa bỏ cạnh đã đi qua.
Chỉ đi qua cầu khi khơng cịn cạnh nào khác để chọn.
- Bƣớc 4.1. bắt đầu từ một đỉnh u bất kỳ trên đồ thị H, đƣa đỉnh u vào chu trình.
- Bƣớc 4.2. kiểm tra nếu xĩa một cạnh nối (u,v) thì v cịn quay lại u hay khơng. Nếu quay lại đƣợc xĩa cạnh (u,v), đƣa đỉnh v vào chu trình và gắn đỉnh u bằng v, lặp lại bƣớc 4.2 với đỉnh u bây giờ là v. lặp đến khi khơng cịn đi đƣợc nữa.
Bƣớc 5: Biến đổi chu trình Euler trên thành một chu trình Hamilton bằng cách duyệt qua chu trình Euler từ đầu đến cuối và bỏ qua những đỉnh đã đƣợc chọn trong quá trình duyệt.
4.3.2 Đánh giá hiệu quả thuật tốn Christofides
Đánh giá việc cài đặt thuật tốn Christofides theo hai cách lƣu trữ đồ thị ma trận kề và danh sách liên kết. Bộ dữ liệu dùng để thử là EIL51, EIL76, EIL101 và số lần thử là 10 lần.
4.4 Tính năng chính của chƣơng trình 4.4.1 Màn hình chọn các địa điểm 4.4.1 Màn hình chọn các địa điểm
Khi ngƣời dùng chọn chức năng “chọn địa điểm” để tìm các địa điểm cần đến. Sau đĩ ngƣời dùng nhập vào Address (địa chỉ) và nhấn nút “chọn địa điểm”. Hệ thống gọi API google map V3 để lấy kinh độ và vĩ độ của địa điểm đƣợc chọn.
Khi ngƣời dùng nhấn nút “lƣu địa điểm” hệ thống sẽ lƣu thơng tin gồm:Adress, Lat, Lng, Direction vào cơ sở dữ liệu.
4.4.2 Màn hình tính khoảng cách
Khi ngƣời dùng chọn chức năng “Tính Khoảng Cách” hệ thống sẽ lấy tất cả các địa điểm trong bảng Node và gọi VietBanDo Map API tính khoảng cách giữa các địa điểm và lƣu vào cơ sở dữ liệu.
Khi chọn vào chức năng “Giải Pháp” hệ thống sẽ tạo đồ thị dựa các cung trong bảng Edge và gọi thuật tốn Christofides tìm chu trình giữa các địa điểm và lƣu thơng tin vào cơ sở dữ liệu.
4.4.4 Màn hình kết quả
Khi chọn vào chức năng “Kết quả” hệ thống sẽ truy vấn vào bảng solve trong cơ sở dữ liệu lấy các địa điểm và gọi VietBanDo Map API hiển thị kết quả lên màn hình.
4.4.5 Màn hình tìm đƣờng đi
Khi chọn vào chức năng “Tìm đƣờng đi” hệ thống sẽ truy vấn vào bảng node
trong cơ sở dữ liệu lấy các địa điểm đã đƣợc và đƣa dữ liệu vào 2 DropDownList : Địa điểm đi, địa điểm đến. Khi ngƣời dùng nhấn chọn nút „tìm đƣờng đi‟ hệ thống sẽ gọi VietBanDo Map API lấy thơng tin và hiển thị lên màn hình.
4.4.6 Chức năng chính của ứng dụng
a. Chức năng chọn các điểm ngẫu nhiên
Click chuột vào màn hình chọn các điểm
Chọn Solve, chọn “Read Project” hệ thống sẽ lấy các điểm trên màn hình tạo thành đồ thị và gọi giải thuật Christofides tìm chu trình đi qua các điểm và hiển thị lên màn hình. Chức năng chọn màu và kích cho đƣờng vẽ Chức năng chọn màu hình nền. Chức năng dùng chọn vẽ các điểm trên màn hình
b. Chức năng đọc các điểm trong thƣ viện TSPLib
Chọn Solve, chọn Read TSPLib
Cấu trúc của tập tin eil51.tsp cĩ tạo độ 51 điểm.
Ngồi ra hệ thống cịn cĩ các chức năng: tạo mới chƣơng trình, lƣu đồ thị vào file và mở lại file đã lƣu.
Chƣơng 5. KẾT LUẬN VÀ KIẾN NGHỊ VỀ NHỮNG NGHIÊN CỨU TIẾP THEO
Từ chƣơng 1 đến chƣơng 4 tác giả đã trình bày tồn bộ các tìm hiểu của tác giả về lý thuyết đồ thị. Nội dung trình bày bám sát mục tiêu đề ra ban đầu của luận văn “BÀI TỐN CÂY BAO TRÙM TRÊN ĐỒ THỊ VÀ ỨNG DỤNG“.
5.1 Kết quả đạt đƣợc
Trong thời gian nghiên cứu thuật tốn giải bài tốn ngƣời du lịch, luận văn đã đạt đƣợc các kết quả sau:
Kết quả lý thuyết:
- Nghiên cứu, tìm hiểu sâu về lý thuyết về lý thuyết đồ thị, đặc biệt về bài tốn ngƣời du lịch.
- Nghiên cứu phƣơng pháp giải bài tốn ngƣời du lịch bằng phƣơng pháp xấp xỉ dựa vào cây bao trùm nhỏ nhất.
Kết quả ứng dụng:
- Luận văn đã áp dụng và cải tiến thuật tốn Christofides để giải quyết bài tốn ngƣời du lịch.
- Thực hiện tìm chu trình đi qua các địa điểm đƣợc chọn trên bản đồ. - Minh họa thuật tốn Christofides trên giao diện đồ họa.
Tuy nhiên chƣơng trình vẫn cịn tồn tại một số hạn chế nhƣ thời gian tìm các cung cịn chậm và chỉ làm đƣợc trên đồ thị vơ hƣớng.
Từ kết quả nghiên cứu lý thuyết và thực tiễn, luận văn đề ra các vấn đề cần tiếp tục hồn thiện, phát triển và nghiên cứu nhƣ sau:
- Tiếp tục nghiên cứu thêm các thuật tốn khác áp dụng cây bao trùm nhỏ nhất và các thuật tốn áp dụng cho các bài tốn ngƣời du lịch.
- Nghiên cứu và cài đặt thuật tốn giải bài tốn ngƣời du lịch với đồ thị cĩ hƣớng.
- Cải tiến chƣơng trình để thời gian thực hiện chƣơng trình nhanh hơn. 5.2 Lời kết
Tồn bộ nội dung trình bày trong luận văn là kết quả quá trình nghiên cứu, tìm hiểu của tác giả. Các kết quả trình bày trong 5.1 là kết quả quá trình làm việc, tìm hiểu, học hỏi của tác giả. Phần hƣớng phát triển trình bày trong 5.2 là vấn đề tác giả ấp ủ và mong muốn thực hiện đƣợc trong thời gian tới nhằm giúp chƣơng trình hoạt động tốt hơn.
TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt:
[1] Nguyễn Đức Nghĩa – Nguyễn Tơ Thành. Tốn rời rạc. Nhà xuất bản Đại học Quốc gia Hà Nội, 2003.
[2] Lê Minh Hồng (1999). Giải thuật và lập trình. Nhà xuất bản Đại học Sƣ phạm Hà Nội.
[3] Đỗ Đức Giáo. Tốn rời rạc ứng dụng trong tin học. Nhà xuất bản giáo dục.
Tài liệu tiếng Anh:
[4] R.K. Ahuja. Magnanti and J.B.Orlin. Theory, Algorithms and Aplications.
Prentice Hall, Upper saddle River, New Jersey, 1993, 846 pp.
[5] S.Khuller, Y.J. Sussman and W.Gasarch. Advanced Algorithms. Lectures CMSC 858K, 1997, 94 pp.
[6] S. Khuller, B. Raghavachari. Graph and network algorithms in the computer science and engineering Handbook edited by B. Tucker Jr. CRC Press, Inc. 1997.
[7] B. Korter, J. Vygen, Combinatorial Optimization. Theory and Algorithms. Second Edition. Spinger, 2002. 530pp.
[8] B.Y Wu and K-M Chao. Spanning Trees and Optimization Problems. Chapman & Hall/ CRC Press company, 2004.184 pp.
[9]. C.C. Skiscim, S.W. Palocsay. Minumum Spanning Trees with Sums of Ration. Journal of Global Optimization. Vol 19,2001,pp. 103-120.
[10] Reinhard Diestel. Graph Theory. Spinger-Verlag NewYork, 2000. [11] Robin Wilson. Introduction to Graph Theory. Oliver & Boyd,1996.
Website
[13] Institute for Operations Reseach and the Management Sciences Site, http://www.informs.org/Conf/Montreal198/TALKS/MA36.html.
[14] Christofides algorith, http://en.wikipedia.org/wiki/Christofides_algorithm [15] Prüfer sequence, http://en.wikipedia.org/wiki/Pr%C3%BCfer_sequence [14] TSPLIB,
http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/tsp/ [15] Map API, http://www.vietbando.com/maps/api/Examples.aspx