lỜi cam Đoan tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ...
TRANSCRIPT
![Page 1: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/1.jpg)
1
LỜI CAM ĐOAN
Tôi xin cam đoan bài luận văn này là sự nghiên cứu của bản thân (ngoài
phần tham khảo đã được trích rõ) cùng với sự hướng dẫn của PGS.TS Nguyễn
Long Giang và TS Lê Xuân Tuấn. Tôi xin chịu trách nhiệm hoàn toàn nếu xảy
ra sai phạm.
Tác giả luận văn
Phạm Trung Dũng
![Page 2: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/2.jpg)
2
LỜI CẢM ƠN
Trước hết, em xin gửi lời cảm ơn sâu sắc đến PGS.TS Nguyễn Long
Giang và TS Lê Xuân Tuấn – người trực tiếp hướng dẫn khóa luận đã luôn dành
nhiều thời gian, công sức hướng dẫn em trong suốt quá trình thực hiện nghiên
cứu và hoàn thành đề tài nghiên cứu khoa học.
Tôi xin trân trọng cám ơn Viện Công nghệ thông tin và Học viện Khoa
học & Công nghệ giúp đỡ tôi trong quá trình học tập và nghiên cứu luận văn.
Tuy có nhiều cố gắng, nhưng trong đề tài nghiên cứu khoa học này
không tránh khỏi những thiếu sót. Em kính mong các chuyên gia, những người
quan tâm đến đề tài, đồng nghiệp tiếp tục có những ý kiến đóng góp, giúp đỡ để
đề tài được hoàn thiện hơn.
Một lần nữa em xin chân thành cám ơn!
Hà Nội, 26 tháng 5 năm 2020
Tác giả
![Page 3: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/3.jpg)
3
MỤC LỤC
LỜI CAM ĐOAN ............................................................................................................... 1
LỜI CẢM ƠN .................................................................................................................... 2
MỤC LỤC.......................................................................................................................... 3
DANH MỤC HÌNH VẼ....................................................................................................... 5
DANH MỤC CÁC TỪ VIẾT TẮT ...................................................................................... 6
MỞ ĐẦU ............................................................................................................................ 7
CHƯƠNG 1. TỔNG QUAN VỀ GIAO THÔNG CÔNG CỘNG HÀ NỘI ............................. 8
1.1. CƠ SỞ HẠ TẦNG GIAO THÔNG CÔNG CỘNG HÀ NỘI ............................................ 8
1.1.1. Xe buýt ............................................................................................................... 8
1.1.2. Xe buýt nhanh .................................................................................................... 8
1.1.3. Đường sắt đô thị ................................................................................................. 9
1.2. CÁC TUYẾN VÀ ĐIỂM DỪNG ............................................................................... 12
1.2.1. Điểm dừng ........................................................................................................ 12
1.2.2. Tuyến xe ........................................................................................................... 13
CHƯƠNG 2. PHÂN TÍCH TÌM GIẢI THUẬT TÌM ĐƯỜNG TỐI ƯU .............................. 16
2.1. CÁC THUẬT TOÁN TÌM ĐƯỜNG TỐI ƯU PHỔ BIỂN ............................................. 16
2.1.1. Thuật toán Dijkstra .......................................................................................... 16
2.1.2. Thuật toán Bellman-Ford .................................................................................. 18
2.1.3. Thuật toán Floyd-Warshall ............................................................................... 19
2.2. THUẬT TOÁN TÌM ĐƯỜNG TỐI ƯU GIAO THÔNG CÔNG CỘNG TRÊN THIẾT BỊ DI
ĐỘNG........................................................................................................................... 21
2.2.1. Đồ thị mô phỏng hệ thống giao thông công cộng Hà Nội ..................................... 21
2.2.2. Giải thuật tìm đường ........................................................................................ 21
2.2.3. Độ phức tạp của giải thuật ................................................................................ 25
CHƯƠNG 3. XÂY DỰNG ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG ................................. 26
3.1. PHÂN TÍCH THIẾT KẾ ỨNG DỰNG ....................................................................... 26
3.1.1 Bản đặc tả chức năng ứng dụng: ........................................................................ 26
3.1.2 Sơ đồ luồng hoạt động của ứng dụng: ................................................................. 27
3.1.3 Database: .......................................................................................................... 28
3.1.4 Thiết kế giao diện: ............................................................................................. 31
3.2. XÂY DỰNG ỨNG DỤNG TRÊN NỀN TẢNG ANDROID .......................................... 34
3.2.1. Nền tảng Android ................................................................................................. 34
3.2.2. Công cụ Android Studio .................................................................................... 40
3.2.3. Hệ quản trị cơ sở dữ liệu SQLite ....................................................................... 43
![Page 4: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/4.jpg)
4
3.2.4. Bản đồ Google Map và API Google Maps .......................................................... 45
CHƯƠNG 4. KẾT LUẬN VÀ KIẾN NGHỊ ....................................................................... 51
4.1. KẾT LUẬN ............................................................................................................. 51
4.2. KIẾN NGHỊ ............................................................................................................ 51
TÀI LIỆU THAM KHẢO ................................................................................................. 52
![Page 5: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/5.jpg)
5
DANH MỤC HÌNH VẼ
Hình 1 Bản đồ quy hoạch đường sắt đô thị Hà Nội ......................................... 10
Hình 2 Mạng lưới điểm dừng của hệ thống giao thông công cộng Hà Nội ..... 12
Hình 3 Bản đồ tuyến xe buýt Hà Nội ............................................................... 14
Hình 4 Xác định các điểm dừng tại điểm đến và điểm đi ................................ 23
Hình 5 Xác định góc của một tuyến xe ............................................................ 23
Hình 6 Mô tả đường đi khi đi bằng một tuyến xe ............................................ 24
Hình 7 Mô tả cách tìm đường đi bằng hai tuyến xe ......................................... 25
Hình 8 Sơ đồ luồng tìm lộ trình đi xe của ứng dụng ........................................ 28
Hình 9 Cơ sở dữ liệu của điểm dừng ............................................................... 30
Hình 10 Cơ sở dữ liệu của các tuyến xe........................................................... 31
Hình 11 Thiết kế trang chủ của ứng dụng ........................................................ 32
Hình 12 Thiết kế giao diện nhập điện chỉ đến và đi ........................................ 32
![Page 6: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/6.jpg)
6
DANH MỤC CÁC TỪ VIẾT TẮT
STT Từ viết tắt Cụm từ đầy đủ
1. BRT Bus Rapid Transit
2. ODA Official Development Assistance
3. CPU Central Processing Unit
4. ADT Android Development Tools
5. IDE Integrated Development Environment
6. SDK Software Development Kit
7. API Application Programming Interface
8. SQL Structured Query Language
9. GPS Global Positioning System
![Page 7: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/7.jpg)
7
MỞ ĐẦU
Thành phố Hà Nội là một trong những thành phố có số dân và mật độ dân
cư cao của cả nước. Các phương tiện giao thông cá nhân ngày một nhiều gây áp
lực rất lớn lên hạ tầng giao thông. Để giải quyết vấn đề này thành phố đang đầu
tư lớn và khuyến kích người dân sử dụng vào hệ thống giao thông công cộng.
Một vài năm gần đây người dân đã ngày càng tiếp xúc nhiều với giao
thông công cộng, nhưng để biết hết thông tin về điểm dừng, tuyến bus, tuyến
tàu điện, đặc biệt là xác định được đường đi tối ưu là khó. Hiện nay đã có một
vài ứng dụng trên di động hỗ trợ người dùng nhưng có một vài nhược điểm, đó
là không cập nhật dữ liệu một cách liện tục, không hỗ trợ sử dụng offline, giao
diện không thân thiện khó sử dụng.
Từ những điều trên tôi đã nghiên cứu để hoàn thiện luận văn “Tối ưu tìm
đường hệ thống giao thông công cộng Hà Nội” cung cấp thông tin hệ thống
giao thông công cộng và chỉ đường đi tối ưu, hỗ trợ sử dụng offline
![Page 8: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/8.jpg)
8
CHƯƠNG 1. TỔNG QUAN VỀ GIAO THÔNG CÔNG CỘNG HÀ NỘI
1.1. CƠ SỞ HẠ TẦNG GIAO THÔNG CÔNG CỘNG HÀ NỘI
Theo xu thế phát triển chung của thế giới, Hà Nội đang phải đối mặt với
những vấn đề về giao thông đô thị như sự gia tăng của phương tiện cá nhân, áp
lực về cơ sở hạ tầng và nhu cầu đi lại của người dân ngày càng cao, hình ảnh
các phương tiện nêm kín mặt đường vào các giờ cao điểm không còn là chuyện
mới. Đi cùng với đó nhiều vấn đề văn hóa xã hội khác như tình trạng ô nhiễm
môi trường do khói bụi từ các phương tiện giao thông, ảnh hưởng đến tốc độ
tăng trưởng kinh tế.... Nhận thức rõ áp lực của phát triển dịch vụ vận tải đối với
phát triển đô thị, thành phố Hà Nội nhiều năm nay đã xác định phát triển giao
thông công cộng là giải pháp tối ưu và được ưu tiên phát triển để giải quyết tình
trạng trên. Hiện nay Hà Nội đang phát triển các loại hình giao thông công cộng
sau:
1.1.1. Xe buýt
Tại Hà Nội, xe buýt là phương tiện giao thông công cộng chủ yếu với hơn
100 tuyến được vận hành bởi Tổng công ty Vận tải Hà Nội cùng một số công
ty khác. Các tuyến xe buýt được phân bố phủ khắp khu vực trung tâm Hà Nội,
đồng thời kết nối với các huyện ngoại thành cũng như các tỉnh kế cận.
Thời gian xe buýt hoạt động từ 4h30 - 23h15, tần suất là 5–60
phút/chuyến tùy vào số lượng khách sử dụng, trung bình tần suất các tuyến là
10–20 phút/chuyến. Xe buýt hoạt động tất cả các ngày trong tuần kể cả những
ngày lễ tết sự đi lại của người dân khu vực nội thành Hà Nội và các vùng lân
cận.
Xe buýt áp dụng vé lượt cho 1 lần đi. Giá vé lượt dành các tuyến có cự li
dưới 25 km là 7.000 đồng/lượt, từ 25 – 30 km là 8.000 đồng/lượt, và 30 km trở
lên là 9.000 đồng/lượt. Riêng đối với tuyến 86 giá vé là 35.000 đồng/lượt và
tuyến 68 là 40.000 đồng/lượt.
1.1.2. Xe buýt nhanh
Xe buýt nhanh Hà Nội, hay Hanoi BRT, là một loại hình giao thông công
cộng tại Hà Nội do Xí nghiệp xe buýt nhanh Hà Nội vận hành. Theo quy hoạch
được Thủ tướng chính phủ Việt Nam phê duyệt năm 2016, thành phố Hà Nội sẽ
![Page 9: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/9.jpg)
9
có 8 tuyến xe buýt nhanh và 3 tuyến quá độ. Tuyến xe buýt nhanh đầu tiên được
đưa vào hoạt động ngày 31 tháng 12 năm 2016 là tuyển BRT01 từ bến xe Yên
Nghĩa đến Cát Linh. Tới năm 2019, chưa có thêm tuyến xe buýt nhanh nào được
đưa vào hoạt động.
Xe buýt nhanh sẽ đi trên 2 làn đường riêng sát dải phân cách giữa của
trục đường. Làn đường này được phân cách bằng gờ cao 20 cm. Nhà chờ cho
hành khách được đặt trên dải phân cách giữa. Vị trí nhà chờ sẽ ở gần ngã tư nên
hành khách đi theo vạnh sơn kẻ đường tại các nút giao thông để tiếp cận xe buýt.
Theo thiết kế, hành khách sẽ sử dụng vé từ, được tự động soát vé trước khi vào
nhà chờ nhưng hiện tại khi đưa vào hoạt động, hành khách sẽ sử dụng vé giấy
giống xe buýt thông thường.
Tuyến BRT01 sẽ chạy với tần suất 5-15 phút/chuyến, công suất vận
chuyển 90 khách, có 4 cửa ra vào, tốc độ di chuyển 22 km/h. Các xe đều có hệ
thống GPS, kết nối với Trung tâm điều hành để giải quyết các sự cố có thể phát
sinh. Tại nút giao thông cũng có hệ thống tích hợp với đèn tín hiệu để ưu tiên
xe buýt nhanh qua nút.
1.1.3. Đường sắt đô thị
Đường sắt đô thị Hà Nội là tên gọi của hệ thống đường sắt đô thị ở Hà
Nội. Hệ thống được vận hành bởi Công ty Đường sắt Hà Nội, bao gồm 8 tuyến
đường sắt đô thị với tổng chiều dài khoảng 318 km, và 3 tuyến tàu điện một ray.
Đây là hệ thống đường sắt đô thị đầu tiên tại Việt Nam.
Theo Quy hoạch giao thông vận tải Thủ đô Hà Nội đến năm 2030, tầm
nhìn năm 2050 được Thủ tướng Chính phủ phê duyệt năm 2016, mạng lưới
đường sắt đô thị Hà Nội bao gồm 10 tuyến, bao gồm cả các tuyến trên cao và đi
ngầm. Các dự án Metro của Hà Nội được Chính phủ giao cho Bộ Giao thông
Vận tải và Ủy ban nhân dân thành phố Hà Nội làm chủ đầu tư. Tổng quan quy
hoạch cụ thể năm 2016 của đường sắt đô thị Hà Nội như sau:
![Page 10: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/10.jpg)
10
Hình 1 Bản đồ quy hoạch đường sắt đô thị Hà Nội
Hiện nay, Hà nội đang có 02 tuyến đường sắt đô thị đang được xây dựng
đó là:
Tuyến số 2A: Cát Linh - Hà Đông, hay còn gọi là Tuyến Cát Linh, có
chiều dài 13,1 km, được khởi công xây dựng vào ngày 10 tháng 10 năm 2011
và do Bộ Giao thông Vận tải làm Chủ đầu tư. Toàn tuyến đi qua 12 nhà ga, trải
qua ba quận Đống Đa, Thanh Xuân và Hà Đông. Tuyến đường sắt này được đầu
![Page 11: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/11.jpg)
11
tư năm 2008 bằng vốn vay ODA của Trung Quốc. Ban đầu dự án có tổng mức
đầu tư 552,86 triệu USD trong đó vốn vay ODA của Trung Quốc 419 triệu USD.
Đến năm 2019, tổng mức đầu tư được điều chỉnh là 868,04 triệu USD, trong đó
phần vốn vay ODA của Trung Quốc là 669,62 triệu USD.
Vào tháng 10 năm 2015, tại Triển lãm Giảng Võ, Ban Quản lý dự án
đường sắt đô thị Hà Nội đã trưng bày mẫu tàu điện Cát Linh - Hà Đông. Theo
đó, tuyến số Cát Linh - Hà Đông sẽ có 13 đoàn tàu, mỗi đoàn tàu có 4 toa tàu.
Đoàn tàu có chiều dài là 79 m, chiều cao toa tàu 3,8 m tính từ mặt ray đến đỉnh
tàu, độ rộng lớn nhất toa tàu 2,8 m. Khi vận hành đoàn tàu có tốc độ tối đa 80
km/giờ, tốc độ trung bình ≥ 35 km/giờ. Năng lực vận chuyển tối đa khoảng
28.500 hành khách/giờ/hướng.
Tuyến số 3: Trôi - Nhổn - Hoàng Mai, ban Quản lý Đường sắt đô thị
Hà Nội làm chủ đầu tư đoạn Nhổn - Ga Hà Nội. Tuyến có tổng chiều dài 12,5
Km (trong đó đoạn đi trên cao 8,5 Km và đoạn đi ngầm 4,5 Km), được khởi
công vào 10 tháng 10 năm 2010 và dự kiến khai thác thương mại năm 2021.
Toàn tuyến đi qua 12 nhà ga, bao gồm 8 ga trên cao (Nhổn, Minh Khai, Phú
Diễn, Cầu Diễn, Lê Đức Thọ, Đại học Quốc gia Hà Nội, Chùa Hà, Cầu Giấy)
và 4 ga ngầm (Kim Mã, Cát Linh, Văn Miếu, ga Hà Nội), trong đó có 2 ga kết
nối trung chuyển.
Tuyến chạy nổi trên cao dọc theo tim đường quốc lộ 32 từ: Cầu Diễn -
Hồ Tùng Mậu - Xuân Thủy - Cầu Giấy - Kim Mã- tới ngã ba phố Nguyễn Văn
Ngọc- Kim Mã thì chuyển chạy ngầm theo tim đường Kim Mã - đến đầu phố
Núi Trúc chạy ngầm vòng qua khu dân cư (Nằm giữa đường Giang Văn Minh
và Núi Trúc) - tiếp tục chạy ngầm theo tim đường Cát Linh - Quốc Tử Giám -
xuyên ngậm dưới ga Hà nội và kết thúc điểm cuối ngã ba phố Dã Tượng với
Trần Hừng Đạo.
![Page 12: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/12.jpg)
12
1.2. CÁC TUYẾN VÀ ĐIỂM DỪNG
Cũng giống như các hệ thống giao thông công cộng trên thế giới, hệ thống
giao thông công cộng Hà Nội có các tuyến và điểm dừng có định.
1.2.1. Điểm dừng
Hiện nay, hệ thống giao thông công cộng Hà Nội có trên 2500 điểm dừng,
bến xe đón trả khách. Các điểm dừng này có mặt ở 24/24 quận, huyện và tất cả
các phường và gần hết các xã thuộc địa bạn Hà Nội, ngoài ra còn có mặt ở một
số tỉnh lân cận Hà Nội như Bắc Ninh, Hà Nam, Hưng Yên.
Hình 2 Mạng lưới điểm dừng của hệ thống giao thông công cộng Hà Nội
![Page 13: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/13.jpg)
13
1.2.2. Tuyến xe
Hiện nay, hệ thống giao thông công cộng Hà Nội có 141 tuyến, trong đó
có 128 tuyến tiêu chuẩn nằm phần chính ở các quận của Hà Nội, 01 tuyến xe
buýt nhanh, và 12 tuyến kết nối với các huyện thuộc Hà Nội và các tỉnh lân cận:
![Page 14: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/14.jpg)
14
Hình 3 Bản đồ tuyến xe buýt Hà Nội
Hệ thống giao thông cộng cộng Hà Nội do các đợn vị sau vận hành:
- Xí nghiệp Xe buýt Hà Nội: 13 tuyến xe buýt
![Page 15: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/15.jpg)
15
- Xí nghiệp Xe buýt Thăng Long: 9 tuyến xe buýt
- Xí nghiệp Xe buýt 10-10: 15 tuyến xe buýt
- Công ty Cổ phần Xe Điện Hà Nội: 11 tuyến xe buýt
- Xí nghiệp Xe buýt Cầu Bươu: 10 tuyến xe buýt
- Xí nghiệp Xe buýt Yên Viên: 9 tuyến xe buýt
- Công ty CPVT và DV Liên Ninh: 8 tuyến xe buýt
- Công ty Cổ phần Vận tải Newway: 4 tuyến xe buýt
- Công ty Cổ phần Xe Khách Hà Nội: 5 tuyến xe buýt
- Trung tâm Tân Đạt: 9 tuyến xe buýt
- Xí nghiệp Xe khách Nam Hà Nội: 9 tuyến xe buýt
- Xí nghiệp Xe buýt nhanh Hà Nội: 5 tuyến xe buýt và 1 tuyến BRT
- Công ty TNHH Bắc Hà: 6 tuyến xe buýt
- Công ty CPVT TM và Du lịch Đông Anh: 1 tuyến xe buýt
- Công ty TNHH Bảo Yến: 14 tuyến xe buýt
- Công ty Liên doanh VCQT Hải Vân: 2 tuyến xe buýt
- Công ty CPVT Xe Khách Hà Tây: 3 tuyến xe buýt
- Công ty CP DV và VT Bảo Châu: 1 tuyến xeb buýt
![Page 16: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/16.jpg)
16
CHƯƠNG 2. PHÂN TÍCH TÌM GIẢI THUẬT TÌM ĐƯỜNG TỐI ƯU
2.1. CÁC THUẬT TOÁN TÌM ĐƯỜNG TỐI ƯU PHỔ BIỂN
Trên thực tế, để tìm đường đi tối ưu, người ta không chỉ quan tâm đến
việc tìm đường đi giữa hai địa điểm mà còn phải lựa chọn một hành trình tiết
kiệm nhất theo khoảng cách, thời gian hay chi phí. Khi đó phát sinh yêu cầu
tìm đường đi ngắn nhất giữa hai đỉnh của đồ thị. Bài toán đó phát biểu dưới
dạng tổng quát như sau:
Cho đồ thị có trọng số G = (V, E) từ đỉnh xuất phát S V đến đỉnh đích
F V, ký hiệu độ dài của đường này là d[S, F]. Nếu đường đi từ S tới F không
tồn tại thì ta sẽ đặt khoảng cách d[S, F]= +. Hãy tìm một đường đi ngắn nhất
từ S tới F[1]
Nếu đồ thị có chu trình âm thì khoảng cách giữa một số cặp đỉnh nào
đó có thể không xác định, bởi vì bằng cách đi vòng theo chu trình này một số
lần đủ lớn, ta có thể chỉ ra đường đi giữa hai đỉnh nào đó trong chu trình này
nhỏ hơn bất kỳ một số cho trước nào. Trong trường hợp như vậy, có thể đặt vấn
đề tìm đường đi cơ bản ngắn nhất. Vấn đề đó là một vấn đề hết sức phức tạp
mà ta sẽ không bàn tới ở đây.
Dưới đây ta sẽ xét một số thuật toán tìm đường đi ngắn nhất từ đỉnh S
tới đỉnh F trên đơn đồ thị có hướng G = (V, E) có n đỉnh và m cung. Trong
trường hợp đơn đồ thị vô hướng với trọng số không âm, bài toán tìm đường đi
ngắn nhất có thể dẫn về bài toán trên đồ thị có hướng bằng cách thay mỗi cạnh
của nó bằng hai cung có hướng ngược chiều nhau. Lưu ý rằng các thuật toán
dưới đây sẽ luôn luôn tìm được đường đi ngắn nhất là đường đi cơ bản. Các
thuật toán quan trọng nhất giải quyết bài toán này là:
2.1.1. Thuật toán Dijkstra
Thuật toán Dijkstra, được đặt tên của nhà khoa học máy tính người Hà
Lan Edsger Dijkstra vào năm 1956, là một thuật toán giải tốt nhất để quyết bài
![Page 17: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/17.jpg)
17
toán đường đi ngắn nhất nguồn đơn trong một đồ thị có hướng không có cạnh
mang trọng số âm. Thuật toán thường được sử dụng trong định tuyến với một
chương trình con trong các thuật toán đồ thị hay trong công nghệ Hệ thống định
vị toàn cầu.
Dijkstra đã nghĩ về bài toán đường đi ngắn nhất khi làm việc tại Trung
tâm Toán học ở Amsterdam năm 1956 với tư cách là một lập trình viên để
chứng minh khả năng của một máy tính mới có tên ARMAC. Mục tiêu của ông
là chọn cả một bài toán và giải pháp (sẽ được tạo bởi máy tính) mà những người
không thuần tính toán vẫn có thể hiểu được. Ông đã thiết kế thuật toán đường
đi ngắn nhất và sau đó triển khai nó cho ARMAC bằng bản đồ giao thông được
đơn giản hóa một chút của 64 thành phố ở Hà Lan. Một năm sau, ông gặp một
vấn đề khác từ các kỹ sư phần cứng làm việc trên máy tính tiếp theo của học
viện: giảm thiểu lượng dây cần thiết để kết nối các chân trên bảng điều khiển
phía sau của máy. Như một giải pháp, ông đã phát hiện lại thuật toán Prim
(được biết đến trước đó với Jarník, và cũng được Prim khám phá lại). Dijkstra
đã xuất bản thuật toán vào năm 1959, 2 năm sau Prim và 29 năm sau Jarník.
Ví dụ: Chúng ta dùng các đỉnh của đồ thị để mô phỏng các thành phố
trong một vùng và các cạnh là đường nối giữa chúng. Khi đó trọng số các cạnh
có thể xem như độ dài của các con đường. Chúng ta cần vận chuyển từ thành
phố S đến thành phố T. Thuật toán Dijkstra sẽ giúp chỉ ra đường đi ngắn nhất
chúng ta có thể đi.
Giã mã giải thuật Dijkstra như sau:
function Dijkstra(Graph, source):
create vertex set Q
for each vertex v in Graph:
dist[v] ← INFINITY
prev[v] ← UNDEFINED
add v to Q
dist[source] ← 0
while Q is not empty:
u ← vertex in Q with min dist[u]
remove u from Q
![Page 18: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/18.jpg)
18
for each neighbor v of u:
alt ← dist[u] + length(u, v)
if alt < dist[v]:
dist[v] ← alt
prev[v] ← u
return dist[], prev[]
Thời gian chạy thuật toán hay còn gọi là độ phức tạp của giải thuật
Dijkstra bình thường là O(n2+m)[2]. Để cải thiệp thời gian chạy ta có thể sử dụng
kết hợp với cấu trúc Heap vào trong giải thuật Dijkstra, khi đó độ phức tạp sẽ là
O((m+n)log(n)), nếu kết hợp với Fibonacci Heap thì độ phức tạp giảm xuống
còn O(m+nlog n).
2.1.2. Thuật toán Bellman-Ford
thuật toán Bellman-Ford là một thuật toán mà tính con đường ngắn nhất
từ một nguồn duy nhất đỉnh đến tất cả các đỉnh khác trong một đồ thị có trọng
số. Nó chậm hơn thuật toán của Dijkstra cho cùng một đồ thị, nhưng linh hoạt
hơn, vì nó có khả năng xử lý các đồ thị trong đó một số trọng số cạnh là số âm.
Thuật toán này lần đầu tiên được đề xuất bởi Alfonso Shimbel, nhưng thay vào
đó được đặt theo tên của Richard Bellman và Lester Ford Jr. , người đã xuất bản
nó vào năm 1958 và 1956 , tương ứng Edward F. Moore cũng đã xuất bản thuật
toán tương tự vào năm 1957 và vì lý do này, đôi khi nó còn được gọi là thuật
toán Bellman-Ford-Moore.
Giả mã của giải thuật như sau:
function BellmanFord(list vertices, list edges, vertex source) is
::distance[], predecessor[]
// This implementation takes in a graph, represented as
// lists of vertices and edges, and fills two arrays
// (distance and predecessor) about the shortest path
// from the source to each vertex
// Step 1: initialize graph
for each vertex v in vertices do
distance[v] := inf // Initialize the distance to
all vertices to infinity
predecessor[v] := null // And having a null
predecessor
![Page 19: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/19.jpg)
19
distance[source] := 0 // The distance from the source
to itself is, of course, zero
// Step 2: relax edges repeatedly
for i from 1 to size(vertices)−1 do //just |V|−1 repetitions; i is
never referenced
for each edge (u, v) with weight w in edges do
if distance[u] + w < distance[v] then
distance[v] := distance[u] + w
predecessor[v] := u
// Step 3: check for negative-weight cycles
for each edge (u, v) with weight w in edges do
if distance[u] + w < distance[v] then
error "Graph contains a negative-weight cycle"
return distance[], predecessor[]
Độ phức tạp của thuật toán Bellman Ford là O(n*m), trong đó n là số đỉnh
và m là số cung của đồ thị.
2.1.3. Thuật toán Floyd-Warshall
Trong khoa học máy tính, thuật toán Floyd-Warshall là một thuật toán
cho việc tìm kiếm đường đi ngắn nhất trong một đồ thị có trọng với trọng số
cạnh dương hay âm đều được. Một lần thực hiện thuật toán sẽ tìm ra độ dài
(tổng trọng số) của các đường đi ngắn nhất giữa tất cả các cặp đỉnh. Mặc dù nó
không trả về chi tiết của các đường dẫn, nhưng có thể xây dựng lại các đường
dẫn với các sửa đổi đơn giản cho thuật toán.
Thuật toán Floyd-Warshall là một ví dụ về lập trình động và được xuất
bản dưới dạng hiện được công nhận bởi Robert Floyd vào năm 1962. Tuy nhiên,
về cơ bản nó giống như các thuật toán được Bernard Roy xuất bản năm 1959 và
cả bởi Stephen Warshall vào năm 1962 vì đã tìm thấy sự đóng cửa quá độ của
đồ thị và có liên quan chặt chẽ với thuật toán của Kleene (xuất bản năm 1956)
để chuyển đổi một máy tự động hữu hạn xác định thành biểu thức chính quy.
Công thức hiện đại của thuật toán như ba vòng lặp lồng nhau được mô tả lần
đầu tiên bởi Peter Ingerman, cũng vào năm 1962.
![Page 20: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/20.jpg)
20
* Thuật toán:
Thuật toán Floyd-Warshall so sánh tất cả các đường dẫn có thể thông qua
biểu đồ giữa mỗi cặp đỉnh. Hãy xem xét một biểu đồ G với các đỉnh V đánh số
từ 1 đến N. Xem xét thêm một chức năng shortestPath(i,j,k) trả về con đường
ngắn nhất có thể từ i đến j chỉ sử dụng các đỉnh từ tập hợp {1,2,…,k} như các
điểm trung gian trên đường đi. Bây giờ, với chức năng này, mục tiêu là tìm ra
con đường ngắn nhất từ mỗi i cho mỗi j sử dụng bất kỳ đỉnh trong {1,2,…,N}[3].
Đối với mỗi cặp đỉnh này, shortestPath(i,j,k) có thể là một trong hai
trường hợp. Một là một con đường không đi qua k (chỉ sử dụng các đỉnh trong
tập hợp {1,…,k-1}[4] hoặc hai là một con đường đi qua k (từ i đến k và sau đó từ
k đến i, cả hai chỉ sử dụng các đỉnh trung gian trong {1,…,k-1})
Chúng tôi biết rằng con đường tốt nhất từ i đến j chỉ sử dụng các
đỉnh 1 xuyên qua k-1 được định nghĩa bởi shortestPath(i,j,k-1) và rõ ràng là
nếu có một con đường tốt hơn từ i đến k đến j, sau đó độ dài của con đường này
sẽ là sự kết hợp của con đường ngắn nhất từ i đến k (chỉ sử dụng các đỉnh trung
gian trong {1,…,k-1}) và con đường ngắn nhất từ k đến j (chỉ sử dụng các đỉnh
trung gian trong {1,…,k-1}).
Nếu w(i,j) là trọng lượng của cạnh giữa các đỉnh i và j, chúng ta có thể
định nghĩa shortestPath(i,j,k) theo công thức đệ quy sau : trường hợp cơ sở là
shortestPath(i,j,0) = w(i,j) và trường hợp đệ quy là
shortestPath(i,j,k) = min(shortestPath(i,j,k-1),
shortestPath(i,k,k-1) + shortestPath(k,j,k-1)).
Công thức này là trái tim của thuật toán Floyd-Warshall. Thuật toán hoạt
động bằng máy tính đầu tiên shortestPath(i,j,k) cho tất cả (i,j) cặp cho k=1, sau
đó k=2, và như thế. Quá trình này tiếp tục cho đến khi k = N và chúng tôi đã
tìm ra con đường ngắn nhất cho tất cả (i,j) cặp sử dụng bất kỳ đỉnh trung
gian. Mã giả cho phiên bản cơ bản này như sau:
![Page 21: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/21.jpg)
21
let dist be a |V| × |V| array of minimum distances initialized to ∞
(infinity)
for each edge (u, v) do
dist[u][v] ← w(u, v) // The weight of the edge (u, v)
for each vertex v do
dist[v][v] ← 0
for k from 1 to |V|
for i from 1 to |V|
for j from 1 to |V|
if dist[i][j] > dist[i][k] + dist[k][j]
dist[i][j] ← dist[i][k] + dist[k][j]
end if
Độ phức tạp của thuật toán Floyd-Warshall là O(n3), trong đó n là số đỉnh
của đồ thị
2.2. THUẬT TOÁN TÌM ĐƯỜNG TỐI ƯU GIAO THÔNG CÔNG CỘNG
TRÊN THIẾT BỊ DI ĐỘNG
2.2.1. Đồ thị mô phỏng hệ thống giao thông công cộng Hà Nội
Ta có hệ thống giao thông công cộng của Hà Nội gồm hơn 2500 điểm
dừng, và 141 tuyến xe. Các tuyến xe chính là đường đi qua các điểm dừng.
Để mô hình hóa hệ thống giao thông công cộng Hà Nội thành đồ thị thì
chúng ta coi mỗi một điểm dừng là một điểm của đồ thị, đường đi của tuyến xe
qua các điểm dừng là cạnh có hướng, thời gian di chuyển giữa các điểm dừng
chính là trọng số của cạnh đó. Như vậy mô hình hóa hệ thống giao thông công
cộng Hà Nội chúng ta có một đồ thị G là một có hướng, có trọng số, đa đồ thị
và gồm:
- Khoảng 2500 đỉnh.
- Khoảng 5600 cạnh.
2.2.2. Giải thuật tìm đường
Điện thoại thông minh có rất nhiều ưu điểm để trở thành một công cụ hỗ
trợ tìm đường nhưng nó lại có những nhược điểm cố hữu như tốc độ sử lý chậm,
thời lượng pin hạn chế, giá thành dung lượng mạng di động cao. Để khác phục
những nhược điểm này thì độ phức tạp của giải thuật tìm đường cho hệ thông
![Page 22: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/22.jpg)
22
giao thông công cộng phải đủ nhanh để có thể sử lý ngay trên thiết bị thông
minh. Đối với đồ thị G, giải thuật tìm đường đi ngắn nhất thông dụng như
Dijkstra chạy trên điện thoại thông minh thường mất từ 7 đến 15 giây.
Bài toán tối ưu hệ thống giao thông công cộng Hà Nội được cụ thể như
sau:
Có hai điểm A và B thuộc đồ thị G. Yêu cầu tìm đường đi từ A đến B có
thời gian sử lý ít nhất và tổng trọng số đường đi từ A và B là ít nhất.
Để tối ưu được đường đi cho bài toán trên chúng ta nhận thấy:
- Do đi bộ mất nhiều thời gian nên sẽ trong giải thuật sẽ giảm tối đa thời
gian đi bộ.
- Thời gian để chuyển từ tuyến xe này sang tuyến xe khác là khá lớn, đó
chính là thời gian đi bộ sang điểm dừng mới, thời gian chờ xe. Do đó giải thuật
sẽ cần tìm ra số tuyến ít nhất. Trong giải thuật này tôi xe cố định số tuyến tối đa
là 02 tuyến.
- Lấy điểm A làm tâm vẽ một hình tròng với bán kính Ra = Rđi bộ (bán
kính đi bộ Rđi bộ). Trong hình tròn sẽ có Na điểm dừng xe, dễ nhận thấy rằng Ra
sẽ tỷ lệ thuận với Na. Tương tự với điểm B sẽ có Rb và Nb. Bây giờ bài toán
tìm đường đi bằng đường bộ và bằng hệ thống giao thông công cộng từ điểm A
đến điểm B sẽ chính là bài toán tìm đường đi bằng hệ thống giao thông công
cộng từ các điểm dừng thuộc Na đến các điểm dừng thuộc Nb. Do đó nếu số Na
và Nb tỷ lệ thuận với thời gian chạy thuật toán. Vậy muốn thời gian chạy giải
thuật nhỏ thì Na và Nb phải nhỏ, tức là Ra và Rb sẽ phải nhỏ nhất có thể. Trong
giải thuật này của tôi sẽ tìm đường đi ở mức Ra và Rb là 500m, nếu chưa tìm
đường đi tối ưu thì sẽ tằng Ra và Rb lên 1000m.
![Page 23: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/23.jpg)
23
Hình 4 Xác định các điểm dừng tại điểm đến và điểm đi
- Mỗi một tuyến xe đều có một hướng tương đối cố định (trừ các tuyến
vòng tròn). Có Gi là góc được tảo bởi vecto Vi của tuyến xe Ti với đường thằng
vecto AB. Nếu góc Gi càng nhỏ thì sắc xuất đường đi tối ưu từ điểm A tới B có
tuyến Ti càng lớn.
Hình 5 Xác định góc của một tuyến xe
Giải thuật:
Đặt Rđi bộ = 500 m
![Page 24: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/24.jpg)
24
Duyệt tất cả điểm dừng Da thuộc Na đối với tất cả điểm dừng Db thuộc
Nb xem có tuyến Ti nào đi qua Da và Db sao cho đi qua Da trước Db
Nếu nhiều tuyến Ti thì chọn tuyến Ti có ít thời gian nhất
Hình 6 Mô tả đường đi khi đi bằng một tuyến xe
Nếu không có tuyến Ti thì
Tìm tất cả tuyến xe đi qua ít nhất một điểm dừng thuộc Na gọi là
tập hợp tuyến Ta, sắp xếp các tuyến Ta theo thứ tự tăng dần góc
Gi
Tìm tất cả tuyến xe đi qua ít nhất một điểm dừng thuộc Nb gọi là
tập hợp tuyến Tb, sắp xếp các tuyến Tb theo thứ tự tăng dần góc
Gi
Lặp các các bước sau cho đến khi tìm được tuyến xe hoặc khi hết
cả hai tập hợp Ta và Tb :
Lần lượt lấy một tuyến xe Tai từ đầu của Ta, lấy tất cả điểm
dừng đằng sau của tuyến Tai từ điểm dừng thuộc Na gọi là
tập hợp điểm Dai, cho tất cả các điểm Dai vào Na
Kiểm tra lần lượt các điểm Dai xem có điểm nào có khoảng
cách tới tập hợp điểm Nb <= Rđi bộ. Nếu có thì xuất kết quả
![Page 25: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/25.jpg)
25
Lần lượt lấy một tuyến xe Tbi từ đầu của Tb, lấy tất cả điểm
dừng đằng trước của tuyến Tbi từ điểm dừng thuộc Nb gọi
là tập hợp điểm Dbi, cho tất cả các điểm Dbi vào Nb
Kiểm tra lần lượt các điểm Dbi xem có điểm nào có khoảng
cách tới tập hợp điểm Na <= Rđi bộ. Nếu có thì xuất kết quả
Hình 7 Mô tả cách tìm đường đi bằng hai tuyến xe
Nếu vẫn tìm được đường đi thì đặt Rđi bộ = 1000m rồi lặp lại quá trình như trên.
2.2.3. Độ phức tạp của giải thuật
Chúng ta đều biết là độ phức tạp của giải thuật tìm đường đi ngắn nhất
của Dijkstra là O(n2 + m) (trong đó n là số đỉnh, m là số cạnh). Với giải thuật
của tôi đề xuất ở mục 2.2.2 thì trong trường hợp xuất nhất, trường hợp tập hợp
các truyến xe Ta và Tb đi qua tất các điểm dừng của thành phố Hà Nội mà không
có tuyến Ta nào trùng với một tuyến Tb thì độ phức tạp là O(n2).
Trên thực tế với Rđi bộ = 500m thì thường có khoảng 10 điểm dừng, mỗi
điểm dừng trùng bình có khoảng 10 tuyến đi qua thì tốc độ của giải thuật là
O(10*10*2) = O(200)
Với Rđi bộ = 1000m thường có khoảng 20 điểm dừng, mỗi điểm dừng
trùng bình có khoảng 10 tuyến đi qua thì tốc độ của giải thuật là O(20*10*2) =
O(400)
![Page 26: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/26.jpg)
26
Thực nghiệm chạy giải thuật trên một chiếc điện thoại tầm trung có cấu
hình trung bình thì giải thuật chạy mất tầm từ 1,5s đến 2s
CHƯƠNG 3. XÂY DỰNG ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG
3.1. PHÂN TÍCH THIẾT KẾ ỨNG DỰNG
3.1.1 Bản đặc tả chức năng ứng dụng:
3.1.1.1 Bản tống quát chức năng:
Actor Use cases Pre Condition /
Post Condition
Người
dùng
Tìm kiếm đường đi:
- Lấy địa chỉ của User hiện tại để fill vào ô
nhập địa chỉ điểm xuất phát. - User nhập địa chỉ cần đến (có hệ thống
gợi ý địa chỉ). - Nhận thấy 2 ô địa chỉ đến và đi đã được
fill thì lập tức tìm đường đi thông qua
Google Map Api. - Hiển thị đường đi vs cụ thể các đoạn đi
bộ, lên xe buýt, xuống xe buýt
User phải nhập
địa chỉ của cả
đích đến và
điểm xuất phát.
User phải cho
phép ứng dụng
truy cập vị trí
(cấp quyền -
grand
permission)
Người
dùng
Tìm kiếm tuyến xe, điểm dừng:
- User nhập từ khóa liên quan đến tên
tuyến xe, địa chỉ điểm dừng
3.1.1.2. Khả năng áp dụng:
Giao diện ứng dụng gọn, chỉ được phép hiển thị những thông tin cần thiết
(User Interface), bố cục hợp lý để user có thể tập trung trải nghiệm chức năng
chính, không bị xao nhãng bởi các chi tiết không cần thiết (User Experience).
3.1.1.3 Khả năng ổn định:
Hệ thống ứng dụng phải chạy 24/7, hạn chế các trường hợp crash app
không cần thiết gây hao tốn dung lượng pin của thiết bị và hạn chế thực hiện
các request bừa bãi để hạn chế dung lượng mạng của user.
![Page 27: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/27.jpg)
27
3.1.1.4 Hiệu suất mong đợi:
Ứng dụng phải trả về lộ trình trong vòng 2.5s - 3.5s (cấu hình của thiết
bị).
Mong đợi sự hỗ trợ mang tới cho người dùng:
- Giúp người dùng tìm được lộ trình hợp lý nhất.
- Giúp người dùng tìm kiếm được thông tin về tuyến xe và điểm
dừng
- Hỗ trợ cả tiếng việt có dấu và tiếng việt không dấu.
- Tạo cảm giác thoải mái, thiện cảm cho người dùng đối với xe buýt.
3.1.2 Sơ đồ luồng hoạt động của ứng dụng:
3.1.2.1. Sơ đồ luồng tìm kiếm thông tin:
- Người dùng vào màn hình chính với địa chỉ hiện tại đã sẵn là vị trí hiện
tại của điện thoại.
- Người dùng nhập thông tin liên quan đến địa chỉ hoặc thông tin tuyến
xe cần tìm.
- Trong quá trình nhập ứng dụng đưa ra gợi ý địa chỉ để người dùng tăng
tốc việc tìm kiếm.
- Sau khi người dùng chọn một trong các gới ý của app thì app hiển thị
thông tin về các điểm dừng xung quanh vị trí người dùng tìm hoặc thông tin về
tuyến xe.
3.1.2.2 Sơ đồ luồng tìm kiếm đường đi:
- Người dùng chạm vào biểu tượng chỉ đường ở góc bên dưới bên trái vào
giao diện chỉ đường.
- Người dùng nhập địa chỉ cần đến hoặc cả địa chỉ xuất phát nếu cần thiết.
![Page 28: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/28.jpg)
28
- Trong quá trình nhập ứng dụng đưa ra gợi ý địa chỉ để người dùng tăng
tốc việc tìm kiếm. Nhận biết khi có cả 2 địa chỉ được fill thì bắt đầu request để
tìm đường.
- Sau khi giải thuật tìm kiếm lộ trình. App hiển thị đường đi cho người
dùng biết cùng cụ thể các đường nên đi đi bộ hay xuống ở điểm nào.
Hình 8 Sơ đồ luồng tìm lộ trình đi xe của ứng dụng
3.1.3 Database:
Sử dụng SQLite là hệ thống cơ sở dữ liệu quan hệ nhỏ gọn, hoàn chỉnh,
có thể cài đặt bên trong các trình ứng dụng di động như Android. SQLite có các
ưu điểm sau:
- Tin cậy: các hoạt động transaction nội trong cơ sở dữ liệu được thực hiện
trọn vẹn, không gây lỗi khi xảy ra sự cố phần cứng
- Tuân theo tiêu chuẩn SQL92
- Gần như không cần cài đặt cấu hình
- Kích thước chương trình nhỏ chỉ không đầy 300 kB
![Page 29: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/29.jpg)
29
- Thực hiện các thao tác hệ thống cơ sở dữ liệu khách/chủ khác đơn giản
nhanh hơn
- Không cần có thêm phần mềm phụ trợ
- Phần mềm tự do với mã nguồn mở, được chú thích rõ ràng
3.3.1 Điểm dừng:
Dữ liệu của các điểm dừng được lưu riêng biệt để tiện cho việc tra cứu
vào từng điểm dừng.
Cấu trúc sẽ bao gồm:
- name: địa chỉ trên thực tế
- lat: vĩ độ của điểm dừng
- lon: kinh độ của điểm dừng
- route_go: lưu các tuyến xe chiều đi
- route_return: lưu các tuyến xe chiều về
- first: lưu các tuyến có điểm bắt đầu là điểm dừng này
- finish: lưu các tuyến có điểm kết thúc là điểm dừng này
![Page 30: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/30.jpg)
30
Hình 9 Cơ sở dữ liệu của điểm dừng
3.3.2. Tuyến xe
Dữ liệu của các tuyến xe được lưu riêng biệt, có các trường sau đây:
- name: tên gọi của tuyến xe
- code: mã của tuyến xe
- direction: hướng của chiều đi của tuyến xe
- cost: giá một lần sử dụng tuyến xe
- tghd: thời gian hoạt động của tuyến xe
- ts: tần xuất tuyến xe
- dv: đơn vị vận hành tuyến xe
- station_go: lưu các id của điểm dừng trên chiều đi
- station_return: lưu các id của điểm dừng trên chiều về
- time_avg_go: thời gian trung bình di chuyển của các điểm dừng chiều
đi
![Page 31: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/31.jpg)
31
- time_avg_return: thời gian trung bình di chuyển của các điểm dừng
chiều về
Hình 10 Cơ sở dữ liệu của các tuyến xe
3.1.4 Thiết kế giao diện:
3.1.4.1 Prototype:
Mục tiêu chính của phần này là thiết kế ra giao diện đăng nhập sao cho
hợp lý, thích hợp UX/UI, thoáng, tập trung vào các chức năng chính.
Trang Home (phần hiển thị map)
![Page 32: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/32.jpg)
32
Hình 11 Thiết kế trang chủ của ứng dụng
3.4.1.4 Trang nhập địa chỉ
Hình 12 Thiết kế giao diện nhập điện chỉ đến và đi
![Page 33: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/33.jpg)
33
3.1.4.2 Deploy:
Sản phẩm màn Home Hiện khi có lộ trình
![Page 34: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/34.jpg)
34
Màn hình chức năng tìm điển dừng
xung quanh một điểm
3.2. XÂY DỰNG ỨNG DỤNG TRÊN NỀN TẢNG ANDROID
3.2.1. Nền tảng Android
Hiện nay, có rất nhiều nền tảng di động nhưng hai nền tảng Android và
IOS đang thống lĩnh gần như 100% thị phần trong đó Android chiến 86,2% thị
phần và IOS chiến 12,9 % thị phần (số liệu thống kê năm 2018). Do đó để nhằm
tới lượng người dùng lớn, tôi đã chọn xây dựng ứng dụng trên nền tảng Android.
Android là một hệ điều hành di động dựa trên phiên bản sửa đổi của nhân
Linux và phần mềm nguồn mở khác, được thiết kế chủ yếu cho các thiết bị di
động màn hình cảm ứng như điện thoại thông minh và máy tính bảng. Android
được phát triển bởi một nhóm các nhà phát triển được gọi là Liên minh điện
![Page 35: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/35.jpg)
35
thoại mở và được Google tài trợ thương mại. Nó được công bố vào năm 2007,
với thiết bị Android thương mại đầu tiên được ra mắt vào tháng 9 năm 2008.
Nó là phần mềm miễn phí và nguồn mở; mã nguồn của nó được gọi là Dự
án nguồn mở Android (AOSP), được cấp phép chủ yếu theo Giấy phép Apache.
Tuy nhiên, hầu hết các thiết bị Android đều được cài đặt sẵn phần mềm độc
quyền bổ sung, đáng chú ý nhất là Google Mobile Services (GMS) bao gồm các
ứng dụng cốt lõi như Google Chrome, nền tảng phân phối kỹ thuật số Google
Play và nền tảng phát triển Dịch vụ Google Play được liên kết. Khoảng 70%
điện thoại thông minh Android chạy hệ sinh thái của Google; các hệ sinh thái
và dĩa Android cạnh tranh bao gồm Fire OS (được phát triển bởi Amazon.com )
hoặc LineageOS (được duy trì bởi cộng đồng).
Mã nguồn đã được sử dụng để phát triển các biến thể của Android trên
một loạt các thiết bị điện tử khác, chẳng hạn như máy chơi game, máy ảnh kỹ
thuật số, PC và các loại khác, mỗi loại có giao diện người dùng chuyên dụng.
Một số dẫn xuất nổi tiếng bao gồm Android TV cho TV và Wear OS cho thiết
bị đeo, cả hai đều được phát triển bởi Google. Các gói phần mềm trên Android,
sử dụng định dạng APK, thường được phân phối thông qua các cửa hàng ứng
dụng độc quyền như Google Play Store hoặc Samsung Galaxy Store hoặc các
nền tảng nguồn mở như Aptoide hoặc F-Droid .
Android là hệ điều hành bán chạy nhất trên toàn thế giới trên điện thoại
thông minh kể từ năm 2011 và trên máy tính bảng kể từ năm 2013. Tính đến
tháng 5 năm 2017, nó có hơn hai tỷ người dùng hoạt động hàng tháng, cơ sở
được cài đặt lớn nhất của bất kỳ hệ điều hành nào và tính đến tháng 3 năm 2020,
Google Play Store có hơn 2,9 triệu ứng dụng. Phiên bản ổn định hiện tại là
Android 10, được phát hành vào ngày 3 tháng 9 năm 2019.
Android Inc. được thành lập tại Palo Alto, California, vào tháng 10 năm
2003 bởi Andy Rubin, Rich Miner, Nick Sears và Chris White. Rubin mô tả dự
![Page 36: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/36.jpg)
36
án Android là "tiềm năng to lớn trong việc phát triển các thiết bị di động thông
minh hơn, nhận thức rõ hơn về vị trí và sở thích của chủ sở hữu". Ý định ban
đầu của công ty là phát triển một hệ điều hành tiên tiến cho máy ảnh kỹ thuật số
và đây là cơ sở của nó cho các nhà đầu tư vào tháng 4 năm 2004. Công ty sau
đó đã quyết định rằng thị trường máy ảnh không đủ lớn cho mục tiêu của mình
và đến năm tháng sau đó, họ đã chuyển hướng nỗ lực của mình và coi Android
là một hệ điều hành cầm tay sẽ cạnh tranh với Symbian và Microsoft Windows
Mobile.
Vào tháng 7 năm 2005, Google mua lại Android Inc. với ít nhất 50 triệu
đô la. Các nhân viên chủ chốt của nó, bao gồm Rubin, Miner và White, đã tham
gia Google như một phần của việc mua lại. Không có nhiều thông tin về Android
bí mật vào thời điểm đó, với công ty đã cung cấp một vài chi tiết khác ngoài
việc họ đang sản xuất phần mềm cho điện thoại di động. Tại Google, nhóm do
Rubin dẫn đầu đã phát triển một nền tảng thiết bị di động được cung cấp bởi
nhân Linux. Google đưa ra thị trường nền tảng để các nhà sản xuất thiết bị cầm
tay và các tàu sân bay trên lời hứa cung cấp một hệ thống nâng cấp linh hoạt.
Google đã "xếp hàng loạt các thành phần phần cứng và đối tác phần mềm và
báo hiệu cho các nhà mạng rằng nó được mở cho nhiều mức độ hợp tác khác
nhau".
Những suy đoán về ý định của Google để thâm nhập thị trường viễn thông
di động tiếp tục xây dựng thông qua December 2006. Một đầu nguyên mẫu đã
có một sự tương đồng gần một BlackBerry điện thoại, không có màn hình cảm
ứng và một vật lý QWERTY bàn phím, nhưng sự xuất hiện của năm 2007 của
Apple iPhone đồng nghĩa với việc Android "phải quay lại bảng vẽ". Google sau
đó đã thay đổi các tài liệu đặc tả Android của mình để nói rằng "Màn hình cảm
ứng sẽ được hỗ trợ", mặc dù "Sản phẩm được thiết kế với sự hiện diện của các
nút vật lý rời rạc như một giả định, do đó màn hình cảm ứng không thể thay thế
hoàn toàn các nút vật lý". Đến năm 2008, cả Nokia và BlackBerry đều công bố
![Page 37: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/37.jpg)
37
điện thoại thông minh dựa trên cảm ứng để cạnh tranh với iPhone 3G và cuối
cùng trọng tâm của Android đã chuyển sang chỉ là màn hình cảm ứng. Điện
thoại thông minh thương mại đầu tiên chạy Android là HTC Dream, còn được
gọi là T-Mobile G1, được công bố vào ngày 23 tháng 9 năm 2008
Vào ngày 5 tháng 11 năm 2007, Open Handset Alliance, một tập đoàn
gồm các công ty công nghệ bao gồm Google, các nhà sản xuất thiết bị như HTC,
Motorola và Samsung, các nhà mạng không dây như Sprint và T-Mobile, và các
nhà sản xuất chipset như Qualcomm và Texas Cụ, đã tiết lộ với mục tiêu phát
triển "nền tảng thực sự mở và toàn diện đầu tiên cho thiết bị di động". Trong
vòng một năm, Liên minh thiết bị cầm tay mở phải đối mặt với hai đối thủ cạnh
tranh nguồn mở khác là Tổ chức Symbian và LiMo Foundation, sau này cũng
phát triển một hệ điều hành di động dựa trên Linux như Google. Vào tháng 9
năm 2007, InformationWeek đã đưa tin về một nghiên cứu của Evalueserve
rằng Google đã nộp một số đơn xin cấp bằng sáng chế trong lĩnh vực điện thoại
di động.
Kể từ năm 2008, Android đã chứng kiến nhiều bản cập nhật cải thiện hệ
điều hành, bổ sung các tính năng mới và sửa lỗi trong các bản phát hành trước.
Mỗi bản phát hành chính được đặt tên theo thứ tự bảng chữ cái sau một món
tráng miệng hoặc đồ uống có đường, với một vài phiên bản Android đầu tiên
được gọi là " Cupcake ", " Donut ", " Eclair " và " Froyo ", theo thứ tự đó. Trong
thông báo về Android KitKat vào năm 2013, Google đã giải thích rằng "Vì các
thiết bị này làm cho cuộc sống của chúng tôi rất ngọt ngào, mỗi phiên bản
Android được đặt tên theo một món tráng miệng", mặc dù một phát ngôn viên
của Google đã nói với CNNtrong một cuộc phỏng vấn rằng "Nó giống như một
điều nhóm nội bộ, và chúng tôi muốn nói một chút - tôi nên nói như thế nào -
một chút khó hiểu trong vấn đề, tôi sẽ nói".
![Page 38: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/38.jpg)
38
Vào năm 2010, Google đã ra mắt loạt thiết bị Nexus của mình, một dòng
sản phẩm mà Google hợp tác với các nhà sản xuất thiết bị khác nhau để sản xuất
các thiết bị mới và giới thiệu các phiên bản Android mới. Sê -ri được mô tả là
đã "đóng một vai trò quan trọng trong lịch sử của Android bằng cách giới thiệu
các lần lặp phần mềm và tiêu chuẩn phần cứng mới trên bảng" và được biết đến
với phần mềm "không phình to " với "cập nhật ... kịp thời". Tại hội nghị nhà
phát triển vào tháng 5 năm 2013, Google đã công bố một phiên bản đặc biệt của
Samsung Galaxy S4, trong đó, thay vì sử dụng tùy biến Android của Samsung,
điện thoại đã chạy "stock Android" và được hứa sẽ nhận được cập nhật hệ thống
mới nhanh chóng. Thiết bị này sẽ trở thành sự khởi đầu của chương trình phiên
bản Google Play và được theo sau bởi các thiết bị khác, bao gồm phiên bản
HTC One Google Play, và phiên bản Moto G Google Play. Vào năm 2015, Ars
Technica đã viết rằng "Đầu tuần này, điện thoại Android phiên bản Google Play
cuối cùng trong cửa hàng trực tuyến của Google đã được liệt kê là" không còn
có sẵn để bán "và" Bây giờ tất cả đã biến mất, và nó trông rất giống chương
trình đã kết thúc ".
Từ 2008 đến 2013, Hugo Barra là người phát ngôn sản phẩm, đại diện
cho Android tại các cuộc họp báo và Google I/O, hội nghị tập trung vào nhà
phát triển hàng năm của Google. Anh rời Google vào tháng 8 năm 2013 để gia
nhập nhà sản xuất điện thoại Trung Quốc Xiaomi. Ít hơn sáu tháng trước đó,
của Google sau đó Giám đốc điều hành Larry Page tuyên bố trong một bài viết
trên blog rằng Andy Rubin đã chuyển từ bộ phận Android để đưa vào dự án mới
tại Google, và rằng Sundar Pichai sẽ trở thành dẫn Android mới. Bản thân Pichai
cuối cùng sẽ chuyển đổi vị trí, trở thành CEO mới của Google vào tháng 8 năm
2015 sau khi tái cấu trúc công ty, làm cho Hiroshi Lockheimer trở thành người
đứng đầu mới của Android.
![Page 39: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/39.jpg)
39
Vào tháng 6 năm 2014, Google đã công bố Android One, một phiên bản
Android cho phép các nhà sản xuất thiết bị dễ dàng tạo ra điện thoại chất lượng
cao với chi phí thấp, được thiết kế cho người tiêu dùng ở các nước đang phát
triển. Vào tháng 9, Google đã công bố bộ điện thoại Android One đầu tiên được
phát hành tại Ấn Độ. Tuy nhiên, Recode đã báo cáo vào tháng 6 năm 2015 rằng
dự án là "một sự thất vọng"
Google đã giới thiệu điện thoại thông minh Pixel và Pixel XL vào tháng
10 năm 2016, được bán trên thị trường là điện thoại đầu tiên do Google sản xuất,
và đặc trưng với các tính năng phần mềm nhất định, như Google Assistant, trước
khi triển khai rộng hơn. Các điện thoại Pixel đã thay thế dòng Nexus, bằng một
thế hệ điện thoại Pixel mới được ra mắt vào tháng 10 năm 2017.
Vào tháng 5 năm 2019, hệ điều hành đã vướng vào cuộc chiến thương
mại giữa Trung Quốc và Hoa Kỳ liên quan đến Huawei, giống như nhiều công
ty công nghệ khác đã trở nên phụ thuộc vào quyền truy cập vào nền tảng
Android. Vào mùa hè năm 2019, Huawei tuyên bố sẽ tạo ra một hệ điều hành
thay thế cho Android được gọi là Harmony OS, và đã nộp đơn xin quyền sở
hữu trí tuệ trên các thị trường lớn trên toàn cầu. Huawei hiện không có bất kỳ
kế hoạch nào để thay thế Android trong tương lai gần, vì Harmony OS được
thiết kế cho internet mọi thứ thiết bị, thay vì cho điện thoại thông minh.
Vào ngày 22 tháng 8 năm 2019, Android "Q" sẽ chính thức được gắn
nhãn là Android 10, chấm dứt thực tiễn lịch sử đặt tên các phiên bản chính sau
các món tráng miệng. Google tuyên bố rằng những tên này không "bao gồm"
đối với người dùng quốc tế. Cùng ngày, có báo cáo rằng Google đã đặt một bức
tượng có số khổng lồ "10" để được lắp đặt tại sảnh của văn phòng mới của nhà
phát triển. Android 10 được phát hành vào ngày 3 tháng 9 năm 2019 cho điện
thoại Google Pixel .
![Page 40: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/40.jpg)
40
3.2.2. Công cụ Android Studio
Android Studio là IDE chính thức của Google dành cho hệ điều hành
Android, xây dựng trên JetBrains ' IDEA IntelliJ phần mềm và thiết kế đặc biệt
cho phát triển Android. Nó có hỗ trợ trên các hệ điều hành dựa trên Windows,
macOS và Linux. Nó là sự thay thế cho Công cụ phát triển Android Eclipse
(ADT) làm IDE chính cho phát triển ứng dụng Android.
Android Studio đã được công bố vào ngày 16 tháng 5 năm 2013 tại hội
nghị Google I/O. Đó là trong giai đoạn xem trước truy cập sớm bắt đầu từ phiên
bản 0.1 vào tháng 5 năm 2013, sau đó bước vào giai đoạn beta bắt đầu từ phiên
bản 0.8 được phát hành vào tháng 6 năm 2014. Phiên bản chính thức 1.0 được
phát hành vào tháng 12 năm 2014.
Android Studio hỗ trợ ba ngôn ngữ lập trình là Kotlin, Java và C++. Vào
ngày 7 tháng 5 năm 2019, Kotlin đã thay thế Java làm ngôn ngữ ưa thích nhất
của Google để phát triển ứng dụng Android.
Android Studio có các đặc trưng sau:
- Sử dụng Gradle hỗ trợ xây dựng bản chạy
- Tái cấu trúc dành riêng cho Android và sửa lỗi nhanh
- Sử dụng công cụ Lint để nắm bắt hiệu suất, khả năng sử dụng, khả năng
tương thích phiên bản và các vấn đề khác
- Khả năng tích hợp và ký ứng dụng ProGuard
- Trình hướng dẫn dựa trên mẫu để tạo các thiết kế và thành phần phổ
biến của Android
- Trình chỉnh sửa bố cục phong phú cho phép người dùng kéo và thả các
thành phần UI, tùy chọn để xem trước bố cục trên nhiều cấu hình màn hình.
- Hỗ trợ cho việc xây dựng Android Wear ứng dụng
- Hỗ trợ tích hợp cho Google Cloud Platform, cho phép tích hợp với
Firebase Cloud Messaging (trước đó là 'Google Cloud Messaging') và Google
App Engine.
- Có thiết bị ảo Android (trình giả lập) để chạy và gỡ lỗi ứng.
![Page 41: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/41.jpg)
41
- Android Studio hỗ trợ tất cả các ngôn ngữ lập trình tương tự của IntelliJ
ví dụ Java, C ++ và hơn thế nữa với các tiện ích mở rộng, chẳng hạn như Go.
Android Studio yêu cầu hệ thống cơ bản như sau:
- Công cụ SDK 26.1.1 trở lên;
- Bộ xử lý 64 bit;
- Windows: CPU có hỗ trợ UG
- HAXM 6.2.1 trở lên (khuyến nghị HAXM 7.2.0 trở lên).
- Bổ sung việc tăng tốc phần cứng có các trên Windows và Linux:
- Bộ xử lý Intel trên Windows hoặc Linux: Bộ xử lý Intel có hỗ trợ Intel
VT-x, Intel EM64T (Intel 64) và chức năng Bit Execute Disable (XD);
- Bộ xử lý AMD trên Linux: Bộ xử lý AMD có hỗ trợ Ảo hóa AMD
(AMD-V) và Phần mở rộng SIMD trực tuyến bổ sung 3 (SSSE3) ;
- Bộ xử lý AMD trên Windows: Android Studio 3.2 trở lên và Windows
10 tháng 4 năm 2018 hoặc cao hơn cho chức năng Windows Hypervisor
Platform (WHPX) .
- Để hoạt động với Android 8.1 (API cấp 27) và hình ảnh hệ thống cao
hơn, một webcam đính kèm phải có khả năng chụp các khung hình 720p.
Tại phiên bản mới nhất Android Studio 4.0 có các cải tiến & tính năng
mới:
![Page 42: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/42.jpg)
42
- Về Thiết kế
+ Motion Editor: giao diện đơn giản để tạo, chỉnh sửa và xem
trước MotionLayout.
+ Trình kiểm tra bố cục được nâng cấp: trải nghiệm gỡ lỗi trực quan và
thời gian thực hơn.
+ Xác thực bố cục: so sánh giao diện người dùng của bạn trên nhiều kích
thước màn hình.
- Về hệ thống
+ Cập nhật CPU Profiler: các cải tiến để làm cho giao diện người dùng
trực quan hơn để điều hướng và dữ liệu dễ hiểu hơn.
+ Cập nhật quy tắc R8: các tính năng soạn thảo thông minh cho các quy
tắc thu nhỏ mã của bạn, chẳng hạn như tô sáng cú pháp, hoàn thành và kiểm tra
lỗi.
+ Cập nhật nền tảng IntelliJ IDEA 2019.3 với các cải tiến về hiệu suất và
chất lượng.
+ Cập nhật mẫu trực tiếp: Các mẫu trực tiếp dành riêng cho Android cho
mã Kotlin của bạn.
+ Hỗ trợ Clangd: Clangd và Clang-Tidy được bật theo mặc định
- Về xây dựng bản chạy
+ Trình phân tích bản dựng: hiểu và giải quyết các tắc nghẽn trong bản
dựng của bạn.
+ Cập nhật hỗ trợ ngôn ngữ Java 8: API bạn có thể sử dụng bất kể cấp
API tối thiểu của ứng dụng của bạn.
+ Các phụ thuộc tính năng trên tính năng: xác định các phụ thuộc giữa
các mô-đun tính năng động.
![Page 43: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/43.jpg)
43
+ BuildFeatures DSL: bật hoặc tắt các tính năng xây dựng rời rạc, như
Binding dữ liệu.
+ Kotlin DSL: hỗ trợ thiết yếu cho các tập tin kịch bản DSL của Kotlin.
3.2.3. Hệ quản trị cơ sở dữ liệu SQLite
SQLite là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Trái ngược
với nhiều hệ thống quản lý cơ sở dữ liệu khác, SQLite không phải là công cụ cơ
sở dữ liệu máy chủ của máy khách. Thay vào đó, nó được nhúng vào chương
trình kết thúc.
SQLite là dụng cụ hầu hết các SQL tiêu chuẩn, thường sau PostgreSQL
cú pháp. Tuy nhiên, SQLite sử dụng cú pháp SQL được gõ động và yếu, không
đảm bảo tính toàn vẹn của miền, ví dụ chèn một chuỗi vào một cột được xác
định là một số nguyên. SQLite sẽ cố gắng chuyển đổi dữ liệu giữa các định dạng
khi thích hợp, chuỗi "123" thành số nguyên trong trường hợp này, nhưng không
đảm bảo các chuyển đổi đó và sẽ lưu trữ dữ liệu như hiện tại nếu không thể
chuyển đổi như vậy.
SQLite là một lựa chọn phổ biến vì phần mềm cơ sở dữ liệu nhúng để lưu
trữ cục bộ trong máy khách như trình duyệt web. Nó được cho là công cụ cơ sở
dữ liệu được triển khai rộng rãi nhất, vì ngày nay nó được sử dụng bởi một số
trình duyệt, hệ điều hành và hệ thống nhúng rộng rãi (như điện thoại di động).
SQLite có các ràng buộc với nhiều ngôn ngữ lập trình.
* Về thiết kế
Không giống như các hệ thống quản lý cơ sở dữ liệu máy chủ của máy
khách, công cụ SQLite không có các quy trình độc lập mà chương trình ứng
dụng giao tiếp. Thay vào đó, thư viện SQLite được liên kết và do đó trở thành
một phần không thể thiếu của chương trình ứng dụng. Liên kết có thể là tĩnh
hoặc động. Chương trình ứng dụng sử dụng chức năng của SQLite thông qua
các lệnh gọi hàm đơn giản, giúp giảm độ trễ khi truy cập cơ sở dữ liệu: các lệnh
![Page 44: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/44.jpg)
44
gọi hàm trong một quy trình đơn lẻ hiệu quả hơn so với giao tiếp giữa các quá
trình .
SQLite lưu trữ toàn bộ cơ sở dữ liệu (định nghĩa, bảng, chỉ mục và chính
dữ liệu) dưới dạng một tệp đa nền tảng trên một máy chủ. Nó thực hiện thiết kế
đơn giản này bằng cách khóa toàn bộ tệp cơ sở dữ liệu trong khi viết. Các hoạt
động đọc SQLite có thể được đa nhiệm, mặc dù việc ghi chỉ có thể được thực
hiện tuần tự.
Do thiết kế không có máy chủ, các ứng dụng SQLite yêu cầu cấu hình ít
hơn so với cơ sở dữ liệu máy khách-máy chủ. SQLite được gọi là zero-conf vì
nó không yêu cầu quản lý dịch vụ (chẳng hạn như tập lệnh khởi động) hoặc
kiểm soát truy cập dựa trên GRANT và mật khẩu. Kiểm soát truy cập được xử
lý bằng các quyền của hệ thống tệp được cung cấp cho chính tệp cơ sở dữ liệu.
Cơ sở dữ liệu trong hệ thống máy khách-máy chủ sử dụng quyền hệ thống tệp
chỉ cấp quyền truy cập vào tệp cơ sở dữ liệu cho quy trình trình nền.
Một ý nghĩa khác của thiết kế không có máy chủ là một số quy trình có
thể không thể ghi vào tệp cơ sở dữ liệu. Trong cơ sở dữ liệu dựa trên máy chủ,
một số nhà văn sẽ kết nối với cùng một trình nền, có thể xử lý các khóa của nó
trong nội bộ. Mặt khác, SQLite phải dựa vào các khóa hệ thống tệp. Nó có ít
kiến thức về các quá trình khác đang truy cập cơ sở dữ liệu cùng một lúc. Do
đó, SQLite không phải là lựa chọn ưu tiên cho các triển khai chuyên sâu viết.
Tuy nhiên, đối với các truy vấn đơn giản với ít đồng thời, hiệu suất SQLite thu
được lợi nhuận từ việc tránh truyền dữ liệu của nó sang quy trình khác.
SQLite sử dụng PostgreSQL làm nền tảng tham chiếu. "PostgreSQL sẽ
làm gì" được sử dụng để hiểu ý nghĩa của tiêu chuẩn SQL. Một sai lệch lớn là,
ngoại trừ các khóa chính, SQLite không thực thi kiểm tra kiểu; loại giá trị là
động và không bị ràng buộc chặt chẽ bởi lược đồ (mặc dù lược đồ sẽ kích hoạt
chuyển đổi khi lưu trữ, nếu chuyển đổi đó có khả năng đảo ngược). SQLite cố
gắng tuân theo Quy tắc của Postel.
![Page 45: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/45.jpg)
45
3.2.4. Bản đồ Google Map và API Google Maps
Google Maps là một dịch vụ bản đồ web được phát triển bởi Google. Nó
cung cấp hình ảnh vệ tinh, chụp ảnh trên không, bản đồ đường phố, chế độ xem
toàn cảnh tương tác 360 ° của đường phố, điều kiện giao thông thời gian thực
và lập kế hoạch tuyến đường để đi bộ, xe hơi, xe đạp và máy bay hoặc giao
thông công cộng. Năm 2020, Google Maps được sử dụng bởi hơn 1 tỷ người
mỗi tháng.
Vào tháng 10 năm 2004, công ty đã được Google mua lại, công ty đã
chuyển đổi nó thành một ứng dụng web. Sau khi mua thêm một công ty trực
quan hóa dữ liệu không gian địa lý và phân tích lưu lượng thời gian thực, Google
Maps đã được ra mắt vào tháng 2 năm 2005. Mặt trước của dịch vụ sử dụng
JavaScript, XML và Ajax. Google Maps cung cấp API cho phép các bản đồ
được nhúng trên các trang web của bên thứ ba, và cung cấp công cụ định vị cho
các doanh nghiệp và các tổ chức khác ở nhiều quốc gia trên thế giới. Trình tạo
bản đồ Googlecho phép người dùng cộng tác mở rộng và cập nhật bản đồ của
dịch vụ trên toàn thế giới nhưng đã bị ngừng từ tháng 3 năm 2017. Tuy nhiên,
các đóng góp của cộng đồng cho Google Maps không bị ngừng vì công ty đã
thông báo các tính năng này sẽ được chuyển sang chương trình Google Local
Guide.
Chế độ xem vệ tinh của Google Maps là chế độ xem "từ trên xuống"; hầu
hết các hình ảnh độ phân giải cao của các thành phố là ảnh chụp từ trên không
được chụp từ máy bay bay ở độ cao 240 đến 460 m, trong khi phần lớn các hình
ảnh khác là từ vệ tinh. Hình ảnh vệ tinh có sẵn không quá ba năm và được cập
nhật thường xuyên. Google Maps đã sử dụng một biến thể của phép chiếu
Mercator và do đó không thể hiển thị chính xác các khu vực xung quanh các
cực. Vào tháng 8 năm 2018, phiên bản Google Maps dành cho máy tính để bàn
đã được cập nhật để hiển thị toàn cầu 3D và vẫn có thể chuyển về bản đồ 2D
trong cài đặt.
![Page 46: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/46.jpg)
46
Google Maps dành cho Android và các thiết bị iOS được phát hành vào
tháng 9 năm 2008 và các tính năng GPS turn-by-turn navigation cùng với
chuyên dụng bãi đậu xe tính năng hỗ trợ. Vào tháng 8 năm 2013, nó đã được
xác định là ứng dụng phổ biến nhất thế giới dành cho điện thoại thông minh,
với hơn 54% chủ sở hữu điện thoại thông minh toàn cầu sử dụng ít nhất một
lần.
Trong năm 2017, cùng với một số dịch vụ khác bao gồm YouTube,
Chrome, Gmail, Tìm kiếm và Google Play, Google Maps đã đạt hơn 1 tỷ người
dùng hàng tháng.
Google Maps lần đầu tiên bắt đầu như một chương trình C ++ được thiết
kế bởi hai anh em người Đan Mạch, Lars và Jens Eilstrup Rasmussen, tại công
ty có trụ sở tại Sydney, nơi 2 Technologies. Ban đầu nó được thiết kế để người
dùng tải xuống riêng biệt, nhưng công ty sau đó đã đưa ra ý tưởng về một sản
phẩm hoàn toàn dựa trên Web cho quản lý Google, thay đổi phương thức phân
phối. Vào tháng 10 năm 2004, công ty đã được Google Inc mua lại chuyển đổi
thành ứng dụng web Google Maps. Trong cùng tháng đó, Google đã mua lại
Keyhole, một công ty trực quan hóa dữ liệu không gian địa lý (với sự đầu tư từ
CIA), có bộ ứng dụng marquee, Earth Viewer, nổi lên là ứng dụng Google Earth
rất thành công vào năm 2005 trong khi các khía cạnh khác của công nghệ cốt
lõi của nó được tích hợp vào Google Maps. Vào tháng 9 năm 2004, Google mua
lại ZipDash, một công ty cung cấp phân tích lưu lượng truy cập thời gian thực.
Google Map hiện giờ rất phố biến đối với người dùng và nó có rất nhiều
tính năng về vị trí, một số chức năng chính là:
- Chỉ đường, Google Maps cung cấp công cụ lập kế hoạch tuyến đường,
cho phép người dùng tìm chỉ đường có sẵn thông qua lái xe, phương tiện giao
thông công cộng, đi bộ hoặc đi xe đạp. Google đã hợp tác trên toàn cầu với hơn
800 nhà cung cấp dịch vụ vận tải công cộng để áp dụng Thông số kỹ thuật
chuyển tiếp chung (GTFS), cung cấp dữ liệu cho các bên thứ ba. Hiện tại, ứng
![Page 47: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/47.jpg)
47
dụng cũng có các dòng được gắn dấu sao để chỉ ra tuyến đường quá cảnh của
người dùng trong bản cập nhật mới nhất vào tháng 10 năm 2019. Cùng với chế
độ ẩn danh này, các tính năng điều hướng đi bộ không có mắt đã được phát hành
trước đó.
- Mô tả tình trạng giao thông, năm 2007 Google đã bắt đầu cung cấp dữ
liệu giao thông dưới dạng lớp phủ màu trên đầu đường và đường cao tốc để thể
hiện tốc độ của phương tiện trên các con đường cụ thể. Dịch vụ đám đông được
sử dụng để có được các vị trí xác định GPS của một số lượng lớn người dùng
điện thoại di động, từ đó bản đồ giao thông trực tiếp được tạo ra. Google đã
tuyên bố rằng tốc độ và thông tin vị trí mà nó thu thập để tính toán các điều kiện
giao thông là ẩn danh. Tùy chọn trong mỗi cài đặt của điện thoại cho phép người
dùng không chia sẻ thông tin về vị trí của họ với Google Maps.
- Google Street View, cũng vào năm 2007 Google đã phát hành Google
Street View, một tính năng mới của Google Maps, cung cấp chế độ xem toàn
cảnh đường phố 360° của các địa điểm khác nhau. Vào ngày phát hành, tính
năng này chỉ bao gồm năm thành phố ở Mỹ. Nó đã mở rộng đến hàng ngàn địa
điểm trên khắp thế giới. Vào tháng 7 năm 2009, Google đã bắt đầu lập bản đồ
các trường đại học và các con đường và lối mòn xung quanh. Chế độ xem phố
thu được nhiều tranh cãi sau khi phát hành vì những lo ngại về quyền riêng tư
về bản chất không bị kiểm duyệt của các bức ảnh toàn cảnh, mặc dù các quan
điểm chỉ được chụp trên đường phố công cộng. Kể từ đó, Google đã bắt đầu
làm mờ khuôn mặt và biển số xe thông qua nhận dạng khuôn mặt tự động. Vào
cuối năm 2014, Google đã ra mắt Google Underwater Street View, bao gồm
2.300 km (1.400 dặm) của Rạn san hô Great Barrier Úc dưới dạng 3D. Hình ảnh
được chụp bởi các máy ảnh đặc biệt xoay 360 độ và chụp cứ sau 3 giây.
- 45° imagery, vào năm 2009 Google đã giới thiệu một chế độ xem mới
bao gồm hình ảnh trên không góc 45°, cung cấp "chế độ xem mắt chim " của
các thành phố. Các thành phố đầu tiên có sẵn là San Jose và San Diego. Tính
![Page 48: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/48.jpg)
48
năng này ban đầu chỉ khả dụng cho các nhà phát triển thông qua API Google
Maps. Vào tháng 2 năm 2010, nó được giới thiệu như một tính năng thử nghiệm
trong Google Maps Labs. Vào tháng 7 năm 2010, hình ảnh 45° đã được cung
cấp trên Google Maps tại các thành phố được chọn ở Hoa Kỳ và trên toàn thế
giới.
- Cung cấp danh sách doanh nghiệp, Google đối chiếu danh sách doanh
nghiệp từ nhiều nguồn trực tuyến và ngoại tuyến. Để giảm trùng lặp trong chỉ
mục, thuật toán của Google tự động kết hợp các danh sách dựa trên địa chỉ, số
điện thoại hoặc mã địa lý, nhưng đôi khi thông tin cho các doanh nghiệp riêng
biệt sẽ vô tình được hợp nhất với nhau, dẫn đến danh sách kết hợp không chính
xác các yếu tố từ nhiều doanh nghiệp. Google cho phép chủ sở hữu doanh
nghiệp xác minh dữ liệu kinh doanh của riêng họ thông qua Google My
Business, và cũng đã tuyển dụng tình nguyện viên để kiểm tra và sửa dữ liệu sự
thật mặt đất. Google Maps có thể dễ dàng bị thao túng bởi các doanh nghiệp
không nằm trong khu vực mà họ ghi danh sách. Có những trường hợp người
lạm dụng Google Maps để vượt qua đối thủ cạnh tranh bằng cách đặt các danh
sách chưa được xác minh trên các trang web thư mục trực tuyến khi biết thông
tin sẽ được chuyển sang Google (các trang web trùng lặp). Những người cập
nhật các danh sách này không sử dụng tên doanh nghiệp đã đăng ký. Từ khóa
và chi tiết vị trí được đặt trên tiêu đề kinh doanh Google Maps của họ, vượt qua
danh sách doanh nghiệp đáng tin cậy. Đặc biệt tại Úc, các công ty và doanh
nghiệp chân chính đang nhận thấy xu hướng danh sách doanh nghiệp giả trong
nhiều ngành công nghiệp.
- Indoor maps, vào năm 2011 các bản đồ trong nhà đã được thêm vào
Google Maps, cho phép người dùng có thể tự điều hướng trong các tòa nhà như
sân bay, bảo tàng, trung tâm mua sắm, cửa hàng hộp lớn, trường đại học, trạm
trung chuyển và các không gian công cộng khác (bao gồm cả các cơ sở ngầm).
Google khuyến khích chủ sở hữu các cơ sở công cộng gửi kế hoạch sàn của các
tòa nhà của họ để thêm chúng vào dịch vụ. Người dùng bản đồ có thể xem các
![Page 49: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/49.jpg)
49
tầng khác nhau của tòa nhà hoặc ga tàu điện ngầm bằng cách nhấp vào bộ chọn
cấp độ được hiển thị gần bất kỳ cấu trúc nào được ánh xạ trên nhiều cấp độ.
- My maps là một tính năng trong Google Maps được ra mắt vào tháng 4
năm 2007 cho phép người dùng tạo bản đồ tùy chỉnh để sử dụng hoặc chia sẻ
cá nhân. Người dùng có thể thêm điểm, đường, hình dạng, ghi chú và hình ảnh
trên Google Maps bằng trình chỉnh sửa WYSIWYG. Một ứng dụng Android
cho Bản đồ của tôi, được phát hành lần đầu vào tháng 3 năm 2013 dưới tên
Google Maps Engine Lite, cũng có sẵn.
- Google Local Guides là một chương trình do Google Maps đưa ra để
cho phép người dùng đóng góp cho Google Maps và nó cung cấp cho họ các
đặc quyền và lợi ích bổ sung cho công việc. Chương trình này là một phần kế
thừa của Google Map Maker khi các tính năng từ chương trình cũ được tích hợp
vào trang web và ứng dụng.
API Google Maps
Ứng dụng Google Map là một dịch vụ bản đồ trực tuyến trên web và app
miễn phí do Google phát hành và quản lý, ứng dụng hỗ trợ nhiều dịch vụ, tính
năng cho người dùng nhưng phổ biến nhất là dò đường, chỉ đường, tìm vị trí;
hiển thị những tuyến đường tối ưu cho từng phương tiện tham gia giao thông,
ngoài ra còn hướng dẫn cách bắt xe và chuyển tuyến xe dành cho người tham
gia các phương tiện lưu thông công cộng (xe bus), hiển thị những địa điểm xung
quanh vị trí người dùng hoặc vị trí chỉ định như ATM, trạm xăng, bệnh viện,…
Google Map API là một phương pháp cho phép một website, ứng dụng
B có thể sử dụng dịch vụ hoặc hiển thị nội dung của một trang web khác, ở đây
là là website A – Google Map (thông qua Map API), dịch vụ bản đồ của website
A (Map) sẽ được nhúng vào website B (Website cá nhân), tại trang web B có
thể sử dụng những dịch vụ mà Google Map cung cấp thông qua Google Map
API như: di chuyển, zoom, đánh dấu trên bản đồ,…
![Page 50: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/50.jpg)
50
Hiện nay, các ứng dụng xây dựng trên nền tảng Google Maps như Grab
thường sử dụng Google Map API để nhúng bản đồ vào trang web hoặc ứng
dụng thông qua ngôn ngữ Javascripts, chính vì vậy mà việc sử dụng API từ
Google cũng khá dễ dàng. Đồng thời Map API cũng đã được nâng cấp lên phiên
bản mới, không chỉ hỗ trợ cho máy tính và website truyền thống mà còn cả thiết
bị di động, giúp ứng dụng hoạt động nhanh hơn và hiệu quả hơn.
Một số ứng dụng của Google Map API:
– Khi sử dụng Map API, bạn có thể đánh dấu bất kỳ địa điểm nào trên
bản đồ, kèm theo đó là những thông tin về địa điểm đó, bao gồm các khu vui
chơi, ATM, trường học,…
– Tính năng chỉ đường đến địa điểm cần tìm (tuyến đường tối ưu nhất
cho các phương tiện và nhiều lựa chọn khác), địa điểm có thể được cung cấp
như cách làm ở trên hoặc thông qua dịch vụ mà Google Map cung cấp sẵn.
– Giúp khoanh vùng khu vực như khu kinh tế, khu sản xuất, khu đô thị
hay các khu bị ô nhiễm,…
– Có thể theo dõi tình hình giao thông, lưu lượng phương tiện tại các khu
vực,… và có giải pháp hợp lý.
![Page 51: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/51.jpg)
51
CHƯƠNG 4. KẾT LUẬN VÀ KIẾN NGHỊ
4.1. KẾT LUẬN
Sau một thời gian nghiên cứu, làm việc và được sự hướng dẫn của các
thầy cô, tôi đã hoàn thành luận văn “Tối ưu tìm đường hệ thống giao thông công
cộng Hà Nội” với kết quả như sau:
- Xây dựng cơ sở dữ liệu về hệ thống giao thông công cộng Hà Nội với
hơn 2243 điểm dừng, 106 tuyến xe
- Tìm ra được giải thuật tìm đường trên hệ thống giao thông công cộng
Hà Nội xử lý được ngày trên điện thoại thông minh.
- Ứng dụng giải thuật xây dựng được ứng dụng “Hà Nội Bus” trên nền
tảng Android
4.2. KIẾN NGHỊ
Để các kết quả nghiên cứu được áp dụng một cách khả thi trong thực tế
ở Hà Nội cũng như các tỉnh thành phố khác, luận văn đề xuất một số kiến nghị
sau:
- Tiếp tục nghiên cứu để hoàn thiện hơn nữa giải thuật tìm đường trên hệ
thống giao thông công cộng.
- Ứng dụng giải thuật tìm được xây dựng các ứng dụng trên các nền tảng
Android và IOS cho các thành phố lớn của Việt Nam.
![Page 52: LỜI CAM ĐOAN Tôi xin cam đoan bài luận văn này là sự ứ ủ ả ầ …gust.edu.vn/media/27/uftai-ve-tai-day27643.pdf · 2020. 8. 6. · Hình 8 Sơ đồ luồng tìm](https://reader033.vdocuments.pub/reader033/viewer/2022060822/609b7ae9c30804454049d29c/html5/thumbnails/52.jpg)
52
TÀI LIỆU THAM KHẢO
1. Lê Minh Hoàng, 2006, Giải Thuật và Lập Trình, NXB Đại học Sư phạm,
tr. 229-244.
2. Nguyễn Đình Lầu, Trần Ngọc Việt, 2012, Song song hóa thuật toán
Dijkstra tìm đường đi ngắn nhất từ một đỉnh đến tất cả các đỉnh, Tạp chí
Khoa học - Đại học Huế, Tập 74B, Số 5, tr. 81-92
3. Hoàng Nghĩa Tý, 2014, Cấu Trúc Dữ Liệu Và Thuật Toán, NXB Xây
Dựng, tr. 212 – 261.
4. Trần Thông Quế, 2018, Cấu Trúc Dữ Liệu Và Thuật Toán, NXB Thông
tin Truyền thông, Tập 1.
5. Lê Xuân Trường, 2018, Cấu Trúc Dữ Liệu, NXB Lao Động
6. Man-chun Tan, C.O. Tong, S.C. Wong, Jian-min Xu, 2006, An Algorithm
for Finding Reasonable Paths in Transit Networks, Journal of Advanced
Transportation, Vol. 41, No. 3, pp. 285-305.
7. Quanzhou Huang, 2016, Design and Optimization of Bus Route Query
Algorithm, 3rd International Conference on Mechatronics and Information
Technology (ICMIT 2016).
8. Nguyễn Văn Ba, 2014, Phân tích và thiết kế hệ thống thông tin các phương
pháp có cấu trúc, NXB Đại học Quốc gia Hà Nội.