You are on page 1of 24

TIẾP CẬN LÝ THUYẾT GRAPH

Lời nói đầu

Lý thuyết graph là một lĩnh vực rất rộng lớn và có rất nhiều ứng dụng trong thực tiễn, trong
nhiều ngành khoa học khác nhau bao gồm cả toán học, vật lý, tin học…Ngày nay, lý thuyết graph đã
trở thành công cụ không thể thiếu khi phải giải quyết các vấn đề mang tính tổng thể và đang trở thành
lĩnh vực có sự phát triển như vũ bão. Nói riêng với môn Toán và nhỏ hơn nữa thôi là trong các kỳ thi
học sinh giỏi toán các nước và cả thi toán quốc tế IMO, có thể nhận thấy một phần khá lớn các bài toán
rời rạc có liên quan đến lý thuyết graph.

Tuy vậy, trong chuyên đề nhỏ bé này, tác giả cũng không mong muốn đem lại cái nhìn tổng thể
về graph ( chắc mình không làm nổi) hay tiếp cận với các định lý lớn, định lý mới trong lý thuyết graph
mà chỉ đơn giản là xem xét theo khía cạnh nhẹ nhàng nhất mà học sinh phổ thông có thể sử dụng được
để giải một số các bài toán rời rạc ở mức độ thi olympic có liên hệ với lý thuyết này. Trong các kỳ thi
đó, khá nhiều bài toán thường được phát biểu một cách thực tế rất hấp dẫn và nếu học sinh có thể
chuyển hóa bài toán sang ngôn ngữ graph, rồi sử dụng những hiểu biết cơ bản về graph đơn, vô hướng,
hữu hạn, cộng với tư duy logic tốt và sự linh hoạt là có thể giải quyết được các bài toán có thể coi là
khó. Theo cách này, lý thuyết graph chỉ được ứng dụng như là một công cụ giúp hỗ trợ cho việc hình
dung ý tưởng rõ ràng, sáng sủa hơn mà thôi, hay nói cách khác, là một ngôn ngữ dễ hiểu.

Tất nhiên, cũng cần có thời gian để học được một thứ ngôn ngữ nào đó và cần có nhiều thời gian
để thành thạo ngôn ngữ ấy. Người ta phải bắt đầu với những khái niệm cơ bản nhất, tương tự như các
từ vựng, sau đó để sử dụng ngôn ngữ cho tốt chỉ với vốn từ vựng ít ỏi, điểm mấu chốt là thực hành và
thực hành và thực hành và thực hành…. Tôi viết chuyên đề này, cũng đơn giản theo nghĩa như thế. Hy
vọng góp một phần nhỏ bé giúp học sinh yêu toán cảm thấy lý thuyết graph cũng là phần kiến thức
không quá khó để tiếp cận, không phải có gì đó quá cao siêu mà cũng đáng yêu như hình học phẳng,
các bài toán đếm hay các bài toán số học vậy. (Thú thật, việc hình thành chuyên đề này một phần cũng
là vì thấy các học sinh của tôi thường tỏ ra ngao ngán hay sợ hãi khi tôi tuyên bố: “ Mai chúng ta sẽ
học về lý thuyết graph nhé!”)

Chuyên đề của tôi là một tiếp cận ban đầu với lý thuyết graph, chỉ đơn giản gồm một phần lý
thuyết cơ bản về graph với một số ví dụ giúp học sinh thực hành ngay các khái niệm được nêu để qua
đó nhớ được và thấy các khái niệm đó dễ hiểu hơn, đồng thời cũng giúp trang bị một số kết quả hữu
dụng trong phần sau. Tiếp đó là một phần với các bài tập ở mức độ olympic, chỉ dùng các kiến thức đã
nêu về graph, được sắp xếp theo trình tự từ những bài dùng ít khái niệm, đến những bài đan xen nhiều
khái niệm hơn. Trong từng bài toán, tôi cũng cố gắng hết cỡ để viết một cách nhẹ nhàng và trong sáng
nhất. Tuy vậy, do quan điểm cá nhân và thời gian cũng như hiểu biết hạn chế, khó tránh khỏi các thiếu
sót. Rất mong được các bạn đồng nghiệp góp ý, bổ sung để chuyên đề ngày càng được hoàn thiện, mở
rộng và hữu dụng.

Tác giả

Nguyễn Thế Sinh

Giáo viên chuyên Toán, trường THPH chuyên Nguyễn Trãi, Hải Dương
Lý thuyết graph- một ngôn ngữ hữu dụng giải các bài toán rời rạc

1. Graph, graph con, graph đầy đủ, graph vô hướng, graph đơn.
Xét tập hữu hạn, khác rỗng V và tập E (V )  {{u, v}, u, v V , u  v} . Ta gọi cặp G  (V , E )
với E  E (V ) là một graph (trên V). Một phần tử của V được gọi là một đỉnh của G, một phần
tử của E được gọi là một cạnh của G. Tập đỉnh của G còn được ký hiệu là VG và tập cạnh của G
được ký hiệu là EG ( khi nói về G trước khi nói về đỉnh, cạnh của G). Vậy G  (VG , EG ) . Cặp
e  {u, v} hay được viết gọn lại là uv , ta cũng thường viết v, e  G thay vì viết v  VG và e  EG
Một graph con của G  (V , E ) là một cặp (V ', E ') sao cho V '  V , E '  E và G '  (V ', E ')
là một graph.
Đặt vG | VG | và eG | EG | , ta gọi số đỉnh vG của graph G là bậc của G và số cạnh eG được
gọi là kích thước của graph G.
Với một cạnh e  uv thì u,v gọi là hai đầu mút của cạnh e, đỉnh u và v được gọi là hai
đỉnh kề nhau, hai cạnh e1  uv và e2  uw có chung điểm đầu mút được gọi là hai cạnh kề nhau.
Một graph G có thể được biểu diễn bởi các hình vẽ trên mặt phẳng, trong đó các đỉnh của
G được biểu diễn bởi các điểm và các cạnh của G được biểu diễn bởi các đoạn thẳng hoặc
đường cong nối giữa các điểm đó. Nhờ vào điều này mà các bài toán về tập hợp có thể biểu diễn
một cách rõ ràng bằng các hình vẽ và dựa trên các hình vẽ đó, các bài toán sẽ sáng tỏ hơn.

Ví dụ 1. Hình vẽ dưới đây biểu diễn cho một graph G với tập đỉnh là V  {v1 , v2 , v3 , v4 , v5 , v6 } và
tập cạnh E  {{v1 , v3 };{v1 , v2 };{v2 , v3};{v2 , v4 };{v5 , v6 }}
v1 v3
v5

v2 v6
v4

Graph này có bậc bằng 6 và kích thước bằng 5

Ví dụ 2. Hình vẽ dưới đây biểu diễn cho một graph G với tập đỉnh

V  {v1 , v2 , v3 , v4 , v5 } và tập cạnh E  {{v1 , v2 };{v2 , v2 };{v1 , v5 };{v1 , v5 };{v1 , v4 } }


v1 v3

v2

v5

v4
Mặc dù trong hình vẽ trên, đường cong nối v1 và v4 có điểm tự cắt, nhưng điểm tự cắt đó
không được coi là biểu diễn cho một đỉnh của graph G. Ngoài ra, có 2 cạnh nối giữa hai đỉnh
v1 , v5 , ta nói graph có cạnh bội giữa v1 , v5 và có một cạnh nối chính v2 với v2 gọi là khuyên.
Một graph không chứa cạnh bội, không chứa khuyên được gọi là graph đơn. Nếu mỗi cạnh
của graph được chỉ rõ hướng, tức là coi uv  vu , ta nói đó là một graph có hướng, ngược lại
là graph vô hướng.
Một graph G mà mọi cặp đỉnh đều có cạnh nối giữa chúng gọi là graph đầy đủ. Một
graph đầy đủ có n đỉnh được ký hiệu là K n
Với một graph G  (V , E ) , graph bù của G là graph G với tập đỉnh là V, nhưng tập cạnh
là các cạnh nối giữa các đỉnh không được nối với nhau trong G. Ta có E (G)  E (G)   và
graph (V , E (G )  E (G )) là một graph đầy đủ.

Từ đây trở đi, trong suốt phần còn lại của chuyên đề, tôi chỉ bàn đến graph đơn, vô hướng và
hữu hạn.

Chỉ cần có thế, đã có hàng loạt các bài toán có thể xử lý được nhờ việc chuyển hóa theo ngôn
ngữ graph. Trong lời giải các bài tập này thì graph chỉ đóng vai trò như hình vẽ trực quan mà
thôi.

Bài 1. Trong buổi dạ hội, có 20 cặp vợ chồng. Trước khi chia tay họ trao đổi địa chỉ với những
người khác. Một người đàn ông nhận thấy số địa chỉ những người còn lại nhận được đôi một
khác nhau. Hỏi rằng vợ ông ta đã trao đổi địa chỉ với bao nhiêu người khác?

Lời giải:

Giả sử người đàn ông nói đến là A, ta thấy 39 người còn lại chỉ trao đổi với tối đa là 38 người (
vì không trao đổi với vợ hoặc chồng của họ), mà số địa chỉ nhận được là khác nhau nên sẽ là
0,1,2,…,38. Gọi Ai là người trao đổi với đúng i người.

Xét graph G với các đỉnh Ai và cạnh nối giữa những ai trao đổi với nhau

Ta có A0 không nối với đỉnh nào nên là vợ chồng với A38 vì A38 nối với tất cả trừ A0 , A1 chỉ
nối với A0 nên không nối với A37 , nhưng A37 nối với 37 đỉnh trừ A0 , A1 nên A37 và A1 là vợ
chồng. Cứ thế, Ai và A38i là vợ chồng, còn thừa ra A19 là vợ của A. Vậy vợ ông nói đến trao
đổi với 19 người

Bài 2. [Rusia 2001] Trong một bữa tiệc có 2n  1 người, với mỗi nhóm n người, tồn tại một
người ( không thuộc nhóm đó) quen tất cả họ. Chứng minh rằng tồn tại một người quen tất
cả mọi người trong bữa tiệc.

Lời giải:

Xét một graph G có các đỉnh là 2n  1 người tham gia bữa tiệc, cạnh nối giữa những người quen
nhau.
Ta chứng minh tồn tại ít nhất một graph con đầy đủ với n  1 đỉnh. Khi đó xét n đỉnh còn lại,
luôn tồn tại một đỉnh trong G0 nối với cả n đỉnh còn lại đó ( giả thiết). Rõ ràng đỉnh này nối với
tất cả các đỉnh trong G . Điều phải chứng minh.

Thật vậy, giả sử graph con đầy đủ G1 có bậc lớn nhất là r.

Nếu r  n , tồn tại một đỉnh u không thuộc G1 nhưng nối với tất cả các đỉnh của G1 ( trong G ).

Vậy graph G1 cùng với đỉnh u và tất cả các cạnh nối u với một đỉnh thuộc G1 tạo thành một
graph con đầy đủ có bậc r  1 . Mâu thuẫn với tính lớn nhất của r . Vậy tồn tại một graph con đầy
đủ G0 có bậc  n  1 .

Bài toán sau đây có ích cho nhiều bài toán khác sau này.

Bài 3. Cho graph G, gọi  (G) là số màu ít nhất cần dùng để tô màu các đỉnh của G sao cho
không có hai đỉnh kề nhau nào cùng màu. Gọi m là số cạnh của G . Chứng minh rằng

1 1
 (G )   2m  .
2 4

Lời giải:

Xét một cách tô màu các đỉnh của G với k   (G) màu. Ta phân chia các đỉnh của G thành k lớp
đỉnh, mỗi lớp gồm các đỉnh được tô cùng màu. Nếu có 2 lớp nào đó mà không có cạnh nào nối
từ một đỉnh thuộc lớp này sang đỉnh thuộc lớp kia thì ta có thể giảm số màu cần tô đi bằng cách
tô hai lớp đỉnh đó bởi cùng một màu. Điều này mâu thuẫn với tính nhỏ nhất của k. Vậy bất kỳ
hai lớp nào cũng có ít nhất một cạnh nối từ một đỉnh thuộc lớp này sang đỉnh thuộc lớp kia. Vậy
1 1 1
m k (k  1) và do đó ta có k   (G )   2m  .
2 2 4

Bài 4. Một nước có 2n thành phố, một số cặp thành phố có đường đến với nhau. Chứng minh
rằng có thể chia đất nước thành hai bang S và T sao cho mỗi bang chứa n thành phố và ít nhất
một nửa số con đường nối từ một thành phố của S sang một thành phố của T .

Lời giải:

Xét graph G với đỉnh là các thành phố và cạnh nối giữa các thành phố có đường đến với nhau.
Gọi số cạnh của G là x . Giả sử không thể chia tập đỉnh của G thành hai nửa S và T sao cho
x
mỗi nửa chứa n đỉnh và ít nhất cạnh nối từ một đỉnh của S sang một đỉnh của T , nghĩa là
2
x
với mọi cách chia, số cạnh nối giữa hai tập S và T nhỏ hơn
2
Ta xét cách chia sao cho số cạnh nối giữa 1 đỉnh thuộc S với 1 đỉnh thuộc T là nhiều nhất và
x
bằng k . Suy ra k 
2

Gọi số cạnh nối giữa các đỉnh trong S là f ( S ) , trong T là f (T ) . Với một đỉnh u bất kỳ, gọi
g  (u ) là số cạnh nối từ u đến một đỉnh thuộc cùng tập với u và g  (u ) là số cạnh nối từ u đến
đỉnh thuộc tập còn lại.

Trước hết, ta chứng minh tồn tại 1 đỉnh u sao cho g  (u )  g  (u )

Giả sử ngược lại, với mọi đỉnh v  G đều có g  (v)  g  (v) .



Ta được g (v)  2 f ( S )   g  (v)  k . Tương tự có 2 f (T )  k .
vS vS

Suy ra f ( S )  f (T )  k nên x  f (S )  f (T )  k  2k  x . Mâu thuẫn.

Vậy tồn tại 1 đỉnh u sao cho g  (u )  g  (u ) . Gọi u là đỉnh của G mà g  (u )  g  (u ) lớn nhất, gọi
hiệu đó là m .

Giả sử u thuộc tập S . .

Nếu tập T có 1 đỉnh v mà g  (v)  g  (v) thì ta đổi chỗ 2 đỉnh u và v cho nhau. Ban đầu, số
cạnh nối giữa hai tập S và T có đỉnh là u hoặc v là g  (u )  g  (v)   , với   1 nếu u , v kề
nhau và   0 khi u , v không kề nhau, sau khi chuyển, số cạnh nối giữa hai tập S và T có đỉnh
u hoặc v là g  (u )  g  (v)   .

Rõ ràng g  (u )  g  (v)  g  (u )  g  (v) nên số cạnh nối giữa S và T sẽ tăng khi đổi chỗ hai đỉnh.
Mâu thuẫn với giả thiết lớn nhất của số k

Vậy mọi đỉnh v  T đều có g  (v)  g  (v)

Ta chứng minh sẽ tồn tại 1 đỉnh e thuộc tập T sao cho g  (e)  g  (e)  m

Giả sử ngược lại, g  (e)  g  (e)  m với mọi e  T



Suy ra  (g (e)  g  (e))  nm nên k   g  (e)   g  (e)  nm hay k  2 f (T )  nm (1)
eT eT eT

Xử lý tương tự cho tập S , thì 2 f ( S )  k  mn  2 f ( S )  mn  k (2)

Từ (1) và (2) được f ( S )  f (T )  k . Lập luận tương tự trên, ta được mâu thuẫn.

Vậy có điều phải chứng minh.


Bài 5 . [ Italy TST 2007] Có n người sống trong một ngôi làng. Với một người bất kỳ, luôn có
đường đi từ nhà người đó đến nhà tất cả những người còn lại. Người ta muốn trồng cây tại từng
nhà và trên lối đi giữa các nhà sao cho loại cây tại nhà một người A bất kỳ luôn khác với loại
cây được trồng trên đường đi đến nhà của A. Loại cây trồng trên các con đường khác nhau đến
cùng một nhà cũng khác nhau. Hỏi cần ít nhất bao nhiêu loại cây.

Lời giải:

Trước hết, ta chuyển bài toán theo ngôn ngữ graph cho dễ hình dung. Xét một graph đầy đủ có n
đỉnh. Yêu cầu bài toán là tô màu các cạnh và các đỉnh của graph sao cho hai cạnh bất kỳ chung
đỉnh không được tô cùng màu và với một cạnh bất kỳ, hai đỉnh của cạnh đó khác màu dùng để tô
cạnh. Cần tìm số màu tối thiểu để có thể tô được như vậy.

Giả sử cần ít nhất s màu để tô, xét một đỉnh bất kỳ thì đỉnh đó khác màu tất cả các cạnh xuất
phát từ nó, nên có s  n . Rõ ràng dấu bằng xảy ra được vì tính cân xứng. Tuy nhiên ta cần chỉ rõ
cách tô bởi n màu thỏa mãn.

Đánh số các đỉnh của graph lần lượt là 1, 2,3,, n , tô màu các cạnh nối giữa hai đỉnh i,j bởi màu
i  j (mod n) . Chẳng hạn tô màu cho cạnh 12 bởi màu số 3.

Khi đó 2 cạnh bất kỳ có chung đỉnh sẽ được tô khác màu. Chẳng hạn cạnh ab và ac được tô bởi
màu a  b(mod n) và a  c(mod n) . Nếu a  b  a  c(mod n) thì b  c(mod n) , suy ra b  c . Mâu
thuẫn.

Tiếp đó, ta tô màu các đỉnh bằng màu còn lại chưa dùng để tô các cạnh đến đỉnh đó. Rõ ràng
cách tô này thỏa mãn đề bài.

Vậy số màu tối thiểu cần để tô là n.

Một biến thể khác của bài toán này như sau:

Bài 6. Cho n là số nguyên dương lẻ. Có n chiếc máy tính và mỗi cặp máy tính được kết nối bởi
một sợi cáp. Tô màu các máy tính và các sợi cáp sao cho không có hai máy tính nào cùng màu,
không có 2 sợi cáp nào cùng nối với một máy tính mà cùng màu nhau và không máy tính nào
cùng màu với cáp nối đến nó. Chứng minh rằng có thể dùng n màu để tô được như vậy.

Lời giải:

Ta thấy rõ mô hình một graph đầy đủ với n đỉnh, mỗi đỉnh là một máy tính và mỗi sợi cáp nối là
một cạnh

Sự khác biệt trong bài này so với bài toán trên là: Các đỉnh được tô màu khác nhau ( bài trên
không yêu cầu) và n là số lẻ ( bài trên không có). Tuy vậy, cách làm vẫn là chỉ ra cách tô với n
màu thỏa mãn đề bài.

Cách 1.
Tô màu và đồng thời đánh số các đỉnh với các màu 0,1, 2, n  1 . Ta xét cạnh {i, j} . Do n lẻ nên
tồn tại đúng một trong 2 số i  j và i  j  n là số chẵn, ta gọi số đó là t. Tô màu cạnh này với
t
màu . Ta chứng minh đó là cách tô màu ta cần.
2

Trước hết, với một đỉnh i , mỗi cạnh đến nó không thể được tô màu i vì nếu có cạnh {i, j} tô
màu i thì t  2i , tức là i  j  2i hoặc i  j  n  2i hay i  j hoặc j  n  i , trong khi i  j và
n j i

Tiếp đó, nếu hai cạnh nối đến cùng một đỉnh được tô cùng màu, giả sử cạnh {I , j} và {i, k} được
tô cùng màu. Khi đó i  j  i  k hoặc i  j  i  n  k hoặc i  n  j  i  k hoặc i  j  n  i  j  k .
Tất cả những điều này đều không thể xảy ra.

Ta có điều phải chứng minh.


Cách 2. Đặt n đỉnh vào một đường tròn để thành n đỉnh của một n-giác đều tâm O. Giả sử các
đỉnh là A1 , A2 ,, An . Với mỗi i  1, 2, n , ta tô màu i cho cạnh vuông góc với OAi và đỉnh Ai .

A1

A5
A2

A4 A3

Rõ ràng với cách tô như vậy thì hai đỉnh bất kỳ khác màu. Do các cạnh chung đỉnh đều cắt nhau
nên khác màu nhau ( vì chúng chỉ cùng màu khi cùng phương) và khác màu đỉnh đó ( vì cạnh đi
qua đỉnh thì không thể vuông góc với đoạn nối tâm với đỉnh đó được). Ngoài ra với cách làm đó,
n 1 n(n  1)
mỗi giá trị i sẽ có cạnh được tô màu, nên cuối cùng sẽ có cạnh được tô, tức là tất
2 2
cả các cạnh của graph đầy đủ được tô.

Bài 7. [IMO shortlist 2001] Có một bữa tiệc với n người tham dự. Ta gọi một nhóm bạn k
người là một nhóm người mà hai người bất kỳ đều quen nhau. Giả sử rằng mọi cặp 2 nhóm bạn
3 người đều có một người chung và không có nhóm bạn 5 người nào. Chứng minh rằng tồn tại 2
người mà nếu họ rời khỏi bữa tiệc thì chẳng còn nhóm bạn 3 người nào

Lời giải:

Xét một graph n đỉnh đại diện cho n người, nếu 2 người quen nhau, ta nối họ bởi một cạnh. Như
vậy, ta đang có một graph mà mọi cặp tam giác đều có đỉnh chung và không có một graph con
đầy đủ 5 cạnh nào.
Giả sử không thể bỏ 2 đỉnh nào mà sau đó không còn tam giác nào

Trước hết, ta chứng minh trong graph không có graph đầy đủ 4 cạnh nào. (*)

Thật vậy, giả sử có một graph 4 cạnh đầy đủ là {x1 , x2 , x3 , x4 } .

+) Nếu graph không có tam giác nào khác ngoài các tam giác tạo từ 4 đỉnh trên, ta bỏ đi hai đỉnh
bất kỳ trong 4 đỉnh trên đều được. Trái giả sử.

+) Nếu còn một tam giác (x,y,z) nào đó thì (x,y,z) và ( x1 , x2 , x3 ) chung đỉnh nên một trong 3 đỉnh
x1 , x2 , x3 thuộc tập {x,y,z}, giả sử là x1 , ngoài ra (x,y,z) chung đỉnh với ( x2 , x3 , x4 ) nên tồn tại
một trong số x2 , x3 , x4 thuộc tập {x,y,z}.

Tóm lại: Mọi tam giác khác đều chung 2 đỉnh với graph 4 cạnh đầy đủ trên.

Mặt khác, nếu có 2 tam giác có đỉnh là {x, x1 , x2 } và {x, x3 , x4 } chẳng hạn, thì {x, x1 , x2 , x3 , x4 } lập
thành graph đầy đủ 5 cạnh. Mâu thuẫn.

Vậy nếu ta bỏ 2 đỉnh x1 , x2 thì sẽ làm hỏng mọi tam giác. ( Vì nếu có tam giác không hỏng thì
phải có hai đỉnh x3 , x4 )

Ta đã chứng minh xong khẳng định (*)

Bây giờ, xét một tam giác ABC bất kỳ, khi đó mọi tam giác khác đều chứa 1 trong 3 đỉnh A, B
hoặc C.

Giả sử không tồn tại tam giác nào đỉnh A mà không có đỉnh B hoặc C, tức là mọi tam giác chứa
đỉnh A đều chứa them 1 trong 2 đỉnh B hoặc C. Bỏ đỉnh B và C thì hỏng mọi tam giác. Mâu
thuẫn.

Vậy, tồn tại tam giác ADE mà D,E khác B,C. Tương tự có tam giác BFG mà F,G khác A,C và
tam giác CHK mà H,K khác A,B

Do ADE và BFG chung đỉnh nên giả sử D=F. Khi đó ta có tam giác BDA và CHK có đỉnh
chung nên H hoặc K trùng D, chẳng hạn H=D. Khi đó ABCD là graph đầy đủ 4 đỉnh. Mâu
thuẫn.

Bài 8. [IMO 2007] Trong một cuộc thi toán, có một vài thí sinh là bạn của nhau. Tình bạn luôn
là 2 chiều. Ta gọi một nhóm thí sinh là một hội nếu hai người bất kỳ trong nhóm đều quen nhau.
Số phần tử của một hội gọi là size của hội. Biết rằng trong cuộc thi này, size của hội lớn nhất là
số chẵn. Chứng minh rằng có thể chia các thí sinh thành 2 phòng sao cho size lớn nhất của một
hội ở phòng này bằng size lớn nhất một hội ở phòng kia.

Lời giải:
Xét graph có đỉnh là các thí sinh và các cạnh nối giữa hai thí sinh quen nhau. Khi đó, graph con
đầy đủ nhiều đỉnh nhất sẽ có một số chẵn đỉnh. Ta cần chứng minh tồn tại một cách chia các
đỉnh graph thành 2 phần mà graph con đầy đủ của mỗi phần có size bằng nhau.

Gọi K là graph con đầy đủ có size lớn nhất bằng 2k. Ban đầu ta chia tập đỉnh thành 2 phần X và
Y, trong đó X chính là graph con đầy đủ K ở trên và Y là phần còn lại. Ta gọi f(A) là size của
graph con đầy đủ lớn nhất của graph A

+) Nếu f ( X )  f (Y ) , bài toán được giải quyết

+) Nếu f ( X )  f (Y ) thì do tính lớn nhất của f ( X ) , ta có f ( X )  f (Y ) . Nhận thấy nếu bớt một
đỉnh của X sang Y, còn lại X 1 thì f ( X 1 )  f ( X )  1 , còn f(Y) giữ nguyên hoặc tăng lên 1.

Nếu tồn tại n sao cho bỏ n phần tử của X sang Y, f ( X n )  f (Yn ) thì bài toán được giải quyết

Nếu không tồn tại n như thế, thì phải tồn tại 1 số t sao cho f ( X t )  r , f (Yt )  r  1 . Khi đó ta đã
bỏ t phần tử của tập X sang tậpY, các phần tử đó lập thành tập Z. Rõ rang t | Z | k vì nếu
t  k  1 thì f ( X t )  2k  t  k  1, f (Yt )  k  1 . Mâu thuẫn

 Nếu tồn tại một phần tử x của Z không thuộc giao của mọi graph đầy đủ của Yt có size r+1, ta
chuyển nó quay trở lại X, khi đó f ( X t  {x})  r  1  f (Yt  {x}) , bài toán được giải quyết
 Nếu mọi phần tử của Z đều thuộc giao của tất cả các graph con đầy đủ của Y có size r+1. Với
mỗi graph con đầy đủ đó, ta chuyển các phần tử của nó, không thuộc Z quay trở lại X.
Rõ rang các phần tử này không thể cùng với X t tạo thành graph đầy đủ vì nếu ngược lại, do
phần tử này tạo với Z và cả X t một graph đầy đủ nên ta có một graph đầy đủ
X t  Z  {x}  X  {x} có size lớn hơn X. Mâu thuẫn với tính lớn nhất của X
Ngoài ra, sau khi chuyển tất cả các phần tử đó ( tạo nên tập U) quay lại X thì f (Y  U )  r . Gọi
N là graph con đầy đủ trong X t  U có | N | lớn nhất trong X, ta chứng minh | N | r . Thật vậy:
N  Z là graph đầy đủ nên | N  Z | 2k | N |  | Z | 2k | X t |  | Z | , tức là | N || X t | r . Điều
phải chứng minh.

Vậy luôn có thể chia các thí sinh thành 2 phòng sao cho thỏa mãn đề bài.

Tiếp theo, với các khái niệm về bậc của đỉnh, của graph, khái niệm dãy đỉnh liên tiếp, chu
trình…, các bài toán giải được lại thêm đa dạng, phong phú.

2. Dãy đỉnh kế tiếp, đường, dãy đỉnh kế tiếp khép kín, chu trình.

Một dãy đỉnh kế tiếp là một dãy đỉnh v0 , v1 ,, vk mà đỉnh vi kề với đỉnh vi 1 với mọi
i  1, 2,, k  1 ( có một cạnh nối giữa hai đỉnh này), trong đó các đỉnh có thể lặp lại. Ví dụ
( x1 , x2 , x3 , x5 , x6 , x7 , x5 , x4 ) là một dãy đỉnh kế tiếp và đỉnh x5 lặp lại.
Một đường là dãy đỉnh kế tiếp nhưng không có đỉnh nào bị lặp lại. Ví dụ: ( x1 , x2 , x3 , x5 , x4 )
trong dãy đỉnh kế tiếp trên là một đường

Một dãy đỉnh kế tiếp khép kín là một dãy đỉnh kế tiếp có điểm đầu và cuối trùng nhau

Một chu trình là một dãy đỉnh kế tiếp khép kín chỉ có đúng điểm đầu và cuối trùng nhau

Chu trình đi qua lần lượt tất cả các đỉnh một lượt gọi là chu trình Halmington

Hai dãy đỉnh kế tiếp ( dãy đỉnh kế tiếp khép kín, đường, chu trình) gọi là rời nhau nếu chúng
không có đỉnh chung

Ví dụ 1. Xét graph biểu diễn bởi hình vẽ sau:

v3
v6

v5
v1 v2
v7

v4
v8

Trong graph này, (v1 , v2 , v3 , v5 , v6 , v7 , v5 , v4 ) là một dãy đỉnh kế tiếp; (v1 , v2 , v3 , v5 , v4 ) là một đường;
(v4 , v2 , v3 , v5 , v7 , v6 , v5 , v4 ) là một dãy đỉnh kế tiếp khép kín; (v4 , v2 , v3 , v5 , v4 ) là một chu trình.

Các dãy đỉnh kế tiếp (v1 , v2 , v3 ) và (v4 , v5 , v7 , v6 , v5 , v8 ) là rời nhau.

3. Bậc của đỉnh, độ dài đường, độ dài chu trình.


Cho graph G và đỉnh v0 , nếu v0 kề với k đỉnh khác của G thì ta nói bậc của đỉnh v0 bằng
k, ký hiệu d (v0 )  k

Trong trường hợp graph có hướng thì kí hiệu d  (v0 ) và d  (v0 ) là số cạnh xuất phát từ v0 và đi
đến v0 tương ứng. Ta có d (v0 )  d  (v0 )  d  (v0 )

Với graph G cùng tập đỉnh {vi } , ta ký hiệu (G) là số lớn nhất trong các số d (vi ) và  (G) là số
nhỏ nhất trong các số d (vi )

Ví dụ 1.
v1 v3
v5

v2 v6
v4

Với hình vẽ trên thì (G)  3;  (G)  1 vì

d (v1 )  d (v3 )  2; d (v2 )  3; d (v4 )  d (v5 )  d (v6 )  1

Độ dài của một đường là số cạnh của nó, cũng là số đỉnh của nó trừ 1

Độ dài của một chu trình là số cạnh của nó, bằng luôn số đỉnh của nó.

Sau đây là ví dụ rất hay được sử dụng.

Ví dụ 2. Cho graph G với u, v là 2 đỉnh của nó. Nếu có một dãy đỉnh kế tiếp xuất phát từ u, kết
thúc ở v thì có một đường cũng xuất phát từ u và kết thúc ở v

Lời giải:

Nếu có một chu trình trong dãy đỉnh kế tiếp là {u0 , u1 , u2 ,, uk , uo } , ta bỏ các đỉnh {u1 , u2 , , uk } .
Lặp lại đến khi không còn chu trình nào. Đương nhiên phần còn lại là một đường.

Ví dụ 3. Cho graph G và hai đỉnh v1 , v2 của nó. Biết rằng có 2 dãy đỉnh liên tiếp từ v1 đến v2 ,
một có độ dài chẵn, một có độ dài lẻ. Chứng minh rằng trong G có ít nhất một chu trình với độ
dài lẻ.

Lời giải:

Đơn giản là ghép 2 dãy đỉnh liên tiếp đó lại, bỏ đi các chu trình thừa là xong. Nếu các chu trình
thừa có chu trình độ dài lẻ, ta lấy luôn chu trình đó làm kết quả, nếu mọi chu trình thừa đều có
độ dài chẵn, thì chu trình cuối cùng thu được có độ dài lẻ.

Cụ thể hơn. Giả sử trong G không có chu trình nào có độ dài lẻ và hai dãy đỉnh liên tiếp từ v1
đến v2 lần lượt là (v1 , x1 , x2 ,, xk , v2 ) độ dài chẵn và (v1 , y1 , y2 , , yl , v2 ) độ dài lẻ. Nếu trong các
dãy đỉnh liên tiếp trên có chứa một chu trình. Chẳng hạn (v1 , x1 , x2 ,, xk , v2 ) chứa chu trình
( x j , x j 1 , , x p  x j ) thì chu trình đó có độ dài chẵn và dãy đỉnh kế tiếp
(v1 , x1 , , x j 1 , x j , x p 1 , , v2 ) vẫn có độ dài chẵn. Cứ tiếp tục như vậy đến khi ta được một đường
từ v1 đến v2 thì độ dài đường này là chẵn. Tương tự từ dãy đỉnh liên tiếp (v1 , y1 , y2 , , yl , v2 ) ta
được một đường độ dài lẻ. Kết hợp hai đường này tại v1 , v2 ta được một chu trình với độ dài lẻ.

*Ví dụ 4. Cho graph hữu hạn với tập đỉnh V  {v1 , v2 ,, vn } và tập cạnh E. Khi đó
n

 d (v )  2 | E |
i 1
i

Hệ quả: Nếu G là graph có một số lẻ đỉnh thì có một số lẻ đỉnh có bậc chẵn

Lời giải:

Gọi x là số cặp (v, e) với v là 1 đỉnh của graph và e là cạnh chứa đỉnh v. Ta đếm x theo 2 cách

Với mỗi đỉnh v, có d(v) cạnh e gắn với nó nên có d(v) cặp (v,e)

Vậy x   d (v)
vG

Mặt khác, với mỗi cạnh e, có 2 đỉnh v gắn với nó, nên số cặp là x  2 | E |

Vậy x   d (v)  2 | E |
vG

Hệ quả: Nếu G có một số chẵn đỉnh bậc chẵn thì có một số lẻ đỉnh bậc lẻ, tức là tổng bậc là số
lẻ. Mâu thuẫn kết quả trên.

Ví dụ 5. [Balkan MO 2002] Cho G là graph thỏa mãn mọi đỉnh đều có bậc không nhỏ hơn 3.
Chứng minh graph có ít nhất 1 chu trình chẵn.

Lời giải:

Xét một đường có độ dài lớn nhất trong G là u1 , u2 , , uk . Do u1 có bậc lớn hơn hoặc bằng 3 nên
tồn tại 2 đỉnh x,y khác u2 nối với u1 . Nếu x , y không thuộc tập S  {u1 , u2 ,, uk } thì ta có đường
dài hơn đường ban đầu nhờ nối thêm x hoặc y. Vậy cả x và y đều thuộc tập S, nên x  ui , y  u j
với i, j {1, 2,, k} . Như vậy, ta tạo ra 2 chu trình {u1 , u2 ,, ui };{u1 , u2 ,, u j } , nếu hai chu trình
này đều lẻ thì chu trình cần tìm là {u1 , ui , ui 1 ,, u j } là chẵn

4. Graph chia đôi được.

Trong graph G, V’ là một tập đỉnh của nó, được gọi là độc lập nếu không có cạnh nào nối 2
đỉnh bất kỳ của nó. G được coi là chia đôi được nếu có có thể tách thành 2 phần độc lập

Một graph được gọi là chia đôi được đầy đủ nếu G chia đôi được và nếu gọi A và B là 2 tập đỉnh
do chia đôi thì mỗi đỉnh thuộc A đều nối với 1 đỉnh thuộc B. Ta ký hiệu graph G như thế là K m,n
nếu | A | m,| B | n

Ví dụ 1. Hình vẽ sau biểu diễn một graph chia đôi được với 2 thành phần là

X  {v1 , v2 , v3 , v4 }; Y  {v5 , v6 , v7 , v8 }

Nhưng đó không phải là một graph chia đôi được đầy đủ.
v1 v5

v2 v6

v3 v7

v4
v8

Dễ thấy một graph chia đôi được khi và chỉ khi mọi thành phần liên thông của nó chia đôi được
n2
và có nhiều nhất cạnh .
4

Tuy nhiên ví dụ sau mô tả tốt hơn các graph chia đôi được

*Ví dụ 2. Chứng minh rằng một graph chia đôi được khi và chỉ khi mọi chu trình của nó có độ
dài chẵn.

Lời giải:

Trước hết, ta chứng minh nếu G có chu trình độ dài lẻ thì nó không chia đôi được. Gọi chu trình
đó có độ dài 2n  1 và giả sử G có thể chia đôi được và 2 tập độc lập thu được là X và Y. Khi đó
tồn tại ít nhất 1 tập chứa n  1 đỉnh của chu trình, trong n  1 đỉnh này phải có 2 đỉnh kề nhau.
Điều này mâu thuẫn do các đỉnh của cả X và Y đều không nối với nhau.

Ngược lại, nếu G không có chu trình nào có độ dài lẻ. Ta sẽ chỉ ra cách chia đôi G. Vì một graph
chia đôi được khi và chỉ khi các thành phần liên thông của nó chia đôi được nên ta chỉ cần xét G
liên thông. Xét hai tập X, Y ban đầu là tập rỗng. Chọn một đỉnh v0 của G vào tập X. Xét đỉnh v1
, lấy một dãy đỉnh kế tiếp từ v0 đến v1 , nếu độ dài dãy đỉnh này chẵn, ta đưa v1 vào X, ngược lại
đưa v1 vào Y. Ta thấy v1 không thể cùng thuộc X và Y vì nếu thế, nối với v0 theo hai dãy đỉnh
kế tiếp, ta được một chu trình có độ dài lẻ. Nếu có 2 đỉnh p1 và p2 trong Y kề nhau thì xét dãy
đỉnh kế tiếp từ v0 đến p1 , độ dài phần này lẻ, thêm cạnh p1 p2 rồi p2v0 , ta được một chu trình có
độ dài lẻ. Mâu thuẫn. Vậy 2 đỉnh bất kỳ trong Y là không nối với nhau, nghĩa là Y độc lập.
Tương tự với tập X, ta cũng được X độc lập

Với thêm hiểu biết về bậc và graph chia đôi được, ta có thể giải quyết thêm được khá nhiều bài
toán phức tạp khác.
Bài 1. Trong một kỳ nghỉ hè, có 7 người bạn đi nghỉ mát ở các nơi khác nhau. Họ hứa sẽ viết
thư gửi ảnh cho đúng 3 người trong số họ. Chứng minh rằng có một người không viết thư trả lời
người đã viết thư cho mình.

Lời giải:

7 người ứng với 7 đỉnh của graph. Giả sử tất cả những người được nhận thư đều trả lời thư. Khi
đó quan hệ nhận thư-trả thư giữa hai người được xem như một cạnh của graph với 7 đỉnh trên.
Như thế, ta được một graph có 7 đỉnh ( lẻ) và mỗi đỉnh đều bậc 3 ( một số lẻ đỉnh bậc lẻ). Mâu
thuẫn

Vậy có ít nhất 1 người không viết thư trả lời người đã viết cho mình.

Bài 2. Trong một lớp có 1 em học sinh chơi thân với một số lẻ bạn. Chứng minh rằng có 2 em
học sinh cùng chơi thân với một số chẵn bạn trong lớp.

Lời giải:

Giả sử A0 chơi thân với một số lẻ bạn là A1 , A2 ,, A2 n 1 . Xét graph 2n+1 đỉnh A1 , A2 ,, A2 n 1 với
cạnh nối 2 người thân nhau. Rõ ràng một graph lẻ đỉnh phải tồn tại một đỉnh có bậc chẵn là Ai .
Khi đó thì Ai và A0 cùng chơi thân với một số chẵn bạn

Bài 3. Trong một cuộc thi Toán, có 8 thí sinh và có 8 bài toán. Mỗi bài toán được giải bởi đúng
5 thí sinh. Chứng minh rằng có 2 thí sinh mà nếu hợp 2 người họ thì giải được cả 8 bài.

Lời giải:

Xét một graph với đỉnh là các cặp thí sinh {a, b} và các bài toán c . Nếu bài toán c được giải bởi
một trong hai người a hoặc b thì ta nối một cạnh giữa {a, b} và c . Không nối giữa {a, b} với
nhau và các bài toán với nhau. Tức là ta được một graph chia đôi được thành hai tập X , Y mà
X là tập các cặp thí sinh còn Y là tập các bài toán. Vậy bậc của mọi đỉnh c thuộc Y là
5.4
 5.3  25 ( có hai loại đỉnh của X có nối với c  Y : loại 1 là các cặp {a, b} mà cả a và b đều
2
nối với cùng đỉnh c , loại này có C52 cặp; loại 2 là các cặp {a, b} mà chỉ có 1 trong hai nối với c ,
chọn đỉnh nối với c có 5 cách, đỉnh còn lại có 3 cách) nên tổng số cạnh là 25.8  200 . Có
8.7 200
 28 đỉnh trong X nên bậc trung bình các đỉnh trong X là  7 . Do đó tồn tại ít nhất 1
2 7
đỉnh trong X có bậc 8 và đó là điều phải chứng minh.

Bài 4. [IMO 1990]. Có 2n  1 điểm trên một đường tròn, k điểm trong số chúng được tô đen. Ta
nói một cách tô màu là tốt nếu tồn tại hai điểm màu đen mà trên một trong hai cung tròn xác
định bởi hai điểm đó có đúng n điểm. Tìm k nhỏ nhất sao cho mọi cách tô màu k điểm đều tốt.

Lời giải:
Xét một graph G với các đỉnh là các điểm đã cho và vẽ một cạnh nối giữa hai đỉnh mà trên một
trong hai cung tròn tạo bởi hai đỉnh đó chứa đúng n điểm. Ta phải chỉ ra số k nhỏ nhất để nếu
tô màu k đỉnh bất kỳ, luôn có 2 đỉnh kề nhau được tô màu. Rõ ràng mỗi đỉnh của graph G đều
có bậc 2 nên G là hợp của các chu trình rời nhau. Nếu ta đánh số các đỉnh là 1, 2,, 2n  1 theo
thứ tự trên đường tròn thì 1 kề với n  2 và n  2 kề với 2n  3  4(mod 2n  1) . Vậy 1 và 4 nằm
trong cùng một chu trình. Nếu 2n  1 không chia hết cho 3 thì G chỉ chứa đúng 1 chu trình nên
k  n là số nhỏ nhất cần tìm. Nếu 2n  1 chia hết cho 3 thì graph G gồm 3 chu trình với độ dài
2n  1
1
2n  1 n2
. Ta chỉ có thể tô màu nhiều nhất là 3  đỉnh của mỗi chu trình mà không có
3 2 3
n2
2 đỉnh nào kề nhau. Vậy k  3  1  n  1 là số cần tìm.
3

Bài 5. Cho graph G có 2017 đỉnh và mỗi đỉnh có bậc ít nhất là 93. Chứng minh rằng tồn tại một
chu trình có độ dài không vượt quá 63.

Lời giải:

Giả sử mọi chu trình của G đều có độ dài tối thiểu là 64. Gọi chu trình ngắn nhất là
C  (v1 , v2 ,..., vn , v1 ) với n  64

Với mỗi vi , đặt vi ,1 , vi ,2 ,....vi ,m là các đỉnh kề với vi mà không thuộc chu trình và di là bậc của vi
i

Ta có di  93  2  91 do mỗi đỉnh có đúng 2 đỉnh kề với nó trong chu trình

Nếu vi ,a  v j ,b  x với i, j , a, b nào đó.

+) Nếu | i  j | 3 , xét chu trình v0 ,, vi , x, v j ,, vn , v0 . Đây là chu trình có độ dài nhỏ hơn chu
trình C vì thêm đúng hai cạnh vi x và xv j và bớt ít nhất 3 cạnh vi vi 1 , vi 1vi  2 ,, v j 1v j . Mâu thuẫn
với tính ngắn nhất của C

+) Nêu | i  j | 2 thì vi , vi 1 ,..., v j , x, vi tạo ra một chu trình có độ dài nhiều nhất là 4. Mâu thuẫn.

Từ đó vi ,a  v j ,b với mọi i  j , tức là mỗi đỉnh của C nối với ít nhất 91 đỉnh khác và hai đỉnh bất
kỳ trong C không nối tới cùng một đỉnh nào ngoài chu trình. Suy ra số đỉnh ngoài chu trình ít
nhất là 64.91, từ đó G có ít nhất 91.64  64  2017 đỉnh. Mâu thuẫn.

Vậy tồn tại một chu trình có độ dài không vượt quá 63. Điều phải chứng minh

Bài 6. [APMO 1989] Gọi S là tập gồm m cặp (a, b) các số nguyên dương thỏa mãn
m(4m  n 2 )
1  a  b  n . Chứng minh rằng tồn tại ít nhất bộ (a, b, c) mà (a, b);(a, c), (b, c) thuộc S
3n

Lời giải:
Xét một graph với đỉnh là các số nguyên 1, 2, n . Một cạnh được nối giữa x và y nếu ( x, y)
hoặc ( y, x) thuộc S . Một bộ ba đỉnh gọi là “tốt” nếu có cạnh nối giữa bất kỳ 2 đỉnh nào trong
chúng. Gọi d ( x) là số cạnh chứa x . Xét hai đỉnh x và y được nối với nhau, ta có
d ( x)  d ( y)  2 cạnh nối với n  2 đỉnh còn lại và do đó có ít nhất d ( x)  d ( y)  2  (n  2) đỉnh
nối với cả x và y . Vậy có ít nhất d ( x)  d ( y)  n bộ tốt chứa cả x và y . Vậy tổng số bộ tốt ít
n
d ( x)  d ( y )  n
nhất bằng  . Ta có  (d ( x)  d ( y ))   d ( x) 2 .
( x , y )S 3 ( x , y )S x 1

n n

d ( x)  d ( y )  n  d ( x)2  nm ( d ( x)) 2
nm m(4m  n 2 ) n
Vậy 
( x , y )S 3
 x 1
3
 x 1
3n

3

3n
vì  d ( x)  2m .
x 1

Ta có điều phải chứng minh.

Bài 7. [Croatian TST 2015 ;Belarussian National Olympiad 2014]

Có n thành phố trong một nước, một số thành phố có đường bay đến thành phố khác nhưng
không có thành phố nào có đường bay thẳng đến tất cả các thành phố khác. Với hai thành phố
( A, B) bất kỳ, luôn có đúng một cách sử dụng nhiều nhất 2 chuyến bay để đi từ A đến B và
ngược lại. Chứng minh rằng n  1 là số chính phương.

Lời giải:

Gọi G là graph với đỉnh là các thành phố v1 ,, vn và cạnh nối giữa các thành phố có đường bay
giữa chúng. Gọi di và Ai là bậc và tập các đỉnh kề với đỉnh vi . Ta sẽ đếm số đỉnh của G theo hai
cách

Hiển nhiên 1 cách cho đáp số là n . Bây giờ chọn bất kỳ đỉnh vi nào, ta nhận thấy bất kỳ 2 đỉnh
nào của Ai đều không nối với nhau ( ngược lại, chẳng hạn u và v được nối với nhau thì có 2
đường (u, vi , v) và (u, v) từ u đến v mà cần nhiều nhất 2 chuyến bay). Hơn nữa mọi đỉnh w
không thuộc Ai đều phải nối với đúng 1 đỉnh của Ai ( nếu w không nối với đỉnh nào của Ai thì
từ vi đến w không thể có đường bay chỉ với 2 chuyến bay, nếu w nối với hai đỉnh của Ai thì có
hai đường bay thỏa mãn.)

Vậy số cách chọn w là  xAi deg( x)  1 nên số đỉnh của G là

1  di   d( x)  1  1  
x Ai xAi d( x)  n tức là  xAi d( x)  n  1

Đặt M  max1i n (d(vi )), m  min1i n (d(vi )) và giả sử d (vk )  M , d (vl )  m .

Ta có

mM   xAl deg( x)  n  1 (1)


Mm   xAk deg( x)  n  1 (2)

Vậy Mm  n  1 . Như thế nghĩa là dầu bằng xảy ra ở cả (1) và (2), suy ra nếu một đỉnh có bậc M
thì mọi đỉnh kề nó có bậc m và ngược lại, mọi đỉnh bậc m thì các đỉnh kề nó có bậc M (3)

Vậy tất cả các đỉnh thuộc Ak có bậc m và các đỉnh kề nó có bậc M . Vậy mọi đỉnh không thuộc
Ak đều có bậc M ( vì đỉnh đó kề với 1 đỉnh của Ak ).

b1 (M)

a1 (m)
a2 (m) c(m)

a3 (m)

vk (M)

aM (m)

Xét đỉnh b1 không thuộc A, khác vk thì b1 có bậc M . Tuy nhiên b1 chỉ kề với đúng 1 đỉnh của
Ak và m  2 nên b1 kề với đỉnh c khác vk không thuộc Ak . Vậy d (c)  m . Mặt khác c lại kề
với một đỉnh của Ak nên d (c)  M . Ta được m  M nên n  1  m2 là số chính phương. Điều
phải chứng minh

Bài 8. [Bulgaria 2004] Có một nhóm n khách du lịch mà trong đó cứ 3 người thì lại có 2 người
không quen nhau. Biết rằng nếu chia họ lên 2 chiếc xe bus theo bất kỳ cách nào, trên một chiếc
xe bus bất kỳ đều có 2 người quen nhau. Chứng minh rằng tồn tại một người khách du lịch quen
2n
nhiều nhất người còn lại
5

Lời giải:

Ta đang có một graph không có tam giác nào, không chia đôi được ( tương đương với việc tồn
tại một chu trình lẻ). Xét chu trình lẻ ngắn nhất X  {u0 , u1 , u2 ,, uk } , k  5 thì đó là chu trình
đơn, tức là không có đường chéo nào vì nếu không phải có một chu trình lẻ ngắn hơn tạo được
do đường chéo đó.

Xét một đỉnh u bất kỳ bên ngoài, vì không có tam giác nào nên u không nối với 2 đỉnh kề nhau,
ta chứng minh u chỉ nối được với tối đa 2 đỉnh của X.

Thật vậy, trước hết ta chứng minh nếu u nối với 2 đỉnh của X thì u phải nối với 2 đỉnh cùng kề 1
đỉnh trong chu trình X. Nếu ngược lại, giả sử u nối với ui , u j với i  j  3 thì ui và u j chia X
thành 2 đường, một có số chẵn cạnh (  4 cạnh) và một đường có số lẻ cạnh. Thay phần chẵn bởi
u , ui , u j ( có 2 cạnh), ta được một chu trình lẻ ngắn hơn 2 cạnh. Mâu thuẫn.
Bây giờ, nếu u nối với 3 đỉnh của X, luôn tồn tại 2 trong 3 đỉnh đó không cùng kề với 1 đỉnh,
mâu thuẫn.

Vậy, một đỉnh ngoài X chỉ nối với nhiều nhất 2 đỉnh trong X

Xét số cặp (u, v) với u thuộc X, v không thuộc X, u nối với v. Với mỗi u, có đúng d(u)-2 đỉnh v
nối với u ( trừ 2 đỉnh kề với v trong X), nên có (  d (u )  2k cặp. Mặt khác, đếm theo v thì mỗi
u X

đỉnh v có cùng lắm là 2 đỉnh u, vậy số cặp nhỏ hơn hoặc bằng 2(n-k). Tức là

2n 2 n
 d (u )  2k  2(n  k )   d (u)  2n . Gọi v là đỉnh có bậc nhỏ nhất trong X thì d (v) 
u X uX k

5

5. Matching ( ghép cặp được)

Cho graph G, ta nói graph con G’ của G là matching trong G nếu mọi đỉnh của nó đều có bậc
bằng 1. Nếu G’ là matching thì có một số chẵn đỉnh và có thể chia thành các cặp đỉnh rời nhau.
Mọi matching G’ đều chia đôi được và các thành phần ( sau khi chia đôi) có chung số đỉnh. Ta
nói G’ là matching hoàn hảo nếu nó dùng mọi đỉnh của G.

Với một tập con V’ của V, hàng xóm của V’ là tập các đỉnh kề với ít nhất 1 đỉnh của V’, ký
hiệu là (V ) . Chú ý rằng nếu G là graph chia đôi được và hai thành phần là X và Y, nếu V’  X
thì (V ')  Y

Ví dụ 1. Hình vẽ sau đây biểu diễn một graph chia đôi được với 2 thành phần

X  {v1 , v2 , v3 , v4 , v5 , v6 } và Y  {u1 , u2 , u3 , u4 , u5 , u6 }

v1 u1

u2
v2

u3
v3

u4
v4

u5
v5

v6 u6

Xét G’ là graph con với tập đỉnh là tập đỉnh của G và các cạnh v1u4 , v2u6 , v3u2 , v4u1 , v5u3 , v6u5 thì G’
là một matching hoàn hảo. Xét S  {v1 , v2 } thì ( S )  {u1 , u4 , u6 }
Ví dụ 2. G là graph có 2n đỉnh sao cho mọi đỉnh có bậc lớn hơn hoặc bằng n . Chứng minh G
có một matching hoàn hảo

Lời giải:

Ta chứng minh bằng quy nạp theo số cặp đỉnh trong matching. Ban đầu, lấy một cặp đỉnh kề
nhau bất kỳ, ta luôn có một matching với 1 cặp đỉnh. Giả sử ta có một matching với r cặp đỉnh,
r  n . Ta chứng minh sẽ tìm được một matching với r  1 cặp. Gọi A là tập 2r đỉnh của
matching và B là tập các đỉnh còn lại của G . Nếu tồn tại một cạnh giữa hai đỉnh của B , ta thêm
cặp đỉnh đó vào matching. Nếu không, mọi cạnh nối từ một đỉnh của B đều sang 1 đỉnh của A .
Gọi a và b là các đỉnh của B thì có ít nhất 2n cạnh nối với 2 điểm đó. Trong A có r cặp đỉnh
2n
nên theo nguyên lý Dirichlet, tồn tại ít nhất [ ]  3 cạnh phải đi đến cùng 1 cặp. Giả sử cặp đó
r
là (u, v) . Rõ ràng 3 cạnh đó không đi đến cùng một đỉnh a hoặc b được vì chỉ đi từ 2 đỉnh u, v
nên phải có cạnh đến a và có cạnh đến b . Nếu ta bỏ cạnh {u, v} thì ta có thể sử dụng các đỉnh
{a, b, u, v} để tạo thành 2 cặp đỉnh kề nhau và do đó số cặp trong matching sẽ tăng lên 1. Đây
chính là điều phải chứng minh.

*Ví dụ 3. [Định lý Hall] G là một Graph chia đôi được với 2 thành phần X và Y thỏa mãn:
|X|=|Y|. Khi đó G có matching hoàn hảo nếu và chỉ nếu |S|  | ( S ) | với mọi S  X

Lời giải:

Trước hết nhận xét rằng nếu G có matching hoàn hảo thì rõ ràng nếu S  X thì mỗi đỉnh của S
đều tương ứng với 1 đỉnh cùng cặp của Y nên | S || ( S ) | . Ngược lại, nếu | S || (S ) | S  X thì
ta phải chứng minh G có matching hoàn hảo.

Ta chứng minh quy nạp theo n | X | .

Nếu n  1 , hiển nhiên vì chỉ có 2 đỉnh và số hàng xóm của S luôn lớn hơn hoặc bằng 1 nên hai
đỉnh đó được nối với nhau. Ta có matching hoàn hảo.

Giả sử với mọi k  n , kết quả đúng. Ta chứng minh kết quả đúng khi | X | n .

Trường hợp 1. Tồn tại một tập con thực sự S của X mà | S || (S ) | . Đặt (S )  T và
X '  X  S ; T '  Y  T . Chú ý rằng graph G ' tạo từ các đỉnh của S và T và có cạnh tương ứng đã
thỏa mãn các điều kiện của giả thiết và có ít hơn n đỉnh, nên có một matching hoàn hảo trong
G ' . Gọi A  S ' thì | ( S  A) || S  A || S |  | A || T |  | A | nên tồn tại ít nhất | A | đỉnh không
thuộc T mà kề với S  A . Do T  (S ) , các đỉnh này kề với các đỉnh của A . Vậy graph tạo từ
S ' và T ' cũng thỏa mãn điều kiện giả thiết và các thành phần có ít hơn n đỉnh, cũng có
matching hoàn hảo. Vậy G chứa một matching hoàn hảo.
Trường hợp 2. | ( S ) || S | 1 với mọi tập con thực sự S của X . Gọi x là đỉnh tùy ý của X và
y là một đỉnh kề với x . Đặt T  Y  { y} và S  X  {x} . Nhận thấy nếu S '  S thì | (S ') || S ' | 1
, nên tồn tại ít nhất | S ' | đỉnh khác y kề với S ' . Graph tạo từ S và T thỏa mãn các điều kiện
của giả thiết và có thành phần có ít hơn n đỉnh nên có matching hoàn hảo. Thêm cạnh {x, y} vào
nữa là ta được matching hoàn hảo.

Bài 1. [USAMO 1989] Có 20 vận động viên tennis chơi 14 trận sao cho mỗi người trong số họ
chơi ít nhất 1 trận. Chứng minh rằng có 6 trận mà trong đó 12 người khác nhau chơi.

Lời giải:

Xét graph G có 20 đỉnh và 14 cạnh. Chứng minh có một matching 6 cạnh

Giả sử mọi matching đều có tối đa 5 cạnh. Xét matching có số cạnh lớn nhất là k cạnh, k  5 .
Khi đó mọi cặp đỉnh ngoài matching đó ( 20-2k đỉnh) không thể nối với nhau. Như vậy các đỉnh
này chỉ nối được với các đỉnh trong matching, nên số cạnh tối đa không thuộc matching là 20-
2k. Vậy tổng số cạnh không vượt quá 20  2k  k  20  k  15 . Mâu thuẫn.

Ta có điều phải chứng minh

Bài 2. [IMO training 2008, Adrian Tang]

Cho n là số nguyên dương và gọi S1 , S2 ,, Sn là các tập con của tập {1, 2,, n} sao cho với mọi
k ,1  k  n , hợp của k trong số các tập Si chứa ít nhất k phần tử. Chứng minh rằng tồn tại một
hoán vị (a1 , a2 ,, an ) của (1, 2,, n) mà ai  Si

Lời giải:

Xét graph G chia đôi được với các đỉnh là Si và i (1  i  n) , hai thành phần là X  {S1 , S2 ,, Sn }
và Y  {1, 2, n} . Nếu i  S j , ta nối chúng bởi 1 cạnh. Theo giả thiết thì cứ k đỉnh thuộc X , có ít
nhất k cạnh nối từ 1 đỉnh thuộc Y đến chúng. Giả thiết của định lý Hall được thỏa mãn nên G
có một matching hoàn hảo. Matching này chỉ ra hoán vị thỏa mãn đề bài.

Bài 3. [Kazakhstan 2003] Cho hai tờ giấy kẻ ô vuông có diện tích 2003. Mỗi tờ được chia
thành 2003 đa giác có diện tích 1 ( cách chia có thể khác nhau). Để chồng 2 tờ giấy lên nhau.
Chứng minh rằng có thể đâm 2003 nhát kim xuyên vào 2 tờ giấy đó sao cho 4006 đa giác đều bị
đâm

Lời giải:

Gọi G là graph với 4006 đỉnh, mỗi đỉnh là một đa giác có diện tích 1 như đề bài cho. Ta nối
một cạnh giữa hai đỉnh ( đa giác) nếu chúng nằm trong hai tờ giấy khác nhau và khi để chồng
lên nhau chúng có ít nhất 1 điểm chung. Chú ý rằng nếu S là tập k đa giác trong tờ giấy thứ
nhất thì nó phủ một miền có diện tích là k . Vậy để phủ chúng ta cần ít nhất k đa giác thuộc tờ
thứ 2. Theo định lý Hall, ta có một matching hoàn hảo. Sử dụng matching này, ta xác định được
chỗ cần đâm kim thỏa mãn đề bài.

Bài 4. Cho một bảng vuông n  k với k<n thỏa mãn trong mỗi hình vuông đơn vị có 1 trong n số
1,2,…,n. Biết rằng trong mỗi hàng và mỗi cột, không số nào bị lặp lại. Chứng minh rằng ta có
thể mở rộng bảng vuông đó thành n  n với mỗi ô 1 số trong tập {1,2,…,n} mà trong một hàng
hoặc một cột, không số nào bị lặp lại

Lời giải:

Bổ đề: Một graph chia đôi được có tất cả các đỉnh cùng bậc ( là số dương) thì có một matching
hoàn hảo.

Chứng minh:

Gọi d là bậc của tất cả các đỉnh và X , Y là các thành phần ( chia đôi) của graph. Vì mọi cạnh
của graph đều có đúng 1 đỉnh thuộc X nên tổng số cạnh là d | X | . Tương tự, tổng số cạnh
cũng là d | Y | nên | X || Y | . Ngoài ra, nếu lấy tập con S bất kỳ của X , có s phần tử thì từ S ta
có ds cạnh, do vậy ta không thể có ít hơn s phần tử trong (S ) . Theo định lý Hall, ta có điều
phải chứng minh

Ta sẽ chứng minh rằng có thể mở rộng bảng thành một bảng n  (k  1) với tính chất tương tự.
Xét một graph với 2n  đỉnh, n đỉnh trong chúng đại diện cho các hàng của bảng và n đỉnh là
các số từ 1 đến n . Nếu số không thuộc hàng nào thì ta nối đỉnh đại diện bởi số đó với đỉnh đại
diện cho hàng tương ứng. Chú ý rằng mọi hàng đều có k số nên bậc của mọi đỉnh đại diện cho
hàng đều là n  k . Tuy nhiên mọi số xuất hiện đúng 1 lần trong mỗi cột, nên chúng thuộc k
hàng khác nhau, nghĩa là bậc của các đỉnh đại diện cho các số cũng là n  k . Như vậy, mọi đỉnh
của graph đều có chung bậc. Theo bổ đề thì tồn tại một matching hoàn hảo trong graph đã chọn.
Matching này chỉ rõ số nào sẽ được viết trên hàng thứ k  1 mà các tính chất vẫn được giữ vững.
Ta làm như vậy đến khi thu được bảng n  n .
Kết luận

Chuyên đề này chỉ là một tài liệu bước đầu tiếp cận với graph, hoàn toàn chưa nói đến các định
lý quan trọng, thậm chí chưa đề cập đến tính liên thông của graph. Tuy nhiên, cái được là tạo cơ
hội thực hành cho người đọc ngay từ những khái niệm đơn giản nhất để qua đó hiểu được phần
nào ứng dụng của nó. Khi tìm kiếm tài liệu về graph, tôi thấy không nhiều tài liệu định hướng
theo cách này, nên mỗi khi đọc một tài liệu về graph, người đọc thường cảm thấy nặng nề về lý
thuyết và do đó cảm thấy lý thuyết graph khó dùng. Hy vọng chuyên đề này hữu dụng và được
các bạn đồng nghiệp góp ý, bổ sung ngày càng hoàn thiện.

Mọi ý kiến đóng góp bổ sung xin gửi về địa chỉ email: sinhntsp83@gmail.com. Trân trọng

Hải Dương, tháng 8 năm 2017

.
Tài liệu tham khảo

1. Định lý và vấn đề về đồ thị hữu hạn, Vũ Đình Hòa, NXB Giáo dục
2. IMO training 2008: Graph Theory, Adrian Tang
3. Problem- Solving Methods in Combinatorics, Pablo Soberón Bravo, Birkhauser.

You might also like