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

bài giảng môn lý thuyết tính toán - ch3 trò chơi, tìm kiếm vét cạn, độ phức tạp tính toán

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 (457.79 KB, 18 trang )



1
Chương 3. TRÒ CHƠI, TÌM KIẾM VÉT CẠN, ĐỘ PHỨC TẠP
TÍNH TOÁN

NỘI DUNG

3.1 Làm sao để thắng - định nghĩa trò chơi
3.2 Các trò chơi độ phức tạp hàm mũ
3.3 Kỹ thuật rút gọn, máy Turing bất định
3.4 Tính toán nhanh

TÀI LIỆU THAM KHẢO
1. Bài giảng về cơ sở tính toán tại địa chỉ
2. Dexter C. Kozen. Theory of Computation. Springer, 2006
3. Michael Sipser , Introduction to the Theory of Computation, 2nd edition,
Couse technology 2005
4.J. V. Neumann, O. Morgenstern. Theory of Game and Economic Behavior,
Princeton Univ. Press, 1944


2
3.1. Làm sao để thắng - định nghĩa trò chơi

Trong mục này sẽ xét bài toán có lẽ hấp dẫn hơn: trò chơi với thông tin đầy đủ, hai người
chơi và tổng 0. Sẽ xét một vài trò chơi đơn giản không có thuật toán hữu hiệu mà phải tìm kiếm
vét cạn tất cả các cấu hình cho phép.

3.1.1 Định nghĩa trò chơi


Qui tắc của trò chơi n-người G là tập hợp các họ hàm: hàm thông tin f, hàm giá trị v
và hàm chuyển (nước đi) r. Mỗi người chơi i  I tại mỗi bước tham gia vào việc
chuyển cấu hình (thế của trò chơi) x  C thành cấu hình mới r(x, m), m: I  M bằng
cách lựa chọn nước đi m
i
= m(i) dựa trên những hiểu biết f
i
(x) của x. Trò chơi được
tiếp tục cho đến khi đạt được cấu hình kết thúc t  T C. Hơn nữa, v
i
(t) là số điểm
mất đi hoặc tăng thêm của người chơi thứ i. Trò chơi có tổng không: v
i
(t) = 0 và
thông tin đầy đủ: f
i
(x) = x, r(x, m) = r’(x, m
a(x)
), trong đó a(x) là trỏ đến người chơi có
nước đi hiện thời. Giả sử C và M là tập hợp các số nguyên và xét trò chơi thắng-thua
hai người chơi. Đặt I = {1}, a(x) = sign(x) và v
i
(t) = a(t)i. Giả thiết địa điểm chơi
luôn giữ nguyên kích thước: r(x, m) = x và có bộ đếm thời gian xác định tại
mỗi bước để ngăn ngừa trường hợp vô tận của trò chơi.



3
Các ví dụ trò chơi

- Trò chơi cờ : Cờ là trò chơi 2-người chơi với thông tin đầy đủ, nhưng không phải là trò
chơi thắng-thua vì có khả năng hai đấu thủ hòa nhau


Hình 1: Một thế cờ


- Trò chơi bài:Trò chơi bài là trò chơi không có thông tin đầy đủ. Bởi vì trong trò chơi bài, chỉ có
một phần thông tin f
i
(x) (các quân bài trên tay của người chơi thứ i) của thế x là được biết





4
3.1.2 Chiến lược chơi để giành chiến thắng

Mỗi người chơi có chiến lược chọn nước đi đối với mỗi thế. Chiến lược S gọi là chiến thắng
nếu nó đảm bảo thắng lợi cho người chơi biết nó trong mọi cách chơi của các đối thủ. Có thể
mở rộng t trong T thành V trong tất cả các thế có chiến lược chiến thắng cho một bên chơi mà
V(x) = max
m
{a(x)V(r(x, m))}.

Định giá hoặc giải trò chơi có nghĩa là tính V. Cho phép chọn nước đi tốt trong một trò chơi
mở rộng. Thực chất có thể mở rộng trò chơi G thành G’ bằng cách bổ sung thêm giai đoạn
chuẩn bị vào G. Tại giai đoạn chuẩn bị, người chơi A có thể đề nghị thế bắt đầu G, còn đối thủ
B lựa chọn phía để chơi. Sau đó, A có thể bắt đầu chơi G hoặc giảm số đếm các thế chưa sử

dụng và đề nghị thế khác. Hiển nhiên là B sẽ chiến thắng nếu B có thể xác định được phía
thắng trong mỗi thế. Nếu B không thể làm được điều đó và A có thể thì A thắng. Ngoài ra, mỗi
trò chơi có thể thay đổi 1 hoặc tối đa 2 = M nước đi. Định giá một trò chơi là có khả năng
lựa chọn nước đi đúng. Thế của trò chơi mới gồm có thế x của trò chơi cũ và có thể một phần
y của nước đi được mở rộng với các dấu ? trên toàn bộ kích thước của nước đi. Người chơi
hiện thời thay thế dấu ? thứ nhất bằng bit tiếp theo của y. Khi tất cả các dấu ? được thay thế
hết, thế tiếp theo sẽ được sinh bởi r.

Định lý: Mỗi thế của trò chơi đầy đủ thông tin bất kỳ luôn có chiến lược chiến thắng cho một
người chơi.
Định lý trên không còn đúng với trò chơi có thông tin không đầy đủ. Trò chơi có thể giải được


5
bằng cách thử chơi tất cả các chiến lược có thể. Có 2
n
thế với độ dài n


nn
nn 22
2)2( 

chiến lược chơi


1
2
2
n

n
cặp chiến lược cho 2 người chơi. Đối với trò chơi 5-bit là 2
320
. Để
chứng minh định lý, đưa ra một chiến lược nhanh (nhưng với thời gian hàm mũ).

Chứng minh định lý:
- Xây dựng một đồ thị gồm tất cả các thế và các nước đi x-bit.
- Tạo V = 0 và tạo lại V = v trong T.
- Lặp cho đến hết: nếu V(x) = 0, tạo V(x) = a(x)max
m
{a(x)V(r(x, m))}.
Thủ tục dừng khi V
-1
(0) rỗng do hết thời gian hạn định cho trò chơi.
- Về nguyên tắc, khó tính được r. Chỉ xét tính được r trong không gian O(x). Sau đó, 2
2x

nước đi có thể có thể tính được với thời gian hàm mũ 2
3x
. Thuật toán thực hiệ mọi nước đi
trong từng bước. Vì vây, tổng thời gian chạy là 2
3x+1
; tuy cực kỳ chậm (2
313
đối với trò chơi
13 bit) nhưng nhanh hơn rất nhiều so với thuật toán vét cạn (Hàm mũ của hàm mũ thời gian).

 Bài tập: Trò chơi vơi que diêm. Cho 3 hộp, mỗi hộp có 3 que diêm:


Mỗi người chơi lần lượt một số lượng dương các que diêm trong một hộp bất kỳ. Ngừoi chơi
nào đến lượt đi không còn diêm để bốc bị thua. Hãy sử dụng thuật toán nêu trên để định giá
toàn bộ các thế và danh sách giá trị sau mỗi chu trình được thực hiện.


6
3.2. Các trò chơi độ phức tạp hàm mũ
3.2.1. Ví dụ trò chơi dừng
Xét trò chơi với thông tin đầy đủ: Trò chơi cờ tuyến tính trên dải băng hữu hạn. Mỗi quân cờ
luôn là một trong hai phía: W (weak) hoặc S (shy). Mỗi quân cờ được chỉ định giới tính M hoặc
F và có cấp bậc trong tập hợp các cấp bậc ; tập hợp này không phụ thuộc vào kích thước dải
băng. Toàn bộ W nằm bên trái, còn toàn bộ S nằm bên phải . Toàn bộ các ô của dải băng được
lấp đầy. Sự thay đổi chỉ xuất hiện tại ranh giới hoạt động nơi mà W và S gặp nhau (và chiến đấu
với nhau). Người chiến thắng trong cuộc chiến đấu được xác định theo qui tắc giới tính như sau:
(1) Nếu W và S có cùng giới tính thì W thua cuộc
(2) Nếu W và S có giới tính khác nhau thì S bị đảo lộn và thua cuộc.
Bên quân cờ A chiến thắng sẽ thay thế quân cờ B thua cuộc bằng một quân cờ C của mình.
Việc lựa chọn C bị hạn chế bởi bảng qui tắc là danh sách các bộ ba cho phép (ABC). Ta sẽ thấy
rằng, trò chơi này không thể giải được trong thời gian nhỏ hơn hàm mũ. Trước hết ta chứng minh
điều đó đối với trò chơi nhân tạo. Sau đó sẽ rút gọn trò chơi dừng này về trò chơi cờ trên dải
băng.

Ví dụ các phương án trò chơi cờ một chiều:
- Phương án của Martin Gardne:
Mối người chơi có 3 quân cờ: Vua, Mã và Tháp, sắp xếp như hình 2. Trong đó Vua và Tháp
di chuyển như thông thường, còn Mã nhảy 2 ô một và có thể nhảy qua ô có quân khác đang
đứng.


7


Hình 2: Bàn cờ của Martin Gardne

Xét xem bên trắng có thể luôn luôn thắng hay không?

- Phương án của Sid Sackson: Bàn cờ được mô tả như hình 3.


Hình 3: Bàn cờ của Sid Sackson

Trong phương án này, quân vua và quân tháp có thể hoán đổi vị trí cho nhau về cuối của bàn
cờ chỉ một lần duy nhất trong một ván cờ.
Xét xem bên trắng có thể luôn luôn thắng hay không?


8
- Phương án của Dam Glimne: Bàn cờ được mô tả như hình 4.


Hình 4: Bàn cờ của Dam Glimne

Trong phương án này, Vua có thể di chuyển một hoặc hai ô với điều kiện không nhảy qua
một quân cờ khác. Quân xe di chuyển như thông thường. Quân Tượng di chuyển qua một số ô
tùy ý đến một ô cùng màu và có thể nhảy qua các quân cờ ở ô khác màu. Quân Mã di chuyển
qua 2 hoặc 3 ô và có thể nhảy qua quân cờ khác. Quân Hậu di chuyển như quân Xe và như quân
Tượng. Xét xem bên trắng có thể luôn luôn thắng hay không?


Sử dụng máy Turing phổ dụng u (được định nghĩa như một ô tô mát tế bào 1-con trỏ) với u
chỉ dừng khi đầu đọc-ghi của nó lăn ra khỏi tận cùng bên trái của băng vào ô trắng. Bài toán

dừng giới nội BHP(x) đơn định nếu u(x) dừng (tức là ô tận cùng bên trái băng được trỏ vào
bên trái) trong 2
x
bước. Điều đó đòi hỏi (2
x
) bước. Ta chuyển u thành một trò chơi dừng.


9
Các người chơi: L đòi hỏi u(x) dừng sau một khoảng thời gian (và cần có chiến thuật giành
chiến thắng nếu có); đối thủ của nó là S. Băng gồm 4 phần (hình 5): một sơ đồ, input cho u, số
nguyên dương p ( thế) và t (thời gian thực hiện của u(x)). Sơ đồ biểu diễn trạng thái A của ô p
tại thời điểm t+1 và B
s
, s  {0, 1}, của ô p+s tại thời điểm. A, B bao gồm cả sự điều khiển
con trỏ; B có thể tahy thế bởi “?”. Một vài trạng thái của băng có thể phạm luật: (1) hai trạng
thái B
s
chỉ vào cách xa mỗi một, (2) A khác với kết quả được qui định bởi qui tắc chuyển đối
với B
s
, (3) t = 1 trong khi (B
s
)  x
p+s
( Tại t = 1, u(x) ngay lập tức bắt đầu, nhưng băng chứa
input x ở bên trái, đầu đọc-ghi trong khởi trạng ở phía cuối với các ô trắng hướng ra bên phải)




Hình 5: Hình ảnh của băng

Qui tắc của trò chơi: Trò chơi bắt đầu với cấu hình trong hình 6.


Hình 6: Cấu hình khởi tạo trò chơi


10
L đi đầu tiên và thay thế các dấu ? bởi các ký hiệu theo đòi hỏi tương ứng trạng thái của ô
p+s tại bước t của u(x) (Xem hình 7).


Hình 7: Nước đi của L

S đi như sau: chọn s, chép B
s
vào thế của A, điền các dấu ? vào B, cộng s vào p và -1 vào t
(Xem hình 8).


Hình 8: Nước đi của S

Chú ý rằng, L có thể phạm sai lầm (tức là điền vào dấu ? không đúng như tính toán thực tế
của u(x)), với điều kiện L luôn kiên định vơi qui tắc nêu trên. S có thể tiến hành kiểm tra hai cấu
hình băng liên tiếp. S không thể dựa vào các nước đi trước đây hoặc tính toán thực tế của u(x)
như là căn cứ đối với sai lầm của L.


11

3.2.2. Chiến lược trong trò chơi
Nếu u(x) thực sự dừng sau 2
x
bước thì cấu hình khởi tạo là đúng đối với tính toán
của u(x). L có chiến lược thắng hiển nhiên (nhưng khó tính toán): L luôn nói sự thật
trong suốt quá trình tính toán. L luôn kiên định. S sẽ thua khi t = 1 và không thể giảm
bớt hơn nữa. Nếu cấu hình khởi tạo là sai thì S có thể thắng nếu L phạm sai lầm. Nếu
L phạm sai lầm chỉ một lần, S có thể buộc L luôn sai lầm trong suốt quá trình dẫn đến
t = 1.

Nếu hộp bên trên a của cấu hình hợp lệ là sai thì các hộp phía dưới b, c, d không
thể tất cả đều đúng, vì theo qui tắc đơn định, a duy nhất trong chúng. Nếu S đoán
nhận một cách chính xác b, c hoặc d là sai thì S đưa nó lên đầu trong nước đi của
mình thì L sẽ luôn bị buộc phải phạm sai lầm. Tại thời điểm t = 1, toàn thể các mạch
đều bị giảm xuống, L bị đặt vào tình thế phạm sai lầm do cấu hình không thể thực
hiện xâu vào thực tế x, nghĩa là, cấu hình đó phạm luật. Nói cách khác, L không thể
đánh lừa được S trong toàn bộ thời gian: dẫn đến thời điểm nào đó, S sẽ nắm được cơ
hội. Lời giải của trò chơi này đưa đến câu trả lời cấu hình khởi tạo là đúng hay
không?, tức là u(x) dừng sau 2
x
bước hay không, với (2
x
) bước. Trò chơi này là
nhân tạo tăng thêm hấp dẫn của BHP vì nó không đề cấp đến tính hàm mũ trong định
nghĩa. Ta sẽ thu gọn nó thành trò chơi đúng nghĩa (Trò chơi cờ tuyến tính trên dải
băng) và cũng chứng minh tính hàm mũ của nó.


12
3.3. Kỹ thuật rút gọn, máy Turing bất định

3.3.1. Mô phỏng trò chơi máy Turing bằng trò chơi cờ tuyến tính
 Để rút gọn trò chơi dừng về trò chơi cờ tuyến tính cần đưa vào một số khái niệm:
- Máy Turing không tiền định (NTM) là máy Turing TM mà đôi khi xảy ra sự thay đổi trạng
thái (giới hạn) được lựa chọn một hàm (của cấu hình TM), thực hiện bởi một bộ điều khiển. Máy
TM (nguyên bản) M thừa nhận xâu x nếu M(x) = yes, còn NTM M thực hiện nếu cho trước bộ
điều khiển d sao cho M
d
(x) = yes. NTM mô tả những trò chơi một người chơi, chẳng hạn khối
Rubic với các qui tắc đơn giản. Ta có thể tính toán chiến lược chiến thắng với thời gian hàm mũ
(Vét cạn tất cả các thế).
- Các TM xen kẽ (ATM) là sự biến đổi của NTM được điều khiển bởi hai bộ điều khiển xen
kẽ (người chơi) l và r. Một xâu được thừa nhận nếu tồn tại l mà với mọi r có M
l,r
(x) = yes. Trò
chơi của ta có thể xem như một ATM sử dụng không gian nhỏ nhưng với thời gian hàm mũ để
đưa ra kết quả của trò chơi. Nó nhắc nhở l và r lần lượt lựa chọn nước đi (trong một vài bước nếu
nước đi được xác định bởi một số bit) và tính thế kết quả cho đến khi có người chơi chiến thắng.
 Trước hết ta mô phỏng trò chơi máy Turing bởi L-trò chơi cờ, một phương án của trò chơi cờ
tuyến tính. Nó sẽ có bàn cờ như hình 9 và giống như cờ, có 6 cấp bậc.


13

Hình 9: Bàn cờ tuyến tính
Khác với trò chơi cờ tuyến tính, trong đó chỉ quân cờ chiến thắng được phép thay thế, trong
L-trò chơi cờ, quân cờ chiến thắng cũng có thể thay thế bởi quân cờ (có cùng giới tính) cùng phe;
bit giới tính được xác định bởi bít phe trong các bước trước, và một bảng tùy ý phù hợp hơn qui
tắc giới tính đơn giản để xác định quân cờ chiến thắng.
 Quá trình mô phỏng sẽ hoàn tất bằng mô tả trò chơi dừng như là tính toán ATM mô phỏng
bởi máy Turing phổ dụng (Sử dụng lệnh “=” đối với các input của người chơi). Máy Turing

phổ dụng được xem như là mảng các tế bào ô tô mát 1-con trỏ: các ô W ở bên phải, các ô S ở
bên trái. Đầu đọc-ghi của TM được đặt nước đi trong lúc kết thúc tại cuối băng mà nhữn
quân cờ không thua nằm ở bên trái. Quá trình chuyển L-trò chơi cờ về trò chơi cờ tuyến tính
cho phép thay đổi giới tính , mở rộng cấp bậc, và thay thế mỗi một chuyển vị bởi một vài
chuyển vi, với mục đích quân cờ chiến thắng đã được xác định đơn nhất bởi qui tắc giới tính
và không bị thay thế. Tuy vậy, mỗi thuật toán nhanh giải trò chơi cờ tuyến tính cũng có thể
áp dụng để giải các trò chơi khác. Do trò chơi dừng đòi hỏi thời gian hàm mũ nên trò chơi cờ
tuyến tính cũng thế.


14
3.3.2. Cân bằng yêu cầu bộ nhớ và độ phức tạp tính toán

 Các tính toán không tiền định với bộ nhớ tuyến tính là các trò chơi trong đó tại mỗi thế có
nhiều hơn một nước đi (và tính được dễ dàng). Ta đã biết, không có cận dưới siêu tuyến tính
chung hoặc cận trên hàm mũ đối với thời gian để xác định kết quả của các trò chơi đó. Đó
chính là vấn đề cân bằng bộ nhớ và độ phức tạp tính toán. Ta đã gặp vấn đề cân bằng khi sử
dụng kỹ thuật chương trình động: tiết kiệm thời gian thì phải mở rộng bộ nhớ. Ta nhớ lại
máy song song: thời gian là số lượng các bước cho đến khi bộ xử lý cuối cùng dừng, không
gian chính là số lượng bộ nhớ cần sử dụng. Độ phức tạp là số tổ hợp các bước của tất cả các
bộ xử lý. Độ phức tạp nhỏ sẽ có giá trị giới hạn bởi đa thức của độ dài input, còn độ phức tạp
lớn sẽ có giá trị hàm mũ.
 Ta gọi tính toán hẹp  thời gian hoặc không gian yêu cầu là đa thức
 Ta gọi tính toán nén  thời gian và không gian đều yêu cầu là đa thức
 Trong mục 3.4 sẽ thu các quá trình tính toán với thời gian lớn, không gian nhỏ về tính toán
(song song) với thời gian nhỏ, không gian lớn (Xem hình 10).


15


Hình 10. Mô hình tính toán hẹp
 Có thể chuyển tính toán hẹp thành tính toán nén? Điều đó tương đương với việc tồn tại thuật
toán P-thời gian giải quyết mọi trò chơi nhanh, tức là trò chơi có qui tắc chuyển vị P-thời
gian và bộ đếm xác định mỗi nước đi, được giới hạn số lượng các nước đi bởi đa thức. Thuật
toán trong mục 3.1 có thể cài đặt song song với P-thời gian đối với mỗi trò chơi. Ngược lại,
mỗi tân từ tính được hẹp có thể biểu diễn như là việc xác định người chiến thắng trong trò
chơi nhanh (tương tự trò chơi dừng). Vì vậy, các trò chơi nhanh (tức là tính toán kế tiếp hẹp)
phù hợp với tính toán tiền định lớn.

 Câu hỏi liên quan: Có phải toàn bộ các thuật toán độ phức tạp hàm mũ (chẳng hạn, giải
quyết trò chơi cờ tuyến tính) là tương đương tính toán hẹp? Có hai giả thuyết loại trừ lẫn
nhau: có thể giải bài toán dừng giới nội thời gian hàm mũ trong một bộ nhớ đa thức.


16
3.4. Tính toán nhanh
3.4.1. Kỹ thuật song song hoá
Gỉa sử một giáo sư có trong văn phòng một chương trình (đối với một máy nhỏ có không
gian tuyến tính và thời gian hàm mũ) giải các bài toán trong kỳ thi sắp tới. Bạn đột nhập vào văn
phòng của giá sư trước khi kiểm tra và lấy được băng chương trình. Thời gian của bạn rất ngắn,
không đủ để chạy chương trình. Nhưng cũng trong văn phòng, bạn tìm được mật khẩu giúp bạn
truy nhập được vào máy lớn đã sẵn sàng, mà máy này có tài nguyên không gian không hạn chế
(có số lượng hàm mũ các bộ xử lý song song, bộ nhớ, …). Bạn sẽ làm thế nào, hỡi chàng sinh
viên ranh mãnh, lợi dụng tài nguyên vô hạn để giải bài thi trong một thời gian ngắn?
Hãy sinh đồng thời tất cả các cấu hình của máy nhỏ với không gian nhớ tuyến tính mà mỗi
một như là quá trình song song. Sẽ có M = n
O(n)
cấu hình/quá trình, tức là có n
O(n)
đồ thị n đỉnh và

O(n) cạnh. Mỗi một cấu hình/quá trình x tính một con trỏ x  x’, trong đó x và x’ là cấu hình
liên tiếp của máy nhỏ của giáo sư. Mỗi cấu hình/quá trình thực hiện một sao chép các con trỏ cúa
các thế hệ kế tiếp x  x’  x’’ thành x  x’’. Tiếp theo, mỗi bước đơn của con trỏ bị xóa và thủ
tục được lặp đối với các con trỏ 4-bước, 8-bước, .
Nếu máy nhỏ của giáo sư dừng thì nó không lặp cấu hình và phải ổn định trong thời gian <
M. Tuy nhiên, thủ tục con trỏ-nén sẽ thực hiện logM = O(n logn) bước và chỉ với P-thời gian.
Thủ tục đó là đầy đủ, chỉ cần thực hiện cấu hình input để kiểm tra và nó sẽ trỏ đến cấu hình kết
quả. Độ phức tạp (thời gian*không gian) tính toán là rất lớn. Đây không phải là cách thức để rút
gọn độ phức tạp về đa thức, nhưng giúp cho việc cần phải cân bằng không gian với thời gian.



17
3.4.2. Tính toán với bộ nhớ nhỏ: trò chơi đặt sỏi (Pebble)

Xét một mảng lớn M các ôtômát tương tác nhau chạy song song với P-thời gian. Ta muốn
tính được kết quả trong không gian đa thức, mặc dù thời gian có thể dài. Giả thiết M là mạng kết
nối cố định (có thể mô phỏng mọi PPM). Đồ thị không chu trình, có hướng ở bên phải được sử
dụng như là một lược đồ không-thời gian các thao tác của M: các dòng biểu diễn các bước thời
gian. Mỗi một đỉnh lưu giữ một sự kiện, tức là trạng thái của một ôtômát riêng biệt trong một thời
gian cụ thể. Mỗi sự kiện là hàm của các cha của nó, tức là các sự kiện của các bước trước đó
trong ôtômát và các láng giềng (số lượng 3, tương đương O(1)). Ở đây a
t
, b
t
, c
t
và d
t
biểu diễn các

trạng thái của b và các láng giềng của b khi xác định b
t+1
(Xem hình 11).


Hình 11: Lược đồ không-thời gian


18
Tính kết quả của M (tại ôtômát trung tâm O) với giả thiết thời gian tính toán n (tức là độ sâu
của đồ thị) là nhỏ. Mỗi node có thể mô tả bởi bộ ba (i, t, s), trong đó i là thế của ôtômát, s là trạng
thái của nó, t là thời gian. Độ dài của bộ ba là nhỏ: s = O(1), t = O(n logn). một ôtômát chỉ
có thể liên quan nếu nó có thời gian truyền thông tin đến O, tức là có  n đường kết nối từ nó. Chỉ
có 3
n
đường kết nối như vậy (O chỉ có 3 láng giềng). Do đó i = O( log(3
n
)) = O(n).
Bởi vậy, có thể lưu trữ mỗi sự kiên trong một không gian nhỏ. Nhưng điều này không có ích
gì nếu cần lưu trữ một số lượng lớn các sự kiện. Để biết có bao nhiêu sự kiện, xét trò chơi xếp sỏi
với qui tắc chơi như sau. Mục đích là xếp sỏi vào node O của đồ thị có hướng và chỉ có thể đặt
sỏi vào một node nếu tất cả các node cha của nó đã được đặt sỏi. Có k viên sỏi và chúng có thể
được lấy và dùng lại.
Chú ý là node input không có cha nên luôn có thể đặt sỏi. Có thể thắng nếu k = O(dn), trong
đó d là bậc của đồ thị và n là độ sâu của nó). Chứng minh điều đó bằng qui nạp. Giả sử đã đặt sỏi
vào node mức t  0 với 1 + (d-1)t viên sỏi. Tiếp theo cần đặt vào node mức t+1 với (d-1)t + d = 1
+ (d-1)(t+1) viên sỏi. Cần đặt sỏi vào mỗi một node cha của các node node đó và sau đó có thể
lấy và dùng lại sỏi khi rời khỏi node đó. Cuối cùng, đặt viên sỏi vào chính node đó. Tuy vậy, thời
gian đặt sỏi vào đồ thị này có thể lớn (có thể phải duyệt tất cả các đường dẫn đi xuống).
Quá trình đặt sỏi phù hợp với quá trình tính sự kiện trong lược đồ đang xét. Mỗi sự kiện có

thể tính cùng với các cha của nó. Số lượng thực tế các sự kiện là k và có thể lưu trữ đồng thời.
Do có thể đặt sỏi vào đồ thị với 3n viên sỏi nên có thể giải quyết bài toán với 3n*(i, t, s). Như
vậy ta đã chuyển bài toán với không gian lớn, thời gian nhỏ sang bài toán không gian nhỏ, thời
gian lớn. Tuy nhiên độ phức tạp (không gian*thời gian) vẫn còn lớn.

×