Tải bản đầy đủ (.pdf) (78 trang)

Giải bài toán tìm đường đi ngắn nhất với các cung có giá trị khoảng

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 (1.91 MB, 78 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

ĐẶNG THỊ MỸ BÌNH

GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT
VỚI CÁC CUNG CÓ GIÁ TRỊ KHOẢNG

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Thái nguyên, 2015

Số hóa bởi Trung tâm Học liệu – ĐHTN




ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Đặng Thị Mỹ Bình

GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT
VỚI CÁC CUNG CÓ GIÁ TRỊ KHOẢNG

Chuyên ngành: Khoa học máy tính
Mã số: 60. 48. 01. 01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

NGƯỜI HƯỚNG DẪN KHOA HỌC:


PGS TS. Nguyễn Tân Ân

Thái nguyên, 2015
Số hóa bởi Trung tâm Học liệu – ĐHTN




i
LỜI CAM ĐOAN

Luận văn là kết quả nghiên cứu và tổng hợp các kiến thức mà học viên
đã thu thập được trong quá trình học tập tại trường Đại học Công nghệ thông
tin và Truyền thông - Đại học Thái Nguyên, dưới sự hướng dẫn, giúp đỡ của
các thầy cô và bạn bè đồng nghiệp, đặc biệt là sự hướng dẫn, giúp đỡ của PGS
TS. Nguyễn Tân Ân.
Tôi xin cam đoan luận văn không phải là sản phẩm sao chép của bất kỳ
tài liệu khoa học nào.
Học viên

Đặng Thị Mỹ Bình

Số hóa bởi Trung tâm Học liệu – ĐHTN




ii
LỜI CẢM ƠN


Đầu tiên tôi xin gửi lời cảm ơn sâu sắc nhất tới PGS TS Nguyễn Tân
Ân, người hướng dẫn khoa học, đã tận tình chỉ bảo, giúp đỡ tôi thực hiện luận
văn.
Tôi xin cảm ơn các thầy cô trường Đại học Công nghệ thông tin và
Truyền thông - Đại học Thái Nguyên đã giảng dạy và truyền đạt kiến thức
cho tôi.
Tôi xin chân thành cảm ơn Ban giám hiệu trường Cao đẳng Công
nghiệp Thực Phẩm và các đồng nghiệp trong khoa Công nghệ thông tin đã tạo
mọi điều kiện giúp đỡ tôi hoàn thành nhiệm vụ học tập.
Cuối cùng, tôi xin cảm ơn những người thân và các bạn bè chia sẻ, gúp
đỡ tôi hoàn thành luận văn này.
Mặc dù đã hết sức cố gắng hoàn thành luận văn với tất cả sự nỗ lực của
bản thân, nhưng luận văn vẫn còn những thiếu sót. Kính mong nhận được
những ý kiến đóng góp của quý Thầy, Cô và bạn bè đồng nghiệp.
Tôi xin chân thành cảm ơn!
Việt trì ngày 10 tháng 06 năm 2015

Đặng Thị Mỹ Bình

Số hóa bởi Trung tâm Học liệu – ĐHTN




iii
MỤC LỤC
LỜI CAM ĐOAN ........................................................................................... i
LỜI CẢM ƠN ................................................................................................ ii
MỤC LỤC ..................................................................................................... iii
DANH MỤC CÁC KÍ HIỆU, CHỮ VIẾT TẮT ........................................ v

DANH LỤC HÌNH VẼ ................................................................................ vi
DANH LỤC BẢNG .................................................................................... viii
MỞ ĐẦU ........................................................................................................ 1
CHƯƠNG 1: BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT ..................... 4
1.1. Đồ thị ........................................................................................................ 4
1.1.1. Các đinh
4
̣ nghiã về đồ thi................................................................
̣
1.1.2. Đường đi, chu trình, đồ thị liên thông ........................................... 6
1.1.3. Biể u diễn đồ thi ̣ bằ ng ma trâ ̣n ...................................................... 8
1.1.4. Ma trận trọng số .......................................................................... 10
1.1.5. Danh sách cạnh............................................................................ 10
1.2. Bài toán tìm đường đi ngắn nhất trong đồ thị có trọng số xác định ...... 11
1.2.1. Định nghĩa ................................................................................... 11
1.2.2. Các thuật toán .............................................................................. 12
1.2.3. Thuật toán Dijkstra ...................................................................... 12
1.3. Bài toán tìm đường đi ngắn nhất trong đồ thị có trọng số mờ ............... 18
1.3.1. Đặt bài toán ................................................................................ 18
1.3.2. Một số cách biểu diễn giá trị mờ của các cung .......................... 20
Số hóa bởi Trung tâm Học liệu – ĐHTN




iv
1.3.3. Biểu diễn giá trị mờ của các cung bằng khoảng ........................ 22
1.4. Kết luận chương 1 .................................................................................. 26
CHƯƠNG II: SỐ HỌC KHOẢNG ........................................................... 27
2.1. Số học khoảng ........................................................................................ 27

2.1.1. Một số khái niệm cơ bản ............................................................. 27
2.1.2. Tóm tắt một số phương pháp xếp hạng các khoảng .................... 28
2.1.3. Biểu diễn thứ tự các khoảng ........................................................ 30
2.1.4. Chọn giá trị lớn nhất và giá trị nhỏ nhất để xác định khoảng ..... 35
2.2. Áp dụng thuật toán Dijkstra trong bài toán tìm đường đi ngắn nhất với độ
dài các cung là khoảng .............................................................................. 41
2.3. Kết luận chương 2 .................................................................................. 51
CHƯƠNG 3: CHƯƠNG TRÌNH ỨNG DỤNG........................................ 52
3.1. Bài toán ......................................................................................................... 52
3.2. Xây dựng chương trình ứng dụng ................................................................. 52
3.2.1. Lựa chọn giải pháp ........................................................................ 52
3.2.2. Thiết kế hệ thống ........................................................................... 53
3.2.3. Một số giao diện chính của chương trình ...................................... 54
3.3. Kết luận chương 3 ......................................................................................... 60
KẾT LUẬN VÀ KIẾN NGHỊ ........................................................................... 61
TÀI LIỆU THAM KHẢO ................................................................................. 63
PHỤ LỤC

Số hóa bởi Trung tâm Học liệu – ĐHTN




v
DANH MỤC CÁC KÍ HIỆU, CHỮ VIẾT TẮT
- DM: người ra quyết định
- Tên các huyện, thành phố, thị xã của tỉnh Phú Thọ:
Tên huyện, thành, thị Kí hiệu
Việt Trì


TP1

Thị xã Phú Thọ

TP2

Lâm Thao

TP3

Phù Ninh

TP4

Tam Nông

TP5

Yên Lập

TP6

Hạ Hòa

TP7

Thanh Ba

TP8


Thanh Thủy

TP9

Thanh Sơn

TP10

Tân Sơn

TP11

Cẩm Khê

TP12

Đoan Hùng

TP13

Số hóa bởi Trung tâm Học liệu – ĐHTN




vi

DANH LỤC HÌNH VẼ
Hình 1.1 Đơn đồ thị, giả đồ thi ..........................................................................
5

̣
Hình 1.2. Bâ ̣c của đồ thi .....................................................................................
6
̣
Hình 1.3. Biể u diễn Đường đi Euler và đồ thi ̣Euler ........................................ 6
Hình 1.4. Đường đi trên đồ thi vô
̣ hướng........................................................... 7
Hình 1.5. Đường đi trong đồ thị ......................................................................... 8
Hình 1.6. Ma trận liền kề 4 đỉnh ........................................................................ 9
Hình 1.7. Ma trận liền kề 5 đỉnh ........................................................................ 9
Hình 1.8. Ma trận liên thuộc ............................................................................ 10
Hình 1.9. Sơ đồ thuật toán Dijkstra.................................................................. 15
Hình 1.10. Đồ thị G trong bài toán áp dụng thuật toán Dijkstra ..................... 17
Hình 1.11. Tập mờ ........................................................................................... 22
Hình 1.12. Đồ thị hàm thuộc của tập mờ ......................................................... 23
Hình 1.13. Đồ thị hàm thuộc của tập A .......................................................... 24
Hình 1.14: Tập mờ lồi ...................................................................................... 24
Hình 1.15: Tập mờ chuẩn ................................................................................. 24
Hình 1.16: Tập mờ vừa lồi vừa chuẩn ............................................................. 25
Hình 1.17: Tập α-cut của tập mờ A ................................................................ 25
Hình 2.1: Hàm mức độ loại bỏ A trong cặp khoảng (A,X) thuộc S2 ............. 31
Hình 2.2. Bài toán mạng .................................................................................. 42
Hình 2.3. Giải pháp cải tiến bài toán................................................................ 45
Hình 2.4. Bản đồ US thời gian lái xe giữa các thành phố chính .................... 47
Số hóa bởi Trung tâm Học liệu – ĐHTN




vii

Hình 3.1. Giao diện chính ............................................................................... 55
Hình 3.2. Giao diện nhập dữ liệu ................................................................... 56
Hình 3.3. Bài toán mạng thử nghiệm ............................................................. 56
Hình 3.4. Kết quả bài toán thử nghiệm ........................................................ 57
Hình 3.5. Kết quả bài toán ứng dụng ............................................................. 60

Số hóa bởi Trung tâm Học liệu – ĐHTN




viii
DANH LỤC BẢNG
Bảng 1.1. Kết quả bài toán áp dụng thuật toán Dijkstra .................................. 18
Bảng 1.2. Phân bố khả năng của học sinh theo điểm ....................................... 21
Bảng 2.1. Phân tích nội dung của các ô trong bảng Fuzzy Rejection với bài
toán tìm khoảng nhỏ nhất (Interval Minimization) ........................................ 34
Bảng 2.2. Bảng Fuzzy Rejection ...................................................................... 38
Bảng 2.3. Bảng Fuzzy Rejection hoàn thiện, với ô (i,j) chứa giá trị thành viên
mờ để xác định khả năng có thể loại bỏ của khoảng thứ i so với khoảng thứ j.39
Bảng 2.4. Bảng lựa chọn cuối cùng ................................................................ 40
Bảng 2.5. Các đường đi từ Bostom tới Los Angeles và độ dài của chúng ..... 49
Bảng 3.1. Bảng kí hiệu tên các huyện thành thị trong tỉnh Phú Thọ ............... 59
Bảng 3.2. Khảo sát thời gian lái xe giữa các huyện thành thị trong tỉnh Phú
Thọ.................................................................................................................... 59

Số hóa bởi Trung tâm Học liệu – ĐHTN





1
MỞ ĐẦU
I. LÝ DO CHỌN ĐỀ TÀI
Tìm đường đi ngắn nhất trong một đồ thị tức là tìm đường đi ngắn nhất
từ một nút cho trước đến một nút khác cũng cho trước. Mỗi cung trong mạng
thường biểu diễn cho thời gian vận chuyển hoặc chi phí trong việc đi lại…
Bài toán này đã được nhiều tác giả quan tâm và có ý nghĩa rất lớn trong thực
tế. Một trong những thuật toán nổi tiếng giải bài toán này là thuật toán
Dijkstra. Tuy nhiên, dễ nhận thấy rằng, các giá trị mà các cung biểu diễn (thời
gian vận chuyển hoặc chi phí trong việc đi lại) có thể dao động đáng kể tùy
thuộc vào điều kiện giao thông, tải trọng cụ thể, vv. Khi đó các giá trị này là
mờ và bài toán trở thành bài toán tìm đường đi ngắn nhất trong trường hợp
“độ dài” các cung là mờ. Rõ ràng, trong trường hợp này thuật toán Dijkstra
thông thường không thể áp dụng được. Để giải quyết bài toán này trong
trường hợp “độ dài” các cung là mờ, tôi chọn đề tài:
“GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT
VỚI CÁC CUNG CÓ GIÁ TRỊ KHOẢNG”

Trong đó, thuật toán Dijkstra đã được thiết kế lại để xử lý các trường hợp mà
hầu hết các thông số đều không chính xác và đưa về khoảng.
Mặc dù số học khoảng đã thu hút nhiều nhà nghiên cứu, nhưng trong
thực tế việc sắp xếp thứ tự các khoảng và ứng dụng số học khoảng trong việc
ra quyết định còn ít người nghiên cứu. Công trình khá ấn tượng về vấn đề này
là công trình của Okada và Gen (1994) [6]. Tuy nhiên, các thuật toán mà các
tác giả đề xuất trong đó sinh ra một tập hợp các khoảng không thể so sánh
được, vì thế kết quả của nó không thể giải quyết nhiều bài toán với khoảng
một cách hiệu quả. Cụ thể, Okada và Gen (1994) đã cố gắng giải quyết vấn đề
với các khoảng không thể so sánh bằng cách sử dụng một chiến lược xếp hạng



2
của riêng mình nhưng phương pháp của họ dường như làm việc một cách đặc
biệt và do đó kết quả không đủ tổng quát trong các trường hợp khi giải bài
toán đường đi ngắn nhất.
Trong luận văn này, trước tiên đưa ra một cách so sánh dựa theo các
quan hệ thứ tự khác nhau của Moore (1979) [5], Ishibuchi và Tanaka (1990)
[3], Kundu (1997)) [4]. Sau đó luận văn trình bày một phương pháp sắp xếp
thứ tự ưu tiên mờ đối với các khoảng (Sengupta và Pal (2001)) [7] với một
thứ tự rõ ràng hơn và thuyết phục hơn so với thứ tự của Okada và Gen (1994)
[6]. Trên cơ sở đó, luận văn áp dụng thuật toán của Dijkstra để giải bài toán
đường đi ngắn nhất sang trường hợp các cung có giá trị là khoảng. Cuối cùng
là chương trình ứng dụng giảm thiểu chi phí vận tải trong trường hợp chi phí
này có biến động.
II. MỤC TIÊU, ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU
Trong khuôn khổ của luận văn sẽ thực hiện và giải quyết những vấn đề
sau:
- Nghiên cứu giải bài toán tìm đường đi ngắn nhất trong trường hợp
giá trị của các cung là mờ được biểu diễn dưới dạng các khoảng.
- Từ đó xây dựng ứng dụng trong bài toán giảm thiểu chi phí vận tải.
III. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỀ TÀI
Tìm hiểu mở rộng thuật toán Dijkstra để giải bài toán tìm đường đi
ngắn nhất trong trường hợp giá trị của các cung trên đồ thị.
Tìm hiểu thuật toán Dijkstra và nghiên cứu xây dựng đồ thị với các
cung có giá trị khoảng để định hướng nghiên cứu lâu dài và đưa vào thực tiễn.
IV. PHƯƠNG PHÁP NGHIÊN CỨU
- Phương pháp nghiên cứu tài liệu, phân tích, tổng hợp.


3

- Phương pháp trao đổi khoa học, lấy ý kiến chuyên gia.
- Phương pháp thực nghiệm và đối chứng qua chương trình thử
nghiệm.


4
CHƯƠNG 1: BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT
1.1. Đồ thị
1.1.1. Các đinh
̣ nghiã về đồ thi ̣
Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các
đỉnh đó. Người ta thường ký hiê ̣u đồ thi ̣G = (V,E), trong đó V là tâ ̣p hơ ̣p các
đin̉ h (Verterx), E là tâ ̣p hợp các ca ̣nh (Edge). Người ta phân loa ̣i đồ thị theo
các đă ̣c tính và số ca ̣nh nố i các cặp đỉnh của đồ thi.̣ [1]
Định nghĩa 1: Đơn đồ thị G = (V, E) gồm V là tập các đỉnh và E là tập
các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh. [1]
Định nghĩa 2: Đa đồ thị vô hướng G = (V, E) gồm V là tập các đỉnh và
E là họ các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là cạnh.
Hai cạnh e1 và e2 được gọi là cạnh lặp nếu chúng cùng tương ứng với một cặp
đỉnh.
Rõ ràng mỗi đơn đồ thị là đa đồ thị, nhưng không phải đa đồ thị nào
cũng là đơn đồ thị.
Định nghĩa 3: Giả đồ thị vô hướng G = (V, E) gồm V là tập các đỉnh
và E là họ các cặp không có thứ tự gồm hai phần tử (không nhất thiết là phân
biệt) của V gọi là các cạnh. Cạnh e được gọi là khuyên nếu nó có dạng
e=(u,u). [1]
Tóm lại, giả đồ thị là loại đồ thị vô hướng tổng quát nhất vì nó có thể
chứa các khuyên và các cạnh lặp. Đa đồ thị là loại đồ thị vô hướng có thể
chứa cạnh bội nhưng không thể có các khuyên, còn đơn đồ thị là loại đồ thị vô
hướng không chứa cạnh lặp hoặc các khuyên.



5

v1

v2

v5

v3

v6

v4

v7

Đơn đồ thị

v1

v2

v3

v4

v5


v6

Giả đồ thị
Hình 1.1 Đơn đồ thi ̣, giả đồ thi ̣

Định nghĩa 4: Đơn đồ thị có hướng G = (V, E) gồm V là tập các đỉnh
và E là tập các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các
cung. Nếu trong mạng có thể có đa kênh thoại một chiều, ta sẽ phải sử dụng
đến khái niệm đa đồ thị có hướng.
Định nghĩa 5: Đa đồ thị có hướng G = (V, E) gồm V là tập các đỉnh và
E là họ các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung.
Hai cung e1 và e2 tương ứng với cùng một cặp đỉnh được gọi là cung lặp.
Bâ ̣c của đồ thi được
định nghĩa như sau:
̣
Định nghĩa 1: Hai đỉnh u và v trong đồ thị (vô hướng) G=(V,E) được
gọi là liền kề nếu (u,v)E. Nếu e = (u,v) thì e gọi là cạnh liên thuộc với các
đỉnh u và v. Cạnh e cũng được gọi là cạnh nối các đỉnh u và v. Các đỉnh u và v
gọi là các điểm đầu mút của cạnh e.
Định nghĩa 2: Bậc của đỉnh v trong đồ thị G=(V,E), ký hiệu deg(v), là
số các cạnh liên thuộc với nó, riêng khuyên tại một đỉnh được tính hai lần cho
bậc của nó.
Đỉnh v gọi là đỉnh treo nếu deg(v)=1 và gọi là đỉnh cô lập nếu
deg(v)=0.


6

v1


v2

v3
v4

v6

v5

v7

Hình 1.2. Bậc của đồ thi ̣
Ta có deg(v1)=7, deg(v2)=5, deg(v3)=3, deg(v4)=0, deg(v5)=4,
deg(v6)=1, deg(v7)=2. Đỉnh v4 là đỉnh cô lập và đỉnh v6 là đỉnh treo.
1.1.2. Đường đi, chu trình, đồ thị liên thông
Có thể coi năm 1736 là năm khai sinh lý thuyết đồ thị, với việc công bố
lời giải “bài toán về các cầu ở Konigsberg” của nhà toán học lỗi lạc Euler
(1707-1783). Thành phố Konigsberg thuộc Phổ (nay gọi là Kaliningrad thuộc
Nga) được chia thành bốn vùng bằng các nhánh sông Pregel, các vùng này
gồm hai vùng bên bờ sông, đảo Kneiphof và một miền nằm giữa hai nhánh
của sông Pregel. Vào thế kỷ 18, người ta xây bảy chiếc cầu nối các vùng này
với nhau.

B

B
D

A


C

D

A

C

Hình 1.3. Biểu diễn Đường đi Euler và đồ thi ̣ Euler
Dân thành phố từng thắc mắc: “Có thể nào đi dạo qua tất cả bảy cầu,
mỗi cầu chỉ một lần thôi không?”. Nếu ta coi mỗi khu vực A, B, C, D như


7
một đỉnh và mỗi cầu qua lại hai khu vực là một cạnh nối hai đỉnh thì ta có sơ
đồ của Konigsberg là một đa đồ thị G như hình trên. Bài toán tìm đường đi
qua tất cả các cầu, mỗi cầu chỉ qua một lần có thể được phát biểu lại bằng mô
hình này như sau: Có tồn tại chu trình đơn trong đa đồ thị G chứa tất cả các
cạnh.
Định nghĩa 1. Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số
nguyên dương, trên đồ thị vô hướng G =(V , E) là dãy x0 , x1 , … , xn-1 , xn
trong đó u = x0, v = xn (xi, xi+1) E, i= 0, 1, 2,..., n -1. Đường đi nói trên còn
có thể biểu diễn dưới dạng dãy các cạnh: (x0 , xi), (x1 , x2), …. (xn-1 , xn).
Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi.
Đường đi có đỉnh đầu trùng với đỉnh cuối (tức là u = v) được gọi là chu trình.
Đường đi hay chu trình được gọi là đơn nếu như không có cạnh nào bị lặp lại.
Ví dụ:

B
b

A

D
C

Hình 1.4. Đường đi trên đồ thi ̣ vô hướng
Ta có: d, b, a là đường đi đơn độ dài 2; d, b, c không là đường đi do (b,
c) không phải là cạnh; d, b, a, d là chu trình độ dài 3. Đường đi d, a, b, a
không là đường đi đơn vì cạnh (a, b) có mặt hai lần.
Định nghĩa 2: Đường đi độ dài n từ đỉnh u đến đỉnh v trong đó n là số
nguyên dương, trên đồ thị có hướng G=(V, A) là dãy: x0 , x1, … xn-1 , xn. .
Trong đó u = x0, v = xn , ( xi , xi+1)A, i = 0 , l. 2 ........ n -1.


8
Đường đi nói trên còn có thể hiểu diễn dưới dạng dãy các cung:
(x0 , x1), (x1, x2),… (xn-1, xn)
Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi.
Đường đi có đỉnh đầu trùng với đỉnh cuối (tức là u = v) được gọi là chu trình.
Đường đi hay chu trình được gọi là đơn nếu như không có cung nào bị lặp lại.
Ví dụ:

B
b
A

D
C

Hình 1.5. Đường đi trong đồ thị

Định nghĩa 3. Đồ thị vô hướng G = (V, E) được gọi là liên thông nếu
luôn tìm được đường đi giữa hai đỉnh bất kỳ của nó.
1.1.3. Biể u diễn đồ thi ̣ bằ ng ma trâ ̣n
Để lưu trữ đồ thị và thực hiện các thuật toán khác nhau với đồ thị trên
máy tính cần phải tìm những cấu trúc dữ liệu thích hợp để mô tả đồ thị. Viêc
chọn cấu trúc dữ liệu nào để biểu diễn đồ thị có tác động rất lớn đến hiệu quả
của thuật toán. Vì vậy, việc chọn lựa cấu trúc dữ liệu để biểu diễn dồ thị phụ
thuộc vào từng tình huống cụ thể (bài toán và thuật toán cụ thể).
Định nghĩa 1: Cho đồ thị G=(V,E) (vô hướng hoặc có hướng), với
V={v1,v2,..., vn}. Ma trận liền kề của G ứng với thứ tự các đỉnh v1,v2,..., vn là
ma trận
A= (aij )1i, jn  M (n, Z ) ,
trong đó aij là số cạnh hoặc cung nối từ vi tới vj.


9
Như vậy, ma trận liền kề của một đồ thị vô hướng là ma trận đối xứng,
nghĩa là aij  a ji , trong khi ma trận liền kề của một đồ thị có hướng không có
tính đối xứng.
Ví du ̣ 1: Ma trận liền kề với thứ tự các đỉnh v1, v2, v3, v4 là:
0

3
0

2


3
0

1
1

0
1
1
2

2

1
2

0 

v1

v2

v4

v3

Hình 1.6. Ma trận liền kề 4 đỉnh
Ví dụ 2: Ma trận liền kề với thứ tự các đỉnh v1, v2, v3, v4, v5 là:
1

0
1


0
1


1
1
0
0
1

0
2
0
2
0

1
1
1
0
1

v1

1

0
0

1

0 

v5

v2

v4

v3

Hình 1.7. Ma trận liền kề 5 đỉnh
Định nghĩa 2: Cho đồ thị vô hướng G=(V, E), v1, v2, ..., vn là các đỉnh và
e1, e2, ..., em là các cạnh của G. Ma trận liên thuộc của G theo thứ tự trên của V
và E là ma trận
M= (mij )1in  M (n  m, Z ) ,
1 j m

mij bằng 1 nếu cạnh ej nối với đỉnh vi và bằng 0 nếu cạnh ej không nối với

đỉnh vi.
Ví du ̣ 3: Ma trận liên thuộc theo thứ tự các đỉnh v1, v2, v3, v4, v5 và các
cạnh e1, e2, e3, e4, e5, e6 là:


10
1

0
0


1
0


1
0
0
0
1

0
1
0
1
0

0
1
0
0
1

0
0
1
0
1

0


1
1

0
0 

v1

e6

v2
e3

e4

e1

v3
e5

e2
v4

v5

Hình 1.8. Ma trận liên thuộc
1.1.4. Ma trận trọng số
Ma trận trọng số là được dùng để biểu diễn đồ thị.
Xét đồ thị G=(X, U) (có hướng hay vô hướng)
Giả sử tập X gồm n đỉnh và được sắp thứ tự X={

gồm n cạnh và được sắp thứ tự U={

}, tập U

}

1.1.5. Danh sách cạnh
Trong lý thuyết đồ thị, danh sách kề (tiếng Anh: adjacency list) là danh
sách biểu diễn tất cả các cạnh hoặc cung trong một đồ thị.
Nếu đồ thị vô hướng, mỗi phần tử của danh sách là một cặp hai đỉnh là
hai đầu của cạnh tương ứng. Nếu đồ thị có hướng, mỗi phần tử là một cặp có
thứ tự gồm hai đỉnh là đỉnh đầu và đỉnh cuối của cung tương ứng.
Ví dụ, danh sách {a,b},{a,c},{b,c} mô tả đồ thị vô hướng trong hình
dưới đây, trong đó ba đỉnh a, b, c được nối với nhau.


11

Thông thường, danh sách kề không coi trọng thứ tự giữa các cạnh.
Trong Khoa học máy tính, danh sách kề là một cấu trúc dữ liệu gắn bó chặt
chẽ với việc biểu diễn đồ thị. Trong một biểu diễn danh sách kề, với mỗi đỉnh
trong đồ thị, ta lưu trữ tất cả các đỉnh khác có cạnh nối với đỉnh đó - danh
sách kề của đỉnh. Ví dụ, đồ thị trong hình vẽ có biểu diễn danh sách kề:
a kề với b,c
b kề với a,c
c kề với a,b
1.2. Bài toán tìm đường đi ngắn nhất trong đồ thị có trọng số xác định
1.2.1. Định nghĩa
Trong đời sống, chúng ta thường gặp những tình huống như sau: để đi
từ địa điểm A đến địa điểm B trong thành phố, có nhiều đường đi, nhiều cách

đi; có lúc ta chọn đường đi ngắn nhất (theo nghĩa cự ly), có lúc lại cần chọn
đường đi nhanh nhất (theo nghĩa thời gian) và có lúc phải cân nhắc để chọn
đường đi rẻ tiền nhất (theo nghĩa chi phí), v.v...
Có thể coi sơ đồ của đường đi từ A đến B trong thành phố là một đồ
thị, với đỉnh là các giao lộ (A và B coi như giao lộ), cạnh là đoạn đường nối
hai giao lộ. Trên mỗi cạnh của đồ thị này, ta gán một số dương, ứng với chiều
dài của đoạn đường, thời gian đi đoạn đường hoặc cước phí vận chuyển trên
đoạn đường đó, ...
Đồ thị có trọng số là đồ thị G=(V,E) mà mỗi cạnh (hoặc cung) eE
được gán bởi một số thực m(e), gọi là trọng số của cạnh (hoặc cung) e.
Trong phần này, trọng số của mỗi cạnh được xét là một số dương và
còn gọi là chiều dài của cạnh đó. Mỗi đường đi từ đỉnh u đến đỉnh v, có chiều
dài là m(u,v), bằng tổng chiều dài các cạnh mà nó đi qua. Khoảng cách d(u,v)


12
giữa hai đỉnh u và v là chiều dài đường đi ngắn nhất (theo nghĩa m(u,v) nhỏ
nhất) trong các đường đi từ u đến v.
Bài toán tìm đường đi ngắn nhất:
Cho đơn đồ thị liên thông, có trọng số G=(V,E). Tìm khoảng cách
d(u0,v) từ một đỉnh u0 cho trước đến một đỉnh v bất kỳ của G và tìm đường đi
ngắn nhất từ u0 đến v.
1.2.2. Các thuật toán
Có nhiều thuật toán để giải bài toán tìm đường đi ngắn nhất trên đồ thị
có trọng số:
- Dijkstra (1956- Hà Lan): áp dụng với đồ thị có trọng số không âm
- Bellman Ford: áp dụng với đồ thị có trọng số âm
- Giải thuật tìm kiếm A*: sử dụng hàm kinh nghiệm heuristic để tăng
tốc độ tìm kiếm.
- Floyd: tìm đường đi ngắn nhất với mọi cặp đỉnh

...
Tuy nhiên trong khuôn khổ luận văn này tôi lựa chọn trình bày thuật
toán Dijkstra.
1.2.3. Thuật toán Dijkstra
Trong trường hợp trọng số trên các cung là không âm thuật toán do
Dijkstra đề nghị giải bài toán tìm đường đi ngắn nhất từ đỉnh s đến các đỉnh
còn lại của đồ thị làm việc hữu hiệu hơn rất nhiều so với thuật toán trình bày
trong mục trước. Thuật toán được xây dựng dựa trên cơ sở gán cho các đỉnh
các nhãn tạm thời. Nhãn của mỗi đỉnh cho biết cận trên của độ dài đường đi
ngắn nhất từ s đến nó. Các nhãn này sẽ được biến đổi theo một thủ tục lặp, mà


13
ở mỗi một bước lặp có một nhãn tạm thời trở thành nhãn cố định. Nếu nhãn
của một đỉnh nào đó trở thành cố định thì nó sẽ cho ta không phải là cận trên
mà là độ dài của đường đi ngắn nhất từ đỉnh s đến nó.
Thuật toán được mô tả cụ thể như sau:
procedure Dijkstra;
(* Đầu vào: Đồ thị có hướng G=(V,E) với n đỉnh, sV là đỉnh xuất
phát, a[u, v], u, v V, ma trận trọng số;
Giả thiết: a[u, v]  0, u, v  V.
Đầu ra: Khoảng cách từ đỉnh s đến tất cả các đỉnh còn lại d[v], v  V.
Truoc[v], v V, ghi nhận đỉnh đi trước v trong đường đi ngắn nhất từ s
đến v *)
begin
(* Khởi tạo *)
for v  V do
begin
d[v] := a[s,v] ;
Truoc[v]:=s;

end;
d[s] := 0; T := V \ {s }; (* T là tập các đỉnh có nhãn tạm thời*)
(* Bước lặp*)
while T ≠ do
begin


14
Tìm đỉnh u  T thỏa mãn d[u] = min{ d[z] : z e T};
T := T \ { u ) ; (* Cố định nhãn của đỉnh u *)
if d[v] > d[u] + a[u,v] then
begin
d[v] := d [u ] + a[u,v] ;
Truoc[v] := u ;
end;
end;
end;


15
Bắt đầu

d[v] := a[s,v] ;
Truoc[v]:=s;

Đ

vV
S


d[s] := 0; T := V \ {s }
S

T ≠
Đ

Tìm đỉnh u  T thỏa mãn d[u] = min{ d[z] : z e T};
T := T \ { u ) ; (* Cố định nhãn của đỉnh u *)
S

d[v] > d[u] + a[u,v]
Đ

d[v] := d [u ] + a[u,v] ;
Truoc[v] := u ;

Kết thúc

Hình 1.9. Sơ đồ thuật toán Dijkstra

Định lý: Thuật toán Dijkstra tìm được đường đi ngắn nhất trên đồ thị
sau thời gian cỡ O(n2).
Chứng minh: Trước hết ta chứng minh là thuật toán tìm được đưòng
đi ngắn nhất từ đỉnh s đến các đỉnh còn lại của đồ thị. Giả sử rằng ở một bước
lặp nào đó các nhãn cố định cho ta độ dài các đường đi ngắn nhất từ s đến các
đỉnh có nhãn cố định, ta sẽ chứng minh rằng ở lần lặp tiếp theo nếu đỉnh u*
thu được nhãn cố định thì d[u*] chính là độ dài đường đi ngắn nhất từ s đến
u*.



×