DANH MỤC CÁC KÝ HIỆU - THUẬT NGỮ VIẾT TẮT Ký hiệu / BFS Best First Search Tìm kiếm theo lựa chọn tốt nhất tâm DBMS Database Management System Hệ quản trị cơ sở dữ liệu DDL Data Defini
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
- - - - - -
Nguyễn Thị Anh Thi
MỘT SỐ VẤN ĐỀ VỀ MẠNG LƯỚI
TRONG CƠ SỞ DỮ LIỆU KHÔNG GIAN
Ngành : Công nghệ thông tin
Chuyên ngành : Hệ thống thông tin
Trang 2MỤC LỤC
DANH MỤC CÁC KÝ HIỆU - THUẬT NGỮ VIẾT TẮT 3
DANH MỤC BẢNG 4
DANH MỤC HÌNH VẼ 4
MỞ ĐẦU 5 U Chương 1 7
TỔNG QUAN VỀ HỆ THỐNG THÔNG TIN ĐỊA LÝ 7
1.1 Hệ thống thông tin địa lý (GIS) 7
1.1.1 Khái niệm 7
1.1.2 Các chức năng của GIS 9
1.1.3 Ứng dụng của GIS 10
1.2 Mô hình cơ sở dữ liệu không gian (Spatial database) 10
1.2.1 Khái quát về cơ sở dữ liệu không gian 10
1.2.2 Mô hình thông tin không gian 13
1.2.3 Các mô hình dữ liệu không gian chính 14
1.2.3.1 Mô hình dữ liệu RASTER 15
1.2.3.2 Mô hình dữ liệu VECTƠ 16
1.3 Mạng lưới trong cơ sở dữ liệu không gian 19
1.3.1 Các mô hình dữ liệu 19
1.3.1.1 Mô hình dữ liệu khái niệm 21
1.3.1.2 Mô hình dữ liệu logic 23
1.3.1.3 Mô hình dữ liệu vật lý 25
1.3.2 Ngôn ngữ truy vấn cho đồ thị 28
Chương 2 30
MỘT SỐ THUẬT TOÁN TÌM KIẾM TRONG MẠNG LƯỚI KHÔNG GIAN 30
2.1 Phát biểu bài toán 30
2.2 Thuật toán Dijkstra 31
2.3 Thuật toán Bellman-Ford 37
2.4 Thuật toán A* 39
2.5 Thuật toán Floyd 45
Trang 32.6 Kết luận 50
Chương 3 53
PHÁT TRIỂN ỨNG DỤNG 53
3.1 Phát biểu bài toán 53
3.1.1 Lý do xây dựng chương trình 53
3.1.2 Mục tiêu, nhiệm vụ của chương trình 53
3.2 Công cụ xây dựng chương trình 54
3.2.1 MapInfo Professional 54
3.2.2 Thư viện hỗ trợ xây dựng ứng dụng bản đồ MapXtreme 57
3.2.3 Hệ quản trị cơ sở dữ liệu Access 60
3.2.4 Ngôn ngữ lập trình Microsoft Visual C#.NET 60
3.3 Dữ liệu sử dụng trong chương trình 61
3.3.1 Mô tả chi tiết các bảng dữ liệu trong MapInfo 61
3.3.2 Thiết kế dữ liệu trong Access 61
3.4 Thiết kế, đặc tả các chức năng 62
3.4.1 Xem bản đồ 62
3.4.2 Truy vấn trên bản đồ 63
3.4.3 Hệ thống tìm đường đi xe buýt trên bản đồ 63
3.5 Sơ đồ luồng dữ liệu 63
3.6 Cài đặt và thử nghiệm chương trình 65
3.6.1 Cài đặt 65
3.6.2 Kỹ thuật áp dụng 65
3.6.3 Các kết quả thử nghiệm 68
3.6.3.1 Kết quả bước đầu 68
3.6.3.2 Nhận xét về kết quả 71
KẾT LUẬN 73
TÀI LIỆU THAM KHẢO 74
Tiếng Việt 74
Tiếng Anh 74
Trang Web 75
PHỤ LỤC 76
Trang 4A watermark is added at the end of each output PDF file.
To remove the watermark, you need to purchase the software from
http://www.anypdftools.com/buy/buy-pdf-splitter.html
Trang 5DANH MỤC CÁC KÝ HIỆU - THUẬT NGỮ VIẾT TẮT
Ký hiệu /
BFS Best First Search Tìm kiếm theo lựa chọn tốt nhất
tâm DBMS Database Management System Hệ quản trị cơ sở dữ liệu
DDL Data Definition Language Ngôn ngữ định nghĩa dữ liệu
DML Data Manipulation Language Ngôn ngữ xử lý dữ liệu
ESRI Environmental Systems Research Institute Viện nghiên cứu hệ môi trường
GIS Geographic Information Systems Hệ thống thông tin địa lý
MIF MapInfo Interchange Format Định dạng MapInfo
OLE Object Linking and Embedding Nhúng và liên kết đối tượng
dụ RDBMS Relational Database Management Systems Hệ quản trị cơ sở
dữ liệu quan hệ SNDB Spatial Network Database Cơ sở dữ liệu mạng lưới không gian
SQL Structured Query Languague Ngôn ngữ truy vấn cấu trúc
UML Unified Model Language Ngôn ngữ mô hình hóa thống nhất
XML Extensible Markup Language Ngôn ngữ đánh dấu mở rộng
Trang 6DANH MỤC BẢNG
Bảng 1.1 So sánh mô hình raster và mô hình vectơ 18
Bảng 1.2 a- Bảng Ga và Huong_di của hệ thống mạng lưới đường tàu hỏa 27
Bảng 1.2 b- Bảng Ga_Huong của hệ thống mạng lưới đường tàu hỏa 27
Bảng 1.3 Bảng Dong_Song và Huong_Chay của mạng lưới sông ngòi 28
Bảng 3.1 Các nút lệnh trên thanh công cụ 68
DANH MỤC HÌNH VẼ Hình 1.1 Các thành phần của GIS 7
Hình 1.2 Phần cứng GIS 8
Hình 1.3 Các nhóm chức năng trong GIS 9
Hình 1.4 Minh họa về mô hình hóa 11
Hình 1.5 Biến đổi dữ liệu thành thông tin 12
Hình 1.6 Ba mô hình quan niệm của đối tượng không gian 13
Hình 1.7 Các mô hình dữ liệu không gian 15
Hình 1.8 Biểu diễn Raster 16
Hình 1.9 Các thành phần hình học cơ sở 17
Hình 1.10 Biểu diễn bản đồ vectơ 18
Hình 1.11 Các mức biểu diễn thông tin trong cơ sở dữ liệu 20
Hình 1.12 Mô hình đồ thị của hệ thống mạng lưới sông ngòi 22
Hình 1.13 Đồ thị mô hình của mạng lưới đường phố 22
Hình 1.14 Mô hình mạng lưới đường tàu hỏa 24
Hình 1.15 Ba cách biểu diễn đồ thị 25
Hình 2.1 Đồ thị minh họa thuật toán Dijkstra 33
Hình 2.2 Đồ thị minh họa thuật toán Bellman – Ford 37
Hình 2.3 Đồ thị minh họa thuật toán Floyd 47
Hình 3.1 Biểu đồ hoạt động chức năng tìm đường đi ngắn nhất 64
Hình 3.2 Giao diện chính của chương trình sau khi khi khởi động 68
Hình 3.3 Bản đồ mạng lưới tuyến xe buýt Hà Nội khi xem tổng thể 69
Hình 3.4 Cửa sổ bật tắt các lớp bản đồ 69
Hình 3.5 Minh họa ghi chú động trên bản đồ 70
Hình 3.6 Minh họa kích chọn điểm đi và điểm đến 70
Hình 3.7 Minh họa kết quả đường đi tìm được 71
Trang 7MỞ ĐẦU
Từ xa xưa, thông tin địa lý đã là nhu cầu cần thiết của mọi người trong mọi sinh hoạt hàng ngày tại những vị trí khác nhau Mỗi người trong xã hội luôn luôn có nhu cầu cần biết về thế giới thực xung quanh mình Con người muốn được hiểu biết về các thực thể, các sự kiện, các hiện tượng như thế nào, xảy ra ở đâu, xảy ra khi nào, và tại sao như vậy Ở quy mô rộng lớn hơn, những nhà lãnh đạo một địa phương, một quốc gia, một khu vực luôn luôn cần có thông tin địa
lý một cách đầy đủ, chính xác, kịp thời để đưa ra những quyết sách đúng đắn, phù hợp lòng dân, làm cho địa phương, quốc gia ngày càng phát triển Những nhà quân sự cần biết thông tin địa lý để có những phương án chiến lược, chiến thuật bảo vệ lãnh thổ Những nhà đầu tư cần thông tin địa lý để tính toán những khả năng và hiệu quả đầu tư, những nhà kinh doanh cần có thông tin địa lý để qui hoạch chiến lược thị trường, làm cho hàng hóa được tiêu thụ nhanh chóng Những nhà quản lý công trình giao thông đô thị cần thông tin địa lý để cơ cấu lại phương tiện giao thông công cộng theo hướng giảm ách tắc giao thông, tiết kiệm nhiên liệu, giảm ô nhiễm môi trường,…
Ngày nay, với sự phát triển của công nghệ thông tin, đặc biệt là từ khi xuất hiện ngành đồ họa vi tính cũng như sự gia tăng vượt bậc những khả năng phần cứng, hệ thống thông tin địa lý (GIS) đã ra đời và phát triển nhanh chóng
cả về mặt công nghệ cũng như ứng dụng Hệ thống thông tin địa lý đã chứng tỏ khả năng ưu việt hơn hẳn các hệ thông tin bản đồ truyền thống nhờ vào khả năng tích hợp thông tin mật độ cao, cập nhật thông tin dễ dàng cũng như khả năng phân tích, tính toán của nó Do đó, hệ thống thông tin địa lý đã nhanh chóng trở thành một công cụ trợ giúp quyết định cho tất cả các ngành từ quy hoạch đến quản lý, tất cả các lĩnh vực từ tài nguyên thiên nhiên, môi trường, đất đai, hạ tầng kỹ thuật đến xã hội nhân văn Có thể nói ngày nay không có lĩnh vực nào không có hoặc không thể ứng dụng công nghệ GIS Cũng chính vì thế, công nghệ thông tin địa lý (công nghệ GIS) được tiếp cận từ nhiều hướng khác nhau
và do đó cũng có nhiều định nghĩa khác nhau về GIS
Cơ sở dữ liệu không gian là thành phần cốt lõi trong GIS, trong đó cơ sở
dữ liệu mạng lưới không gian chiếm vị trí quan trọng trong cơ sở dữ liệu không gian Hiện nay, mạng lưới không gian đang được triển khai rộng rãi trong các ứng dụng quan trọng trên thực tế như lập kế hoạch vận chuyển, điều khiển giao
Trang 8thông đường hàng không, các tiện ích nước, điện và gas, mạng lưới điện thoại và quản lý kênh tưới tiêu,…
Trên đây đã điểm qua tầm quan trọng của hệ thông tin địa lý, đặc biệt là mạng lưới cơ sở dữ liệu không gian đã cho ta thấy rõ tính cần thiết cũng như tính thời sự của vấn đề, đồng thời có ý nghĩa khoa học và thực tiễn Vì thế, tôi
đã thực hiện đề tài luận văn: “Một số vấn đề về mạng lưới trong cơ sở dữ liệu
không gian”
Mục tiêu đề tài là tìm hiểu về mạng lưới cơ sở dữ liệu không gian trong hệ thống thông tin địa lý cùng với các thuật toán áp dụng trong đồ thị Đề tài cũng bước đầu xây dựng một chương trình tìm kiếm đường đi tối ưu cho hành khách tham gia trong mạng lưới tuyến xe buýt cụ thể ở Hà Nội nhằm giảm bớt lưu lượng giao thông trên đường phố, giúp người đi xe buýt lựa chọn được tuyến xe buýt phù hợp cho mình
Bố cục của luận văn bao gồm phần mở đầu, phần kết luận và ba chương nội dung được tổ chức như sau:
Chương 1: Tổng quan về hệ thông tin địa lý
Chương này trình bày tổng quan về hệ thống thông tin địa lý bao gồm các thành phần, chức năng và các ứng dụng của GIS Hơn nữa, đề cập đến một số vấn đề về cơ sở dữ liệu mạng lưới không gian, các mô hình mạng lưới không gian và kiến trúc cơ sở dữ liệu, ngôn ngữ truy vấn,…
Chương 2: Một số thuật toán tìm kiếm trong mạng lưới không gian
Trong chương này tập trung vào một số thuật toán xử lý truy vấn phân tích mạng lưới Cụ thể là các thuật toán tìm đường đi ngắn nhất trong đồ thị như thuật toán Dijkstra, thuật toán A*, thuật toán Floyd,…
Chương 3: Phát triển ứng dụng
Trong chương này phát triển ứng dụng về một mô hình mạng lưới cơ sở
dữ liệu trong thực tế Cụ thể là cài đặt và thử nghiệm với thuật toán Dijkstra để tìm kiếm đường đi có khoảng cách ngắn nhất giữa các điểm xe buýt trong hệ thống mạng lưới tuyến xe buýt trên địa bàn Hà Nội
Xây dựng chương trình dựa trên cơ sở dữ liệu đã tạo trên MapInfo, với công cụ lập trình là Visual C#.NET kết hợp MapXtreme Thiết kế, đặc tả chức năng, cách thức lập trình, cài đặt và thử nghiệm, giao diện chương trình
Trang 9Chương 1 TỔNG QUAN VỀ HỆ THỐNG THÔNG TIN ĐỊA LÝ
Chương này trình bày tổng quan về hệ thống thông tin địa lý bao gồm các thành phần, chức năng và các ứng dụng của GIS Hơn nữa, đề cập đến một số vấn đề về cơ sở dữ liệu mạng lưới không gian, các mô hình mạng lưới không gian và kiến trúc cơ sở dữ liệu, ngôn ngữ truy vấn,…
1.1 Hệ thống thông tin địa lý (GIS)
1.1.1 Khái niệm
GIS viết tắt từ “Geographic Information System” là hệ thống thông tin
địa lý, ra đời từ đầu thập niên 60 trong các cơ quan địa chính ở Canada, và suốt thời gian hai thập niên 60 – 70, GIS cũng chỉ được một vài cơ quan chính quyền khu vực Bắc Mỹ quan tâm nghiên cứu, cho mãi đến đầu thập niên ’80, khi phần cứng máy tính phát triển mạnh với những tính năng cao, giá lại rẻ; đồng thời sự phát triển nhanh về lý thuyết và ứng dụng cơ sở dữ liệu cùng với nhu cầu cần thiết về thông tin đã làm cho công nghệ GIS càng ngày được quan tâm hơn
Có nhiều cách tiệm cận khác nhau khi định nghĩa GIS Nếu xét dưới góc
độ hệ thống, thì GIS có thể được hiểu như một hệ thống gồm năm thành phần chính
(hình 1.1): con người, phương pháp, phần cứng, phần mềm tin học và dữ liệu [1]
Hình 1.1 Các thành phần của GIS
Trang 10- Con người: là chuyên viên tin học, các chuyên gia về các lĩnh vực khác nhau, chuyên gia GIS, thao tác viên GIS, phát triển ứng dụng GIS
- Dữ liệu: là thành phần quan trọng nhất trong hệ thống GIS, chiếm khoảng 70% giá thành sản phẩm Dữ liệu thống kê gắn theo các hiện tượng tự nhiên với mức độ chính xác khác nhau Hệ thống thước đo của chúng bao gồm các biến tên, số thứ tự, khoảng và tỷ lệ Ngoài bốn loại biến dữ liệu này, các hệ GIS còn phân chia dữ liệu thành hai loại khác nhau:
+ Dữ liệu không gian (spatial): là thông tin về vị trí của các đối tượng trong thế giới thực trên mặt đất theo một hệ quy chiếu nhất định Thực thể không gian có thể cấu trúc theo hai cách: cấu trúc dạng vectơ và cấu trúc dạng raster
+ Dữ liệu phi không gian (non-spatial): còn gọi là dữ liệu thuộc tính, là những số hiệu, bảng biểu mô tả tính chất, đặc trưng của dữ liệu không gian Nó được biểu thị dưới dạng những con số hoặc chữ mô tả số lượng, tính chất, thông số liên quan đến các đối tượng đó trên bản đồ
Dữ liệu phi không gian được kết nối logic với dữ liệu không gian Sự kết nối này là cơ sở để xác định chính xác các thông tin của đối tượng địa lý và thực hiện phép phân tích tổng hợp trong hệ thống GIS Mỗi hệ GIS đều có các công
cụ lưu trữ dữ liệu thuộc tính cùng với dữ liệu không gian
Hình 1.2 Phần cứng GIS
- Công cụ phần mềm: Một hệ thống GIS bao gồm nhiều modul phần mềm Khả năng lưu trữ, quản lý dữ liệu không gian bằng hệ quản trị cơ sở dữ
Trang 11liệu địa lý là khía cạnh quan trọng nhất của GIS Các modul khác là công cụ phân tích dữ liệu, làm báo cáo và truyền tin
- Giao diện người dùng: Giao diện đồ họa cho phép người dùng dễ dàng thực hiện các thao tác địa lý và các thao tác khác như truy cập cơ sở dữ liệu, làm báo cáo
- Phần cứng: GIS đòi hỏi các thiết bị ngoại vi đặc biệt như bàn số hóa, máy vẽ, máy quét ảnh để vào ra dữ liệu Các thiết bị này có thể được nối với
nhau thông qua thiết bị truyền tin hay mạng cục bộ (hình 1.2)
1.1.2 Các chức năng của GIS
GIS là hệ thống có khả năng tự động thực hiện những chức năng được phân chia như sau [1]:
- Thu thập dữ liệu
- Xử lý sơ bộ dữ liệu
- Lưu trữ và truy nhập dữ liệu
- Tìm kiếm và phân tích không gian
- Hiển thị đồ họa và tương tác
Hình 1.3 mô tả quan hệ giữa các nhóm chức năng và cách biểu diễn thông
tin khác nhau của GIS
Hình 1.3 Các nhóm chức năng trong GIS
Trang 12Chức năng thu thập dữ liệu tạo ra dữ liệu từ các quan sát hiện tượng thế giới thực và từ các tài liệu, bản đồ giấy, đôi khi chúng có sẵn dưới dạng số Kết quả ta có tập “dữ liệu thô”, có nghĩa là dữ liệu này không được phép áp dụng trực tiếp cho chức năng truy nhập và phân tích của hệ thống Chức năng xử lý sơ
bộ dữ liệu sẽ biến đổi dữ liệu thô thành dữ liệu có cấu trúc để sử dụng trực tiếp các chức năng tìm kiếm và phân tích không gian Kết quả tìm kiếm và phân tích được xem như diễn giải dữ liệu, đó là tổ hợp hay biến đổi đặc biệt của dữ liệu có cấu trúc Hệ thống GIS phải có phần mềm công cụ để tổ chức và lưu trữ các loại
dữ liệu khác nhau, từ dữ liệu thô đến dữ liệu diễn giải Phần mềm công cụ này phải có các thao tác lưu trữ, truy nhập; đồng thời có khả năng hiển thị, tương tác
đồ họa với tất cả loại dữ liệu
1.1.3 Ứng dụng của GIS
Vì GIS được thiết kế như một hệ thống chung để quản lý dữ liệu không gian nên có rất nhiều ứng dụng trong các lĩnh vực thường thấy trong thực tế GIS đóng vai trò như là một công cụ hỗ trợ quyết định cho việc lập kế hoạch hoạt động [1]
- Quản lý và lập kế hoạch mạng lưới đường phố: bao gồm các chức năng tìm kiếm địa chỉ, tìm vị trí khi biết trước địa chỉ đường phố; điều khiển đường
đi, lập kế hoạch lưu thông xe cộ; phân tích vị trí, chọn địa điểm xây dựng các công trình công cộng; lập kế hoạch phát triển đường giao thông
- Giám sát tài nguyên, thiên nhiên, môi trường: bao gồm các chức năng quản lý sông ngòi, các vùng lụt, vùng đất nông nghiệp, có mưa, đất rừng, sống hoang dã; phân tích tác động môi trường; vị trí của các công trình công cộng, …
- Quản lý đất đai: bao gồm các chức năng lập kế hoạch vùng, miền sử dụng đất; quản lý nước tưới tiêu; kiến trúc mặt bằng sử dụng đất …
- Quản lý và lập kế hoạch các dịch vụ công cộng: bao gồm các chức năng tìm địa điểm cho các công trình ngầm: ống dẫn, đường điện,…; cân đối tải điện; lập kế hoạch bảo dưỡng các công trình công cộng…
- Phân tích tổng điều tra dân số, lập bản đồ các dịch vụ y tế, bưu điện và nhiều ứng dụng khác
1.2 Mô hình cơ sở dữ liệu không gian (Spatial database)
1.2.1 Khái quát về cơ sở dữ liệu không gian
Thế giới quá phức tạp đến mức chúng ta không thể hiểu ngay và hiểu trực tiếp chúng được Chúng ta phải lập mô hình của hiện thực, nó có tính tương tự
Trang 13với một số khía cạnh chọn lọc từ thế giới thực Trong cuộc sống hàng ngày, chúng ta đơn giản hóa đối tượng khi suy nghĩ nên ta thường làm việc với mô hình Mô hình là mô tả đầy đủ hệ thống từ một góc nhìn cụ thể và được hình thành nhờ tiến trình trừu tượng hóa (đơn giản hóa thông minh) [1]
Bốn nguyên tắc chính của mô hình hóa: một là, việc chọn mô hình nào để tạo lập có ảnh hưởng sâu sắc đến cách giải quyết vấn đề và cách hình thành các giải pháp Hai là, mỗi mô hình biểu diễn hệ thống với mức độ chính xác khác nhau Ba là, mô hình tốt nhất phải là mô hình phù hợp với hiện thực Và bốn là, không mô hình nào là đầy đủ cho toàn bộ hệ thống Mỗi hệ thống thường được tiếp cận thông qua tập mô hình gần như độc lập nhau
Hình 1.4 minh họa các mô hình hóa
Hình 1.4 Minh họa về mô hình hóa
Cơ sở dữ liệu không gian hình thành từ các mô hình được xem như bước
cơ bản để đi đến hiểu biết bản chất và trạng thái của hiện thực Cơ sở dữ liệu không gian là tập hợp dữ liệu tham chiếu không gian, có vai trò như mô hình của hiện thực Cơ sở dữ liệu là mô hình hiện thực theo nghĩa nó biểu diễn tập lựa chọn hay xấp xỉ các hiện tượng Các hiện tượng lựa chọn này được xem là quan trọng, đủ để biểu diễn đặc trưng dưới dạng số cho hiện tại, quá khứ và tương lai
Do vậy, mô hình cơ sở dữ liệu mô tả khái niệm của cơ sở dữ liệu để định nghĩa kiểu thực thể và các thuộc tính liên quan, trong đó mỗi kiểu thực thể được biểu diễn bởi các đối tượng không gian Sau khi được xây dựng, mô hình cơ sở
dữ liệu là khung nhìn cơ sở dữ liệu Mô hình cơ sở dữ liệu không liên quan trực tiếp đến cách mà dữ liệu được lưu trữ trong cơ sở dữ liệu như thế nào Chẳng
Trang 14hạn, vùng điều tra có thể được định nghĩa bởi các đa giác, nhưng chương trình lại biểu diễn đa giác như dãy các đoạn thẳng
Dữ liệu (data) và thông tin (information) là hai khái niệm khác biệt nhau
Dữ liệu là các con số hay sự kiện được tập hợp có hệ thống cho một hay nhiều
mục đích cụ thể Chúng có thể tồn tại dưới nhiều hình thức khác nhau như ngôn ngữ tự nhiên (tên, địa chỉ,…), biểu tượng (biển hiệu giao thông), biểu thức toán
học hay tín hiệu (sóng điện từ) Thông tin được xem như dữ liệu đã được xử lý
dưới khuôn mẫu hữu ích cho người dùng và là những giá trị nhận thức được cho công tác lập quyết định Dữ liệu là thông tin nhưng không phải mọi dữ liệu đều
có ích Thông tin chỉ có ích khi nó có liên quan, tin cậy, chính xác, kịp thời, đầy
đủ, dễ hiểu, phù hợp và dễ quản lý Hệ thống thông tin có nhiệm vụ chuyển đổi
dữ liệu thành thông tin theo các tiến trình khác nhau như biến đổi, tổ chức, cấu
trúc hóa và mô hình hóa Hình 1.5 cho thấy các chức năng của quá trình biến đổi
dữ liệu thành thông tin trong một hệ thống thông tin
Dữ liệu địa lý là loại đặc biệt của dữ liệu Chúng được nhận biết bởi tọa
độ địa lý và được hình thành từ phần tử mô tả và phần tử đồ họa Thông tin địa
lý thu được từ xử lý dữ liệu địa lý Tổ chức thông tin biểu diễn quan sát dữ liệu
của người sử dụng (khái niệm về thế giới thực) và nó được thể hiện bằng mô
hình dữ liệu
Mô hình dữ liệu địa lý là các quy tắc được sử dụng để biến đổi đặc trưng
địa lý của thế giới thực thành các đối tượng rời rạc Mô hình dữ liệu được sử dụng để biểu diễn thực thể với mức độ phức tạp khác nhau Thực thể là nhận thức vì thế giới thực quá phức tạp, không thể chỉ ra mọi khía cạnh của chúng Việc lựa chọn mô hình dữ liệu phụ thuộc vào loại ứng dụng và kết quả mong đợi
Hình 1.5 Biến đổi dữ liệu thành thông tin
Trang 151.2.2 Mô hình thông tin không gian
Dữ liệu là trung tâm của hệ thống GIS, hệ thống GIS chứa càng nhiều dữ liệu thì chúng càng có ý nghĩa Dữ liệu của hệ GIS được lưu trữ trong cơ sở dữ liệu và chúng được thu nhập thông qua các mô hình thế giới thực Dữ liệu trong
hệ GIS còn được gọi là thông tin không gian Đặc trưng thông tin không gian là
có khả năng mô tả “vật thể ở đâu” nhờ vị trí tham chiếu, đơn vị đo và quan hệ không gian Chúng có khả năng mô tả “hình dạng hiện tượng” thông qua mô tả
chất lượng, số lượng của hình dạng và cấu trúc Cuối cùng, đặc trưng thông tin
không gian mô tả “quan hệ và tương tác” giữa các hiện tượng tự nhiên Mô hình
không gian đặc biệt quan trọng vì cách thức biểu diễn thông tin sẽ ảnh hưởng đến khả năng thực hiện phân tích dữ liệu và khả năng hiển thị đồ họa của hệ thống [1]
Hiện tượng tự nhiên được thể hiện bằng các thành phần rời rạc hay gọi là
đối tượng trong cơ sở dữ liệu Đặc trưng địa lý được hình thành từ các thực thể
Thực thể là hiện tượng được quan tâm trong thế giới thực mà nó không bị chia nhỏ ra thành các hiện tượng cùng loại Ví dụ, thành phố được coi như một thực thể, chúng có thể chia nhỏ ra nhưng các phần chia nhỏ đó không được gọi là thành phố mà nó là quận, ao hồ hay vùng dân cư… Các hiện tượng tương tự nhau được lưu trong cơ sở dữ liệu và được nhận dạng bởi kiểu thực thể Kiểu thực thể là một nhóm các hiện tượng tương tự mà nó được biểu diễn và lưu trữ theo cùng cách thức Ví dụ, kiểu thực thể bao gồm đường quốc lộ, sông ngòi, thảm thực vật, bình độ,…
Thông thường ta phải sử dụng một vài mô hình quan niệm trừu tượng không gian để giải thích và phân tích dữ liệu không gian Mỗi mô hình sẽ nhấn mạnh một khía cạnh của hiện tượng không gian, nó phụ thuộc vào mục tiêu phân
tích Ở đây ta đưa ra ba mô hình thường được sử dụng trong GIS (hình 1.6) để tổ
chức và xử lý dữ liệu không gian, đó là các mô hình trên cơ sở đối tượng, mạng
và nền (field)
Hình 1.6 Ba mô hình quan niệm của đối tượng không gian
Trang 16• Mô hình không gian trên cơ sở đối tượng tập trung vào các hiện
tượng riêng rẽ sẽ được nghiên cứu độc lập hay cùng các quan hệ của chúng với hiện tượng khác Bất kỳ hiện tượng dù lớn hay nhỏ đều được xem như đối tượng, có thể tách rời khỏi hiện tượng láng giềng Đối tượng lại có thể bao gồm các đối tượng khác và chúng có quan hệ đặc biệt với các đối tượng tách biệt Một vài hiện tượng tự nhiên như hồ, sông, đảo, rừng cũng thường được biểu diễn bằng mô hình đối tượng vì chúng cần được xử lý như hiện tượng rời rạc Nhưng cần phải chú ý rằng đường biên của các hiện tượng này là không cố định, chúng thay đổi theo thời gian
• Mô hình không gian trên cơ sở mạng chia sẻ một vài khía cạnh của
mô hình đối tượng vì chúng đề cập đến các hiện tượng rời rạc, nhưng đặc trưng chính là nhu cầu xem xét tương tác giữa các đối tượng, thường là đường đi để nối chúng Hình dạng chính xác của các đối tượng có thể là không thực sự quan trọng Cái quan trọng ở đây là thước đo khoảng cách giữa các hiện tượng nghiên cứu Ví dụ điển hình phù hợp với mô hình mạng là nghiên cứu giao thông đường
bộ, đường biển và đường hàng không, chỉ ra tuyến đường đi của xe buýt; phân tích luồng nước, ga và điện trong ống dẫn và dây cáp
• Mô hình không gian trên cơ sở nền phù hợp cho mô hình hóa hiện
tượng quan tâm đến các vật liên tục trải trên vài vùng không gian Ví dụ, hiện tượng phù hợp với mô hình nền là ô nhiễm trong khí quyển, nhiệt độ trên bề mặt Trái Đất, độ ẩm của đất trồng, tốc độ và hướng gió, nước chảy Nền có thể được biểu diễn hai hay ba chiều không gian tùy thuộc loại ứng dụng
Một số kiểu dữ liệu đôi khi được coi như nền, đôi khi chúng lại được coi
là đối tượng Lựa chọn mô hình cho chúng phụ thuộc vào hình thức thu thập dữ liệu Nếu ứng dụng liên quan đến phân vùng thì mô hình nền có thể chuyển đổi
mô hình đối tượng vì nó phù hợp hơn cho đo đạc và phân tích các đặc trưng
đường, vùng rời rạc
1.2.3 Các mô hình dữ liệu không gian chính
Mỗi GIS đều có mô hình dữ liệu quan niệm riêng để biểu diễn mô hình dữ liệu vật lý duy nhất Hệ thông tin địa lý cung cấp các phương pháp để người sử dụng làm theo các mô hình quan niệm tương tự như ba lớp mô hình mô tả trên [1]
Với người dùng thì các quan niệm dữ liệu không gian liên quan chặt chẽ với dữ liệu nguồn để xây dựng nên mô hình không gian trên máy tính Các đơn
vị hình học sơ khai được sử dụng để đặc trưng các dữ liệu không gian thu thập được Có hai nhóm mô hình dữ liệu không gian chính ta thường gặp trong GIS
Trang 17thương mại đó là mô hình dữ liệu vectơ và mô hình dữ liệu raster (hình 1.7)
Phương pháp biểu diễn các đặc trưng địa lý bằng các phần tử đồ họa cơ bản (điểm, đường và vùng) được gọi là phương pháp vectơ hay mô hình dữ liệu vectơ Phương pháp biểu diễn các đặc trưng địa lý bằng các điểm ảnh được gọi
là phương pháp raster hay mô hình dữ liệu raster
Hình 1.7 Các mô hình dữ liệu không gian
1.2.3.1 Mô hình dữ liệu RASTER
Mô hình dữ liệu RASTER (hay còn gọi là lưới tế bào) hình thành nền cho một số hệ thông tin địa lý Các hệ thống trên cơ sở raster hiển thị, định vị và lưu trữ dữ liệu đồ họa nhờ sử dụng các ma trận hay lưới tế bào Độ phân giải dữ liệu raster phụ thuộc vào kích thước của tế bào hay điểm ảnh; chúng khác nhau từ vài chục đêximet đến vài kilomet
Tiến trình xây dựng lưới tế bào được mô tả như sau: Giả sử phủ một lưới trên bản đồ gốc, dữ liệu raster được lập bằng cách mã hóa mỗi tế bào bằng một
giá trị dựa theo các đặc trưng trên bản đồ (hình 1.8)
Trong ví dụ này, đặc trưng “điểm” được mã hóa là 1, đặc trưng “đường” được mã hóa là 2 còn đặc trưng vùng được mã hóa là 3 Kiểu dữ liệu của tế bào trong lưới phụ thuộc vào thực thể được mã hóa; ta có thể sử dụng số nguyên, số thực, ký tự hay tổ hợp chúng để làm giá trị
Trang 18Hình 1.8 Biểu diễn Raster
Một điểm có thể là một tế bào, một đường là vài tế bào kề nhau, một vùng
là tập hợp nhiều tế bào Một đặc trưng là tập tế bào đánh số như nhau (có cùng giá trị) Bản đồ được phân ra thành nhiều tầng (layer) Mỗi tầng bản đồ có thể bao gồm hàng triệu tế bào
Lợi thế lớn nhất của hệ thống raster là dữ liệu hình thành bản đồ trong bộ nhớ máy tính Do vậy, các thao tác kiểu như so sánh lưới tế bào được thực hiện
dễ dàng Tuy nhiên, hệ thống raster sẽ không thuận tiện cho biểu diễn đường, điểm vì mỗi loại là tập tế bào trong lưới Đường thẳng có thể bị đứt đoạn hay rộng hơn
Phương pháp raster được hình thành trên cơ sở quan sát “nền” thế giới thực Quan sát nền là phương pháp tổ chức thông tin trong hệ thống phân tích ảnh vệ tinh và hệ thống GIS hướng tài nguyên và môi trường
Khó khăn lớn nhất khi xử lý dữ liệu raster là vấn đề “tế bào trộn” Cũng như mô hình vectơ, mô hình raster có các tầng bản đồ cho địa hình, hệ thống thủy lợi, sử dụng đất, loại đất Tuy nhiên do cách thức xử lý thông tin thuộc tính khác nhau cho nên mô hình raster thường có nhiều tầng bản đồ hơn
1.2.3.2 Mô hình dữ liệu VECTƠ
Mô hình dữ liệu vectơ coi hiện tượng là tập các thực thể không gian cơ sở
và tổ hợp giữa chúng Trong mô hình 2D thì thực thể sơ đẳng bao gồm điểm,
đường và vùng; mô hình 3D còn áp dụng bề mặt ba chiều và khối (hình 1.9)
Các thực thể sơ đẳng được hình thành trên cơ sở các vectơ hay tọa độ của các điểm trong một hệ trục tọa độ nào đó
Trang 19Hình 1.9 Các thành phần hình học cơ sở
Điểm là thành phần sơ cấp của dữ liệu địa lý ở mô hình này Các điểm được nối với nhau bằng đoạn thẳng hay các đường cong để tạo thành các thực thể khác nhau như đường hay vùng
Loại thực thể sơ đẳng được sử dụng phụ thuộc vào tỷ lệ quan sát hay mức
độ khái quát Với tỷ lệ nhỏ thì thành phố được biểu diễn bằng điểm, còn đường
đi và sông ngòi được biểu diễn bằng đường Khi tăng tỷ lệ biểu diễn thì phải quan tâm đến tính chất vùng của hiện tượng Với tỷ lệ trung bình thì thành phố được biểu diễn bằng vùng, có đường ranh giới Với tỷ lệ lớn hơn thì thành phố được biểu diễn bởi tập các thực thể để tạo nên các ngôi nhà, đường phố, công viên và các hiện tượng vật lý, hành chính khác Như vậy, mô hình dữ liệu vectơ
sử dụng các đoạn thẳng hay điểm rời rạc để nhận biết các vị trí của thế giới thực
(hình 1.10) Khác với mô hình raster, mô hình dữ liệu vectơ có thể cho biết “nơi
mà mọi thứ xảy ra”
Mô hình dữ liệu vectơ cho phép nhiều thao tác hơn trên các đối tượng so với mô hình raster Việc đo diện tích, khoảng cách của các đối tượng được thực hiện bằng các tính toán hình học từ các tọa độ của các đối tượng thay vì việc đếm các tế bào của mô hình raster Rất nhiều thao tác trong mô hình này chính xác hơn Một số thao tác ở mô hình này thực hiện nhanh hơn như tìm kiếm đường đi trong mạng lưới giao thông hay hệ thống thủy lợi Một số thao tác khác có chậm hơn như nạp chồng các lớp, các thao tác với vùng đệm
Phương pháp vectơ hình thành trên cơ sở quan sát đối tượng của thế giới thực Quan sát các đặc trưng theo hướng đối tượng là phương pháp tổ chức thông tin trong các hệ GIS để định hướng các hệ quản trị cơ sở dữ liệu Chúng
Trang 20có ưu việt trong việc lưu trữ số liệu bản đồ bởi vì chúng chỉ lưu các đường biên của các đặc trưng, không cần lưu toàn bộ vùng của chúng Bởi vì các thành phần
đồ họa biểu diễn các đặc trưng của bản đồ liên kết trực tiếp với các thuộc tính của cơ sở dữ liệu cho nên người sử dụng có thể dễ dàng tìm kiếm và hiển thị thông tin từ cơ sở dữ liệu
Hình 1.10 Biểu diễn bản đồ vectơ
Thực tế, các hệ thống GIS thị trường thường được xây dựng trên cơ sở mô hình vectơ hay mô hình raster Tuy nhiên, nhiều hệ thống GIS được xây dựng trên cơ sở cả hai loại mô hình này Do vậy, tùy theo ứng dụng cụ thể để lựa chọn công cụ phần mềm GIS cho phù hợp
ÏTóm lại, mỗi mô hình đều có ưu - nhược điểm riêng theo bảng sau:
Trang 211.3 Mạng lưới trong cơ sở dữ liệu không gian
Cơ sở dữ liệu mạng lưới không gian là thành phần quan trọng của các cơ
sở dữ liệu không gian, cơ sở dữ liệu mạng lưới không gian (SNDB) hình thành phần cốt lõi của nhiều ứng dụng quan trọng gồm lập kế hoạch vận chuyển, điều khiển giao thông đường hàng không, các tiện ích nước, điện và gas, mạng lưới điện thoại và quản lý kênh tưới tiêu Cho đến bây giờ, chúng ta tập trung vào các đối tượng không gian và các mối tương quan của chúng mà dựa trên quan điểm
về tính lân cận (proximity) Rõ ràng, trạng thái lân cận trong không gian ảnh
hưởng hoạt động của các đối tượng ở gần nhau nhưng trong cơ sở dữ liệu mạng
lưới không gian thì mối liên quan dựa trên tính liên kết (connectivity) đóng vai
trò chủ yếu Sự thay đổi quan điểm từ tính lân cận sang tính liên kết đòi hỏi cơ
sở dữ liệu mạng lưới không gian phải được xem xét tách biệt nhau[11]
Hiện nay, có rất nhiều ứng dụng mạng lưới cơ sở dữ liệu không gian trên thực tế Chẳng hạn các mạng lưới nổi tiếng như mạng lưới đường tàu hỏa, mạng lưới sông ngòi Ngoài ra, còn có mạng lưới tuyến xe buýt, mạng lưới giao thông đường bộ,…
1.3.1 Các mô hình dữ liệu
Hệ thống thông tin địa lý là một loại hệ thống thông tin cho nên chúng có khả năng lưu trữ, truy nhập và xử lý thông tin về một vài phần của thế giới thực Thông thường, hệ thông tin được xây dựng từ cơ sở dữ liệu mà nó tuân thủ theo một vài mô hình dữ liệu và các chương trình ứng dụng xử lý các dữ liệu này Trong thực tế, ta có thể nhận ra vài mức biểu diễn thông tin trong cơ sở dữ liệu Chúng bao gồm các mô hình khái niệm, mô hình logic (bên trong) và mô hình
vật lý (hình 1.11 )
Một hệ quản trị cơ sở dữ liệu (DBMS) được xem như công cụ biểu diễn
mô hình dữ liệu hướng thế giới thực trong máy tính Biểu diễn mức cao (hay mức trừu tượng) của cơ sở dữ liệu vật lý được gọi là mô hình khái niệm
(conceptual model) Việc mô tả chúng trong cơ sở dữ liệu được gọi là lược đồ hay lược đồ khái niệm (conceptual schema) Công cụ cơ sở dữ liệu để định nghĩa lược đồ khái niệm là ngôn ngữ định nghĩa dữ liệu (data definition language – DDL)
Cú pháp của chúng khác nhau trong các hệ cơ sở dữ liệu khác nhau
Mỗi ứng dụng có cách nhìn riêng về cơ sở dữ liệu, chúng thường quan tâm đến một nhóm dữ liệu liên quan Biểu diễn hướng ứng dụng này được gọi là
mô hình ngoài (external model), và được cài đặt trong cơ sở dữ liệu nhờ lược đồ ngoài (external schema) DDL được sử dụng để mô tả lược đồ ngoài Cả mô
Trang 22hình ngoài và mô hình khái niệm độc lập với cấu trúc dữ liệu và cơ chế khai thác
dữ liệu trong cơ sở dữ liệu Phần lớn các DBMS trên thị trường được cài đặt theo một trong ba mô hình dữ liệu quen thuộc: mô hình phân cấp, mạng và quan
hệ Các mô hình dữ liệu này có tên chúng là mô hình logic hay mô hình trong
(internal model) Gần đây xuất hiện mô hình hướng đối tượng và mô hình trên
cơ sở lôgic hay suy diễn (deductive) Tuy nhiên, chúng vẫn chưa được sử dụng
rộng rãi Mức này của kiến trúc cơ sở dữ liệu xác định cấu trúc bản ghi logic và đường dẫn xâm nhập tương ứng với dữ liệu xác định trong các mô hình khái niệm và mô hình ngoài Đề cập đến đường dẫn xâm nhập có nghĩa là đề cập đến các khái niệm trường khóa, chỉ số, dãy con trỏ… Không như mô hình khái niệm,
mô hình logic chắc chắn phụ thuộc vào các công việc của DBMS, nhưng chúng vẫn độc lập với tổ chức vật lý của dữ liệu trên các thiết bị nhớ Mức cấu trúc cơ
sở dữ liệu thấp nhất là mô hình vật lý Trong mô hình này phải định nghĩa các tham số cho dữ liệu như tổng số byte cho một khối dữ liệu và địa chỉ của chúng trong bộ nhớ vật lý [1]
Hình 1.11 Các mức biểu diễn thông tin trong cơ sở dữ liệu
Ta đã xem xét phương tiện xây dựng cơ sở dữ liệu, đó là ngôn ngữ định nghĩa dữ liệu DDL Ta cũng cần phải có cơ chế khai thác dữ liệu, cũng như bổ sung, thay đổi, loại bỏ chúng trong cơ sở dữ liệu, đó là ngôn ngữ xử lý dữ liệu
(data manipulation language - DML) Thông thường ta có khả năng truy nhập
dữ liệu trong cơ sở dữ liệu từ chương trình ứng dụng theo thủ tục đặc biệt hay chương trình con và từ ngôn ngữ truy vấn như SQL, QBE,… các ngôn ngữ này cho phép tương tác với DBMS Thực hiện truy vấn cơ sở dữ liệu là yêu cầu
Trang 23DBMS tìm ra mục dữ liệu hay lớp của mục chuyển đổi từ mô hình ngoài sang
mô hình khái niệm, từ mô hình khái niệm sang mô hình trong và từ mô hình trong sang mô hình vật lý Nhưng thực tế, để cho hiệu quả thì một số chuyển đổi giữa các mô hình được bỏ qua Phần lớn các DBMS sử dụng từ điển dữ liệu
(data dictionary) Chúng cung cấp thông tin cho toàn bộ các thực thể dữ liệu và
các thuộc tính kèm theo để có thể chuyển đổi thành biểu diễn mức thấp hơn trong mô hình logic hay mô hình vật lý
Bây giờ ta xem xét chi tiết từng mức mô hình dữ liệu cho mạng lưới không gian:
1.3.1.1 Mô hình dữ liệu khái niệm
Tại mức khái niệm, dữ liệu mạng lưới không gian thường được mô hình thành các đồ thị Đồ thị là một cấu trúc rời rạc gồm các đỉnh và các cạnh nối các đỉnh đó Nhiều bài toán trong nhiều lĩnh vực khác nhau có thể giải được bằng
mô hình đồ thị như bài toán tìm đường đi ngắn nhất giữa hai thành phố trong một mạng lưới giao thông, hay dùng để xác định xem hai máy tính có được nối với nhau bằng một đường truyền thông hay không nếu dùng mô hình đồ thị mạng máy tính,
Trong phần này ta nhắc lại một số khái niệm cơ bản và thuật ngữ cơ bản trong đồ thị như sau [3]:
Định nghĩa: Một đơn đồ thị G = (V, E) gồm một tập hữu hạn các đỉnh
(vertex) V và một tập các cạnh (edges) E giữa các đỉnh trong V Vì vậy, tập cạnh
E là quan hệ nhị phân trên V
Một đồ thị có hướng (direct) nếu cặp các đỉnh của đồ thị đó tạo thành tập cạnh có thứ tự, ngược lại là đồ thị vô hướng (undirect) Đôi khi, các đỉnh được
gọi là các nút (node) và các cạnh được gọi là các đường nối (link) Phần tử đầu
tiên trong cặp đỉnh có thứ tự được gọi là đỉnh trước (predecessor) hoặc nguồn (source) và phần tử thứ hai được gọi là đỉnh sau (successor) hoặc đích (destination) hoặc sink
Chẳng hạn, trong hệ thống mạng lưới đường tàu hỏa, các nút là các trạm dừng trong hệ thống tàu lửa và các đường nối biểu diễn sự kết nối trực tiếp giữa các trạm Các nút không phải là các điểm Hoặc trong hệ thống mạng lưới sông
ngòi (hình 1.12), các nút của đồ thị là các con sông và nếu một con sông chảy
vào một con sông khác thì mối quan hệ này được biểu diễn bởi một đường nối
Hệ thống mạng lưới đường tàu hỏa có thể được mô hình thành một đồ thị có
hướng hoặc vô hướng tùy thuộc vào các ứng dụng, nhưng mạng lưới sông ngòi
Trang 24được mô tả tự nhiên nhất như là đồ thị có hướng
Hình 1.12 Mô hình đồ thị của hệ thống mạng lưới sông ngòi
Giả sử quá trình số hóa tạo ra đồ thị mô hình từ mạng lưới không gian đầu
vào trong ví dụ sau Xét mạng lưới đường phố trong hình 1.13 a), các nút đồ thị
được sinh ra trong tiến trình này là: (i) những chỗ giao nhau của các con đường
trong mạng lưới (ví dụ các điểm đen trong hình 1.13 a), (ii) điểm bắt đầu/điểm
kết thúc của đoạn đường (điểm màu trắng) và (iii) phụ thuộc vào các ứng dụng, các điểm thêm vào (màu xám) như các nút tại chỗ cong hoặc các thay đổi hạn chế tốc độ Các cạnh đồ thị duy trì tính liên thông trong mạng lưới ban đầu
Hình 1.13b) chỉ ra đồ thị (mô hình) của mạng lưới trong hình 1.13 a); các nút tại
ranh giới của không gian dữ liệu và khoảng cách mạng lưới của hầu hết các cạnh được bỏ qua sự rõ ràng [5]
(a) Mạng lưới đường phố (b) Đồ thị mô hình
Hình 1.13 Đồ thị mô hình của mạng lưới đường phố
Đôi khi các nhãn (label) và trọng số (weight) được gắn vào các nút và các
đường nối của đồ thị để mã hóa các thông tin bổ sung Ví dụ, tên, tọa độ địa lý hoặc cả hai có thể được gắn vào các nút của hệ thống đường tàu lửa và khoảng
Trang 25cách giữa các trạm có thể được giữ trọng số của cạnh
Hai cạnh được gọi là liền kề nhau nếu chúng có chung một nút Dãy các cạnh liền kề tạo thành một đường đi (path) Ví dụ, dãy (v 0 , v 1 ), (v 1 , v 2 ),…, (v n-2 ,
v n-1 ), (v n-1 , v n ) biểu diễn đường đi vì mỗi cạnh có một nút chung với cạnh trước
hoặc cạnh sau Nếu các điểm cuối v 0 và v n trùng nhau thì đường đi được gọi là
chu trình (cycle) Không có chu trình trong mạng lưới sông ngòi nhưng một
vòng hành trình du lịch trên hệ thống tàu lửa tạo thành một chu trình
1.3.1.2 Mô hình dữ liệu logic
Các ứng dụng được mô hình thành các đồ thị có nhiều phép toán phổ biến Chúng ta nhấn mạnh rằng mỗi phép toán này có thể được thực hiện trong nhiều cách khác nhau, tùy thuộc vào ứng dụng và cấu trúc lưu trữ đồ thị [11]
Có ba lớp (hay thực thể) cơ bản trong các đồ thị: Graph, Vertex và Edge
Với mỗi lớp liệt kê một loạt các phép toán (operation) phổ biến, hoặc các phương thức (method)
Public class Graph
{ public void add(Object label); // label miêu tả đỉnh thêm vào
public void addEdge(Object v1, Object v2, Object label);
// một cạnh được chèn vào giữa hai đỉnh v1 và v2
public Object delete(Object label); // xóa một đỉnh
public Object deleteEdge(Object v1, Object v2);
//xóa cạnh nối đỉnh v1 và v2
public Object get(Object label); // trả về nhãn đỉnh
public Edge getEdge(Object v1, Object v2);
public Iteator getPredecessors(Object label); // trả về tất cả các nút cha
public boolean isDirected(); // trả về True nếu đồ thị có hướng
}
Trang 26Vertex và Edge là hai lớp quan trọng khác Hầu hết các thuật toán đồ thị
lưu lại vết của các đỉnh và các cạnh được thăm bằng cách đánh dấu chúng Vì
vậy, thật hữu ích để cung cấp hướng hỗ trợ cho các phép toán này Vertex có thể
nhìn thấy được từ giao diện đồ thị, lớp này được công khai
public class Vertex
{ public Vertex(Object label);
//cấu tử của lớp Tạo ra nút với nhãn thích hợp
public Object label(); // trả về nhãn thích hợp với đỉnh
public boolean visit(); // đánh dấu đỉnh đã đến thăm
public boolean isVisited(); // trả về True nếu đỉnh đã được thăm
}
Tương tự với lớp Vertex, lớp Edge được công khai vì nó được nhìn thấy
từ giao diện đồ thị vì phương thức getEdge được sử dụng trong lớp Graph Ở
đây, chỉ liệt kê một vài phương thức cơ bản của lớp Edge Khi sử dụng ta có thể
cung cấp thêm nhiều phương thức hơn
public class Edge
{ public Edge(Object v1, Object v2, Object label, boolean directed);
// cấu tử của lớp Cạnh có hướng nếu được thiết lập giá trị True
public Object Start(); // trả về nút đầu tiên của cạnh
public Object End(); // trả về nút thứ hai của cạnh
}
H
HE 8 9
I 1
A
AE
2 B
6 F
G 7
J 10
3 C
AG
Hình 1.14 Mô hình mạng lưới đường tàu hỏa
Trang 27Ngoài ra, một số hệ thống gồm các kiểu dữ liệu bổ sung như tuyến đường Một đường đi là một dãy bắt đầu với một nút và kết thúc là một nút khác Nó bao gồm các nút và các cạnh theo thứ tự đường đi Chẳng hạn, các tuyến
đường tàu hỏa trong mạng lưới đường tàu hỏa miêu tả một đường đi (hình 1.14)
1.3.1.3 Mô hình dữ liệu vật lý
Mức cấu trúc cơ sở dữ liệu thấp nhất là mô hình vật lý Trong mô hình này phải định nghĩa các tham số cho dữ liệu như tổng số byte cho một khối dữ liệu và địa chỉ của chúng trong bộ nhớ vật lý Biểu diễn bản ghi/file dựa trên bộ nhớ chính và dựa vào đĩa từ
Ma trận liền kề matrix) và danh sách liền kề
(Adjacency-list) là hai cấu trúc dữ liệu bộ nhớ chính nổi tiếng để thực thi đồ thị
Trong ma trận liền kề, các dòng và các cột của ma trận biểu diễn các đỉnh của đồ thị Giá trị các mục trong ma trận có thể là 0 hoặc 1 tùy thuộc vào cạnh
có nối hai đỉnh hay không, tức là M[A, B] = 1 nếu và chỉ nếu tồn tại cạnh (A,
B) Minh họa trong hình 1.15(b) Nếu đồ thị vô hướng thì ma trận kết quả đối xứng Cấu trúc ma trận liền kề hiệu quả khi trả lời câu hỏi về cạnh: cạnh (u, v)
có nằm trong đồ thị G hay không?
(4) (1,2) (2) (1) (5)
(5) ( ) (3,4) (2,4)
(1)
1 2 3 4 5 1
2 3 5 4
1
1 1
1
0 0 1
0
1 0
1 2 3 4 5
2 4
3 4 N 5 1
1 2
4 1
5 18
10
source 1
4.0 6.0 5.0 3.0 1.0
5.0 3.0 1.0 2.0 3.0
5
(0,0)
(a)
distance dest
Hình 1.15 Ba cách biểu diễn đồ thị
Trang 28Cấu trúc danh sách liền kề hiệu quả cho các câu hỏi mang tính liệt kê các
đỉnh của đồ thị, như tìm tất cả các láng giềng của v,… Cấu trúc dữ liệu danh
sách liền kề là dãy các con trỏ Mỗi phần tử của dãy tương ứng với một đỉnh
của đồ thị và con trỏ trỏ đến danh sách các đỉnh successor gần sát của đỉnh được
minh họa trong hình 1.15(c)
Như chúng ta đã nhận xét trước đây, các cấu trúc dữ liệu bộ nhớ chính thì không thích hợp cho các ứng dụng cơ sở dữ liệu vì cơ sở dữ liệu thường quá lớn không thể vừa với bộ nhớ chính Vì vậy, các thuật toán đồ thị phải đảm bảo việc
xử lý I/O hiệu quả trước khi có thể triển khai trong hệ quản trị cơ sở dữ liệu Các đồ thị có hướng có thể được thực hiện trong mô hình quan hệ bằng
cách sử dụng cặp quan hệ R cho các nút và S cho các cạnh của đồ thị Quan hệ
nút R (Node) và quan hệ cạnh S (Edge) được minh họa trong hình 1.15(d) Chú
ý rằng các cạnh trong quan hệ S có thể được phân cụm tự nhiên theo giá trị của thuộc tính đầu tiên Tọa độ điểm của các nút cũng đưa vào trong quan hệ R và khoảng cách giữa các nút (trọng số) trong quan hệ S
Để tăng tốc các phép tính đường đi ngắn nhất thì ta biểu diễn đồ thị như
được minh họa trong hình 1.15(e), tức là dùng một bảng chứa các nút gồm tọa
độ, danh sách successor và danh sách predecessor Có thể thực hiện các cách xếp thành bảng khác cho đồ thị Ví dụ, một đồ thị sử dụng một bảng nút và một bảng tuyến đường đi để giữ lại các mối quan hệ giữa các nút và các tuyến đường
đi phát sinh trong miền ứng dụng của giao thông công cộng
Bây giờ xét lại ví dụ các mạng lưới không gian trên: mạng lưới đường tàu hỏa và mạng lưới sông ngòi Thông tin liên quan đến mạng lưới đường tàu hỏa
được tập hợp trong ba quan hệ Quan hệ đầu tiên, Ga có hai thuộc tính như
Ga-id và Ten_ga Hai thuộc tính này tương ứng là số định danh và tên của ga dừng
Hai thuộc tính trong quan hệ thứ hai Huong_di là Huong_id và Ten_huong của
hướng đi Các bảng có liên quan đến hai quan hệ được minh họa trong bảng
1.2a Quan hệ Ga_Huong của hệ thống mạng lưới đường tàu hỏa được minh
họa trong bảng 1.2b Ba thuộc tính của quan hệ tương ứng với số hướng đi:
Ga-id, vị trí của ga trong hướng đi Vi_thu và Huong_id
Mạng lưới sông ngòi có hai quan hệ: Dong_Song và Huong_Chay, được
minh họa trong bảng 1.3 hai thuộc tính của Dong_Song là Song_id và
Ten_song, tương ứng với số định danh và tên của con sông Quan hệ
Huong_Chay cũng có hai thuộc tính là Nguon và Dich mà là khóa ngoài đến
quan hệ Dong_Song Thuộc tính Nguon tương ứng một con sông chảy vào trong
một con sông được tham chiếu trong thuộc tính Dich
Trang 29
Bảng 1.2 a- Bảng Ga và Huong_di của hệ thống mạng lưới đường tàu hỏa
Bảng 1.2 b- Bảng Ga_Huong của hệ thống mạng lưới đường tàu hỏa
Trang 30Bảng 1.3 Bảng Dong_Song và Huong_Chay của hệ thống mạng lưới sông ngòi
Trong ví dụ mạng lưới đường tàu hỏa, tất cả các đường đi tương ứng với các hướng đi của các tàu lửa khác nhau đã được cụ thể hóa trong quan hệ
Ga_Huong Trong quan hệ mạng lưới sông ngòi, chỉ các cạnh và các đỉnh của
đồ thị mạng lưới được liệt kê Hiện nay, trên thị trường có rất nhiều bộ chương trình cho phép xây dựng và quản trị cơ sở dữ liệu Mặc dù chúng có rất nhiều khía cạnh khác nhau nhưng vẫn có thể nhận ra một số điểm chung của chúng
Để đạt được yêu cầu độc lập dữ liệu, các mức logic và mức vật lý mà trên đó cơ
sở dữ liệu được định nghĩa, thường được phân biệt rõ ràng
1.3.2 Ngôn ngữ truy vấn cho đồ thị
Truy vấn hay xảy ra trên các mạng lưới không gian có thể chia thành ba
loại: truy vấn duyệt đơn (single scan queries), truy vấn kết nối (join queries) và truy vấn phân tích mạng lưới (network analysis queries) [11]
- Truy vấn duyệt đơn (single scan queries): gồm truy vấn điểm (point
query) và truy vấn phạm vi (range query), ví dụ: get, getEdge, get-a-successor,
getSuccessors và các phép toán định giá đường đi
Trang 31- Truy vấn kết nối (join query) trên đồ thị miêu tả bản đồ phủ lấp nhiều
mạng lưới không gian, ví dụ, nhận dạng cặp đường cao tốc và đường phố không giao nhau trong khoảng cách 50 mét
- Truy vấn phân tích mạng lưới (network analysis query) mô tả một tập
các truy vấn đồ thị dựa vào transitive closure Các truy vấn này bao gồm đường
đi ngắn nhất, xác định tính liên thông, các chuyến du lịch ngắn nhất, vị trí và sự định vị,… Ví dụ, máy mạng lưới của ESRI hỗ trợ các phép toán phân tích mạng lưới như định vị, tour (sắp xếp thứ tự hàng loạt các điểm dừng và tạo ra một chuyến đi chi phí thấp nhất mà thăm mỗi điểm dừng một lần), sự định hướng (tạo ra danh sách các hướng vạch ra tuyến đường đi)
Trong quá trình xử lý truy vấn phân tích mạng lưới không gian cũng như truy vấn duyệt đơn và truy vấn kết nối thường sử dụng thuật toán tìm đường đi ngắn nhất và các bài toán duyệt đồ thị
Trang 32Chương 2 MỘT SỐ THUẬT TOÁN TÌM KIẾM TRONG
MẠNG LƯỚI KHÔNG GIAN
Trong chương này tập trung vào một số thuật toán xử lý truy vấn phân
tích mạng lưới Cụ thể là các thuật toán tìm đường đi ngắn nhất trong đồ thị
như thuật toán Dijkstra, thuật toán A*, thuật toán Floyd,…
2.1 Phát biểu bài toán
Quá trình xử lý truy vấn đường đi là một thành phần quan trọng trong các
ứng dụng mạng lưới không gian Các thuật toán đồ thị nổi tiếng xác định đường
đi “ngắn nhất” giữa hai điểm A và B trên mạng lưới đường phố mà tiêu chuẩn
“ngắn nhất” có thể được dựa trên khoảng cách, thời gian đi hoặc một số ràng
buộc khác do người sử dụng tự đặt ra
Giả sử cho trước đồ thị G trong đó mỗi cung (x, y) gắn với trọng số của
cung a(x, y) Trong một số ứng dụng, chiều dài có thể là chi phí hoặc giá trị khác
nào đó Chiều dài của đường đi được xác định bằng tổng chiều dài của các cung
đơn trong đường đi Với hai đỉnh bất kỳ, s và t trong G, có thể tồn tại nhiều
đường đi từ s đến t Bài toán đường đi ngắn nhất bao gồm tìm đường đi từ s đến
t sao cho chiều dài nhỏ nhất có thể
Giữa tất cả các lớp của bài toán tối ưu trong mạng lưới, bài toán tìm
đường đi ngắn nhất bao quát nhất Chúng thường gặp trong bài toán vận chuyển,
truyền thông và các ứng dụng trong sản xuất
Bài toán này có thể chia làm hai loại sau:
• Tìm đường đi ngắn nhất từ một đỉnh nguồn đến các đỉnh còn lại của
đồ thị
• Tìm đường đi ngắn nhất giữa mọi cặp đỉnh của đồ thị
Với hai loại bài toán này ta có thể phát biểu chung bài toán như sau:
Đầu vào: Cho một đồ thị có hướng có trọng số G = (V, E) (với V: tập
đỉnh, E: tập cạnh), một hàm trọng số w: E → [0, ∞)
Đầu ra: Hãy tìm đường đi ngắn nhất giữa hai đỉnh (chẳng hạn (s, t))
trong đồ thị G
Trang 332.2 Thuật toán Dijkstra
Thuật toán này do nhà khoa học Hà Lan - ông Edsger Dijkstra đưa ra vào năm 1959 cung cấp nền tảng cơ bản cho thuật toán hữu hiệu nhất để giải quyết bài toán này Thuật toán Dijkstra được thiết kế dựa trên kỹ thuật tham ăn để giải quyết bài toán tìm đường đi ngắn nhất từ một đỉnh nguồn trong đồ thị có hướng với trọng số không âm Thuật toán Dijkstra hoạt động dựa trên việc gán nhãn cho các đỉnh [7]
a- Phát biểu bài toán
Đầu vào: Cho một đồ thị có hướng G = (V, E) (với V: tập đỉnh, E: tập cạnh),
y bằng cách kết nối đường đi ngắn nhất từ s đến x với cung (x, y) cho tất cả các đỉnh x đã được gán nhãn Chọn đường đi ngắn nhất trong k đường đi này và đặt
nó là đường đi ngắn nhất từ s đến y
Vì vậy, nếu đã biết đỉnh thứ k gần đỉnh s nhất thì đỉnh thứ k+1 có thể được xác định như trên Bắt đầu với k=0, quá trình này có thể lặp đi lặp lại cho đến khi tìm ra đường đi ngắn nhất từ s đến t (tức là t đã được gán nhãn)
c- Thuật toán
• Thuật toán Dijkstra được thực hiện như sau:
Bước 1:
- Ban đầu, tất cả các cung và các đỉnh chưa được gán nhãn
- Với mỗi đỉnh x ∈ V, gọi d(x) là nhãn được gán cho mỗi đỉnh x là độ dài đường đi ngắn nhất từ s đến x
- Khởi tạo, đặt d(s) = 0 và d(x) = ∞ cho mọi đỉnh x ≠ s
- Gọi y là đỉnh cuối cùng được gán nhãn
Gán nhãn đỉnh s và đặt y = s
Bước 2:
Trang 34- Với mỗi đỉnh chưa được gán nhãn x, tính lại nhãn d(x) như sau:
d(x) = min{d(x), d(y) + a(x, y)} (2.1)
- Nếu d(x) = ∞ với mọi đỉnh x chưa gán nhãn thì dừng lại vì không tồn tại đường đi từ s đến đỉnh bất kỳ chưa gán nhãn
- Ngược lại,
+ Gán nhãn cho đỉnh x chưa gán nhãn với giá trị d(x) nhỏ nhất
+ Gán nhãn cho cung có hướng đến đỉnh x từ đỉnh đã được gán nhãn với giá trị d(x) ở trên
+ Đặt y = x
Bước 3:
- Nếu đỉnh t đã được gán nhãn thì dừng, vì đường đi ngắn nhất từ s đến t
đã được tìm ra Đường đi này chứa đường đi đơn của các cung đã được gán nhãn từ s đến t
- Nếu đỉnh t chưa được gán nhãn thì lặp lại bước 2
Chú ý rằng bất cứ khi nào thuật toán gán nhãn cho đỉnh (ngoại trừ đỉnh s) thì cũng gán nhãn cho cung hướng về đỉnh này Vì vậy, mỗi đỉnh có tối đa một cung đã được gán nhãn hướng vào nó và các cung đã được gán nhãn không có chu trình vì không có cung nào được gán nhãn nếu cả hai điểm đầu cuối có cung
đã được gán nhãn vốn gắn liền với nó Do đó, chúng ta có thể kết luận rằng các cung đã được gán nhãn tạo thành một dạng cây có gốc tại s Dạng cây này được gọi là cây đường đi ngắn nhất Đường đi duy nhất từ s đến bất kỳ điểm x nào khác nằm trong cây đường đi ngắn nhất là đường đi ngắn nhất từ s đến x
Nếu đường đi ngắn nhất từ s đến x trong cây đường đi ngắn nhất đi qua đỉnh y thì phần đường đi từ y đến x này là đường đi ngắn nhất từ y đến x Ngược lại thì tồn tại đường đi khác, thậm chí còn ngắn hơn đường đi từ y đến x, điều này mâu thuẫn với đường đi ngắn nhất từ s đến x đã tìm ra
Vì các cung đã được gán nhãn luôn luôn tạo thành cây nên có thể xem thuật toán này như phát triển một cây có gốc tại đỉnh s Một khi đến được đỉnh t thì có thể kết thúc quá trình phát triển
• Mở rộng thuật toán:
Nếu muốn tìm đường đi ngắn nhất từ đỉnh s đến mọi đỉnh khác trong đồ thị thì tiếp tục quá trình phát triển cho đến khi tất cả các đỉnh được nằm trong cây đường đi ngắn nhất Trong trường hợp này, cây trở thành cây mở rộng (nếu
Trang 35cây tồn tại) Khi đó, bước 3 sẽ là:
Bước 3:
- Nếu tất cả các đỉnh đã được gán nhãn thì dừng lại vì đường đi duy nhất của các cung đã được gán nhãn từ s đến x là đường đi ngắn nhất từ s đến x với mọi đỉnh x
- Ngược lại, trở về bước 2
d- Ví dụ minh họa
Tìm đường đi ngắn nhất từ nút s đến nút t trong đồ thị G trong hình 2.1
sau bằng thuật toán Dijkstra:
Hình 2.1 Đồ thị minh họa thuật toán Dijkstra
Bước 1: Khởi tạo, d(s) = 0, d(x) = ∞ với mọi x ≠ s Đặt y = s
Bước 2: Tính lại khoảng cách cho các nút chưa gán nhãn:
d(1) = min{d(1), d(s) + a(s, 1)} = min{∞, 0 + 4} = 4
d(2) = min{d(2), d(s) + a(s, 2)} = min{∞, 0 + 7} = 7
d(3) = min{d(3), d(s) + a(s, 3)} = min{∞, 0 + 3} = 3
Vì khoảng cách nhỏ nhất trong các nút chưa gán nhãn là d(3) = 3 nên gán nhãn cho nút 3 và cung (s, 3) Cây đường đi ngắn nhất hiện tại chứa cung (s, 3) Đặt y = 3
Bước 3: Nút t chưa được gán nhãn nên quay lại bước 2
Bước 2: Tính d(4) = min{d(4), d(3) + a(3, 4)} = min{∞, 3 + 3} = 6
Khoảng cách nhỏ nhất trong các nút chưa gán nhãn là d(1) = 4 nên gán nhãn cho nút 1 và cung (s, 1) Cây đường đi ngắn nhất hiện tại chứa cung (s, 3)
và (s, 1) Đặt y = 1
Bước 3: Đỉnh t chưa được gán nhãn nên quay lại bước 2
Bước 2: Tính d(2) = min{d(2), d(1) + a(1, 2)} = min{7, 4 + 3} = 7
2
t
4 3
3
Trang 36d(4) = min{d(4), d(1) + a(1, 4)} = min{6, 4 + 2} = 6 Khoảng cách nhỏ nhất trong các nút chưa gán nhãn là d(4) = 6 nên gán nhãn cho nút 4 và cung (1, 4) hoặc (3, 4) vì cả hai đều bằng d(4)
Chọn tùy ý cung (3, 4) Khi đó, cây đường đi ngắn nhất chứa cung (s, 3), (s, 1) và (3, 4) Đặt y = 4
Bước 3: Đỉnh t chưa được gán nhãn nên quay lại bước 2
Bước 2: Tính d(t) = min{d(t), d(4) + a(4, t)} = min{∞, 6 + 2} = 8
Khoảng cách nhỏ nhất trong các nút chưa gán nhãn là d(2) = 7 nên gán nhãn cho nút 2 và cung (s, 2) Đường đi ngắn nhất hiện tại chứa cung (s, 3), (s, 1) (3, 4) và (s, 2) Đặt y = 2
Bước 3: Đỉnh t chưa được gán nhãn nên quay lại bước 2
Bước 2: Tính d(t) = min{d(t), d(2) + a(2, t)} = min{8, 7 + 2} = 8
Khi đó, nút t được gán nhãn cuối cùng và cung (4, t) cũng được gán nhãn
là d(t) Do vậy, đường đi ngắn nhất cuối cùng chứa các cung (s, 3), (s, 1), (3, 4), (s, 2) và (4, t)
Đường đi ngắn nhất từ s đến t chứa các cung (s, 3), (3, 4) và (4, t) với chiều dài là 3 + 3 + 2 = 8 Đường đi này không chỉ là đường đi ngắn nhất duy nhất từ s đến t vì đường đi (s, 1), (1, 4) và (4, t) cũng có chiều dài bằng 8
int length; /* Độ dài giữa các nút */
and tentative labels */
Trang 38cho đường đi có độ dài ngắn nhất giữa các đỉnh s và t trong một đồ thị có hướng
có trọng số không âm
Thật vậy, tại bước k ta có giả thiết quy nạp sau:
(i) nhãn của đỉnh x trong S là độ dài của đường đi ngắn nhất từ đỉnh s đến đỉnh này và
(ii) nhãn của đỉnh x không thuộc S là độ dài của đường đi ngắn nhất từ đỉnh s tới đỉnh này và đường đi này chỉ chứa các đỉnh (ngoài chính đỉnh này) thuộc S
Khi k = 0, tức là khi chưa có bước lặp nào được thực hiện, S = {s}, vì thế
độ dài của đường đi ngắn nhất từ s đến các đỉnh khác s là ∞ và độ dài của đường
đi ngắn nhất từ s đến chính nó bằng 0 (ở đây cho phép đường đi không có cung)
Do đó, bước cơ sở là đúng
Giả sử giả thiết quy nạp là đúng với bước k
Gọi v là đỉnh không thuộc S ở cuối bước k có nhãn nhỏ nhất (nếu có nhiều đỉnh có nhãn nhỏ nhất thì có thể chọn một đỉnh nào đó làm v)
Từ giả thiết quy nạp ta thấy rằng trước khi vào vòng lặp thứ (k + 1), các đỉnh thuộc S đã được gán nhãn bằng độ dài của đường đi ngắn nhất từ s Đỉnh v cũng vậy, phải được gán nhãn bằng độ dài của đường đi ngắn nhất từ s Nếu điều này không xảy ra thì ở cuối bước lặp thứ k sẽ có đường đi với độ dài nhỏ hơn dk(v) chứa cả đỉnh không thuộc S (vì dk(v) là độ dài của đường đi ngắn nhất
từ s đến v chứa chỉ các đỉnh thuộc S sau bước lặp thứ k) Gọi u là đỉnh đầu tiên của đường đi này không thuộc S Đó là đường đi với độ dài nhỏ hơn dk(v) từ s đến u chứa chỉ các đỉnh của S Điều này trái với cách chọn v Vì thế, (i) vẫn còn đúng ở cuối bước lặp (k+1)
Gọi u là đỉnh không thuộc S sau bước (k+1) Đường đi ngắn nhất từ s đến
u chứa chỉ các đỉnh thuộc S sẽ hoặc là chứa v hoặc là không Nếu nó không chứa
v thì theo giả thiết quy nạp, độ dài của nó là dk(v) Nếu nó chứa v thì nó sẽ tạo thành đường đi từ s đến v với độ dài có thể ngắn nhất và chứa chỉ các đỉnh của S khác v, kết thúc bằng cạnh từ v đến u Khi đó, độ dài của nó sẽ là dk(v) + a(v, u) Điều này chứng tỏ (ii) là đúng vì dk+1(u) = min{dk(u), dk(v) + a(v, u)}
g- Đánh giá thuật toán
Tất cả thuật toán tìm đường đi ngắn nhất bao gồm hai phép toán số học cần thiết, phép cộng và phép chọn giá trị nhỏ nhất Để phân tích độ phức tạp tính toán của một trong các thuật toán này, chúng ta cần một vài phép so sánh phép
Trang 39cộng với phép chọn giá trị nhỏ nhất Dĩ nhiên, phép so sánh này biến đổi giữa các máy tính (con người và máy móc) nhưng chúng ta giả sử rằng hai phép toán này cần số lượng thời gian tính toán tương đương
Xét độ phức tạp tính toán của thuật toán Dijkstra Trong lần lặp đầu tiên,
có m – 1 đỉnh phải được kiểm tra Từ phương trình (2.1) cần có m – 1 phép cộng, m – 1 phép chọn giá trị nhỏ nhất và chọn số nhỏ nhất trong m – 1 số, tức
m -1 phép chọn giá trị nhỏ nhất khác Vì vậy, cần 3(m – 1) phép toán cho bước lặp đầu tiên Tương tự, 3(m – 2) phép toán cho lần lặp thứ hai, v.v Tổng cộng,
các đỉnh nào đã được gán nhãn và đỉnh nào chưa được gán nhãn Điều này đòi hỏi thêm công việc, nhưng các kỹ thuật lập trình tốt có thể tránh được điều này [12][13] Vì vậy, thuật toán đòi hỏi O(m2) thời gian thực hiện
2.3 Thuật toán Bellman-Ford
Ban đầu, giả sử rằng tất cả chiều dài của các cung là không âm Nếu một
số chiều dài cung là âm thì điều gì sẽ xảy ra? Ví dụ, xét đồ thị trong hình 2.2
Đường đi ngắn nhất từ đỉnh s đến đỉnh t là (s, 1), (1, t), chiều dài của nó là +2 –
2 = 0 Có thể dễ dàng nhận thấy rằng nếu thuật toán tìm đường đi ngắn nhất Dijkstra được áp dụng trong đồ thị này thì đường đi (s, t) được chọn nhầm là đường đi ngắn nhất từ đỉnh s đến đỉnh t Vì vậy, không đảm bảo rằng thuật toán tìm đường đi ngắn nhất Dijkstra sẽ sinh ra đường đi ngắn nhất khi chiều dài cung được cho phép là âm [7]
-2 2
1
s
1
t
Hình 2.2 Đồ thị minh họa thuật toán Bellman-Ford
Thuật toán Bellman-Ford (1956) là một thuật toán tính các đường đi ngắn nhất nguồn đơn trong một đồ thị có hướng có trọng số (trong đó một số cung có thể có trọng số âm) Thuật toán Dijkstra giải cùng bài toán này với thời gian chạy thấp hơn, nhưng lại đòi hỏi trọng số của các cung phải có giá trị không âm
Do đó, thuật toán Bellman-Ford thường chỉ được dùng khi có các cung với trọng
số âm
a- Mô tả thuật toán
Trang 40function BellmanFord(danh_sách_đỉnh,danh_sách_cung, nguồn)
// hàm yêu cầu đồ thị đưa vào dưới dạng một danh sách đỉnh, một danh sách cung
// hàm tính các giá trị khoảng_cách và đỉnh_liền_trước của các
đỉnh, sao cho các giá trị đỉnh_liền_trước sẽ lưu lại các đường đi ngắn nhất
// bước 1: khởi tạo đồ thị
if v is nguồn then khoảng_cách(v) := 0
else khoảng_cách(v) := vô cùng
đỉnh_liền_trước(v) := null
// bước 2: kết nạp cạnh
for each (u,v) in danh_sách_cung:
if khoảng_cách(v) > khoảng_cách(u)+trọng_số(u,v)
khoảng_cách(v):= khoảng_cách(u)+trọng_số(u,v) đỉnh_liền_trước(v) := u
// bước 3: kiểm tra chu trình âm
if khoảng_cách(v) > khoảng_cách(u) + trọng_số(u,v) error "Đồ thị chứa chu trình âm"
b- Chứng minh tính đúng đắn của thuật toán
Thuật toán có thể được phát biểu chính xác theo kiểu quy nạp như sau:
Chứng minh bằng phương pháp quy nạp:
Trường hợp cơ bản: Xét i=0 và thời điểm trước khi vòng for được chạy lần đầu tiên Khi đó, với đỉnh nguồn khoảng_cách(nguồn) = 0, điều này đúng Đối với các đỉnh u khác, khoảng_cách(u) = vô cùng, điều này cũng đúng vì không có đường đi nào từ nguồn đến u qua 0 cung
Trường hợp quy nạp:
(i) Xét thời điểm khi khoảng cách tới một đỉnh được cập nhật bởi công thức khoảng_cách(v) := khoảng_cách(u) + trọng_số(u,v) Theo giả