ฉันถามปัญหานี้ในMathOverflowโดยไม่มีคำตอบที่น่าพอใจ
พิจารณาต่อไปนี้เกมที่สองผู้เล่นซึ่งเป็นความเรียบง่ายของเกมการ์ดที่เรียกว่าผู้ชนะ (สูตรต่อไปนี้นำมาจากความคิดเห็นโดย Guillaume Brunerie บน MathOverflow)
มีผู้เล่นสองคน A และ B ผู้เล่นแต่ละคนมีชุดไพ่ (เซตย่อยของ ) ซึ่งมองเห็นได้จากผู้เล่นทั้งสอง เป้าหมายของเกมคือการกำจัดไพ่ของตัวเอง ผู้เล่นคนแรกเล่นการ์ดใด ๆ บนโต๊ะจากนั้นผู้เล่นคนอื่นจะต้องเล่นไพ่ที่ใหญ่กว่า (อย่างเคร่งครัด) และต่อไปจนกว่าผู้เล่นคนใดคนหนึ่งจะไม่สามารถเล่นหรือตัดสินใจที่จะผ่าน จากนั้นไพ่บนโต๊ะจะถูกยกเลิกและผู้เล่นคนอื่นจะเริ่มต้นอีกครั้งโดยการเล่นไพ่ใด ๆ (ซึ่งจะตามด้วยไพ่ที่ใหญ่กว่า) และต่อไปจนกว่าผู้เล่นหนึ่งในสองคนจะหมดไพ่และชนะเกม
ฉันต้องการทราบกลยุทธ์ที่ดีที่สุดสำหรับผู้เล่น (ถ้าเขาสามารถชนะได้)
นิยามที่เป็นทางการ
แสดงโดยการกำหนดค่าของเกมที่ชุดไพ่ของผู้เล่นคนแรกคือชุดของไพ่ของผู้เล่นที่สองคือและการ์ดที่ใหญ่ที่สุดบนโต๊ะคือโดยที่หมายความว่าไม่มีบัตรบนโต๊ะ ผมอยากจะอัลกอริทึมในการคำนวณการรับไม่ว่าจะเป็นผู้เล่นคนแรกมีกลยุทธ์ชนะในการกำหนดค่าB)
อย่างเป็นทางการฉันต้องการอัลกอริทึมในการคำนวณฟังก์ชันกำหนดดังนี้:
ปล่อย , .
ฟังก์ชัน
โดยที่
กลยุทธ์ที่ไม่ถูกต้อง
นี่คือกลยุทธ์ที่ผิด:
- เล่นไพ่ที่เล็กที่สุดเสมอ ให้กลยุทธ์ชนะเลิศสำหรับผู้เล่นในการกำหนดค่าคือการเล่นการ์ด3หากผู้เล่น A เล่นไพ่ 1 เขาจะแพ้
- เล่นการ์ดที่เล็กที่สุดยกเว้นว่าผู้เล่นคนอื่นมีการ์ดเพียงใบเดียว มันเป็นกลยุทธ์ที่แข็งแกร่งกว่ากลยุทธ์ 1 แต่ก็ผิดเช่นกัน เพียงคิดเกี่ยวกับการกำหนดค่า\}) หากผู้เล่น A ใช้กลยุทธ์ 2 เขาจะแพ้:ดังนั้นผู้เล่น A เสีย