Tải bản đầy đủ (.doc) (92 trang)

Bài toán luồng trên mạng và ứng dụ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.88 MB, 92 trang )

i

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

NÔNG THỊ LÝ

BÀI TOÁN LUỒNG TRÊN MẠNG VÀ ỨNG DỤ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

/>

3

LỜI CẢM ƠN
Để hoàn thành luận văn, t

xin chân thành cảm ơn Trường Đại học

Công nghệ Thông tin và Truyền thông–Đại học Thái Nguyên, Phòng Đào tạo,
các thầy, cô giáo giảng dạy lớp cao học Khoa học máy tnh K12E đã quan
tâm, tạo điều kiện thuận lợi, tận tnh giảng dạy và giúp đỡ

trong

thời gian theo học tại trường.
Đặc biệt, t



xin bày tỏ lòng biết ơn sâu sắc đến

TS.

Trương Hà Hải
văn.
xin cảm ơn các cán bộ, giảng viên đồng nghiệp Trường Đại
học Hùng Vương đã
.

.
Xin trân trọng cảm ơn.
9năm 2015

Nông Thị Lý

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

/>

4

MỤC LỤC
LỜI CAM ĐOAN .......................................................................................................II
LỜI CẢM ƠN........................................................................................................... III
MỤC LỤC ................................................................................................................ IV
DANH MỤC CÁC BẢNG ....................................................................................... VI
DANH MỤC CÁC HÌNH VẼ .................................................................................VII MỞ
ĐẦU .................................................................................................................... 1

CHƯƠNG 1 ................................................................................................................ 3
MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA LÝ THUYẾT ĐỒ THỊ................................ 3
1.1.

.............................................................................. 3

1.1.1.

Định nghĩa đồ thị .......................................................................................... 3

1.1.2.

Các loại đồ thị ............................................................................................... 4

1.1.3. Các khái niệm liên quan ................................................................................... 6
1.2. Biểu diễn đồ thị trên máy tính ...........................................................................
10
1.2.1.

Biểu diễn bằng ma trận kề .......................................................................... 10

1.2.2.
11

Biểu diễn bằng ma trận liên thuộc ..............................................................

1.2.3.

Danh sách cạnh ........................................................................................... 12


1.2.4.

Danh sách kề............................................................................................... 13

1.2.5.

Đồ thị trọng số ............................................................................................ 14

1.3.

...................................................................... 14

1.3.1.

Các bài toán kinh điển ................................................................................ 14

1.3.2.

Các bài toán NP-khó................................................................................... 16

1.4. Kết luận chương 1 ............................................................................................. 20
CHƯƠNG 2: BÀI TOÁN LUỒNG CỰC ĐẠI TRÊN MẠNGVÀ CÁC THUẬT
TOÁN ....................................................................................................................... 22
Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

5

2.1. Phát biểu bài toán ..............................................................................................

22
2.1.1. Mạng và luồng trên mạng ...............................................................................
22
2.1.2. Bài toán luồng cực đại trên mạng ...................................................................
24

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

/>

6

2.1.3. Lát cắt, định lý Ford – Fulkerson ................................................................... 24
2.2. Các thuật toán giải bài toán luồng trên mạng .................................................... 25
2.2.1. Các thuật toán hiện có .................................................................................... 25
2.2.2. Thuật toán Ford – Fulkerson .......................................................................... 26
2.2.3. Thuật toán Edmonds–Karp ............................................................................. 32
2.2.4. Thuật toán Dinits ............................................................................................ 32
2.2.5. Các thuật toán khác ........................................................................................ 33
2.3. Một số ứng dụng thực tế của bài toán ...............................................................
33
2.3.1. Bài toán tìm công suất bơm dầu ..................................................................... 33
2.3.2. Bài toán xét ứng cử viên vô địch .................................................................... 34
2.3.3. Bài toán tìm luồng giao thông cực đại............................................................ 35
2.4. Kết luận chương 2 ............................................................................................. 36
CHƯƠNG 3:
.................................................................................................................. 37
3.1. Vấn đề tnh toán số lượt du khách về thăm đền Hùng trong dịp lễ hội ............. 37
3.2.


............................................................................................... 39

3.3. M

............................. 40

3.4. Xây dựng chương trình...................................................................................... 50
3.4.1. Môi trường cài đặt .......................................................................................... 50
3.4.2. Giao diện chương trình ................................................................................... 51
3.5. Kết quả thực nghiệm tính số lượt người về thăm đền Hùng năm 2015 ............ 52
3.5.1. Thực nghiệm 1: Tính toán trong ngày thứ nhất (06/03 âm lịch) .................... 53
3.5.2. Thực nghiệm 2: Tính toán trong ngày thứ hai (10/03 âm lịch) ...................... 56
3.5.3. Tổng hợp các kết quả thử nghiệm .................................................................. 59
3.6. Kết luận chương 3 ............................................................................................. 60
KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU .............................................................. 61
TÀI LIỆU THAM KHẢO ........................................................................................ 63
Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

PHỤ LỤC

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

7

/>

8


DANH MỤC CÁC BẢNG
Bảng 2.1. Các thuật toán giải bài toán luồng cực đại.................................... 31
Bảng 3.1. Bảng chỉ số các tỉnh thành trên bản đồ .........................................
46
Bảng 3.2. So sánh kết quả tính toán và dữ liệu thực tế .................................
71

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

/>

vii

DANH MỤC CÁC HÌNH VẼ
Hình 1.1. Bài toán bảy cây cầu ở Konigsberg...............................................4
Hình 1.2. Các loại đồ thị ...............................................................................6
Hình 1.3. Các dạng đồ thị đặc biệt ................................................................7
Hình 1.4. Minh họa các khái niệm liên quan đến đồ thị ...............................7
Hình 1.5. Minh họa đỉnh rẽ nhánh và cầu .....................................................9
Hình 1.6. Minh họa đồ thị con và đồ thị đẳng cấu ..................................... 10
Hình 1.7. Biểu diễn đồ thị bằng ma trận kề ............................................... 11
Hình 1.8. Biểu diễn đồ thị bằng ma trận liên thuộc ................................... 12
Hình 1.9. Biểu diễn đồ thị bằng danh sách cạnh........................................ 13
Hình 1.10. Biểu diễn đồ thị bằng danh sách kề.......................................... 14
Hình 2.1. Mạng và luồng trên mạng .......................................................... 23
Hình 2.2. Luồng cực đại trên mạng............................................................ 24
Hình 2.3. Lát cắt hẹp nhất mạng ................................................................ 25
Hình 2.4 Mạng ban đầu .............................................................................. 28
Hình 2.5. Khởi tạo luồng bằng 0 ................................................................ 28
Hình 2.6. Xây dựng mạng còn dư .............................................................. 29

Hình 2.7. Tăng luồng theo đường

................................................... 29

Hình 2.8. Tăng luồng theo đường

......................................................... 30

Hình 2.9. Tăng luồng theo đường

......................................................... 30

Hình 2.10. Tính toán luồng cực đại từ mạng đã tăng luồng cực đại .......... 31
Hình 2.11. Bài toán tìm công suất bơm dầu............................................... 33
Hình 2.12. Bài toán loại bỏ ứng cử viên vô địch ....................................... 34
Hình 2.13. Bài toán tìm luồng giao thông cực đại ........................................3
Hình 3.1. Bài toán tính số lượt du khách tới thăm Đền Hùng - Phú Thọ .. 40
Hình 3.2. Mạng của bộ dữ liệu #1.............................................................. 42
Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

vii

Hình 3.3.Khởi tạo luồng bằng 0 của bộ dữ liệu #1 .................................... 43

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

/>


viii

Hình 3.4. Xây dựng mạng còn dư của bộ dữ liệu #1 ................................. 43
Hình 3.5.Tăng luồng theo đường

của bộ dữ liệu #1 ............................. 44

Hình 3.6. Tăng luồng theo đường

của bộ dữ liệu #1 ............................ 44

Hình 3.7. Tăng luồng theo đường

của bộ dữ liệu #1 ............................ 45

Hình 3.8. Tăng luồng theo đường

của bộ dữ liệu #1 ....................... 45

Hình 3.9. Tăng luồng theo đường

của bộ dữ liệu #1 ........................... 46

Hình3.10. Tăng luồng theo đường

của bộ dữ liệu #1 ........................... 46

Hình 3.11. Tăng luồng theo đường

của bộ dữ liệu #1 ......................... 47


Hình3.12. Luồng cực đại của bộ dữ liệu #1 ............................................... 47
Hình 3.13. Giao diện của chương trình ...................................................... 49
Hình 3.14. Mô phỏng với bộ dữ liệu #1 trên chương trình........................ 52
Hình 3.15. Chạy chương trình với bộ dữ liệu #1 ....................................... 53
Hình 3.16. Chạy chương trình với bộ dữ liệu #2 ....................................... 56
Hình 3.17. Biểu đồ so sánh kết quả tính toán và dữ liệu thực tế ............... 57

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

/>

MỞ ĐẦU
Để giải quyết các vấn đề phát sinh từ các bài toán thực tế cần có được
sự hợp tác chặt chẽ giữa các chuyên gia trong lĩnh vực chuyên môn, các
chuyên gia Toán, Toán ứng dụng và các chuyên gia Tin học, kỹ sư lập trình.
Điều này đặc biệt cần thiết khi giải quyết các bài toán cho các hệ thống lớn.
Việc thiết lập được một mô hình hợp lý, phản ánh được bản chất của bài toán
thực tế đồng thời khả thi về phương diện tính toán luôn là điều đáng được
quan tâm.
Trong số các mô hình toán học đã được áp dụng có nhiều mô hình tối ưu,
nhiều bài toán qui hoạch tuyến tính có thể qui về bài toán làm cực tiểu cước
phí vận chuyển hàng trong một mạng (gồm các nút và các cung đường) sao
cho đảm bảo được các nhu cầu ở một số nút sau khi biết nguồn cung cấp tại
một số nút khác, hoặc đưa về bài toán xác định cường độ dòng lớn nhất
của dòng vận tải giữa hai nút của một bản đồ giao thông, bài toán tìm luồng
dầu lớn nhất có thể bơm từ tàu chở dầu vào bể chứa của một hệ thống
đường ống dẫn dầu,.... Các bài toán như vậy được gọi là các bài toán luồng
trên mạng hay bài toán chuyển vận (TransShipment Problem). Đây là lớp bài
toán quan trọng nhất và hay gặp nhất trong qui hoạch toán học. Lớp này

bao gồm các bài toán quen thuộc trong thực tế như: Bài toán vận tải, bài
toán mạng điện, bài toán mạng giao thông, bài toán quản lý, bài toán phân
bổ vật tư, bài toán kế hoạch tài chính, bài toán đường ngắn nhất, bài toán
luồng lớn nhất.
Vì là một bài toán qui hoạch tuyến tính nên các bài toán luồng trên
mạng có thể giải được bằng bất kỳ thuật toán nào giải được bài toán qui
hoạch tuyến tính, chẳng hạn bằng thuật toán cổ điển của qui hoạch tuyến
tính như thuật toán đơn hình. Mặt khác, bằng cách tận dụng những cấu trúc
đặc biệt của các bài toán luồng trên mạng thông qua việc mô hình hóa bài


toán thành cấu trúc đồ thị (mô hình gồm các đỉnh và các cạnh nối các đỉnh
đó) thì bài toán trên

bài toán tìm luồng trên mạng của một đồ thị.


2

Vì những ứng dụng thực tế rất ý nghĩa của lớp bài toán này, cùng với thế
mạnh và niềm yêu thích về toán học, tin học, thuật toán, trong phạm vi luận
văn,

tập trung nghiên cứu về lớp bài toán luồng trên mạng, phương

pháp giải bài toán luồng trên mạng bằng lý thuyết đồ thị và ứng dụng giải bài
toán trong thực tế.
Luận văn được trình bày thành 3 phần bao gồm: Phần mở đầu, phần nội
dung và phần kết luận.
Phần mở đầu:

Giới thiệu khái quát về đề tài, mục têu, đối tượng, phạm vi nghiên cứu,
ý nghĩa khoa học và xã hội mang lại thông qua việc giải quyết các vấn đề
được nêu trong đề tài.
Phần nội dung:
Chương 1:



3.
Chương 2:

rình bày khái niệm mạng, khái niệm luồng trên

mạng, bài toán luồng cực đại trên mạng, phát biểu các dạng bài toán
luồng cực đại trên mạng, trình bày

thuật toán giải bài toán luồng trên

mạng.
Chương 3. Tìm hiểu

thực tế

lưu lượng du khách về thăm

đền Hùng tỉnh Phú Thọ trong dịp lễ hội thuộc lớp bài toán luồng cực đại
trên mạng, xây dựng chương trình thử nghiệm mô phỏng tnh toán số
lượt du khách về thăm đền Hùng tỉnh Phú Thọ trong dịp lễ hội năm 2015.



3

Phần kết luận: Trình bày kết quả mà luận văn đạt được và hướng phát
triển cho mô hình mà luận văn đã đề xuất.


4

CHƯƠNG 1
MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA LÝ THUYẾT ĐỒ THỊ
Lý thuyết đồ thị là một lĩnh vực nghiên cứu đã có từ lâu và có nhiều ứng
dụng hiện đại. Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vào
những năm đầu của thế kỷ XVIII bởi nhà toán học lỗi lạc người Thụy sỹ
Leonhard Euler. Nội dung cơ bản của chương
. Chương 1 là cơ sở lý thuyết làm tền
đề để trình bày các nội dung trong chương 2 và chương 3.
1.1. Một số
1.1.1. Định nghĩa đồ thị

G = (V,E)
(Verterx), E

V

(Edge). [1]

Ví dụ, một bản đồ địa lý có thể mô hình hóa thành một đồ thị bằng
cách biểu diễn các địa điểm định trước bằng đỉnh và con đường nối giữa
các địa điểm đó bằng cạnh. Lý thuyết đồ thị có nhiều ứng dụng quan trọng
trong cuộc sống, được phát triển trong khoảng 4 thế kỉ gần đây. Có hai bài

toán nổi tiếng được nhiều người biết đến như là các bài toán khai sinh ra lý
thuyết đồ thị
:
chu


5

Hình 1.1. Bài toán bảy cây cầu ở Konigsberg

Bài toán 1: Bài toán bảy cây cầu của Euler, còn gọi là Bảy cầu ở
Konigsberg. Nguồn gốc bài toán là từ thành phố Konigsberg, Đức (nay là
Kaliningrad, Nga) nằm trên sông Pregel, bao gồm hai hòn đảo lớn nối với
nhau và với đất liền bởi bảy cây cầu. Bài toán đặt ra là

một tuyến đường

mà đi qua mỗi cây cầu một lần và chỉ đúng một lần (bất kể điểm xuất phát
hay điểm tới). Năm 1736, Leonhard Euler đã chứng minh rằng điều đó là
không thể được.
Bài toán 2: Vấn đề này lần đầu tiên được đề cập vào năm 1852 bởi
Francis Guthrie khi ông thử tô màu bản đồ nước Anh và ông nhận ra rằng chỉ
cần bốn màu khác nhau là đủ. Ông đã đem vấn đề này hỏi người anh trai là
Fredrick, lúc đó đang là sinh viên của trường Đại học Học viện London
(UCL). Fredrick đã đưa vấn đề này hỏi thầy của mình là nhà toán học
Augustus De Morgan nhưng người thầy cũng chưa biết rõ vấn đề này. Người
đầu tiên giới thiệu vấn đề ra trước công chúng là nhà toán học Arthur Cayley
vào năm 1878 tại Hội Toán học London, ông đã chỉ ra người đề cập vấn đề là
De Morgan.
1.1.2. Các loại đồ thị

Chúng ta sẽ dựa vào các đặc điểm sau của cạnh để phân biệt các dạng đồ thị:
-

Cạnh e1 = (u, v) và cạnhe2 = (t, k) trên đồ thị Gđược gọi là cạnh lặp nếu

u t và v k.
- Các cạnhe E được gọi là có hướng nếu trên đồ thị G ta quan tâm tới
thứ tự hai đỉnh trên một cạnh: phân biệt hai cạnhe1 = (u, v) và e2 = (v,u).
Từ đó ta có các dạng đồ thị cơ bản:
Tồn tại cạnh lặp

Không tồn tại cạnh lặp


6

Cạnh có hướng

Đa đồ thị có hướng

Đơn đồ thị có hướng

Cạnh vô hướng

Đa đồ thị vô hướng

Đơn đồ thị vô hướng

Ta có hình minh họa các loại đồ thị trên.
2


4

2

6

1

3

6

1

5

Đơn đồ thị vô hướng

4

2

6

1

3

5


3

Đơn đồ thị có hướng
2

4

4

6

1

5

3

Đa đồ thị có hướng

5
Đa đồ thị vô hướng

Hình 1.2. Các loại đồ thị

Một số dạng đơn đồ thị vô hướng đặc biệt:
Đồ thị đầy đủ Kn (compelte graph): Là đơn đồ thị vô hướng mà giữa
hai đỉnh bất kì của nó luôn tồn tại cạnh nối.
Đồ thị vòng Cn (cycle graph): Là đơn đồ thị vô hướng G = (V,E) với
tập đỉnh


và tập cạnh
.

Đồ thị bánh xe Wn (wheel graph): là đơn đồ thị vô hướng thu được từ
đồ thị Cn-1 bằng cách thêm một đỉnhn nối với n-1 đỉnh của đồ thị Cn-1.


7

Đồ thị hai phíaKm,n (bipartite graph): là đồ thị có tập đỉnh phân hoạch
thành hai tập con không giao nhau V=X Y sao cho mọi cạnh thuộc
nối một đỉnh thuộc X với một đỉnh thuộc Y.

đều

Hình 1.3. Các dạng đồ thị đặc biệt

1.1.3. Các khái niệm liên quan
Cho đồ thị G=(V, E): V={1, 2, 3, …, n} vàE={e1, e2,…, en}.
Các khái niệm được trình bày dưới đây có thể dùng cho cả đồ thị có hướng
và vô hướng hoặc từng dạng đồ thị cụ thể.


8

2

4


6

1

3

5

c

b

f

a

d

e

Hình 1.4. Minh họa các khái niệm liên quan đến đồ thị

Cạnh (edge)
Nếu (u, v) là một cặp đỉnh thuộc E thì nói có một cạnh nốiu và v. Khi
đóv được gọi là kề của u.
Bậc của đỉnh
Gọi bậc của đỉnh trong đồ thị vô hướng là số cạnh liên thuộc với nó và
kí hiệu làdeg(v).
Bán bậc của đỉnh
Gọi bán bậc ra (vào) của đỉnh trong đồ thị có hướng là số cạnh của đồ

+

-

thị đi ra (vào) đỉnh đó và kí hiệu là deg (v) hay deg (v).Ví dụ trong hình
--

1.4đỉnh2 củaG1có bán bậc vào là 1:hay deg (2)=1và bán bậc ra là 2:deg
(2)=2.
Đường đi (path)
Một đường đi từ đỉnh u đến đỉnh v trên đồ thị G là một dãy đỉnhu1,
u2 ,
…, ui, v mà các cạnh(u, u1), (u1, u2), …, (ui, v)E, i là số lượng cung trên
đường đi được gọi là độ dài của đường đi.
Đường đi đơn

2-


9

Một đường đi đơn trên đồ thị là một đường đi mà trên đó không
có cạnh nào lặp lại.
Chu trình (cycle)
Một chu trình trên đồ thị G là một đường đi đơn có đỉnh đầu và
đỉnh cuối trùng nhau.
Ví dụ trong hình 1.4 trên G2 ta có:
- Đường đi: abcfebc
- Đường đi đơn: abcfeb
- Chu trình: bcfeb.

Hai đỉnh liên thông
Đỉnhp vàq được gọi là liên thông với nhau trên đồ thịG nếu có một
đường đi từp đếnq trên đồ thị đó.
Đồ thị liên thông
Một đồ thị được gọi là liên thông nếu mọi cặp đỉnh của đồ thị đều liên
thông.
Thành phần liên thông
Đồ thịG không liên thông sẽ phân rã thành một số hữu hạn đồ thị con
liên thông đôi một không có đỉnh chung. Các đồ thị con này được gọi là các
thành phần liên thông của đồ thị.


b

c

f

a

d

g

e

h

Hình 1.5. Minh họa đỉnh rẽ nhánh và cầu


Đỉnh rẽ nhánh
Đỉnhu được gọi là đỉnh rẽ nhánh của đồ thịG nếu việc loại bỏ đỉnh đó
cùng các cạnh liên thuộc với nó làm tăng số thành phần liên thông của đồ thị.
Cầu
Cạnhe được gọi là cầu của đồ thịG nếu việc loại bỏ cạnh đó làm tăng
số thành phần liên thông của đồ thị.

2

4

a

b

c

d

e

f

6

1

3

5


Hình 1.6. Minh họa đồ thị con và đồ thị đẳng cấu

Đồ thị con
Đồ thị H=(W, F) được gọi là đồ thị con của đồ thị G = (V,E) nếu W
V và F E
Đồ thị đẳng cấu


Hai đồ thịG1= (U1, V1) và G2=(U2, V2) được gọi là đồng cấu nếu tồn tại
một song ánh f:V1 V2 sao cho (u, v)  E1 khi và chỉ khi (f(u), f(v))  E2.
1.2. Biểu diễn đồ thị trên máy tính
1.2.1. Biểu diễn bằng ma trận kề
Cách biểu diễn đồ thị bằng ma trận kề:
- Đánh số các đỉnh thuộc V từ 1n.
- Ma trận kề A biểu diễnG là một ma trận vuông n  n có các phần tử
nhận giá trị0 hoặc 1: aij =1 nếu tồn tại một cung định hướng từ vi đến vj.
Ta có Hình 1.7 minh họa biểu diễn đồ thị có hướng có trọng số bằng ma
trận kề.
6

2

4
6

5

3
6


1
3

5

6

3

1
2
3
4
5
6

5

1
1

2
5

3
5

4


5

6
3

3
1

6

6
6

Hình 1.7. Biểu diễn đồ thị bằng ma trận kề

Chúng ta có các nhận xét:


-

Cách biểu diễn bằng ma trận kề có thể dùng cho cả đồ thị có hướng và

vô hướng. Dễ thấy ma trận biểu diễn đồ thị vô hướng đối xứng qua
đường chéo chính.
-

Nếu đồ thị là có trọng số thì các phần tử ma trận kề có thể nhận giá

trị là trọng số của cung.
-


Có thể lựa chọn hai giá trị



để phân biệt sự khác nhau giữa cặp

đỉnh có cạnh nối và cặp đỉnh không có cạnh nối. Trong thực tế cài đặt, tùy
thuộc vào thuật toán mà có thể sử dụng các bộ giá trị khác vẫn đảm bảo sự
phân biệt.
- Ưu điểm: tốc độ truy xuất thông tin về cạnh cao.
- Nhược điểm:
 Đồ thị thưa có hiệu suất sử dụng tài nguyên thấp.
 Tình huống cập nhật đồ thị bằng thao tác thay đổi kích thước tập đỉnh
rất phức tạp: buộc phải khai báo một ma trận với kích thước mới và hủy
bỏ ma trận đã sử dụng ban đầu.
1.2.2. Biểu diễn bằng ma trận liên thuộc
Cách biểu diễn đồ thị bằng ma trận liên thuộc:
- Đánh số các đỉnh thuộc V từ1n.
- Đánh số các cạnh thuộc E từ 1m.
- Ma trận liên thuộc A biểu diễn G là một ma trận nm có các phần tử
nhận giá trị 0, 1 hoặc -1:
 aij = 1 nếu đỉnh i là đỉnh đầu của cạnh ej.
 aij = -1 nếu đỉnhi là đỉnh cuối của cạnh ej.
 aij = 0 nếu đỉnhi không là đầu mút của cạnh ej.


b

2


4
c

a

d
6

1
e

f

h

3
1
2
3
4
5
6

a
1
-1

5


g

b

c

1

d
1

-1

1
-1

-1

e

f
1

g

1
-1

-1


1
-1

h

1
-1

Hình 1.8. Biểu diễn đồ thị bằng ma trận liên thuộc
Hình 1.8 minh họa biểu diễn đồ thị có hướng không có trọng số bằng
ma trận liên thuộc. Chúng ta có các nhận xét:
- Ma trận liên thuộc chủ yếu dùng biểu diễn đồ thị có hướng.
- Có thể lựa chọn ba giá trị 0, 1 và -1 để phân biệt sự khác nhau giữa đỉnh
i và cạnhej. Trong thực tế cài đặt, tùy thuộc vào thuật toán mà có thể sử
dụng các bộ giá trị khác vẫn đảm bảo sự phân biệt.
1.2.3. Danh sách cạnh


13

b

2

4
c

a

d

6

1
e

f
3

h
5

g
a
b
c
d
e
f
g
h

i
1
2
4
2
3
1
3
5


j
2
4
6
5
4
3
5
6

Hình 1.9. Biểu diễn đồ thị bằng danh sách cạnh
Cách biểu diễn đồ thị bằng danh sách cạnh:
- Đánh số các đỉnh thuộc V từ 1n.
- Đánh số các cạnh thuộc E từ 1m.
-

Thực hiện lưu trữ đồ thị G bằng cách lưu trữ thông tn về các cạnh:

đỉnh đầu, đỉnh cuối và trọng số (nếu có).
1.2.4. Danh sách kề
Cách biểu diễn đồ thị bằng danh sách kề
- Đánh số các đỉnh thuộc V từ 1n.
- Danh sách L biểu diễn G là một tập gồm n danh sách liên kết.


×