[r]
(1)BÀI 03
Hàm Grundy đồ thị
Hàm Grundy hàm toán học xây dựng đồ thị, P M Grundy đề
xuất để nghiên cứu số tính chất lý thú đồ thị
Trước tiên, ta ký hiệu tập số nguyên không âm N = {0, 1, 2, } 2.1 Hàm Grundy
Định nghĩa 2.1: Giả sử G = (V, F) đồ thị Hàm g : V → N gọi
hàm Grundy đồ thị G nếu:
∀x ∈ V : g(x) = {N \ g(F(x))}
Từ định nghĩa suy hai tính chất đặc trưng hàm Grundy sau: 1) ∀x, y ∈ V, y ∈ F(x) g(x) ≠ g(y)
2) ∀u ∈ N , u < g(x) : u ∈ g(F(x)) ; nghĩa là: ∃y ∈ F(x) để g(y) = u
Tính chất 1) g(x) không nằm tập giá trị g F(x), tính chất 2) khẳng định g(x) số nguyên không âm bé số số không thuộc tập giá trị hàm g F(x)
Từ định nghĩa hàm Grundy, ta có số nhận xét sau đây: Đồ thị có đỉnh nút khơng thể có hàm Grundy
2 Nếu F(x) = ∅ g(x) =
3 Tập hợp {x ⎢x ∈V, g(x) = 0} luôn khác rỗng
4 ∀x∈ V : g(x) ≤ ⎢F(x) ⎢, nghĩa làhàm Grundy nhận giá trị khơng lớn Ví dụ 2.2: Hàm Grundy khơng
Hình 2.1 Đồ thị có hai hàm Grundy Ví dụ 2.3: Hàm Grundy khơng tồn
(2)Hình 2.2 Đồ thị khơng có hàm Grundy Vậy với điều kiện đồ thị có hàm Grundy
Định lý 2.1: Đồ thị G khơng có chu trình có hàm Grundy.
Chứng minh:
Khơng tính tổng qt, giả thiết đồ thị G liên thông Ta xây dựng hai dãy tập đỉnh: V0, V1, P0, P1, sau:
V0 = V
P0 = {x⏐F(x) = ∅}
Tập P0 khơng rỗng Vì P0 rỗng có nghĩa đỉnh V ln có đỉnh kề
Khi xuất phát từ đỉnh tạo đường dài tuỳ ý Điều vơ lý G khơng có chu trình
V1 = V0 \ P0
P1 = {x⏐x∈V1∧ F(x) ⊆ V \ V1}
V2 = V1 \ P1
Pi = {x⏐x∈Vi ∧ F(x) ⊆ V \ Vi}, với i≥
Vi+1 = Vi \ Pi
Chú ý: Nếu Pk rỗng Vk rỗng, nghĩa ta vét hết đỉnh đồ thị
Thật vậy, giả sử ngược lại Pk rỗng Vk khơng rỗng, với x ∈Vk
sẽ có y ∈F(x) để y ∉ V \ Vk , nghĩa y ∈ Vk Vậy với đỉnh Vk ln có đỉnh kề thuộc Vk Khi xuất phát từ đỉnh Vk tạo đường dài tuỳ ý Điều vơ lý đồ thị G khơng có chu trình
Hình 2.3 Cách xây dựng dãy tập P0, P1, …, Pk Bây ta xây dựng hàm g : V → N sau:
Với x ∈ P0 ta đặt g(x) =
Với x ∈ P1 nghĩa x ∉ P0 F(x) ⊆ P0, hàm g xác định
(3)Tiếp tục cách làm ta xác định giá trị hàm g đỉnh
đồ thị cách
Định lý chứng minh cách chứng minh cho ta thuật tốn tìm hàm Grundy cho đồ thị phi chu trình
Ví dụ 2.4: Xét đồ thị có hướng sau cách xây dựng hàm Grundy
Hình 2.4 Đồ thị tập Pi 2.2 Tổng đồ thị
Cho hai đồ thị dạng ánh xạ kề: G1 = (V1, F1) G2 = (V2, F2)
Định nghĩa 2.5:
Đồ thị G = (V, F) gọi tổng G1 G2, ký hiệu G1+ G2 với:
1) V = V1 × V2
2) (x,y) ∈ F((a,b)) ⇔ x = a ∧ y∈ F2(b)
x ∈ F1(a) ∧ y = b.
Hình 2.5 Cách xây dựng đồ thị tổng
Giả sử đồ thị G1 có hàm Grundy g1, đồ thị G2 có hàm Grundy g2 Liệu đồ thị
tổng G1 + G2 có hàm Grundy hay khơng mối quan hệ với hàm g1, g2
thế Để trả lời câu hỏi này, đưa phép toán d-tổngtrên số nguyên sau
(4)u = uk uk-1 u1 u0
v = vk vk-1 v1 v0 với ui, vi chữ số
Có thể xem độ dài biểu diễn hai số nhau, không ta thêm số vơ nghĩa vào bên trái số ngắn
Đặt: wi = (ui+vi) mod
Định nghĩa 2.6: Số nguyên w có biểu diễn nhị phân là: wk wk-1 w1 w0 gọi
là d-tổng u v ta ký hiệu: w = u ⊕ v
Chú ý rằng, phép toán thực giống câu lệnh gán w := u XOR v ; ngơn ngữ lập trình Pascal
Ví dụ 2.7: ⊕ = 12 ⊕ 15 = Một số tính chất phép tốn d-tổng:
1 Phép tốn d-tổng có tính chất giao hốn kết hợp: u ⊕ v = v ⊕ u ,
(u ⊕ v) ⊕ w = u ⊕(v ⊕ w)
2 Phép tốn d-tổng có đơn vị: u ⊕ = ⊕ u = u
3 d-tổng hai số chúng giống nhau: u ⊕ v = ⇔ u = v.
Vậy cặp (N, ⊕) trở thành nhóm giao hốn
Định lý 2.2: Nếu g1 hàm Grundy đồ thị G1, g2 hàm Grundy đồ thị
G2 g((x,y)) = g1(x) ⊕ g2(y) hàm Grundy đồ thị tổng G = G1 + G2
Chứng minh:
Theo định nghĩa hàm Grundy, ta cần phải chứng minh: Nếu (x,y) ∈ F((a,b)) g((a,b)) ≠ g((x,y))
2 Nếu u ∈ N , u < g((a,b)) tồn (x,y) ∈ F((a,b)) cho g((x,y)) = u Thật vậy, giả sử (x,y) ∈ F((a,b)) Theo định nghĩa ánh xạ kề F, ta phải xét hai trường hợp sau:
1) x = a, y ∈ F2(b)
Khi g2(y) ≠ g2(b)
g((a,b)) = g1(a) ⊕ g2(b) = g1(x) ⊕ g2(b) ≠ g1(x) ⊕ g2(y) = g((x,y))
2) x ∈ F1(a), y = b : Chứng minh hoàn tồn tương tự Tính chất chứng
minh xong
Bây ta chứng minh tính chất Giả sửu ∈ N u < g((a,b)) Ký hiệu v = g1(a) w = g2(b) Ta có: u < v ⊕ w
(5)Hơn t ⊕ u = u ⊕ v ⊕ w ⊕ u = v ⊕ w > u (*) Xét biểu diễn nhị phân số trên:
u = uk=0 v = vk =1
w = wk
t = 01k
Giả sử k số bit biểu diễn nhị phân số t Nếu uk = (uk + tk) mod = Suy ra: t ⊕ u < u, trái với mệnh đề (*) Vậy uk=
Do bit thứ k t nên vk wk phải Giả sử vk=
Đặt s = t ⊕ v Ta có s < v = g1(a)
Vì g1 hàm Grundy đồ thị G1 nên tồn x ∈ F1(a) cho s = g1(x) Theo định nghĩa đồ thị tổng đỉnh (x,b) ∈ F((a,b))
g((x,b)) = g1(x) ⊕ g2(b) = s ⊕ w = t ⊕ v ⊕ w = u.
Khi wk= chứng minh hoàn toàn tương tự