- 1964 में Nenad Petrović द्वारा प्रकाशित 218 चालों वाले chess position से अधिक चालें देने वाला कोई position मौजूद नहीं है
- सभी positions को खोजना व्यावहारिक रूप से असंभव है, इसलिए गणितीय optimization और computer-aided modeling तकनीकों से इसकी सीमा साबित की गई
- गैर-ज़रूरी pieces हटाना, partial piece placement की अनुमति देना, castling को सरल बनाना जैसी तकनीकों से search space को प्रभावी ढंग से घटाया गया
- अंत में Gurobi optimization tool से पुष्टि की गई कि 218 चालें ही अधिकतम हैं, और 144 चालों (promotion को छोड़कर) जैसे रिकॉर्ड भी अतिरिक्त रूप से सत्यापित किए गए
- इस शोध से chess engine और compression developers को maximum move limit को लेकर मौजूद अनिश्चितता दूर करने में मदद मिली
परिचय: 218-चाल वाले chess position पर बहस
1964 में chess composition grandmaster Nenad Petrović ने 218 चालों वाला position प्रकाशित किया था, और उसके बाद से इस रिकॉर्ड को तोड़ने की कोशिशें चलती रहीं। लेखक ने एक computer scientist के रूप में कंप्यूटर से सभी positions का विश्लेषण करके इस सवाल का अंतिम जवाब देने का प्रयास किया। लगभग 4.8 × 10^44 पहुँचने योग्य chess positions मौजूद हैं, लेकिन इतनी विशाल खोज व्यावहारिक रूप से असंभव है.
गणितीय optimization का उपयोग
गैर-ज़रूरी pieces और combinations को न्यूनतम करना
- chessboard पर black pieces के अतिरिक्त होने से चालों की संख्या बढ़ने के मामले सीमित हैं
- जैसे white pawn उन्हें capture कर सके, या opponent king पर check की स्थिति से बचना हो
- अधिकांश black pieces को हटाने पर अधिकतम चालों की संख्या पर कोई असर नहीं पड़ता
- जहाँ pieces की संख्या अनुमति दे, वहाँ black pieces को कमजोर pieces से बदला जा सकता है या कुछ constraints (जैसे pin) के तहत उनकी placement बदली जा सकती है
- white pieces के मामले में उलटा है; optimal position बनाते समय उन्हें queen जैसे मजबूत pieces से पूरी तरह बदलने पर illegal position बन सकती है, इसलिए सूक्ष्म समायोजन ज़रूरी है
check की स्थिति और चालों की सीमा
- black king का check में होना legal position नहीं है, इसलिए उसे विचार में लेने की आवश्यकता नहीं
- white king check में हो तो उसकी चालें बहुत गंभीर रूप से सीमित हो जाती हैं (अधिकतम 120 चालें), इसलिए 218 तक पहुँचना असंभव है
- इसलिए केवल वे positions खोजी जा सकती हैं जहाँ check न हो
partial piece placement और mathematical modeling
combinational complexity घटाने के लिए partial (fractional) piece placement, movement, और कुछ chess rules को ढीला करने वाले model का उपयोग किया गया
- उदाहरण के लिए, कोई piece 27.3% संभावना के साथ e4 पर हो सकता है और 72.7% संभावना के साथ किसी दूसरी जगह
- this तरीके को Gurobi जैसे आधुनिक optimization tools में integer programming (ILP, Integer Linear Programming) के रूप में लागू किया गया
- शुरुआत में memory और time limits की समस्या आई (लगभग 55,000 सेकंड बाद memory खत्म हो गई)
- search space को सरल बनाने के लिए castling rules, check, pin, और en passant conditions को सरल करने जैसे अतिरिक्त कदम उठाए गए
optimization और निष्कर्ष
अंत में, गैर-ज़रूरी combination search को रोकने वाले auxiliary constraints जोड़कर model को सुधारा गया, और Gurobi program के माध्यम से optimization पूरा किया गया
- upper bound को 305 चालों → 271.67 चालों → 218 चालों तक क्रमशः घटाया गया
- यह पुष्टि हुई कि 218 चालों वाले केवल 12 प्रतिनिधि positions ही वास्तव में पहुँचने योग्य हैं
- यह भी साबित किया गया कि ये positions proof game के माध्यम से बिना किसी कठिनाई के पहुँचने योग्य legal positions हैं
साथ ही, promotion के बिना अधिकतम 144 चालें, illegal positions में अधिकतम 288 चालें, और पहुँच से बाहर legal positions में 271 चालों के रिकॉर्ड भी सत्यापित किए गए
परिणाम और महत्व
- इस शोध के कारण chess engine developers और compression algorithm researchers को memory design जैसी स्थितियों में 256 चालों की सीमा पर्याप्त है यह भरोसा मिला
- यह गणितीय रूप से सिद्ध हो गया कि legal path से 218 से अधिक चालों वाला कोई position मौजूद नहीं है
FAQ सारांश
- chess game 218 चालों से लंबा हो सकता है, लेकिन यह शोध एक turn में उपलब्ध विकल्पों की अधिकतम संख्या पर केंद्रित है
- अगर कुछ positions पहुँचने योग्य नहीं लगते, तो लेखक कहते हैं कि कई रास्ते संभव हैं, जैसे पिछली चाल capture पर समाप्त हुई हो
- इस शोध-पद्धति में विशाल combinational space से 'बिल्कुल असंभव combinations' को जल्दी हटाने के लिए mathematical oracle तकनीक लागू की गई
- उपयोग किए गए code और निकाले गए प्रमाण की गणितीय वैधता भी सार्वजनिक की गई, जिससे विश्वसनीयता बढ़ी
आगे के कार्य और अतिरिक्त शोध के प्रस्ताव
इस तकनीक का उपयोग करके 'सबसे अधिक captures', 'सबसे अधिक stalemate', 'सबसे अधिक check', 'सबसे अधिक checkmate', 'सबसे अधिक mate in 2' जैसे कई chess problems पर काम किया जा सकता है। हालांकि, कुछ मामलों में अलग तरह के रचनात्मक optimization algorithms की आवश्यकता हो सकती है.
निष्कर्ष
- 218 चालें किसी chess position में एक turn पर उपलब्ध आधिकारिक अधिकतम चालों की संख्या है
- व्यावहारिक रूप से chess software और शोधकर्ता 218 (या 256) के अनुसार अपनी structures डिजाइन कर सकते हैं
- संबंधित code और optimization results GitHub पर सार्वजनिक हैं
संदर्भ
- Nenad Petrović के 218-चाल वाले position, Jenő Bán के 144-चाल वाले (बिना promotion) position आदि के proof game और position links शामिल हैं
- विस्तृत विवरण और code Github repository में देखे जा सकते हैं
1 टिप्पणियां
Hacker News टिप्पणी
Lichess पर 960 या Crazyhouse जैसे variant chess का स्तर Chess.com से कहीं ऊँचा है
सचमुच हास्यास्पद रूप से शानदार है। अगर संभव हो तो donation की सलाह दूँगा
दिलचस्प बात यह है कि mixed-integer linear programming (MILP) solvers पहले से ही इस तरह की प्रक्रिया को support करते हैं। तकनीकी भाषा में इसे 'row generation' कहा जाता है, आम तौर पर तब जब समस्या को matrix form में लिखा जाता है जहाँ rows constraints होती हैं और columns variables
(डायनामिक रूप से) नई rows जोड़ना वही बात है जो केवल उल्लंघन होने पर constraints लागू करना
यह तरीका अक्सर Traveling Salesman Problem हल करने में उपयोग होता है
(वैसे Wikipedia पर Column generation है, लेकिन row generation नहीं है)
Chess rules को relax या omit करने का असर variable selection पर भी पड़ा। mathematical modeling में जाने से पहले मैंने lazy constraints जैसी चीज़ें आज़माई थीं, लेकिन उनसे meaningful speedup नहीं मिला। उदाहरण के लिए, सिर्फ यह ignore करना कि white king check में है या नहीं, इससे भी काफी simplification हुई
(मान लेते हैं कि Gurobi में bug नहीं है, और लेखक की problem definition तथा implementation में भी bug नहीं है)
मैं जानना चाहता हूँ कि क्या Gurobi किसी local maximum में फँस सकता है, या उसने सच में globally optimal solution साबित किया है
अगर Gurobi और मेरा code जैसा intended है वैसा ही काम कर रहे हैं, और chess model को simplify करने की प्रक्रिया में कोई logical error नहीं है, तो मेरा परिणाम यह साबित करता है कि "initial position से legal move sequence द्वारा पहुँची जा सकने वाली chess positions में possible legal moves का maximum ऊपर और नीचे, दोनों ओर से 218 है"। यानी Gurobi ने पूरे search space को bound करके दिखा दिया कि इससे बेहतर कुछ नहीं है
Computing के नज़रिए से entire problem space ज़्यादा महत्वपूर्ण है। क्योंकि legal है या नहीं यह तय करने से पहले भी सबको "compute" करना पड़ता है। सिर्फ legal positions को iterate करने का कोई आसान तरीका नहीं है
एक परिचित की सूचना से पता चला कि यहाँ मेरे लेख पर चर्चा हो रही है
कम स्पष्ट title चुनने के लिए माफ़ी चाहता हूँ, उम्मीद है अब बात स्पष्ट हो गई होगी। feedback और गर्मजोशी भरी बातों के लिए धन्यवाद
अगर ऐसे ही chess facts के proofs को लेकर कोई सवाल हो, तो मैं जवाब देने की कोशिश कर सकता हूँ ^^
धन्यवाद
Tobi
अपडेट: लेख में लगभग 8.7x10^45 reachable chess positions का ज़िक्र है, और https://github.com/lechmazur/ChessCounter इस संख्या को upper bound के रूप में रखता है
(यह लगभग 153 bits के बराबर है)
log2(4.8x10^44)के हिसाब से यह 149 bits बनता हैलेकिन efficiently decode करने के लिए ChessPositionRanking project द्वारा सुझाई गई संख्या (8726713169886222032347729969256422370854716254) के
log2के ceiling के अनुसार 153 bits चाहिए। ChessCounter efficient decoding code नहीं देताrook/queen/knight भी, लेकिन chess में वे capture हो चुके हो सकते हैं, इसलिए इन 5 pieces में से हर एक के लिए कुल 65 states चाहिए
bishop सिर्फ आधे tiles पर जा सकता है, इसलिए प्रत्येक के लिए 33 states
pawn के लिए 4 promotion possibilities, captured होना, और स्थिति के अनुसार लगभग 20~30 positions, कुल मिलाकर प्रति pawn लगभग 290 states
इस तरह एक color के pieces के लिए board state को represent करने में लगभग 112 bits लगते हैं, rounding के बाद दोनों पक्षों के लिए 224 bits
En Passant और castling restrictions (जैसे castling unavailable होना) के लिए rounding के कारण अलग से अतिरिक्त bits की ज़रूरत नहीं पड़ती; वे बस हर piece की कुछ अतिरिक्त states बन जाती हैं
शायद fixed-length board representation के लिए यह सबसे compressed form है
Sparse representation में, चूँकि दोनों kings हमेशा मौजूद होते हैं, जीवित pieces को n-digit decimal संख्या से और उनकी positions को n+2 64-bit numbers से दिखाया जा सकता है; castling, en passant आदि के लिए थोड़ा extra metadata चाहिए। अगर औसतन आधे pieces हट चुके हों, तो board state representation लगभग 180 bits में आ जाती है
Move history के लिए भी हर move पर लगभग 10 bits चाहिए (black/white की एक जोड़ी चालों पर, एक ply के लिए 5 bits), तो लगभग 18 moves तक जाया जा सकता है। यह औसत chess game length के मध्य बिंदु से कुछ कम है
इससे ज़्यादा compression के लिए शायद बहुत विशाल dictionary लागू करनी पड़ेगी
तो पूरे board की fixed-length encoding होगी 644=256 bits=32 bytes
या, सिर्फ pieces के लिए variable-length representation में, हर occupied square का index 6 bits में, यानी pieces की संख्या10 bits
उदाहरण के लिए initial position होगी 32*10=320 bits=40 bytes
5.68e50 "general" असली upper bound है, और वह सभी possible promotions की अनुमति देता है
उस pawn के पास सिर्फ एक ही move है (बगल के knight को capture करना)। अगर वह pawn न हो, तो चार white queens और knight b2 में जा सकते हैं। लेकिन वास्तव में black king पहले से checkmate में है, इसलिए वे moves असल में संभव नहीं हो सकते
लुभावना लगता है कि e5 वाली queen को कहीं और रखकर immediate checkmate टाला जाए और b2 square को और खोला जाए
पुनश्च: लगता है वह pawn stalemate रोकने के लिए वहाँ जीवित रहना चाहिए
अगर Black to move हो, तो भी e5 की white queen के कारण king pinned है, इसलिए वह फिर भी नहीं चल सकता। अगर pin न हो, तो वह 4 बार चल सकता है। underpromotion भी संभव है
Position White to move है। भले ही b2 का pawn white queen की वजह से king को pin न कर रहा हो, black pawn चल नहीं सकता
b2 का pawn black king को check से बचाने के लिए अनिवार्य है। उसके बिना यह position खुद legal नहीं रहेगी
मैंने सब कुछ बहुत ध्यान से जाँचा है, इसलिए निश्चिंत रहें, white के लिए 218 से ज़्यादा moves बनाने की कोशिश संभव नहीं थी। फिर भी बहुत लोगों ने मेरे लेख में रुचि दिखाई, इससे मैं आश्चर्यचकित और आभारी हूँ, haha ^^
ऐसा लग सकता है कि black pawns में से किसी एक को white knight से बदलकर moves बढ़ाई जा सकती हैं, लेकिन दोनों knights पहले से मौजूद हैं, और सारे pawns promoted हैं, इसलिए यह संभव नहीं। (अगर दोनों pawns बदल दिए जाएँ, तो Black का पिछली चाल में इस स्थिति तक पहुँचना असंभव हो जाता)
क्या आपने पूरा लेख पढ़ा?
271 नहीं, 271.666... :) यह मान उस model से आता है जहाँ सभी decisions (0 या 1) को continuous values (0.0~1.0 और बीच के मान) में relax किया गया है। यानी आप मान सकते हैं कि कोई piece 0.23 जितना मौजूद है। किसी खास move को चल पाने की "संभावना" भी 0.843 जैसी हो सकती है।
इस तरह के 'black magic' से computation बहुत तेज़ हो जाती है, और यह असली दुनिया से ज़्यादा moves दे सकता है।
इसलिए इस पद्धति से तेज़ी से उन subspaces को हटाया जा सकता है जो संभावित रूप से खराब partial solutions देते हैं। ऐसी techniques के बिना पूरे search space को exhaustively जाँचना असंभव है
वैसे, लगता है आपने black pawns को उनकी शुरुआती positions पर समझ लिया। असल में black pawn board के दूसरी तरफ तक पहुँच चुका है (white side में)