Tải bản đầy đủ (.docx) (38 trang)

PHÂN TÍCH DỮ LIỆU CHO BÀI TOÁN GỢI Ý TRÊN CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1019.91 KB, 38 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP
PHÂN TÍCH DỮ LIỆU CHO BÀI TỐN GỢI Ý

TRÊN CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J

Giáo viên hướng dẫn: Hà Thị Thanh Ngà
Sinh viên thực hiện: Nguyễn Thị Tuyết
Lớp: 61-TTQL
MSSV: 61134646

Khánh Hòa – 2023

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP

PHÂN TÍCH DỮ LIỆU CHO BÀI TOÁN GỢI Ý
TRÊN CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J

Giáo viên hướng dẫn: Hà Thị Thanh Ngà
Sinh viên thực hiện: Nguyễn Thị Tuyết
Lớp: 61-TTQL
MSSV: 61134646


Khánh Hòa – 2023

- LỜI CAM ĐOAN
Tôi xin được cam đoan: Những phần sử dụng tài liệu tham khảo trong đồ án đã
được trích dẫn đầy đủ.
Nếu phát hiện có sự sao chép kết quả nghiên cứu của đề tài khác, tơi xin chịu
hồn tồn trách nhiệm và chịu kỷ luật của Khoa và Nhà trường đề ra.

Khánh Hòa, ngày 00 tháng 3 năm 2023
Sinh viên thực hiện
Nguyễn Thị Tuyết

-

1

- LỜI CẢM ƠN
Để hoàn thành đề tài tốt nghiệp này, trước hết em xin gửi đến quý thầy, cô
Khoa Công nghệ Thông tin - Trường Đại học Nha Trang lời cảm ơn chân thành.
Em xin gửi đến cô Hà Thị Thanh Ngà, người đã tận tình hướng dẫn, giúp đỡ em
hồn thành đề tài tốt nghiệp này lời cảm ơn sâu sắc nhất.
Trong quá trình nghiên cứu thực hiện đề tài, cũng như là trong quá trình làm bài
báo cáo tốt nghiệp, khó tránh khỏi sai sót, rất mong các thầy, cơ bỏ qua. Đồng thời do
kiến thức cũng như kinh nghiệm thực tiễn của bản thân còn hạn chế nên đề tài, bài báo
cáo tốt nghiệp này khó thể khơng tránh khỏi những thiếu sót, em rất mong nhận được ý
kiến đóng góp từ quý thầy, cô để em học hỏi thêm được nhiều kinh nghiệm, cũng như
kỹ năng cần thiết.
Em xin chân thành cảm ơn!

2


- TÓM TẮT ĐỒ ÁN
3

MỤC LỤC
1. Contents
- LỜI CAM ĐOAN.................................................................................................1
- LỜI CẢM ƠN......................................................................................................2
- TĨM TẮT ĐỒ ÁN...............................................................................................3
MỤC LỤC.................................................................................................................... 4
DANH MỤC HÌNH VẼ...............................................................................................6
DANH MỤC BẢNG.....................................................................................................8
DANH MỤC CÁC TỪ VIẾT TẮT.............................................................................9
MỞ ĐẦU....................................................................................................................... 1
Chương 1. TỔNG QUAN VỀ VẤN ĐỀ NGHIÊN CỨU......................................2

1.1 CƠ SỞ LÝ THUYẾT.....................................................................................2
1.1.1 Giới thiệu cơ sở dữ liệu đồ thị.................................................................2
1.1.2 Giới thiệu lý thuyết đồ thị.......................................................................4
1.1.3 Giới thiệu công nghệ cơ sở dữ liệu Neo4j...............................................4
1.1.4 Giới thiệu về giải thuật Tìm đường đi ngắn nhất..................................5

1.2 CÁC NGÔN NGỮ ĐƯỢC SỬ DỤNG........................................................11
1.2.1 Giới thiệu ngôn ngữ truy vấn Cypher..................................................11

1.3 THỰC TIỄN VẤN ĐỀ LIÊN QUAN ĐẾN ĐỀ TÀI..................................13
1.4 TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU..............................................14
Chương 2. PHÂN TÍCH DỮ LIỆU VỚI NEO4J................................................16
2.1 LẬP MƠ HÌNH DỮ LIỆU ĐỒ THỊ............................................................16
2.2 BIỂU DIỄN VÀ PHÂN TÍCH DỮ LIỆU....................................................16

Chương 3. PHÂN TÍCH DỮ LIỆU CHO BÀI TỐN GỢI Ý...........................16
3.1 TỔNG QUAN VỀ HỆ THỐNG GỢI Ý......................................................16
3.2 PHÂN TÍCH DỮ LIỆU CHO BÀI TỐN GỢI Ý.....................................16
Chương 4. XÂY DỰNG CHƯƠNG TRÌNH GỢI Ý VỚI GIẢI THUẬT TÌM
ĐƯỜNG ĐI 16

4

Chương 5. HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG CHƯƠNG TRÌNH.........19
5.1 HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG....................................................19

Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.........................................20
6.1 KẾT QUẢ ĐẠT ĐƯỢC...............................................................................20
6.2 ƯU ĐIỂM......................................................................................................20
6.3 HẠN CHẾ.....................................................................................................20
6.4 HƯỚNG PHÁT TRIỂN...............................................................................20
6.5 KẾT LUẬN...................................................................................................20

- TÀI LIỆU THAM KHẢO.................................................................................20
- PHỤ LỤC...........................................................................................................20

-

5

DANH MỤC HÌNH VẼ
6

DANH MỤC BẢNG
7


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

MỞ ĐẦU
1

Chương 1. TỔNG QUAN VỀ VẤN ĐỀ NGHIÊN CỨU

1.1 CƠ SỞ LÝ THUYẾT
1.1.1 Giới thiệu cơ sở dữ liệu đồ thị

Phân tích đồ thị có lịch sử từ năm 1736, khi Leonhard Euler giải bài tốn “Bảy
cây cầu Kưnigsberg”. Bài tốn đặt ra câu hỏi liệu có thể tham quan cả bốn khu vực của
một thành phố, được nối với nhau bằng bảy cây cầu, trong khi chỉ đi qua mỗi cây cầu
một lần hay không. Không phải vậy. Với nhận thức sâu sắc rằng chỉ bản thân các mối
liên hệ mới có liên quan, Euler đã đặt nền móng cho lý thuyết đồ thị và tốn học của
nó.

Đầu tiên, Euler tìm cách "mơ hình hóa" bài tốn một cách trừu tượng nhất
thơng qua việc biểu diễn các cù lao hay bờ sông bằng các chấm trịn, cịn các cây cầu
là đoạn thẳng (có thể là cung).

Hình1.1
Cù lao là các điểm A và B, bờ sông là các điểm C và D. Các cây cầu trở thành
các đoạn thẳng hay cung nối với các điểm trên.

2

Hình1.2 Mơ tả sự tiến triển của Euler với một trong những bản phác thảo ban đầu

của ông, từ bài báo "Solutio problematis ad geometriam situs pertinentis".

Như vậy, Euler đã có một mơ hình đơn giản nhất của bài toán 7 cây cầu, cách
biểu diễn bằng các điểm và đoạn thẳng (hay cung) chính là bước đầu của sự ra đời lý
thuyết đồ thị ngày nay.

Trong toán học hay tin học, lý thuyết đồ thị giúp chúng ta nghiên cứu và khảo
sát các tính chất của đồ thị, trong đó đồ thị là tập hợp các đối tượng được gọi là đỉnh
(nút) được nối với nhau qua các cạnh (cung).

Thuật toán đồ thị là một tập hợp con các công cụ để phân tích đồ thị. Phân tích
đồ thị là việc sử dụng bất kỳ phương pháp tiếp cận dựa trên biểu đồ nào để phân tích
dữ liệu được kết nối. Có nhiều phương pháp khác nhau có thể sử dụng: có thể truy vấn
dữ liệu biểu đồ, sử dụng thống kê cơ bản, khám phá biểu đồ một cách trực quan hoặc
kết hợp đồ thị vào các tác vụ máy học của mình. Truy vấn dựa trên mẫu đồ thị thường
được sử dụng để phân tích dữ liệu cục bộ, trong khi các thuật tốn tính tốn đồ thị
thường đề cập đến phân tích tồn cầu và lặp đi lặp lại nhiều hơn.

Nhưng phân tích biểu đồ đã khơng bắt kịp ngay lập tức. Hai trăm năm đã trôi
qua trước khi cuốn sách giáo khoa đồ thị đầu tiên được xuất bản vào năm 1936. Vào
cuối những năm 1960 và 1970, khoa học mạng và phân tích đồ thị ứng dụng thực sự
bắt đầu xuất hiện.

Trong vài năm gần đây, đã có sự bùng nổ về mối quan tâm và việc sử dụng các
công nghệ đồ thị. Năm 2017, dữ liệu khảo sát của Forrester chỉ ra rằng “69% doanh
nghiệp có hoặc có kế hoạch triển khai cơ sở dữ liệu đồ thị trong vòng 12 tháng tới.”
Nhu cầu đang tăng nhanh dựa trên nhu cầu hiểu rõ hơn về các mạng trong thế giới
thực và dự báo các hành vi của chúng, điều này dẫn đến nhiều giải pháp dựa trên biểu
đồ mới.


Sự phát triển về khoa học mạng và phân tích biểu đồ này là kết quả của sự thay
đổi kết hợp về khả năng kỹ thuật, hiểu biết sâu sắc mới và nhận thức rằng các hệ thống
kinh doanh thông minh hiện tại và các số liệu thống kê đơn giản không thể cung cấp

3

một bức tranh toàn cảnh về các mạng trong thế giới thực. Một số lực lượng đang thúc
đẩy sự gia tăng trong phân tích biểu đồ.

Trước hết, chúng ta đã thấy các ứng dụng phân tích biểu đồ trong thế giới thực
và tác động của chúng đối với tất cả chúng ta. Sức mạnh của dữ liệu được kết nối vì
lợi ích kinh doanh đã được chứng minh trong những câu chuyện thành cơng mang tính
đột phá như Google, LinkedIn, Uber và eBay, cùng nhiều câu chuyện khác.Đồng thời,
số hóa và sự phát triển về sức mạnh tính tốn (và điện tốn được kết nối) đã mang đến
cho chúng ta khả năng chưa từng có để thu thập, chia sẻ và phân tích lượng dữ liệu
khổng lồ. Nhưng bất chấp khối lượng dữ liệu họ có, các tổ chức vẫn thất vọng với
những hứa hẹn không được thực hiện của dữ liệu lớn và việc họ khơng thể phân tích
dữ liệu đó.

Phần lớn các phân tích được sử dụng ngày nay xử lý các câu hỏi cụ thể, được
xây dựng tốt một cách hiệu quả nhưng lại thiếu sót trong việc giúp chúng tơi dự đốn
hành vi của các hệ thống, nhóm và mạng thực. Hầu hết các mạng thách thức mức trung
bình và phản ứng phi tuyến tính với các thay đổi. Do đó, nhiều doanh nghiệp đang
chuyển sang phân tích biểu đồ, được xây dựng cho dữ liệu được kết nối và đáp ứng
các thay đổi động.

Ngồi ra, đã có sự cơng nhận về cách đồ thị tăng cường khả năng học máy và
cung cấp khung ra quyết định cho trí tuệ nhân tạo. Từ việc làm sạch dữ liệu cho máy
học đến trích xuất tính năng trong q trình phát triển mơ hình đến biểu đồ tri thức
cung cấp ngữ cảnh phong phú cho AI, công nghệ biểu đồ đang nâng cao các giải pháp

AI.

1.1.2 Giới thiệu lý thuyết đồ thị

Cơ sở dữ liệu là một tập hợp có tổ chức các thơng tin hoặc dữ liệu có cấu trúc,
thường được lưu trữ điện tử trong một hệ thống máy tính. Cơ sở dữ liệu thường được
điều khiển bởi hệ thống quản lý cơ sở dữ liệu (DBMS). Cùng với nhau, dữ liệu và
DBMS, cùng với các ứng dụng được liên kết với chúng, được gọi là hệ thống cơ sở dữ
liệu, thường được rút ngắn thành cơ sở dữ liệu.

Dữ liệu trong các loại cơ sở dữ liệu phổ biến nhất đang hoạt động ngày nay
thường được mơ hình hóa theo hàng và cột trong một loạt bảng để giúp xử lý và truy
vấn dữ liệu hiệu quả. Sau đó, dữ liệu có thể được truy cập, quản lý, sửa đổi, cập nhật,
kiểm soát và tổ chức một cách dễ dàng. Hầu hết các cơ sở dữ liệu sử dụng ngơn ngữ
truy vấn có cấu trúc (SQL) để viết và truy vấn dữ liệu.

4

1.1.3 Giới thiệu công nghệ cơ sở dữ liệu Neo4j

Cơ sở dữ liệu là một tập hợp dữ liệu được tổ chức và lưu trữ trên máy tính để
quản lý và truy xuất dữ liệu một cách hiệu quả. Các dữ liệu trong cơ sở dữ liệu có thể
được sử dụng để hỗ trợ quản lý kinh doanh, quản lý khách hàng, hệ thống đặt hàng,
hoặc bất kỳ loại ứng dụng nào khác cần lưu trữ và truy xuất thông tin.

Có nhiều loại cơ sở dữ liệu khác nhau được sử dụng cho các mục đích khác
nhau. Dưới đây là một số loại cơ sở dữ liệu phổ biến:

Cơ sở dữ liệu quan hệ (Relational database): Là loại cơ sở dữ liệu được sử
dụng rộng rãi nhất trong các ứng dụng doanh nghiệp. Dữ liệu được lưu trữ trong các

bảng có quan hệ với nhau thơng qua khóa ngoại.

Cơ sở dữ liệu không quan hệ (NoSQL database): Là loại cơ sở dữ liệu được
thiết kế để xử lý các tập dữ liệu lớn và đa dạng hơn các cơ sở dữ liệu quan hệ. Các loại
cơ sở dữ liệu không quan hệ bao gồm cơ sở dữ liệu tài liệu (document database), cơ sở
dữ liệu cột (columnar database), và cơ sở dữ liệu đối tượng (object-oriented database).

Cơ sở dữ liệu đồ thị (Graph database): Lưu trữ dữ liệu dưới dạng các đối
tượng (nút) và các quan hệ giữa chúng (cạnh). Loại cơ sở dữ liệu này thường được sử
dụng để lưu trữ dữ liệu liên quan đến các mối quan hệ, ví dụ như mạng xã hội hoặc các
ứng dụng phân tích dữ liệu phức tạp.

Cơ sở dữ liệu dòng thời gian (Time-series database): Lưu trữ dữ liệu liên
quan đến thời gian, ví dụ như dữ liệu từ các cảm biến IoT hoặc các bộ dữ liệu tài
chính.

Cơ sở dữ liệu trực quan (Spatial database): Lưu trữ dữ liệu liên quan đến vị
trí, ví dụ như bản đồ hay các ứng dụng điều hướng.

Cơ sở dữ liệu nhớ (In-memory database): Lưu trữ dữ liệu trong bộ nhớ chính
của máy tính, giúp tăng tốc độ truy xuất dữ liệu.

Khái niệm cơ sở dữ liệu đồ thị Neo4j.

Cơ sở dữ liệu đồ thị Neo4j lưu trữ các nút và mối quan hệ thay vì bảng hoặc tài
liệu. Dữ liệu được lưu trữ giống như bạn có thể phác thảo ý tưởng trên bảng trắng. Dữ
liệu của bạn được lưu trữ mà khơng giới hạn nó trong một mơ hình được xác định
trước, cho phép suy nghĩ và sử dụng nó một cách rất linh hoạt.

Neo4j là một hệ quản trị cơ sở dữ liệu đồ thị (graph database) mã nguồn mở

được thiết kế để lưu trữ, truy vấn và quản lý dữ liệu đồ thị. Nó có khả năng xử lý các
quan hệ phức tạp giữa các đối tượng và cho phép truy vấn dữ liệu theo cấu trúc đồ thị.

5

Các đối tượng trong Neo4j được biểu diễn bằng các node (nút), các quan hệ
giữa chúng được biểu diễn bằng các cạnh (edges). Mỗi node có thể có nhiều thuộc
tính, và mỗi cạnh có thể được gán một hoặc nhiều thuộc tính. Điều này cho phép các
dữ liệu phức tạp được lưu trữ trong Neo4j một cách hiệu quả.

Neo4j được sử dụng rộng rãi trong các ứng dụng liên quan đến xử lý dữ liệu đồ
thị, chẳng hạn như mạng xã hội, bản đồ đường phố, hệ thống gợi ý sản phẩm, khai thác
dữ liệu, phân tích mạng lưới, phân tích dữ liệu dạng văn bản và các ứng dụng khoa học
dữ liệu khác.

Khái niệm Neo4j.

Neo4j là một cơ sở dữ liệu đồ thị gốc, có nghĩa là nó triển khai một mơ hình đồ
thị thực sự cho đến cấp độ lưu trữ. Dữ liệu được lưu trữ khi bạn viết bảng trắng, thay
vì dưới dạng "biểu đồ trừu tượng" trên cơng nghệ khác. Ngồi biểu đồ cốt lõi, Neo4j
còn cung cấp: giao dịch ACID, hỗ trợ cụm và chuyển đổi dự phòng thời gian chạy.
Neo4j được cung cấp dưới dạng dịch vụ đám mây được quản lý thông qua AuraDB.

Neo4j ngày nay được sử dụng bởi hàng nghìn cơng ty khởi nghiệp, tổ chức giáo
dục và doanh nghiệp lớn trong tất cả các lĩnh vực bao gồm dịch vụ tài chính, chính
phủ, năng lượng, cơng nghệ, bán lẻ và sản xuất. Từ công nghệ mới sáng tạo để thúc
đẩy doanh nghiệp, người dùng đang tạo ra thông tin chuyên sâu bằng biểu đồ, tạo
doanh thu mới và cải thiện hiệu quả tổng thể của họ.

Mơ hình Neo4j bao gồm những thành phần chính sau:


Nodes: Chúng được sử dụng để đại diện cho các thực thể trong một miền cụ
thể. Bất kỳ hai nút nào trong cơ sở dữ liệu đồ thị có thể khác nhau trong các thực thể
mà chúng đại diện, các loại thuộc tính mà chúng nắm giữ.

Relationships: Chúng được sử dụng để thể hiện mối quan hệ giữa dữ liệu trong
miền. Mọi mối quan hệ phải có nút bắt đầu, nút kết thúc và tên. Giống như các nút, các
mối quan hệ cũng có thể chứa các thuộc tính, có thể được sử dụng để tạo trọng số cho
mối quan hệ / siêu dữ liệu.

Labels: Chúng được sử dụng để đủ điều kiện cho các nút. Mọi nút trong Neo4j
có thể có khơng hoặc nhiều nhãn được gắn vào nó. Chúng cũng hữu ích trong việc thể
hiện các ràng buộc và chỉ mục trên các nhóm nút.

Properties: Đây là một tập hợp các thuộc tính có thể được đính kèm với các
nút và mối quan hệ. Chúng khác nhau về cấu trúc và phù hợp nhất khi sử dụng định
dạng JSON. Chúng rất hữu ích trong việc lập mơ hình dữ liệu khi được thể hiện bằng
các nút và mối quan hệ.

6

Index (chỉ mục): Là cơ chế để tìm kiếm và truy xuất dữ liệu nhanh chóng. Chỉ
mục được sử dụng để xác định các node hoặc quan hệ theo các thuộc tính cụ thể.

Constraints (ràng buộc): Là cơ chế để đảm bảo tính tồn vẹn dữ liệu trong
Neo4j. Ràng buộc được sử dụng để giới hạn các giá trị có thể được lưu trữ trong các
thuộc tính của node hoặc quan hệ.

Tất cả các phần chính này đều được tích hợp và hỗ trợ trong Neo4j, cho phép
người dùng thiết kế và quản lý các cơ sở dữ liệu đồ thị một cách dễ dàng và hiệu quả.


1.1.4 Giới thiệu về giải thuật Tìm đường đi ngắn nhất

Các thuật tốn tìm đường được xây dựng dựa trên các thuật tốn tìm kiếm đồ
thị và khám phá các tuyến đường giữa các nút, bắt đầu từ một nút và đi qua các mối
quan hệ cho đến khi đạt được đích. Các thuật tốn này được sử dụng để xác định các
tuyến đường tối ưu thông qua biểu đồ cho các mục đích sử dụng như lập kế hoạch hậu
cần, cuộc gọi chi phí ít nhất hoặc định tuyến IP và mơ phỏng trị chơi.

Sử dụng Đường dẫn ngắn nhất để tìm các tuyến đường tối ưu giữa một cặp nút,
dựa trên số bước nhảy hoặc bất kỳ giá trị mối quan hệ có trọng số nào. Ví dụ: nó có thể
cung cấp câu trả lời thời gian thực về mức độ tách biệt, khoảng cách ngắn nhất giữa
các điểm hoặc tuyến đường ít tốn kém nhất. Bạn cũng có thể sử dụng thuật toán này để
chỉ cần khám phá các kết nối giữa các nút cụ thể.

Thư viện Neo4j GDS bao gồm các thuật tốn tìm đường dẫn sau:

- Đường dẫn ngắn nhất nguồn đơn Delta-Stepping

- Đường dẫn ngắn nhất nguồn-đích Dijkstra

- Đường dẫn ngắn nhất nguồn đơn Dijkstra

- A* Đường đi ngắn nhất

- Con đường ngắn nhất của yên

- Tìm kiếm đầu tiên theo đường dẫn

- Độ sâu tìm kiếm đầu tiên


- Đi bộ ngẫu nhiên

1. Thuật tốn tìm đường dẫn ngắn nhất nguồn đơn Delta-Stepping

Thuật toán Đường đi ngắn nhất theo bước Delta tính tốn tất cả các đường đi ngắn
nhất giữa nút nguồn và tất cả các nút có thể truy cập trong biểu đồ. Thuật tốn hỗ trợ
các đồ thị có trọng số với các trọng số có mối quan hệ dương. Để tính tốn đường đi
ngắn nhất giữa một nguồn và một nút đích, có thể sử dụng Dijkstra Source-Target.

7

Ngược lại với Dijkstra Single-Source, thuật toán Delta-Stepping là một thuật toán
điều chỉnh khoảng cách. Thuộc tính này cho phép nó duyệt song song đồ thị. Thuật
tốn được đảm bảo ln tìm đường đi ngắn nhất giữa nút nguồn và nút đích. Tuy
nhiên, nếu tồn tại nhiều đường đi ngắn nhất giữa hai nút, thuật toán không đảm bảo sẽ
trả về cùng một đường đi trong mỗi lần tính tốn.

Thuật tốn này được phát triển bởi Meyer và Sanders vào năm 2003 và được cải
tiến để phù hợp với các đồ thị lớn và phân tán.

Cách thức hoạt động của thuật tốn này là chia tồn bộ q trình tìm đường đi
thành các bước. Mỗi bước tìm kiếm đường đi với độ dài bằng delta, với delta là một
giá trị cho trước. Các đỉnh được sử dụng trong một bước được chọn dựa trên khoảng
cách từ đỉnh nguồn.

Cụ thể, thuật toán Delta-Stepping được thực hiện như sau:

Khởi tạo một hàng đợi ưu tiên chứa đỉnh nguồn với khoảng cách bằng 0 và đỉnh
còn lại với khoảng cách là vô cùng.


Chọn một giá trị delta, chia tất cả các đỉnh thành các nhóm với khoảng cách bắt
đầu từ 0 và tăng dần theo delta. Tất cả các đỉnh trong cùng một nhóm sẽ được xử lý
trong cùng một lần lặp.

Lặp lại cho đến khi hàng đợi ưu tiên rỗng:

a. Lấy đỉnh với khoảng cách nhỏ nhất trong hàng đợi ưu tiên.

b. Duyệt qua các đỉnh kề của đỉnh vừa lấy ra và cập nhật khoảng cách của chúng nếu
cần.

c. Nếu khoảng cách của một đỉnh bị thay đổi, đẩy đỉnh đó vào hàng đợi ưu tiên.

Trả về khoảng cách ngắn nhất từ đỉnh nguồn đến tất cả các đỉnh cịn lại.

Thuật tốn Delta-Stepping được đánh giá là tốt cho các đồ thị có số đỉnh lớn và có thể
được sử dụng trong các ứng dụng đồ thị phức tạp như định tuyến trong mạng máy tính.

2. Thuật tốn tìm đường dẫn ngắn nhất nguồn-đích Dijkstra

Thuật tốn Dijkstra Shortest Path tính tốn đường đi ngắn nhất giữa các nút. Thuật
tốn hỗ trợ các đồ thị có trọng số với các trọng số có mối quan hệ dương. Thuật tốn
Dijkstra Source-Target tính tốn đường đi ngắn nhất giữa nút nguồn và nút đích. Để
tính tốn tất cả các đường dẫn từ nút nguồn đến tất cả các nút có thể truy cập, có thể sử
dụng Dijkstra Single-Source.

8



×