Cấu trúc ma trận của đồ thị có hướng chứathông tin về quan hệ kề có cung nối hay không giữa các đỉnh của đồ thị đó.. Mục đích và nhiệm vụ nghiên cứu Tìm hiểu về mối liên hệ giữa đồ thị c
Trang 2Lời cảm ơn
Trước tiên em xin gửi lời cám ơn chân thành sâu sắc tới các thầy
cô giáo trong trường Đại học Sư Phạm Hà Nội 2 nói chung và các thầy
cô giáo trong khoa Toán, bộ môn Ứng Dụng nói riêng đã tận tình giảngdạy, truyền đạt cho em những kiến thức, kinh nghiệm quý báu trongsuốt thời gian qua
Đặc biệt em xin gửi lời cảm ơn đến thầy giáo TS Trần Minh Tước,thầy đã tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốtquá trình làm khóa luận tốt nghiệp Trong thời gian làm việc với thầy,
em không ngừng tiếp thu thêm nhiều kiến thức bổ ích mà còn học tậpđược tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc, hiệuquả, đây là những điều rất cần thiết cho em trong quá trình học tập vàcông tác sau này Đồng thời, em xin cảm ơn các bạn trong lớp K35
Cử Nhân Toán đã nhiệt tình giúp đỡ em trong quá trình học tập tại lớp
Hà Nội, tháng 05, năm 2013
Sinh viênNgô Thị Hồng Diễm
Trang 3Lời cam đoan
Em xin cam đoan đây là công trình nghiên cứu của riêng em Các
số liệu, kết quả nêu trong khóa luận là trung thực và các thông tin đượctrích dẫn trong khóa luận này đã được ghi rõ nguồn gốc
Hà Nội, tháng 05, năm 2013
Sinh viênNgô Thị Hồng Diễm
Trang 4Mục lục
Mở đầu 1
Chương 1: Nhắc lại về lý thuyết về đồ thị và ma trận 3 1.1 Đồ thị 3
1.1.1 Đồ thị có hướng 3
1.1.2 Bậc của đỉnh trong đồ thị có hướng 4
1.1.3 Sự liên thông 5
1.2 Đường đi, chu trình, tính liên thông trong đồ thị có hướng 5 1.2.1 Đường đi, chu trình 5
1.2.2 Đồ thị có trọng số 12
1.3 Ma trận 13
Chương 2: Liên hệ giữa đồ thị có hướng và ma trận 15 2.1 Biểu diễn đồ thị có hướng bằng ma trận kề 15
2.1.1 Tính liên thông trong đồ thị có hướng 16
2.1.2 Bài toán đường đi ngắn nhất (Thuật toán Floyd) 18 Chương 3: Một vài lớp đồ thị đặc biệt 31 3.1 Đồ thị Euler 31
3.2 Đồ thị vòng có hướng 40
Tài liệu tham khảo 44
Trang 5Mở đầu
1 Lý do chọn đề tài
Trong toán học và tin học, lý thuyết đồ thị nghiên cứu các tínhchất của đồ thị Một cách phi hình thức, đồ thị gồm một tập cácđối tượng được gọi là các đỉnh (hoặc nút) nối với nhau bởi các cạnh(hoặc cung) Đồ thị có thể được vẽ dưới dạng một tập các đỉnh nốivới nhau bằng các đoạn thẳng (các cạnh)
Khi sử dụng đồ thị trong các bài toán của tin học có nhiều cáchkhác nhau để lưu trữ các đồ thị trong máy tính Sử dụng cấu trúc
dữ liệu nào thì tùy theo cấu trúc của đồ thị và thuật toán dùng đểthao tác trên đồ thị đó
Trong đề tài này em đặt vấn đề nghiên cứu về cấu trúc ma trậncủa đồ thị có hướng Cấu trúc ma trận của đồ thị có hướng chứathông tin về quan hệ kề (có cung nối hay không) giữa các đỉnh của
đồ thị đó Ngoài ra nó còn là một công cụ hữu ích cho việc xem xétcác tính chất của đồ thị có hướng với những thế mạnh của đại sốtuyến tính
Từ những nhận thức trên em xin mạnh dạn nghiên cứu đề tài
“Tìm hiểu sự liên hệ giữa đồ thị có hướng và ma trận” đây khôngchỉ là nhiệm vụ em phải thực hiện trong khoá luận tốt nghiệp màthực sự đây là đề tài em đang quan tâm và nghiên cứu
Các thuật ngữ trong khóa luận được sử dụng trong các cuốn:Norman Biggs (1974), Algebraic Graph Theory Cambridge Tracts inMathematics, VOL 67 Nguyễn Đức Nghĩa (2003), Nguyễn Tô Thành,
Trang 6Toán rời rạc, NXB Giáo dục Ngô Đắc Tân (2004), Lý thuyết tổhợp và đồ thị, NXB ĐHQG Hà Nội Nguyễn Hữu Việt Hưng (2001),Đại số tuyến tính, NXB Quốc Gia Hà Nội.
2 Đối tượng và phạm vi nghiên cứu
-Đối tượng: Đồ thị và ma trận
-Phạm vi nghiên cứu: Đồ thị có hướng và ma trận kề của nó
3 Mục đích và nhiệm vụ nghiên cứu
Tìm hiểu về mối liên hệ giữa đồ thị có hướng và ma trận dựa trên
sự thể hiện một số tính chất của đồ thị trên ma trận kề tương ứng
4 Phương pháp nghiên cứu
Thu thập, nghiên cứu tài liệu, xin ý kiến chuyên gia
5 Cấu trúc khóa luận
Ngoài phần mở đầu và kết luận khóa luận gồm 3 chương:
Chương 1: Nhắc lại về lý thuyết về đồ thị và ma trận
Chương 2: Liên hệ giữa đồ thị có hướng và ma trận
Chương 3: Một vài lớp đồ thị đặc biệt
Trang 7với u, v ∈ V và u 6= v, tức là E là một quan hệ hai ngôi không phản xạtrên V.
Các phần tử của V = {v1, v2, , vn} được gọi là các đỉnh, còn các phần
tử của E = {(u, v)|u, v ∈ V, u 6= v} được gọi là các cung của đồ thị cóhướng G Nếu e= (u, v) ∈ E thì ta nói e có đỉnh đầu là u, đỉnh cuối là
v và có hướng từ u tới v Khi không gây ra sự nhầm lẫn ta còn có thể
kí hiệu cung e = uv (hoặc e = −uv→)
Ví dụ 1.1.1 Cho đồ thị có hướng G = (V, E), với V = {a, b, c}, E ={(a, b), (b, c), (c, a)} Đồ thị có hướng G được biểu diễn trên hình vẽ nhưsau:
Trang 81.1.2 Bậc của đỉnh trong đồ thị có hướng
Trang 9a b c
d e
Hình 1.2: Đồ thị có hướng
Ví dụ 1.1.5 Xét đồ thị cho trong hình trên ta có:
deg−(a) = 1, deg−(b) = 2, deg−(c) = 2, deg−(d) = 2, deg−(e) = 2
deg+(a) = 3, deg+(b) = 1, deg+(c) = 1, deg+(d) = 2, deg+(e) = 2.Rất nhiều tính chất của đồ thị có hướng không phụ thuộc vàohướng trên các cung của nó Vì vậy, trong nhiều trường hợp sẽ thuậntiện hơn nếu ta bỏ qua hướng trên các cung của đồ thị Đồ thị vôhướng thu được bằng cách bỏ qua hướng trên các cung được gọi là
đồ thị vô hướng nền của đồ thị có hướng đã cho
1.1.3 Sự liên thông
1.2 Đường đi, chu trình, tính liên thông trong đồ thị có
hướng
1.2.1 Đường đi, chu trình
Đường đi có độ dài n từ v0 đến vn với n là một số nguyên dương,trong một đồ thị có hướng G = (V, E) là một dãy các cung liên tiếp
v0v1, v1v2, , vn−1vn trong đó vi 6= vj,∀i 6= j
Đỉnh v0 được gọi là đỉnh đầu, đỉnh vn được gọi là đỉnh cuối Đường
đi này thường được viết gọn: v0v1v2 vn −1vn
Khi chỉ cần nêu ra đỉnh đầu vo và đỉnh cuối vn của đường đi, ta viết:đường đi vo − vn
Trang 10Đường đi có đỉnh đầu trùng với đỉnh cuối (tức là u = v) được gọi làchu trình.
Một hành trình có hướng trong đồ thị có hướng là một dãy các địnhdạng v0v1 vn Trong đó vi ∈ V sao cho vi−1vi ∈ E ; i = 1, 2, n Với
A
Hình 1.3Một số đường đi từ đỉnh A đến đỉnh C là:
• Đường đi d1: (A, B), (B, C) (đường đi có độ dài là 2)
• Đường đi d2: (A, B), (B, D), (D, E), (E, C) (đường đi có độ dài là4)
• Đường đi d3: (A, B), (B, D), (D, F ), (F, E), (E, C) (đường đi có độdài là 5)
Đường đi d2 được biểu diễn bằng ma trận kề trong đồ thị trên nhưsau:
Trang 11Trong đó mỗi cạnh mà d2, d3 đi qua được kí hiệu là (1).
Vì các cạnh của đường đi d2, d3 là đôi một khác nhau do đó đường
đi d2, d3 được gọi là vết d02, d03 Như vậy vết d02, d03 cũng được biểu diễngiống đường đi d1 trong ma trận kề của đồ thị
Ta xét đường đi từ đỉnhAđến đỉnhAqua5đỉnh trung gian làB, C, D, E, F:Đường đi d4: (A, B), (B, D), (D, F ), (F, E), (E, C), (C, A) (đường đi có
độ dài là 6) Đường đi d4 được biểu diễn bằng ma trận kề như sau:
Trang 12Vì các cạnh của đường đi d4 là đôi một khác nhau do đó đường đi d4được gọi là vết d04 Như vậy vết d04 cũng được biểu diễn giống đường đi
d4 trong ma trận kề của đồ thị
Vì vết d04 là một vết kín nên vết d04 được gọi là mạchl4 Như vậy mạch
l4 cũng được biểu diễn giống đường đi d4 trong ma trận kề của đồ thị
Ta thấy d4 là một đường đi có đỉnh đầu trùng với đỉnh cuối Người tanói d4 là một chu trình
Nhận xét:
-Để xác định 1 đường đi trên ma trận kề của đồ thị có hướng ta chỉviệc làm như sau:
Từ dòng i của điểm đầu của đường đi ta gióng sang cột có giá trị bằng
1 đầu tiên, giả sử đó là cột j
Tiếp tục từ dòng j ta lại gióng sang một cột có giá trị bằng 1
Cứ tiếp tục như vậy cho tới dòng của điểm cuối của đường đi
Đánh dấu các số 1 được gióng sang trong dấu () trên ma trận
Khi đó mỗi cạnh mà đường đi đi qua được kí hiệu là (1) trên ma trận
Để xác định 1 chu trình trên ma trận kề của đồ thị có hướng ta cũnglàm tương tự như vậy
-Hình ảnh của đường đi trên ma trận là một đường gấp khúc khôngkhép kín hoặc khép kín Không có2số(1)nào trên cùng một cột Trườnghợp khép kín thì đường đi đó là một chu trình
Ví dụ 1.2.2 Hình ảnh đường đi d2, d3 trong đồ thị hình 2.2 trên ma trận
Trang 13B C D E F
(1)
(1)
(1) (1)
(1)
(1)
(1)
(1) (1)
Hình 1.5
Ví dụ 1.2.3 Một số hình ảnh chu trình với thứ tự đỉnh 1, 2, 3, 4 khácnhau của đồ thị hình 2.4 trên ma trận:
Trang 144 2 3
4 1 3 2 4
1 3 2
(1) (1) (1) (1)
(1) (1)
2 1 4
4 2 1 3
(1) (1)
(1)
(1)
(1) (1)
(1) (1)
(1) (1)
(1) (1)
Hình 1.7
Kết quả sau đây về số đường đi sẽ có ích khi xét tính liên thông các
đồ thị
Mệnh đề 1.2.4 [9] Cho G là một đồ thị có hướng với ma trận liền kề
A theo thứ tự các đỉnh v1, v2, , vn Khi đó số các đường đi khác nhau
độ dài r từ vi tới vj trong đó r là một số nguyên dương, bằng giá trị của
phần tử dòng i cột j của ma trận Ar
Chứng minh Ta chứng minh mệnh đề bằng quy nạp theor Số các đường
đi khác nhau độ dài 1 từ vi tới vj là số các cạnh (hoặc cung) từ vi tới
vj, đó chính là phần tử dòng i cột j của ma trận A; nghĩa là, mệnh đề
đúng khi r = 1
Giả sử mệnh đề đúng đến r; nghĩa là, phần tử dòng i cột j của Ar là số
các đường đi khác nhau độ dài r từ vi tới vj Vì Ar+1=Ar.A nên phần
Trang 15tử dòng i cột j của Ar+1 bằng: bi1a1 j + bi2a2 j + + binanj,
trong đó bik là phần tử dòng i cột k của Ar Theo giả thiết quy nạp bik
là số đường đi khác nhau độ dài r từ vi tới vk
Đường đi độ dài r + 1 từ vi tới vj sẽ được tạo nên từ đường đi độ dài
r từ vi tới đỉnh trung gian vk nào đó và một cạnh (hoặc cung) từ k tới
vj Theo quy tắc nhân số các đường đi như thế là tích của số đường đi
độ dài r từ vi tới vk, tức là bik, và số các cạnh (hoặc cung) từ vk tới vj,tức là akj Cộng các tích này lại theo tất cả các đỉnh trung gian vk ta cómệnh đề đúng đến r + 1
3 4
Hình 1.8: Đường đi trên đồ thị
Trang 16Định nghĩa 1.2.6 Đồ thị vô hướng đượ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ó.
Hình 1.9: Đồ thị G là liên thông, còn đồ thị H là không liên thông.
Định nghĩa 1.2.7 Đồ thị có hướng G được gọi là liên thông mạnh nếuvới hai đỉnh phân biệt bất kỳ u và v của G đều có đường đi từ u tới v
và đường đi từ v tới u
B A
C
E
D
Hình 1.10: Đồ thị có hướng liên thông mạnh
Định nghĩa 1.2.8 Đồ thị có hướng G được gọi là liên thông yếu nếu
đồ thị vô hướng nền của nó là liên thông
Trang 17Hình 1.11: Đồ thị có hướng có trọng số1.3 Ma trận
Ký hiệu ma trận thường được dùng để đơn giảm hóa các biểu thứctoán học phức tạp Việc sử dụng ma trận làm cho việc lập và giải cácphương trình trở lên dễ dàng hơn
Ma trận là một tập các phần tử trong một mảng chữ nhật hay vuông.Với các ma trận ta có các định nghĩa sau đây:
Phần tử của ma trận - Khi ma trận được viết dưới dạng:
Cấp của ma trận - Cấp của một ma trận chỉ tổng số hàng và cột của
ma trận.Ví dụ, ma trận trên có ba hàng và ba cột được gọi là ma trận
Trang 18giản là m-vectơ nếu nó có m hàng và một cột.
Ma trận hàng - Ma trận hàng có một hàng và nhiều hơn một cột và đượccũng được coi là một vectơ hàng
Ma trận đơn vị - Ma trận đơn vị có tất cả các phần tử trên đường chéochính (i = j) bằng 1 Ma trận đơn vị thường được biểu thị bởi I hay U.Một ví dụ về ma trận đơn vị như sau I =
Trang 19Chương 2
Liên hệ giữa đồ thị có hướng và
ma trận
2.1 Biểu diễn đồ thị có hướng bằng ma trận kề
Cho đồ thị G = (V, E)trong đó V = {v1, v2, , vn} Ma trận kề biểudiễn đồ thị G là ma trận có kích thước n× n được xác định như sau:
aij =
(
1 nếu vivj là một cung của G
0 nếu vivj không là một cung của G
Ví dụ 2.1.1 Tìm ma trận kề của đồ thị sau:
3 4
Hình 2.1: Đồ thị có hướng
Ma trận kề của đồ thị trên sẽ là:
Trang 20- Nhìn vào ma trận ta biết được 2 đỉnh nào kề nhau.
- Biết được bậc của từng đỉnh nếu là đồ thị đơn
Các tính chất của ma trận kề:
- Chúng ta có thể nhận thấy rằng, ma trận kề của đồ thị vô hướngluôn luôn là mà trận đối xứng Còn ma trận của đồ thị có hướng thì cóthể không có tính chất này
- Đối với đồ thị có hướng, tổng các phần tử trên dòng i (tương ứng,trên cột i) sẽ là bán bậc ra (bán bậc vào) của đỉnh vi của đồ thị Tức là:Tổng các số trên hàng i = Bán bậc ra của đỉnh vi = deg+
(vi)
Tổng các số trên cột i = Bán bậc vào của đỉnh vi = deg−(vi)
2.1.1 Tính liên thông trong đồ thị có hướng
Để kiểm tra tính liên thông yếu trong đồ thị có hướng ta chỉ việc kiểmtra tính liên thông đồ thị vô hướng nền của nó
Đồ thị vô hướng được gọi là liên thông nếu luôn tìm được đường đigiữa hai đỉnh bất kỳ của nó Như vậy để xét tính liên thông của một đồthị vô hướng dựa trên ma trận kề tương ứng của đồ thị đó thì ta tìm sốđường đi của hai đỉnh bất kì Ta có tính chất của ma trận kề ở trên cácphần tử của ma trận Apij sẽ cho ta số đường đi khác nhau của hai đỉnhbất kì
Tức là apij là phần tử của ma trận Apij sẽ cho ta số đường đi khác nhau
từ i đến j qua p− 1 đỉnh trung gian với x ≤ n − 1 (n là số đỉnh)
Với aij 6= 0 thì đồ thị là liên thông
Để xétapij ta phải tínhA1,A2, ,Ak, ,An−1 sẽ tồn tạiAxmà axij 6= 0
Trang 21(x ≤ n − 1).
⇒ Có đường đi từ i đến j hay đồ thị là liên thông
Ví dụ 2.1.2 Xét tính liên thông của đồ thị K4 dựa vào ma trận kề củanó
C D
Vì các phần tử của A2 6= 0 nên suy ra đồ thị K4 là đồ thị liên thông.Liên quan tới các đường đi trên đồ thị biểu diễn qua ma trận bài toánsau đây cũng sử dụng ma trận có hiệu quả
Trang 222.1.2 Bài toán đường đi ngắn nhất (Thuật toán Floyd)
Ma trận trọng số củaG là một ma trận vuôngA = (aij) cấpn Trongđó:
aij =
(
w(i, j) nếu vivj là một cung của G
∞ nếu vivj không là một cung của G
Quy ước aii = 0, ∀i ∈ V
A
B
C
D E
Trang 23Bài toán:Cho G = (V, E) là một đồ thị có hướng có trọng số V ={1, , n} là tập các đỉnh E là tập các cung Tìm đường đi ngắn nhấtgiữa các cặp đỉnh của đồ thị.
Ý tưởng: Thuật toán Floyd được thiết kế theo phương pháp quy hoạchđộng Nguyên lý tối ưu được vận dụng cho bài toán này là: "Nếu k làđỉnh nằm trên đường đi ngắn nhất từ i đến j thì đoạn đường từ i đén k
và từ k đến j cũng phải ngắn nhất"
Thuật toán Floyd [5][6]
Thuật giải tìm độ dài đường đi ngắn nhất giữa mọi cặp đỉnh trong đồthị có hướng liên thông có trọng số (không bắt buộc ≥ 0)
+Đầu vào Đồ thị liên thông G = (V, E), V = {1, 2, , n}, có trọng số
w(i, j) với mọi cung (i, j)
+Đầu ra Ma trận D = [d(i, j)], trong đó d(i, j) là chiều dài đường đingắn nhất từ i đến j với mọi cặp (i, j)
+Phương pháp:
1 Bước khởi tạo: Kí hiệu D0 là ma trận xuất phát
D0=[d0(i, j)]
trong đó d0(i, j) = w(i, j) nếu tồn tại cung (i, j) và d0(i, j) = ∞
nếu không tồn tại cung (i, j) (đặc biệt nếu không có khuyên tại i thì
d0(i, i) = ∞)
Gán k := 0
2 Kiểm tra kết thúc: Nếu k = n, kết thúc D = Dn là ma trận độ dàiđường đi ngắn nhất Ngược lại tăng k lên 1 đơn vị (k := k + 1) vàsang (3)
3 Tính ma trận Dk theo Dk−1 :
Với mọi cặp (i, j), i = 1 n, j = 1 n thực hiện:
Nếu dk−1(i, j) > dk−1(i, k) + dk−1(k, j) thì đặt
dk(i, j) := dk−1(i, k) + dk−1(k, j)
ngược lại đặt
Trang 24dk(i, j) := dk−1(i, j)
Quay lại bước (2)
Chứng minh Ta chứng minh thuật toán bằng qui nạp theo k, mệnh
đề sau:
dk(i, j) là chiều dài đường đi ngắn nhất trong những đường nối đỉnh
i đến j qua các đỉnh trung gian {1, 2, , k}
-Bước cơ sở: Hiển nhiên mệnh đề đúng với k = 0
-Bước qui nạp: Giả sử mệnh đề đúng với k − 1 Xét dk(i, j)
Sẽ xảy ra một trong hai trường hợp sau:
(a) Trong các đường nối đỉnhivớij qua các đỉnh trung gian{1, 2, , k−
1, k}có chiều dài ngắn nhất tồn tại một đường pkhông qua đỉnh
k Khi đó p cũng là đường ngắn nhất nối đỉnh i với j qua cácđỉnh trung gian {1, 2, , k − 1}, nên theo giả thiết qui nạp
dk−1(i, j) = d(p) ≤ dk−1(i, k) + dk−1(k, j)
Do đó theo cách tính dk ta có dk(i, j) = dk−1(i, j) = d(p) là
độ dài đường đi ngắn nhất từ i đến j qua các đỉnh trung gian
{1, 2, , k − 1, k}
(b) Mọi đường nối đỉnh i với j qua các đỉnh trung gian {1, 2, , k −
1, k}có chiều dài ngắn nhất đều qua đỉnhk Gọip= (i, , k, , j)
là một đường ngắn nhất nối đỉnh i với j qua các đỉnh trung gian
{1, 2, , k − 1, k} Khi đó đoạn (i, k) và (k, , j) cũng phải làcác đường đi ngắn nhất qua các đỉnh trung gian {1, 2, , k − 1}
Ta có
dk−1(i, k) + dk−1(k, j) = d(p) < dk−1(i, j)
(Bất đẳng thức cuối cùng suy ra từ giả thiết mọi đường đi nốiđỉnh i với j qua các đỉnh trung gian {1, 2, , k − 1, k} có chiềudài ngắn nhất đều qua đỉnh k)
Do đó theo cách tính dk ta có:dk(i, j) = dk−1(i, k)+dk−1(k, j) =
d(p)