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

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

pdf52 trang | Chia sẻ: honganh20 | Ngày: 04/03/2022 | Lượt xem: 383 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Luận văn Tối ưu tìm đường hệ thống giao thông công cộng Hà Nội, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
// (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 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. 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: 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 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. 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 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ả 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) 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. 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. 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 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 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 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) 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 33 3.1.4.2 Deploy: Sản phẩm màn Home Hiện khi có lộ trình 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 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ự 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ố 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". 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. 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

Các file đính kèm theo tài liệu này:

  • pdfluan_van_toi_uu_tim_duong_he_thong_giao_thong_cong_cong_ha_n.pdf
Tài liệu liên quan