Trong khi các loại cờ khác bắt đầu với một bàn cờ đầy quân và kết thúc bằng sự tiêu diệt toàn bộ hay một quân đặc biệt nào đó của đối phương, cờ vây bắt đầu với một bàn cờ trống rỗng và
Trang 1Môn: CÔNG NGHỆ TRI THỨC VÀ ỨNG DỤNG
XÂY DỰNG CHƯƠNG TRÌNH CHƠI CỜ VÂY ĐƠN GIẢN
SỬ DỤNG CÔNG NGHỆ TRI THỨC
Học viên: PHẠM NGUYỄN TRƯỜNG AN Giảng viên hướng dẫn: GS TSKH Hoàng Văn Kiếm
Trang 2Mục lục
Phần 1.Giới thiệu yêu cầu: 3
1)Giới thiệu cờ vây: 3
2)Tản mạn computer go 3
3)Yêu cầu đề ra: 4
Phần 2.Cơ sở lý thuyết 4
1)Đặc điểm của cờ vây 4
Cờ Vây có 9 điều luật cơ bản: 4
Lợi thế của người so với máy 14
2)Một số đặc điểm chung của các chương trình chơi cờ vây 14
Phần 3.Phân tích thiết kế 15
1)Thiết kế tổng quát của chương trình 15
2)Cách biểu diễn bàn cờ 16
3)Engine chơicờ 16
Phần 4.Kết quả và hướng phát triển 25
Tài liệu tham khảo: 26
Trang 3Phần 1.Giới thiệu yêu cầu:
1) Giới thiệu cờ vây:
Cờ vây, tiếng Trung Quốc là 围棋(wei chi) bắt nguồn từ vùng Bắc Á khoảng 500 năm trước công nguyên Không có sử liệu nào ghi nhận một cách cụ thể về nguồn gốc cờ vây, nhưng từ thời Tam Quốc, cờ vây đã trở nên rất phổ biến ở Trung Quốc với hình ảnh Quan Công thản nhiên đánh cờ trong khi đang được Hoa Đà phẫu thuật viết thương Trải qua hàng nghìn năm thăng trầm, hiện nay cờ vây vẫn còn rất thịnh hành và đã phát triển ra toàn thế giới
Điểm đặc biệt của cờ vây chính là sự đơn giản đến kỳ lạ trong luật chơi, chỉ có một loại quân cờ đồng nhất, và những quân này cũng không thể di chuyển Trong khi các loại cờ khác bắt đầu với một bàn cờ đầy quân và kết thúc bằng sự tiêu diệt toàn bộ hay một quân đặc biệt nào đó của đối phương, cờ vây bắt đầu với một bàn cờ trống rỗng và kết thúc bằng việc vây chiếm càng nhiều không gian trên bàn cờ càn tốt Những ván cờ vây chuyên nghiệp
có thể kết thúc mà không cần phải tiêu diệt một quân nào
Tuy nhiên để chơi giỏi cờ vây hoàn toàn không đơn giản Mặc dù những nước đi chỉ thuần túy là đặt quân lên bàn cờ, những quân này sau đó lại liên kết với những quân khác tạo thành một thế trận phức tạp, và có chiêu sâu chiến lược rất cao Việc nhận biết được thế trận và đưa ra nước đi đúng là không hề đơn giản Khoảng cách về kỹ năng giữa những kỳ thủ chuyên nghiệp và người mớp tập chơi là vô cùng khủng khiếp Những thống kê cho thấy các kỳ thủ chuyên nghiệp còn có thể nhớ tất cả các nước đi của ván cờ và đưa ra lý giải cho từng nước
2) Tản mạn computer go
Các nghiên cứu về việc lập trình cho máy tính chơi cờ vây được manh nha từ thập kỷ
60 của thế kỷ XX tại phương Tây(1), sau khi môn cờ này bắt đầu gây được sự chú ý nhất định Những chương trình đánh cờ vây đầu tiên được hiện thực vào cuối thập niên 70 Rất nhiều dự án phần mềm và các hệ thống chơi cờ vây đã ra đời và liên tục được phát triển Tuy nhiên trong khi các hệ thống chơi những loại cờ khác đã phát triển đến ngang hàng với những đại kiện tướng cờ của thế giới (như việc Deep Blue đánh bại nhà vô địch cờ vua thế giới Kasparov vào năm 1997) thì cho đến tận ngày nay vẫn chưa có hệ thống chơi cờ vây nào vượt qua được đẳng cấp của người chơi bán chuyên nghiệp
Những ván đấu giữa các kỳ thủ chuyên nghiệp và máy luôn kết thúc với phần thắng
Trang 4thuộc về con người Ngay cả khi máy được chấp đi trước đến hơn 9 nước, vẫn rất hiếm khi máy có thể giành được phần thắng Nhiều giả thuyết đã được đặt ra để lý giải vấn đề này, ngoài những nguyên nhân như sức mạn hiện tại của các hệ thống máy tính hay đặc tính phức tạp của riêng ván cờ vây Có giả thuyết cho rằng chính sự đơn giản nhưng sâu sắc của
cờ vây đã đánh vào điểm khác biệt giữa tư duy của người và máy và tạo cho người lợi thế lớn so với máy.(2)
3) Yêu cầu đề ra:
Đồ án này sẽ nghiên cứu, tìm hiểu về những đặc trưng của bộ môn cờ vây và các phương thức cơ bản của những hệ thống chơi cờ hiện tại Từ đó xây dựng một chương trình máy tính đơn giản có thể chơi cờ vây với người, hỗ trợ giao diện đồ hoạ và giao tiếp bằng chuột máy tính
Phần 2.Cơ sở lý thuyết
1) Đặc điểm của cờ vây
Cờ Vây có 9 điều luật cơ bản:
Điều 1 : Cờ Vây là trò chơi giữa hai đối thủ.
Điều 2 : Một đấu thủ cầm quân Trắng còn đấu thủ kia cầm quân Đen Bên Đen đi
trước (trừ trường hợp chấp quân thì bên Trắng đi trước)
Điều 3 : Quân cờ được đặt vào giao điểm của các đường kẻ.
Điều 4 : Mỗi một quân cờ khi đã đặt vào vị trí thì không được phép di chuyển nữa
(trừ trường hợp bị bắt làm tù binh, bị nhấc ra ngoài, sẽ nói ở điều 6)
Điều 5 : Đấu thủ nào chiếm được nhiều đất hơn, thì thắng ván cờ.
Điều 6 : Các quân cờ bị đối phương làm cho hết “khí” thì gọi là “tù binh” và bị nhấc
ra khỏi bàn cờ
Điều 7 : Không được đặt quân vào vị trí không còn “khí”(trừ trường hợp ăn quân, sẽ
nói sau)
Điều 8 : Có những quy ước đặt biệt cho trường hợp “tranh chấp” lẫn nhau, được gọi
là “ko”(sẽ giải thích sau)
Điều 9 : Sẽ có những điều luật riêng cho việc đánh có chấp.
Trang 5Từ điều 1 đến điều 4 thì không giải thích gì thêm, nhưng từ điều thứ 5 đến thứ 9 sẽ có giải thích và minh họa đầy đủ.
1 – VÙNG ĐẤT (còn gọi là lãnh thổ hay territory):
Là các giao điểm trống (không có quân) được các quân của một bên vây kín xung quanh Xem hình vẽ (trong đó có đất ở góc (16 điểm) và đất ở giữa bàn cờ (8 điểm) được bên Đen vây kín, tổng cộng Đen có 24 điểm)
Mục đích của mỗi bên là tìm cách vây kín được càng nhiều đất càng tốt, để khi kết thúc ván cờ, đếm đất ai nhiều hơn thì người đó thắng Trong khi tranh giành đất đồng thời tìm cách vây bắt quân đối phương, loại trừ quân đối phương ra khỏi bàn cờ (bắt tù binh) mà thực chất cũng là chiếm đất vì mỗi tù binh bị bắt sẽ cho một điểm trống
Kích thước của vùng đất được đếm bởi số giao điểm chứa trong nó Vùng đất ở góc chỉ cần ít quân mà chiếm được nhiều do các góc và cạnh đã thay thế cho quân Vùng đất ở giữa, ngược lại, dùng nhiều quân mà chiếm được ít Các đấu thủ phải nhớ điều này trong khi chơi
2 – ĐÁM QUÂN VÀ KHÍ CỦA ĐÁM QUÂN:
Đám quân gồm một hay nhiều quân của một bên nằm liền nhau theo hàng dọc hay hàng ngang Khí của đám quân là những giao điểm trống nằm sát bên đám quân đó theo hàng dọc và ngang (xem hình, khí là những điểm được bôi xám)
3 – ĂN QUÂN HAY BẮT QUÂN (CAPTURE):
Khi một bên đi quân chẹn nốt khí cuối cùng của đám quân đối phương, khiến cho đám quân của đối phương hết khí, thì tất cả các quân của đám quân này coi như “chết hẳn”
và bị nhấc ra khỏi bàn cờ (thuật ngữ gọi đám quân này là “tù binh”) Mỗi bên sẽ để riêng tù binh của mình để dùng tính điểm vào cuối ván cờ
Trang 6Trong trường hợp dưới đây thì quân Trắng ở góc, cạnh và giữa bàn cờ đều hết khí và thành tù binh đưa ra khỏi bàn cờ.
4 - CHẸT QUÂN (ATARI):
Là nước đi khiến đám quân của đối phương chỉ còn lại một khí duy nhất Quân hay đám quân đó gọi là “quân bị chẹt” Thông thường có 2 vị trí để chẹt quân, việc chọn vị trí nào để chẹt quân là tùy thuộc vào việc chạy của đám quân đang bị chẹt (hình vẽ)
Trang 75 - CHẠY QUÂN:
Khi một đám quân có nguy cơ bị bắt hay đang bị chẹt thì nó phải tìm đường tháo chạy bằng cách nối dài đám quân của mình ra để có thêm khí Việc nối dài này được gọi là chạy quân (xem hình, quân Đen đang bị chẹt, Đen đặt quân có hình ngôi sao nối vào để chạy quân)
Trang 8Không được đặt quân vào “điểm hết khí” (trừ trường hợp bên đặt vào là bên vây điểm hết khí hoặc đặt vào là bắt được ngay quân đối phương hay trường hợp “ko” mà chúng
ta sẽ tìm hiểu sau) Vậy có 2 loại nước cấm:
1) Cấm đi vào giao điểm đã bị đối phương chặn hết khí (vây chặt).
2) Cấm đi vào giao điểm còn lại cuối cùng của đám quân đã bị đối phương vây chặt
(xem hình trên)
Tuy nhiên phải lưu ý có những nước tuy bị đối phương vây mà không cấm Như hình dưới, bên Đen vẫn có thể đi vào những giao điểm trống(điểm a), vì khi đi vào đó Đen sẽ ăn ngay các quân Trắng (vì làm cho đám quân Trắng hết khí)
8 – VÂY CHIẾM ĐẤT:
Mỗi bên có thể chiếm đất bằng hai cách:
- Nối liền các quân của mình cùng với các góc các cạnh của bàn cờ thành một vùng
Trang 9khép kín Diện tích bên trong vùng khép kín chính là đất chiếm được của bên đó.
- Nối liền các quân với nhau thành một vòng khép kín
Bạn có thể ghi nhớ rằng vùng đất sẽ không được hoàn chỉnh nếu để cho đối phương xâm nhập vào
a) Xâm nhập từ bên ngoài: Mỗi bên phải chuẩn bị đề phòng sự xâm nhập của đối
phương khi xuất hiện một số khu vực trong vành đai quân của mình bị đứt quãng
Xem hình: Vùng đất của Đen trong trường hợp này không hoàn chỉnh, nó bị đứt
quãng tại điểm “a”
Nếu Trắng đi vào điểm “a” thì vành đai của Đen bị cắt đứt và hai đám quân Đen bị tách rời sẽ bị nguy hiểm Còn nếu Đen đi vào điểm “a” thì có được 1 vùng đất hoàn chỉnh
12 điểm
Xâm nhập bằng quân đơn: Đây không phải xâm nhập bằng cách nối quân từ ngoài
vào mà bằng cách nhảy dù ngay vào bên trong lãnh thổ đối phương bằng những quân lẻ
Rõ ràng lãnh thổ của Đen là 36 điểm hoàn chỉnh Nhưng Trắng đặt vào bên trong lãnh thổ đó một quân Trắng nhằm tạo mắt bên trong (xem hình dưới, bên trái)
Trắng nhảy dù và tạo được một đám quân ngay trong lãnh thổ của Đen, dù Đen đã cố gắng vây lại nhưng Trắng đã tạo được hai mắt có 2 điểm hết khí nên Đen không thể bắt đám quân này làm tù binh Do nhảy dù mà đất của Đen từ 36 bị giảm còn 18 Trắng thêm được 2 điểm trống, cuối ván điền quân vào, Đen mất tổng số tới 20 điểm (xem hình trên, bên phải)
Trang 109 – KHÁI NIỆM VỀ “SỐNG” VÀ “CHẾT” CỦA ĐÁM QUÂN:
Khi một quân được đặt vào bàn cờ, bao giờ nó cũng có khí xung quanh Nhưng trong quá trình diễn biến ván cờ, cả hai đấu thủ đều tìm cách cuớp khí của đám quân đối phương Khi hoàn toàn hết khí thì đám quân đó trở thành tù binh, bị nhấc ra khỏi bàn cờ, lúc đó người ta nói rằng đám quân đó “chết hẳn” (như đã giải thích ở phần ăn quân
Có những đám quân tuy còn khí nhưng thật ra là chết vì trước hay sau cũng không có đường thoát (gọi là chết kỹ thuật) (xem hình dưới, đám Đen bị bắt)
Định nghĩa “quân chết kỹ thuật”: Là một hay nhiều quân tuy còn khí nhưng đã
nằm hoàn toàn trong vòng vây của đối phương, không có đường thoát, không có mắt, không sống chung(sẽ giải thích sau) Tuy nhiên có trường hợp bị nằm trong vòng vây nhưng không chết vì có một lãnh thổ nhỏ để dư sức làm mắt.(xem hình dưới, Đen vẫn sống) Nhưng nếu biết cách hay, Trắng có thể bắt chết Đen, còn nếu Trắng không thích mạo hiểm thì Đen sống
Mỗi bên đều cố gắng bằng mọi cách cho quân mình tránh bị bắt làm tù binh mà còn tạo ra cho đám quân mình cuộc sống “vĩnh viễn”, tức là làm cho đối phương không còn khả năng tiêu diệt hết khí của đám quân mình Muốn tạo cho đám quân mình cuộc sống “vĩnh
Trang 11viễn” thì người chơi có 2 phương pháp hiệu nghiệm:
a) Sống chung (seki): Nhìn vào hình vẽ:
Ta thấy rằng đám quân Đen đang sống chung với đám quân Trắng bởi vì cả 2 đám quân này có 2 khí chung Mỗi bên đều không dám đưa quân vào chẹn 1 trong 2 khí chung này Lý do rất dễ hiểu : Nếu Trắng đặt thêm bất cứ một quân nào vào 1 trong 2 điểm trên thì khi đến lượt Đen, Đen sẽ chẹn nốt khí còn lại và bắt được 4 quân Trắng làm tù binh Và ngược lại nếu Đen đi vào 1 trong 2 điểm đó thì Trắng sẽ bắt được 3 quân Đen Chính sự
“Gầm ghè” giữa hai bên như vậy khiến cho cả hai đám quân của hai bên tồn tại cho tới cuối ván cờ mà không bị bắt làm tù binh Khi đến cuối ván cờ thì hai điểm (khí) chung này sẽ không được tính vào đất của bên nào cả Ví dụ 3 trường hợp sống chung:
Như trên ta thấy 3 trường hợp sống chung (ở góc, biên, giữa, được cách nhau bằng viền đậm) Đều không có bên nào chết trong tình huống đó Nhưng cũng không có bên nào
có điểm (đất) Sau đây chúng tôi sẽ giới thiệu cho bạn một cách khác để sống vĩnh viễn mà
Trang 12không phải sống chung với quân khác (chỉ một mình mình sống) mà còn có điểm (đất).
Làm hai mắt: Nhìn vào hình vẽ trước:
Ta thấy đám quân Đen bị quân Trắng vây chặt nhưng đám quân Đen vẫn không bị bắt làm tù binh, tức là chưa chết hẳn vì đám quân Đen còn có hai mắt(khí), nghĩa là đám quân Đen vẫn còn khí để thở Quân Trắng không thể chẹn nốt hai khí này vì theo luật thì đây là hai “điểm hết khí” Và như vậy đám quân Đen sẽ sống vĩnh viễn
Ngoài trường hợp chết thực sự (thành tù binh) và sống “vĩnh viễn” nhờ “sống chung”
và “tạo hai mắt” như trên thì các đám quân của mỗi bên còn có một trạng thái nữa gọi là
“chết kỹ thuật” (như đã giải thích ở trên, ở đây bổ sung một tí) Khi một đám quân bị bao vây nhưng không có “sống chung”, không có “hai mắt” Trong quá trình chơi ván cờ, đám quân này có thể được cứu thoát để hồi sinh (ví dụ như các đám quân tham gia vây hãm đám quân này bị bắt làm tù binh, hay vòng vây bị phá…) Nhưng nếu không được giải cứu thì tới cuối ván cờ tất cả những quân bị vây không còn lối thoát này (kể cả vẫn còn khí) sẽ được coi như chết thật sự và bị nhấc ra khỏi bàn như những tù binh vậy Hnh dưới ví dụ 3 trường hợp làm mắt(ở góc, biên, giữa) Ta thấy mắt càng to cho càng nhiều điểm
Trang 1310 - MẮT LÀ GÌ?
Như trên ta nói tới mắt, nhưng mắt là gì? Mắt được định nghĩa một cách đơn giản sau đây: Mắt là một hay nhiều giao điểm trống của một đám quân bị một bên vây kín Có 2 loại mắt: Mắt nhỏ và mắt to Mắt nhỏ gồm từ một tới hai giao điểm Mắt to có từ 3 giao điểm trở lên
Mắt thật và mắt giả: Mắt thật là mắt hoàn chỉnh, không có khiếm khuyết, các vị trí
đều có đủ quân Mắt giả là mắt thiếu quân, và về sau có thể sẽ không còn là mắt nữa Một ví
dụ đơn giản dưới đây:
TÌNH HUỐNG “KO” VÀ LUẬT TRANH CHẤP
Đây là một trường hợp đặt biệt mà điều 8 phần luật đã nói Nó được diễn tả như sau: Bên Đen có một điểm hết khí (xem hình vẽ)
Nếu Trắng đặt quân mình vào vị trí sao thì hợp lệ vì ăn ngay một quân Đen, đồng thời tạo ra điểm hết khí mới của Trắng Đến lượt Đen đi, cũng lại đặt quân vào điểm hết khí này và bắt một quân Trắng, đồng thời tạo ra một điểm hết khí mới của Đen Hai bên cứ ăn đi
ăn lại như thế không bao giờ chấm dứt được Nó dẫn tới sự tranh chấp vĩnh viễn khiến ván
cờ trở nên vô nghĩa Để tránh việc này,(hiện tược “Ko”) người ta quy ước như sau: Khi một bên ăn quân theo kiểu tranh chấp thì bên kia không được ăn lại ngay theo kiểu tranh chấp đó
mà phải đi ít nhất một nước khác rồi sau đó mới được ăn lại theo kiểu tranh chấp Nhờ quy định này, một bên có thể đặt một quân của mình vào giao điểm hết khí đó và chấm dứt tình trạng ăn đi ăn lại mãi
Trang 14Lợi thế của người so với máy.
Nhìn chung, lợi thế lớn nhất của máy so với người là tốc độ tính toán và khả năng lưu trữ lớn không thể hiện rõ ở môn cờ vây Mức độ phân nhánh lớn khiến chiều sâu của cây nước đi máy có thể tính không nhiều hơn người Việc có nhiều yếu tố định tính, mập mờ trong việc đánh giá thế trận khiến cho người có thể đánh giá thế trận tốt hơn máy nhiều
Để có thể ra một nước đi trong các môn cờ thì việc ước lượng được thế trận và đánh giá ảnh hưởng của nước đi lên thế trận là rất quan trọng Tuy nhiên do đặc điểm đơn giản của những quân cờ vây, việc đánh giá một nước đi trở thành một vấn đề rất nan giải Một quân cờ vây không có đặc điểm gì để đánh giá, mà phải dựa vào tương quan về vị trí giữa những quân cờ với nhau cũng như tương quan giữa những đám quân đó trên bàn cờ Đôi khi chỉ một quân cũng có thể dẫn đến những kết quả rất khác nhau Mặc dù đã có nhiều nghiên cứu được tiến hành nhưng vẫn chưa ai đề ra được một phương pháp đánh giá nào thật sự hiệu quả và chính xác hơn các quyết định của những kỳ thủ chuyên nghiệp
Một đặc điểm quan trọng nữa là các quân trong bàn cờ vây ít thay đổi Nếu như ở cờ vua hoặc cờ tướng, sau mỗi nước người chơi phải ghi nhận 2 hoặc 3 thay đổi trên bàn cờ (chỗ trống mà quân di chuyển đang chiếm giữ sẽ trống đi, có một vị trí mới bị chiếm giữ và
có thể có một quân đối phương bị bắt) Đối với cờ vây, thông thường mỗi nước đi chỉ gây ra một sự thay đổi trên bàn cờ (việc bắt quân là không phổ biến ở cờ vây, đặc biệt ở đẳng cấp chuyên nghiệp) Như vậy người chơi không phải ghi nhớ quá nhiều về hình dạng của bàn cờ khi tính toán các nước đi vì gần như bàn cờ trước mặt sẽ không thay đổi Điều nay cho phép người chơi tập trung vào việc đánh giá thế trận hơn và tính toán được nhiều nước đi hơn so với các môn cờ khác
Thực tế, vẫn tồn tại một số thế cờ nhất định mà để phá thế đòi hỏi phải liên tục bắt quân Việc đặt vào và lấy đi thường xuyên nhiều quân khiến cho người chơi gặp khó khăn hơn nhiều so với máy (ví dụ như hình bên) Tuy nhiên các thế
cờ này là ít gặp trong cờ vây và thường được người chơi giải quyết bằng kinh nghiệm luyện tập từ trước
2)Một số đặc điểm chung của các chương trình chơi cờ vây.
Cũng như các chương trình chơi cờ khác, chơi cờ vây cũng yêu cầu các kỹ thuật như tính toán nước đi (move generation), ước lượng nước đi (move evaluation), đi thử và ước lượng thế trận (reading, look-ahead), tìm kiếm nước đi (tree-search) v.v dĩ nhiên với một