1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội

52 4 0

Đ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

Thông tin cơ bản

Tiêu đề Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
Tác giả Phạm Trung Dũng
Người hướng dẫn PGS.TS Nguyễn Long Giang, TS Lê Xuân Tuấn
Trường học Viện Công nghệ thông tin
Thể loại luận văn
Năm xuất bản 2020
Thành phố Hà Nội
Định dạng
Số trang 52
Dung lượng 2,78 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Để 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 giaoth

Trang 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.TSNguyễn Long Giang và TS Lê Xuân Tuấn Tôi xin chịu trách nhiệm hoàn toànnếu xảy ra sai phạm

Tác giả luận văn

Phạm Trung Dũng

Trang 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 LongGiang và TS Lê Xuân Tuấn – người trực tiếp hướng dẫn khóa luận đã luôndành nhiều thời gian, công sức hướng dẫn em trong suốt quá trình thực hiệnnghiê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 Khoahọ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àykhông tránh khỏi những thiếu sót Em kính mong các chuyên gia, những ngườiquan 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ả

Trang 3

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

Trang 4

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

Trang 5

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

Trang 6

DANH MỤC CÁC TỪ VIẾT TẮT

Trang 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 áplự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 giaothông công cộng, nhưng để biết hết thông tin về điểm dừng, tuyến bus, tuyếntàu điện, đặc biệt là xác định được đường đi tối ưu là khó Hiện nay đã có mộtvà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, giaodiệ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

Trang 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ớinhững vấn đề về giao thông đô thị như sự gia tăng của phương tiện cá nhân, áplự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ácphươ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ôitrường do khói bụi từ các phương tiện giao thông, ảnh hưởng đến tốc độ tăngtrưở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 giaothô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ếttì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ôngcộ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ớihơ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–60phú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ữngngà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âncậ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 kmtrở 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ôngcộ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ẽ

Trang 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 xeYên Nghĩa đến Cát Linh Tới năm 2019, chưa có thêm tuyến xe buýt nhanhnà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ủatrục đường Làn đường này được phân cách bằng gờ cao 20 cm Nhà chờ chohà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ậnchuyể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 để ưutiê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ộtray Đâ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ầmnhì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ộ Giaothông Vận tải và Ủy ban nhân dân thành phố Hà Nội làm chủ đầu tư Tổngquan quy hoạch cụ thể năm 2016 của đường sắt đô thị Hà Nội như sau:

Trang 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

Trang 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ệuUSD Đế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 đỉnhtà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 80km/giờ, tốc độ trung bình ≥ 35 km/giờ Năng lực vận chuyển tối đa khoảng28.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ởicô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ếtnố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ănNgọ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ớiTrần Hừng Đạo

Trang 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ýtnhanh, 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:

Trang 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

Trang 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

Trang 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 đếnviệ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ếtkiệm nhất theo khoảng cách, thời gian hay chi phí Khi đó phát sinh yêu cầutìm đường đi ngắn nhất giữa hai đỉnh của đồ thị Bài toán đó phát biểu dướidạ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ôngtồ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àynhỏ hơn bất kỳ một số cho trước nào Trong trường hợp như vậy, có thể đặtvấn đề tìm đường đi cơ bản ngắn nhất Vấn đề đó là một vấn đề hết sức phứctạ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 Stới đỉnh F trên đơn đồ thị có hướng G = (V, E) có n đỉnh và m cung Trongtrường hợp đơn đồ thị vô hướng với trọng số không âm, bài toán tìm đường đingắn nhất có thể dẫn về bài toán trên đồ thị có hướng bằng cách thay mỗicạnh của nó bằng hai cung có hướng ngược chiều nhau Lưu ý rằng các thuậttoá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

Trang 17

toán đường đi ngắn nhất nguồn đơn trong một đồ thị có hướng không có cạnhmang trọng số âm Thuật toán thường được sử dụng trong định tuyến với mộtchươ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 Trungtâm Toán học ở Amsterdam năm 1956 với tư cách là một lập trình viên để chứngminh 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ôngthuần tính toán vẫn có thể hiểu được Ông đã thiết kế thuật toán đường đi ngắnnhất và sau đó triển khai nó cho ARMAC bằng bản đồ giao thông được đơn giảnhó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ểulượ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àonă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áccạ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ắnnhấ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

Trang 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

dụng kết hợp với cấu trúc Heap vào trong giải thuật Dijkstra, khi đó độ phứctạp sẽ là O((m+n)log(n)), nếu kết hợp với Fibonacci Heap thì độ phức tạpgiả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ạthơ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ấtbản nó vào năm 1958 và 1956 , tương ứng Edward F Moore cũng đã xuất bảnthuậ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

Trang 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áncho 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 đườngdẫ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ấtbản dưới dạng hiện được công nhận bởi Robert Floyd vào năm 1962 Tuynhiê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ăm1956) để chuyển đổi một máy tự động hữu hạn xác định thành biểu thức chínhquy 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

Trang 20

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:

Trang 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]

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ểmdừ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ểmdừ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ụcnhữ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

Trang 22

giao thông công cộng phải đủ nhanh để có thể sử lý ngay trên thiết bị thôngminh Đố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ờigian đ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ảithuậ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ếntố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ánkí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ántì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ôngcộ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ạygiả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ếuchưa tìm đường đi tối ưu thì sẽ tằng Ra và Rb lên 1000m

Trang 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ếnvòng tròn) Có Gi là góc được tảo bởi vecto Vi của tuyến xe Ti với đườngthằng vecto AB Nếu góc Gi càng nhỏ thì sắc xuất đường đi tối ưu từ điểm Atớ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

Trang 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ả

Trang 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 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ợpcá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à

đ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)

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)

Trang 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ấuhì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

- Nhận thấy 2 ô địa chỉ đến và đi đã được

Google Map Api

(cấp quyền

Hiển thị đường đi vs cụ thể các đoạn đi

permission)

- User nhập từ khóa liên quan đến têndùng

tuyến xe, địa chỉ điểm dừng3.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ăngchí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 appkhô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ệncác request bừa bãi để hạn chế dung lượng mạng của user

Ngày đăng: 19/01/2022, 15:58

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
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 Sách, tạp chí
Tiêu đề: Giải Thuật và Lập Trình
Nhà XB: NXB Đại học Sư phạm
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 Sách, tạp chí
Tiêu đề: Tạp chíKhoa học - Đại học Huế
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 Sách, tạp chí
Tiêu đề: Cấu Trúc Dữ Liệu Và Thuật Toán
Nhà XB: NXB Xây Dựng
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 Sách, tạp chí
Tiêu đề: Cấu Trúc Dữ Liệu Và Thuật Toán
Nhà XB: NXB Thông tin Truyền thô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 Sách, tạp chí
Tiêu đề: Journal of AdvancedTransportation
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 Sách, tạp chí
Tiêu đề: 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
Nhà XB: NXB Đại học Quốc gia Hà Nội
5. Lê Xuân Trường, 2018, Cấu Trúc Dữ Liệu, NXB Lao Động Khác
7. Quanzhou Huang, 2016, Design and Optimization of Bus Route Query Algorithm, 3rd International Conference on Mechatronics and Information Technology (ICMIT 2016) Khác

HÌNH ẢNH LIÊN QUAN

Hình 1 Bản đồ quy hoạch đường sắt đô thị Hà Nội - Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
Hình 1 Bản đồ quy hoạch đường sắt đô thị Hà Nội (Trang 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 - Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
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 (Trang 12)
Hình 3 Bản đồ tuyến xe buýt Hà Nội - Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
Hình 3 Bản đồ tuyến xe buýt Hà Nội (Trang 14)
2.2.1. Đồ thị mô phỏng hệ thống giao thông công cộng Hà Nội - Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
2.2.1. Đồ thị mô phỏng hệ thống giao thông công cộng Hà Nội (Trang 21)
Hình 4 Xác định các điểm dừng tại điểm đến và điểm đi - Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
Hình 4 Xác định các điểm dừng tại điểm đến và điểm đi (Trang 23)
Hình 5 Xác định góc của một tuyến xe Giải thuật: - Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
Hình 5 Xác định góc của một tuyến xe Giải thuật: (Trang 23)
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ối ưu tìm đường hệ thống giao thông công cộng Hà Nội
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ì (Trang 24)
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. - Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
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 (Trang 25)
Hình 8 Sơ đồ luồng tìm lộ trình đi xe của ứng dụng - Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
Hình 8 Sơ đồ luồng tìm lộ trình đi xe của ứng dụng (Trang 28)
Hình 9 Cơ sở dữ liệu của điểm  dừng 3.3.2. Tuyến xe - Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
Hình 9 Cơ sở dữ liệu của điểm dừng 3.3.2. Tuyến xe (Trang 30)
Hình 10 Cơ sở dữ liệu của các tuyến xe - Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
Hình 10 Cơ sở dữ liệu của các tuyến xe (Trang 31)
Hình 12 Thiết kế giao diện nhập điện chỉ đến và đi - Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
Hình 12 Thiết kế giao diện nhập điện chỉ đến và đi (Trang 32)
Hình 11 Thiết kế trang chủ của ứng  dụng 3.4.1.4 Trang nhập địa chỉ - Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội
Hình 11 Thiết kế trang chủ của ứng dụng 3.4.1.4 Trang nhập địa chỉ (Trang 32)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w