Tại sao một số trò chơi np-hoàn thành?


50

Tôi đã đọc mục Wikipedia về " Danh sách các vấn đề hoàn thành NP " và thấy rằng các trò chơi như super mario, pokemon, tetris hay candy crush saga đều hoàn chỉnh. Làm thế nào tôi có thể tưởng tượng tính đầy đủ của một trò chơi? Câu trả lời không cần phải quá chính xác. Tôi chỉ muốn có một cái nhìn tổng quan về những gì nó có nghĩa là các trò chơi có thể được hoàn thành.


4
Xem câu hỏi tham khảo về tính đầy đủ của NP. Tôi nghĩ rằng câu hỏi của bạn quá rộng cho định dạng trao đổi ngăn xếp.
Kyle Jones

5
Trong minecraft, bạn có thể tạo .... một máy tính ... đang chạy .... minecraft?
djsmiley2k - CoW

4
Máy tính xây dựng bằng Magic: các thẻ Gathering. Big vui vẻ :-)
Mast

Đây không phải là một câu trả lời cho câu hỏi bạn đang hỏi, nhưng có liên quan chặt chẽ đến mức cần phải chỉ ra: nhà thiết kế trò chơi nổi tiếng (và người đề xuất các phương pháp chính thức trong thiết kế trò chơi) Raph Koster đã đưa ra giả thuyết rằng độ phức tạp tính toán của các trò chơi là rất quan trọng để chúng ta tiếp tục thưởng thức chúng. Ông định nghĩa "vui vẻ" về cơ bản là phản ứng với việc học hỏi để cải thiện hiệu suất của một nhiệm vụ khó khăn trong môi trường không bị đe dọa, và chỉ ra rằng việc tiếp tục làm điều này trong một hệ thống bị hạn chế như một trò chơi dựa trên hệ thống đó có mô hình hành vi. ..
Jules

... Khó hoặc không thể hoàn toàn dự đoán đủ nhanh để sử dụng những dự đoán đó, do đó buộc chúng ta phải học theo cách ít trực tiếp hơn (thường sử dụng phương pháp phỏng đoán). Các vấn đề có độ phức tạp cao (anh ấy thường gợi ý NP Hard) là cách đáng tin cậy nhất để tạo ra các mẫu hành vi như vậy, mà (nếu anh ấy đúng) có lẽ là lý do tại sao chúng mọc lên trong rất nhiều trò chơi nổi tiếng. Xem các slide hội nghịcuốn sách này để biết thêm.
Jules

Câu trả lời:


72

Điều đó chỉ có nghĩa là bạn có thể tạo các cấp độ hoặc câu đố trong các trò chơi mã hóa các vấn đề NP-Hard này. Bạn có thể thực hiện bài toán tô màu đồ thị, tạo cấp độ Super Mario Bros. và mức đó có thể đánh bại được khi và chỉ khi đồ thị có 3 màu.

Nếu bạn muốn xem cách cụ thể các vấn đề NP-Complete được dịch sang các trò chơi, tôi khuyên bạn nên viết bài "Trò chơi Nintendo cổ điển (Tính toán) Khó" . Nó được viết tốt và dễ làm theo.

Một lưu ý quan trọng cần ghi nhớ là độ cứng NP đòi hỏi phải khái quát hóa các trò chơi theo những cách "rõ ràng". Ví dụ, Tetris thường có một bảng kích thước cố định nhưng bằng chứng độ cứng yêu cầu trò chơi cho phép các bảng lớn tùy ý. Một ví dụ khác là kẻ thù ngoài màn hình trong Super Mario Bros: bằng chứng là một biến thể của trò chơi khi kẻ thù ngoài màn hình tiếp tục di chuyển như thể chúng ở trên màn hình, thay vì ngừng tồn tại và được đặt lại vị trí bắt đầu khi Mario trở lại .


4
Không có giá trị cho câu trả lời của riêng nó, nhưng sau đây có một bài giảng video hay: khóa học.csail.mit.edu / 690/904 / lectures / L05.html - Giải thích rõ ràng.
dùng340082710

4
Có thể có giá trị bao gồm một tuyên bố chính xác của một định lý từ bài báo (cực kỳ thú vị!) Mà bạn đã liên kết, giải thích ngắn gọn và chính xác ý nghĩa của việc nói rằng một trò chơi là NP-hard: Thật khó để quyết định xem mục tiêu có thể đạt được từ khi bắt đầu một giai đoạn trong Super Mario Bros tổng quát
ymbirtt

có lẽ không liên quan, nhưng với các trò chơi Pokemon mới nhất (Mặt trời và Mặt trăng), bằng chứng trong bài viết không còn đúng nữa (ít nhất là như vậy), vì các huấn luyện viên của kẻ thù không còn di chuyển về phía người chơi để chiến đấu với chúng.
simonalexander2005

2
Để trở thành NP-Complete, cả hai bạn phải có khả năng mã hóa các vấn đề NP-Hard và ở trong NP. Mệnh đề thứ hai bị thiếu trong câu trả lời trên.
Yakk

Mặc dù câu trả lời này là tốt về mặt kỹ thuật, nhưng nó thực sự làm sáng tỏ vấn đề cho một người không đủ hiểu biết để đặt câu hỏi ngay từ đầu? Tôi thực sự không nghĩ rằng nó ...
MaxW

20

Tôi thực sự không biết chính xác loại mô hình nào được sử dụng bởi những người đưa ra những tuyên bố đó; tuy nhiên, điều có vẻ hợp lý với tôi sẽ là nói về - tính không hoàn chỉnh khi quyết định điều gì đó về tình huống trò chơi.NP

Hãy lấy một ví dụ Tetris, vì đó là người duy nhất trong số những người bạn trích dẫn mà tôi đủ hiểu để nói. Tetris có một quy tắc gọi là "hoàn hảo rõ ràng", mang lại cho người chơi một phần thưởng lớn nếu một mảnh rơi hoàn toàn xóa bảng. Người ta có thể tự hỏi nếu, được đưa ra một chuỗi các mảnh được sắp xếp và một số nguyên , có tồn tại một chuỗi di chuyển hợp pháp cho các mảnh đạt được ít nhất hoàn hảo. Các báo cáo vấn đề như những vấn đề đủ trừu tượng có thể được mô hình hóa bằng các công cụ của lý thuyết phức tạp.k P k{Pi}kPk

Câu chuyện dài, " -complete" có nghĩa là một điều và chỉ một điều duy nhất, những tuyên bố ưa thích như "Super Mario là -complete" phải được dịch thành một tuyên bố chính thức trước khi chúng thực hiện bất kỳ thực tế nào giác quan.N PNPNP


1

Đây là một lời giải thích vẫy tay đơn giản:

Những trò chơi như vậy nằm trong NP vì "chạy" hành vi của người chơi trong suốt quá trình chơi và kiểm tra xem người đó thắng hay thua có thể được thực hiện một cách hiệu quả hay không (chúng tôi cần thời gian đa thức trong thời gian của trò chơi, nhưng có lẽ đó là tuyến tính hoặc -ish).O(nlog(n))

Những game như vậy rất khó NP vì hành vi của người chơi rất biểu cảm. Mặc dù tại bất kỳ thời điểm nào, người chơi chỉ có thể có một số lượng hạn chế, thậm chí là một số hành động có thể cố định, đủ để tạo ra một không gian hành vi hoặc chiến lược theo cấp số nhân trong thời lượng của trò chơi; và mặc dù bạn có thể cung cấp một điều kiện đơn giản hoặc công thức logic về tính hợp lệ / lợi ích / tính chính xác của các hành động của người chơi tại địa phương, nhưng trên toàn cầu, bạn có được hiệu ứng tương tự như với mạch tổ hợp lớn hoặc công thức k-CNF.

Hy vọng rằng điều này làm cho một số ý nghĩa trực quan và cũng đổ chuông đủ lý thuyết CS.

PS - Một số trò chơi phức tạp hơn nhiều (tính toán) hơn thế. Ví dụ, các boardgame Hex , GoReversi hoàn thành PSPACE. Về cơ bản, đó là vì công thức bạn cần đáp ứng cho chiến lược chiến thắng là công thức định lượng xen kẽ lặp đi lặp lại: Sự tồn tại của một người chơi 1, như vậy đối với mỗi lần di chuyển của người chơi 2, sẽ tồn tại một bước di chuyển của người chơi 1, v.v. như vậy với tất cả các nước đi đã được chơi, một trong số các nước đi của người chơi 2 không hợp lệ hoặc chúng tôi có một trình tự hợp lệ 1 người chơi đã giành chiến thắng. Với các trò chơi NP, nó thường chỉ là hành vi / chiến lược / lựa chọn di chuyển của một người chơi.


"Hy vọng rằng điều này có ý nghĩa trực quan" - không phải với tôi ...
Raphael

1

Đối với các trò chơi một người chơi, bạn luôn có thể đặt câu hỏi "có chiến lược nào cho người chơi không" và câu hỏi đó thường có câu trả lời "CÓ" có thể được xác minh trong thời gian đa thức và rất có thể NP hoàn tất.

Đối với các trò chơi hai người, câu trả lời thường không thể được xác minh trong thời gian đa thức, bởi vì để xác minh rằng một nước đi cho A là một nước cờ chiến thắng, bạn phải chứng minh rằng cứ mỗi phản hồi của B sẽ lại có một động thái chiến thắng cho A và Sớm.


0

Chà, chắc chắn là trong NP, bởi vì một giải pháp khả thi chỉ là số lượng đầu vào hữu hạn (trong mỗi khung đầu vào, bạn có thể chọn bất kỳ nút k nào, chúng tôi đại diện cho mỗi lựa chọn các nút cho mỗi khung bằng một chữ cái) mang đến cho bạn màn hình thắng Chúng tôi biết rằng trò chơi này đã bị đánh bại trước đó, vì vậy chúng tôi biết rằng có tồn tại một giải pháp. Một NTM đi qua băng của nó và đoán một cách kỳ diệu một chứng chỉ chính xác về độ dài n. Sau đó, nó mô phỏng Super Mario với đầu vào và xác minh nó. Việc xác minh có thể được thực hiện trong thời gian đa thức (thời gian tuyến tính thực sự, nếu giải pháp là chính xác, sẽ mất chính xác n khung hình để giành chiến thắng).

Để hiển thị tính đầy đủ của NP, chúng tôi có thể giảm 3-SAT cho nó bằng cách xây dựng trình kiểm tra 3 Sat với trình tạo mức (được xây dựng thông qua thực thi mã tùy ý https://www.youtube.com/watch?v=IOsvuEA2h4w ).

Vì vậy, chúng tôi có đầu vào 3-SAT CNF, trước tiên chúng tôi kiểm tra định dạng chính xác. Nếu nó được định dạng sai, chúng tôi chỉ cần dịch nó thành một 'jump'-input (không thể đánh bại Super Mario trong một khung hình bằng cách thực hiện một cú nhảy).

Chúng tôi gọi độ dài của đầu vào 3-CNF n.

Nếu nó được định dạng chính xác, chúng tôi dịch nó thành một số đầu vào, xây dựng trình kiểm tra 3-CNF cho chúng tôi (luôn có cùng mã có độ dài k), dịch 3-CNF thành Chuỗi đầu vào, xây dựng 3- CNF trong trình kiểm tra (tính theo O (n)) và kiểm tra tất cả các giải pháp có thể bằng vũ lực. Nó nhàn rỗi và không làm gì cả, nếu sau khi đi qua tất cả các giải pháp, không tìm thấy giải pháp nào. Nó khởi động lại trò chơi và sử dụng một giải pháp đã biết cho Super Mario để đánh bại trò chơi (mã để làm điều đó có độ dài j). Do đó, phép biến đổi của chúng ta là trong O (n), vì vậy nó nằm trong thời gian đa thức.

Nếu CNF được định dạng kém, chúng tôi sẽ không giành chiến thắng (theo định nghĩa, đầu vào của chúng tôi không chiến thắng, nếu chúng tôi không giành được một khung nào sau khi thực hiện nó). Nếu CNF không thỏa đáng, chúng tôi sẽ không thắng (bạn không thể giành chiến thắng bằng cách nhàn rỗi cho một khung hình trong trình tạo cấp độ, chúng tôi đảm bảo rằng trong mã của chúng tôi). Nếu CNF thỏa đáng, người kiểm tra sẽ tìm giải pháp khởi động lại và thắng trò chơi. Do đó, việc giảm đa thức 3-Sat thành Super Mario đã hoàn tất và chúng tôi đã chứng minh rằng Super Mario là NP-perfect.

(Hy vọng tôi đã không làm hỏng điều này ở đâu đó. Chúng tôi gặp phải vấn đề lưu trữ, nếu 3-CNF quá dài, nhưng lưu trữ hạn chế thường bị bỏ qua trong các bối cảnh này, tôi tin rằng)


"Chà, chắc chắn là trong NP, bởi vì một giải pháp khả thi chỉ là số lượng đầu vào hữu hạn" Ở trong NP đòi hỏi giải pháp phải được giới hạn về mặt đa thức trong kích thước của đầu vào. Chỉ là hữu hạn là không đủ.
David Richerby

0

Tôi viết lại câu trả lời này để cố gắng giải quyết một số ý kiến ​​về phiên bản trước.

Tôi cho rằng bạn đã đọc định nghĩa Wikipedia về tính đầy đủ của NP mà thực sự không tập trung vào các trò chơi. Tôi sẽ chỉ ra ý nghĩa chính xác của tính đầy đủ NP và lý thuyết trò chơi một chút và giải thích bản chất của trò chơi NP-Complete.

Chúng ta hãy xem xét một trò chơi 2 người với các động tác thay thế, hạn chế hơn, đây thực chất là về các trò chơi Kết hợp . Về cơ bản là một trò chơi mà bạn có một số động tác có thể được thực hiện và bạn phải chọn một trong số chúng. Bạn muốn chơi "hoàn hảo", điều đó có nghĩa là bạn sẽ không bao giờ thực hiện một động thái "xấu". Vì vậy, trong số các di chuyển được phép bạn muốn chọn một cách tốt nhất. (Tất nhiên đối thủ của bạn có cùng mục tiêu ...)

Lưu ý rằng chơi hoàn hảo không có nghĩa là bạn sẽ luôn thắng. Các quy tắc của trò chơi có thể là người chơi thứ nhất hoặc thứ hai nên giành chiến thắng. Ngoài ra một số trò chơi như Tic-Tac-Toe nên kết thúc với tỷ số hòa. Do đó, "chơi hoàn hảo" nghĩa là gì trong cuộc thảo luận này là:
(1) Rằng bạn sẽ không bao giờ ở vị trí chiến thắng và sau đó thua trò chơi vì bạn đã thực hiện một động thái "xấu"
(2) Bạn sẽ không bao giờ bỏ lỡ cơ hội để có được vào vị trí chiến thắng nếu có cơ hội như vậy.

Với trạng thái hiện tại của trò chơi, điều bạn thích là có thể sử dụng "thuật toán hiệu quả" để tính toán nước đi tốt nhất. Mặt khác, hãy lưu ý rằng một thuật toán phải tìm kiếm trong toàn bộ cây trò chơi là một "thuật toán không hiệu quả".

Bây giờ hãy xác định "hiệu quả" chính thức hơn một chút. Tôi sẽ đơn giản hóa điều này một chút nhưng thực chất là chính xác. Hãy xem xét số lượng tính toán, , phải được thực hiện để chọn nước đi tiếp theo, rằng trung bình mỗi lần di chuyển có khả năng ( yếu tố phân nhánh ) và có di chuyển còn lại trong trò chơi. Khái niệm cũng là mỗi phép tính mất cùng một thời gian để nỗ lực có thể được chuyển thành độ phức tạp thời gian , , thay vì tính toán thô.B n TCBnT

  • Một "thuật toán hiệu quả" sẽ có: trong đó là "số nguyên nhỏ" và ah là một số con số thực. Do đó, thuật toán hiệu quả thực thi trong thời gian đa thức vì đây là biểu thức đa thức.
    aTaBa+bBα1+cBα2+...+hB0
    α
  • Một "thuật toán không hiệu quả" sẽ có: và thuật toán này thực thi theo thời gian theo cấp số nhân (tức là thời gian không đa thức). Vấn đề ở đây là khi càng lớn thì kết quả nổ tổ hợp càng lớn.
    nTaBn
    n

Bây giờ điểm quan trọng là không thể có một thuật toán hiệu quả, thời gian đa thức, chơi hoàn hảo cho một trò chơi mà NP-hoàn thành. Để chơi hoàn hảo, một vấn đề hoàn chỉnh NP phải, theo định nghĩa, phải được giải quyết bằng một thuật toán không hiệu quả chạy trong thời gian không đa thức.

Lưu ý rằng thời gian chạy là về số lượng tính toán nội tại, không phải thời gian phản hồi mà con người cảm nhận được. Đối với một trò chơi nhỏ như Tic-Tac-Toe, máy tính có thể chơi tất cả các chuyển động có thể trong tương lai và vẫn phản hồi nhanh chóng theo cảm nhận của con người.

Đối với Nim có thể tạo ra một thuật toán thời gian đa thức. Tại bất kỳ thời điểm nào trong trò chơi, thuật toán có thể tính toán người chơi nào có nước cờ chiến thắng và nước đi đó nên là gì.

Mặt khác, hãy chơi trò chơi Qubic . (Bạn đang cố gắng tạo một dòng 4 trong lưới 3D. Vì vậy, về cơ bản nó là tic-tac-toe trên lưới 4 x 4.) Qubic là NP-hoàn chỉnh do đó không có thuật toán thời gian đa thức để tính bước di chuyển hoàn hảo tiếp theo. Cách duy nhất để biết bạn hiện có di chuyển chiến thắng hay không là thử tất cả các nước đi có thể có của cả hai người chơi để xác minh rằng một nước đi cụ thể là người chiến thắng, hoặc ít nhất không phải là kẻ thua cuộc.

Thật ra, toàn bộ cây trò chơi cho Qubic đủ nhỏ để nó có thể được mã hóa thành một chương trình máy tính có thể chơi hoàn hảo. Điều mã hóa có nghĩa là toàn bộ cây trò chơi đã được khám phá và tất cả các động thái đã được thực hiện trước. Vì vậy, về cơ bản, chương trình có thể thực hiện một cuộc gọi cơ sở dữ liệu nhanh bằng cách sử dụng trạng thái bảng hiện tại và lấy lại nước đi tốt nhất cho trạng thái bảng đó mà không phải thực hiện tìm kiếm cây mỗi khi thực hiện di chuyển. Đây thực sự là một "mánh gian lận" cho mục đích của chúng tôi ở đây.

Bây giờ chúng ta hãy thảo luận về cờ vua để thảo luận về chức năng đánh giá bỏ qua một số tính năng khác của các chương trình chơi cờ. Cờ vua vẫn là một trò chơi chưa được giải quyết . Không biết người chơi thứ nhất hay thứ hai sẽ giành chiến thắng. Không thể đưa ra bất kỳ vị trí nào trong hội đồng quản trị và dự đoán chắc chắn ai sẽ thắng. Trong thực tế cờ vua có một cây trò chơi lớn đến mức không thể tìm kiếm toàn bộ cây trò chơi. Bạn cần máy tính không chỉ nhanh hơn 10 hoặc 100 lần mà còn nhanh hơn hàng tỷ tỷ lần so với bất kỳ máy tính hiện tại nào. (Có hy vọng rằng điện toán lượng tử có thể vượt qua nút Gordian này.)

Hãy nghĩ về chức năng đánh giá cờ vua như cho mỗi lần di chuyển tiếp theo có thể xác suất là nước đi tốt nhất. Những gì một chương trình cờ vua làm là kết hợp các hướng nhìn với chức năng đánh giá. Do đó, chương trình xem xét tất cả các động thái có thể có trong tương lai cho đến khi đạt đến điểm "tốt" có thể được trao cho vị trí ban giám đốc. Máy tính đánh giá tất cả các đường dẫn có thể đi qua cây theo cách này và sau đó chọn đường dẫn có điểm số tốt nhất. Vì việc tìm kiếm không bao giờ kết thúc trò chơi cho tất cả các đường được đánh giá, nên tất cả các chương trình cờ vua cuối cùng đều sử dụng chức năng đánh giá không hoàn hảo. (Nếu bạn ở gần cuối trò chơi thì máy tính có thể xem xét tất cả các động thái có thể có trong tương lai.) Điều đó có nghĩa là có thể đánh bại chương trình ngay cả khi chương trình có vị trí chiến thắng tại một thời điểm nào đó.


"không thể / có một thuật toán hiệu quả, thời gian đa thức, cho một trò chơi hoàn thành NP. Một vấn đề hoàn thành NP phải, theo định nghĩa, phải được giải quyết bằng một thuật toán không hiệu quả chạy trong thời gian không đa thức." - Đó là không đúng. Người ta không biết liệu có thể giải quyết các vấn đề hoàn thành NP trong thời gian đa thức hay không: hầu hết các nhà nghiên cứu đều kỳ vọng rằng câu trả lời là "không", nhưng chúng tôi không biết chắc chắn, và đó không phải là định nghĩa. Tôi khuyến khích bạn dành nhiều thời gian hơn để đọc về định nghĩa thực tế của NP-Complete. Bạn có thể tìm thấy một số tài nguyên trên trang web này và trên Wikipedia.
DW

@DW - Vâng, tôi câm câu trả lời xuống một chút. Tôi đã nói điều đó trong đoạn đầu tiên. Nếu bạn đọc bit bên dưới Qubic, tôi cũng đã giải thích cách sử dụng thuật toán thời gian đa thức cho một trò chơi "nhỏ". Tôi đã cố gắng đưa ra một câu trả lời OP sẽ hiểu nếu không viết một cuốn sách về tính hoàn chỉnh NP và lý thuyết trò chơi.
MaxW

@@ DW - Tôi nhận ra rằng tôi đã ngầm hiểu về trò chơi hoàn hảo. Tôi nói rõ thêm rằng trình độ chuyên môn.
MaxW
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.