Sự phức tạp tính toán của việc giải cờ vua là gì?


8

Ý tưởng cơ bản của cảm ứng ngược là bắt đầu với tất cả các vị trí cuối cùng có thể có của một trò chơi trong đó người chơi X thắng. Vì vậy, đối với cờ vua, hãy nhìn vào tất cả các cách mà Trắng có thể chiếu tướng Đen. Bây giờ làm việc ngược lại với tất cả các di chuyển / vị trí có thể sẽ cho phép Trắng di chuyển đến một trong những vị trí đó. Nếu White từng thấy mình ở một vị trí như vậy, cô ấy có thể giành chiến thắng bằng cách chuyển sang bước kiểm tra có liên quan. Bây giờ chúng tôi làm việc ngược lại một bước khác và như vậy. Cuối cùng, chúng tôi trở lại với tất cả các động thái đầu tiên có thể mà White có thể thực hiện. Vấn đề là, một khi chúng ta đã làm điều này, chúng ta biết rằng chúng ta có phản ứng tốt nhất của Trắng đối với bất kỳ động thái nào mà Đen thực hiện.

Gần đây (năm năm trở lại đây) Cờ đam đã được "giải quyết" theo cách này. Rõ ràng là Noughts và Crosses (cái mà các thuộc địa có thể gọi là "Tic-Tac-Toe") đã được giải quyết từ lâu. Ít nhất là từ xkcd này nhưng có lẽ đã lâu trước đây.

Vì vậy, câu hỏi là: loại thủ tục này phụ thuộc vào những yếu tố nào? Số lượng vị trí pháp lý có thể, có lẽ. Nhưng cũng có thể số lượng di chuyển hợp pháp tại bất kỳ nút nào ... Và được đưa ra, loại vấn đề này phức tạp đến mức nào?

Câu hỏi thưởng: bao lâu trước khi một PC $ 2000 có thể giải quyết cờ đam trong một ngày? Tướng? Đi? (Tất nhiên để làm điều này, bạn cũng phải tính đến việc tăng tốc độ của máy tính gia đình ...)

Tôi đã thêm thẻ vì bạn có thể biểu diễn các trò chơi này dưới dạng cây, nhưng nếu tôi lạm dụng thẻ, vui lòng thêm thứ gì đó phù hợp hơn


4
Các câu hỏi về sự phức tạp của cờ vua đã được thử lại ở nhiều nơi. Cây trò chơi có chiều dài hữu hạn, điều chỉnh các quy tắc chính xác rút ra, nhưng cây trò chơi có yếu tố phân nhánh rất cao nên các giải pháp vũ lực dường như nằm ngoài tầm với. Nói một cách thẳng thắn: cây trò chơi có kích thước tương đương , cho nửa bước di chuyển. Tôi không thấy câu hỏi TCS ở đây? k10kk
András Salamon

6
Có táo tợn khi chỉ ra rằng độ phức tạp là theo quy tắc di chuyển năm mươi? O(1)
Joe Fitzsimons

Seamus, phạm vi của cstheory là các câu hỏi ở cấp độ nghiên cứu trong tcs, vui lòng đọc Câu hỏi thường gặp. Bạn có thể sử dụng math.SE cho các câu hỏi không thuộc cấp độ nghiên cứu.
Kaveh

có một số câu hỏi liên quan đến phức tạp trong cờ vua nhưng như câu này không phải là do cây trò chơi hữu hạn. Câu hỏi này hơi giống nhau, có thể có một thuật toán cờ vua hoàn hảo
vzn

Câu trả lời:


26

Như @Joe chỉ ra, cờ vua là chuyện nhỏ để giải quyết trong thời gian bằng cách sử dụng bảng tra cứu. (Một triển khai thực tế của thuật toán này sẽ đòi hỏi một vũ trụ lớn hơn đáng kể so với vũ trụ chúng ta đang sống, nhưng đây là một trang dành cho khoa học máy tính lý thuyết . Kích thước của hằng số là không liên quan.)O(1)

Có rõ ràng là không có kinh điển tổng quát của cờ vua, nhưng một số biến thể đã được xem xét; độ phức tạp của chúng phụ thuộc vào cách các quy tắc về di chuyển mà không chụpcác vị trí lặp lại được khái quát.n×n

Nếu bốc thăm được công bố sau khi một số đa thức của chuyển động chụp miễn phí, hoặc sau vị trí bất kỳ lặp đi lặp lại một số đa thức lần, sau đó bất kỳ cờ vua trò chơi kết thúc sau một số đa thức của di chuyển, vì vậy vấn đề rõ ràng là trong pspace. Storer đã chứng minh rằng biến thể này là PSPACE-hard.n×n

Đối với biến thể không có giới hạn đối với các vị trí lặp lại hoặc di chuyển không bị bắt, số lượng vị trí cờ vua hợp pháp là theo cấp số nhân theo , do đó, vấn đề rõ ràng là ở EXPTIME. Fraenkel và Lichtenstein đã chứng minh rằng biến thể này là EXPTIME-hard.nn×nn


3
"hoặc sau bất kỳ vị trí nào lặp lại một số lần đa thức". Tôi nghĩ rằng chỉ có hạn chế này vẫn cho phép các trò chơi siêu đa thức. Ví dụ, hãy tưởng tượng một ban với hiệp sĩ (ví dụ: thông qua khuyến mãi) và hai vị vua. Đối với , số lượng vị trí sẽ là , là siêu đa thức và tôi không thể tưởng tượng được một số suy thoái làm giảm số lượng vị trí có thể đạt được trong một trò chơi xuống một số . 2 n m = n 2 Ω ( C ( m , 2 n×n2nm=n2p(m)Ω(C(m,2m))p(m)
Yonatan N

AlphaGo khiến tôi suy nghĩ. Có một kinh điển phiên bản của Go, phải không? Vì vậy, đó sẽ là một câu hỏi tốt hơn? n×n
Seamus

Tôi thực sự ghét những vấn đề đó O(1)nhưng thực sự không có máy tính hay thuật toán nào để giải quyết chúng trong thời gian hợp lý của con người. Tôi sẽ tò mò muốn biết số lượng các loại vấn đề này cho một bộ nhớ và thời gian giới hạn cố định nhất định
albanx

1
@Seamus Rất muộn, nhưng: bạn muốn nghĩ đó là một kinh điển phiên bản của Go, nhưng trong thực tế có một số quy tắc tinh tế mà một cách hoang dại có thể ảnh hưởng đến kết quả của vị trí bí truyền nào đó (và các quy tắc khác nhau, giữa các quốc gia khác nhau!) . Xem en.wikipedia.org/wiki/Rules_of_Go#Repetition để biết một vài chi tiết nếu bạn tò mò. n×n
Steven Stadnicki

11

Đây có lẽ không phải là một câu trả lời hữu ích khủng khiếp, nhưng tôi nghĩ rằng đáng để chỉ ra rằng cờ vua có số lần di chuyển tối đa, và do đó có một số lượng hữu hạn các trò chơi có thể. Các quy tắc di chuyển năm mươi cho phép hai người chơi để khẳng định một trận hòa nếu 50 hoặc nhiều động thái diễn ra mà không cần chuyển động của một cầm đồ. Chúng ta có thể giả định một cách hợp lý rằng điều này luôn được sử dụng, vì nếu có bất kỳ thước đo khách quan nào về sức mạnh của từng vị trí người chơi thì người yếu hơn sẽ yêu cầu rút thăm. Hơn nữa, các quy tắc của cờ vua yêu cầu rằng bất cứ khi nào một con tốt được di chuyển, nó sẽ tiến một ô vuông về phía đối thủ của bảng (cho dù di chuyển trực tiếp về phía trước, hoặc theo đường chéo), và do đó mỗi con tốt có thể di chuyển nhiều nhất 6 lần. Vì có tổng cộng 16 con tốt, điều này đặt số lần di chuyển tối đa là132 4851 2 34172 O ( 1 )50×(16×6+1)+1=4851 . Trong mỗi lần di chuyển, người chơi di chuyển một trong tối đa 16 mảnh. Đối với một con tốt có tối đa 3 chiêu, 14 cho một tân binh, 8 cho một hiệp sĩ, 14 cho một giám mục, 28 cho một nữ hoàng và 8 cho một vị vua, với tổng số 132 động tác có thể. Điều này đưa ra giới hạn trên là trên tổng số trò chơi cờ vua. Vì vậy, trong khi đây là một con số rất lớn (khoảng ), điều đó có nghĩa là độ phức tạp không đáng kể là . Mặt khác, với cách tiếp cận ngây thơ như vậy sẽ mất khoảng năm mươi nghìn năm để vấn đề trở nên dễ xử lý, giả sử luật của Moore tiếp tục vô thời hạn.1324851234172O(1)


Phân minh nhỏ: số lần di chuyển tối đa giống như 50 * (16 * 6 + 1) + 1. Nhưng sau đó 16 * 6 trong số đó là di chuyển cầm đồ, 16 trong số đó có khả năng được rút ra từ 4 tùy chọn, mặc dù một trong những tùy chọn đó bị cắt giảm số lần di chuyển sau ... (Không đồng ý với điểm cơ bản, đó là âm thanh. Thật kỳ lạ, ước tính của bạn xuất hiện vào khoảng 10 ^ 10 ^ 5, trong khi Mathworld nói rằng Hardy ước tính là 10 ^ 10 ^ 50. cho dù đó là một phiên âm xấu của ghi chú của mình).
Peter Taylor

@Peter Lỗi của tôi, xin lỗi. Tôi đã sửa câu trả lời ngay bây giờ. Tôi không chắc liệu đây có phải là cách ước tính trong Mathworld được đưa ra hay không. Nếu nó chỉ đơn giản là tính các thỏa thuận pháp lý của hội đồng quản trị (bỏ qua quy tắc di chuyển năm mươi), nó có thể đã lớn hơn nhiều.
Joe Fitzsimons

Một ngụy biện khác: bạn đã sử dụng một phiên bản không chính xác của quy tắc di chuyển năm mươi. Nó phải là "50 di chuyển mà không cần di chuyển cầm đồ hoặc chụp". Số lượng các mảnh trên bảng tất nhiên là giảm đơn điệu trong một trò chơi và quy tắc vẫn cho phép một giới hạn hữu hạn. Mặc dù trò chơi vẫn còn hữu hạn nếu không có quy tắc năm mươi di chuyển theo quy tắc lặp lại ba lần, sau đó mang lại một ràng buộc lớn hơn nhiều.
Olaf

À, vâng. Điều đó làm tăng số lượng di chuyển tối đa khoảng một phần ba.
Joe Fitzsimons

Bạn đã bỏ lỡ điều gì đó về 50 lần di chuyển: sau 50 lần di chuyển mà không có động thái cầm đồ và không có bất kỳ vật phẩm bị giết nào, chúng tôi đã rút ra (sức mạnh tính toán của bạn tăng lên đáng kể nhưng vẫn không đổi).
Saeed

8

Thực tế có một vài câu hỏi khác nhau ở đây: (a) cần bao nhiêu năng lực tính toán để thực hiện tìm kiếm cây cho các trò chơi và (b) sự phức tạp tính toán của những vấn đề này là gì? Tài nguyên đa năng tốt nhất cho loại điều này có lẽ là trang Wikipedia về Độ phức tạp của trò chơi , nhưng để đi sâu hơn vào chi tiết:

dbbd/2bddb

Trong thực tế, tìm kiếm cây thuần túy được bổ sung bởi một từ điển từ dưới lên; chẳng hạn, kết quả của tất cả các kết thúc cờ vua 6 quân cờ đã được biết và nhiều kết thúc 7 quân cờ đã được phân tích (xem http://en.wikipedia.org/wiki/Endgame_tablebase ), vì vậy kết quả của một nhánh trò chơi có thể là tra cứu trong 'từ điển' (một cơ sở dữ liệu khổng lồ về các vị trí) một khi vị trí đã được giảm xuống chỉ còn vài mảnh, rút ​​ngắn rất nhiều tìm kiếm cây bổ sung nếu không cần thiết. Đây là những gì đã được thực hiện với trình kiểm tra - cơ sở dữ liệu được xây dựng từ tất cả các kết thúc với đủ số phần, sau đó được mở rộng để thêm nhiều phần và hơn thế nữa, cho đến khi biết kết quả của tất cả các kết thúc 10 phần; sau đó tìm kiếm cây được sử dụng từ vị trí ban đầu, và về cơ bản cả hai gặp nhau ở giữa.

Tuy nhiên, ngoài những cách tiếp cận thực tế này, còn có (b) khía cạnh của câu hỏi: sự phức tạp tính toán của các loại vấn đề này là gì? Tóm lại, hầu hết các vấn đề của ilk này có xu hướng rơi vào một vài loại; chúng hoàn toàn là PSPACE - có nghĩa là "nếu bạn có thể giải quyết vấn đề này, bạn có thể giải quyết bất kỳ vấn đề nào chiếm nhiều không gian" - hoặc hoàn thành EXPTIME (nghĩa là "nếu bạn có thể giải quyết vấn đề này, bạn có thể giải quyết bất kỳ vấn đề nào mất nhiều thời gian theo cấp số nhân '), tùy thuộc vào thời gian trò chơi có thể kéo dài; một lần nữa, trang Wikipedia về tính đầy đủ của EXPTIME có một cuộc thảo luận khá tốt về các vấn đề liên quan và những gì phân biệt các trò chơi khác nhau trên mặt trận này.


-2

Những ước tính này là quá cao.

Bạn đang tập trung vào việc phân nhánh dựa trên các động thái hợp pháp. Điều này rất có ý nghĩa nếu bạn đang cố gắng tạo ra một máy tính chơi cờ nhanh, nhưng đó không phải là cách bạn sẽ viết một chương trình để "giải quyết" cờ vua.

Có <<<<< 13 ^ 64 trạng thái trò chơi có thể có trong cờ vua. Mỗi ô vuông chỉ có thể chứa một trong những quân cờ hoặc không có gì. Bạn có thể lặp lại mặc dù tất cả chúng và đánh dấu chúng là chiến thắng đen hoặc thắng trắng trong không quá 2 ^ 256 hoạt động.

Một dự đoán thực tế hơn về số lượng trạng thái trò chơi hợp lý có thể đạt được là khoảng 2 ^ 100


3
Do quy tắc lặp lại cấu hình bảng ba lần là một trận hòa, trạng thái của trò chơi không chỉ bao gồm các vị trí hiện tại của các quân cờ, mà còn bao gồm tất cả các cấu hình bảng trong quá khứ. Nhưng sao cũng được; một hằng số là một hằng số.
Jeffε

1
Nó cũng cần quyền castling, nhưng nó chỉ cần 100 cấu hình bảng trước đây.

Bạn dường như đang càn quét rất nhiều sự phức tạp thành "và đánh dấu chúng là thắng đen hoặc thắng trắng".
Joe Fitzsimons

1
@ Jɛ ff E Không phải tất cả các cấu hình bảng trong quá khứ, vì bất kỳ vị trí nào trước khi bắt giữ hoặc di chuyển cầm đồ cuối cùng không bao giờ có thể đạt được một lần nữa. Nhưng, vẫn, bất cứ điều gì; một hằng số vẫn là một hằng số.
David Richerby

Bạn sẽ không cần 100 cấu hình bảng trong quá khứ (giả sử 100 bit mỗi bảng), nhưng chỉ cần 100 di chuyển trong quá khứ và bạn không cần phải xem xét các động thái cầm đồ. Không bao giờ nên yêu cầu nhiều hơn 8 bit. Vì vậy, tổng cộng ít hơn 900 bit tôi muốn nói.
gnasher729
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.