如果我擔任合法的國際象棋職務,那麼發動機可以在多大程度上解決之前的舉動? [在其他類似Othello的棋盤遊戲中,使用引擎即可輕鬆完成遊戲的重構。]
如果我擔任合法的國際象棋職務,那麼發動機可以在多大程度上解決之前的舉動? [在其他類似Othello的棋盤遊戲中,使用引擎即可輕鬆完成遊戲的重構。]
Stockfish和Komodo之類的引擎無法計算出先前的動作,因為這不是它們所針對的。
但是,幾乎不可能有人能對能正常工作的引擎進行編程排除以前的合法舉動。找出可能的先前舉動是否合法的邏輯非常困難。
首先,我們如何列出可能的先前舉動?
通過算法很容易找到可能的先前動作,稱為收回(如果我們一秒鐘忽略合法性)-每塊棋子在向前的國際象棋中移動時都會收回(典當除外),它們也可以“俘獲”敵方單位-兵,騎士,主教,白痴或女王。例如wBc4反轉f7上的棋子,看起來像主教從f7移到c4上,黑色棋子出現在f7上。 (您可以弄清楚雙重步驟的樣子。)
關於檢查,一個人可以縮回常規象棋中看起來像“檢查”的東西,而一個人必須始終縮回以永不離開對手“檢查”。 (因此,如果前面的wBc4xbPf7示例檢查了e8上的黑色國王,則需要白色使主教縮回以移除“支票”。)
解鑄很容易可視化(並增加了國王的約束)或新手無法再次撤消)。難以傳遞的內容很難描述,並且構成了許多經典復古問題的基礎。取消促銷再次很容易看到。
因此,從編程的角度來看,列出所有潛在的撤回並不困難。 難以置信的部分是確定哪些撤回是合法的。撤回不合法的原因有很多,從簡單(例如撤回捕獲以在板上保留9個黑卒)到高度令人費解(請參閱大多數逆行分析問題,請參閱逆行轉角。)
例如,在Chess.SE上查看 Troitsky的問題,以及我對此的隨附答案。大量的邏輯證明,實際上只有一個合法的黑色撤退,這並不明顯,涉及計數典當捕獲,考慮其順序和速度限制。
寫一個引擎來要執行此任務,必須能夠以一種計算機可以執行邏輯的方式來闡明其背後的人為邏輯。鑑於“撤退的合法性”遠比“前棋動作的合法性”模糊得多,這似乎根本不可能。
當前的引擎根本無法做到這一點。向後計算與向前計算有很大不同。碎片出現而不是被拿走。
但是您當然可以調整引擎以使其在此任務上表現出色。
我已決定將其擴展為對引擎在各種複古子流派中的適用性進行更一般的調查。
國際象棋引擎(例如Stockfish)善於嘗試所有未來的發展
以相同的方式,您可以輕鬆地嘗試撤回可能的最小移動,方法是使碎片向後移動,對相對的碎片孵化而不是捕獲它們並運行遠離正在“檢查”他們的敵對國王。困難在於抽象通用特徵以找出該位置是否可以從起始位置導出。法律動作和法律地位之間的區別是這裡的關鍵,也是國際棋聯法律中的區別。
證明遊戲是證明遊戲。這些就像復古的問題,除了為您提供了有關預期移動次數的其他信息。時鐘的概念極大地簡化了復古過程,就像可以推論奧賽羅遊戲一樣,因為人們知道確切的移動次數。有些人認為它們是前瞻性規定,因為您確實是從遊戲陣列開始的並且可以向前玩,但是通常將它們視為回溯。該領域的主要引擎是Natch,Euclide,Popeye和童話問題Jacobi。
普通後退普通後退問題的引擎較少。這些通過允許求解器指定由人工求解器推導出的約束來工作。 Jacobi在一定數量的舉動範圍內做到了這一點,但是我所知道的最好的就是神秘的Rawbats,該工具僅由其製造商Mario Richter使用,並且僅以其增強開發人員技能的結果而聞名。
幫助牽開器對於擁有計算機的人來說,這是一個很大的機會,他們可以構建一個簡單的撤回引擎,該引擎在不擔心全局合法性的情況下嘗試撤回最近的舉動,然後像常規問題引擎一樣向前播放。這樣的引擎,加上一點點人類常識,將能夠驗證數百種目前無法測試的輔助牽引器組合物。
我想通過提及兩個較不適合引擎使用的逆向區域來結束本文攻擊。
基於約定的問題之一是追溯約定的領域:castling,en passant和其他相關規則。尚未將邏輯推理系統與國際象棋引擎結合在一起,並且在某些情況下,約定本身也存在很大的歧義。這項工作通常留給人類解決,但是原則上,如果這些約定可以合理地紮根,那將是一個有趣的研究主題。
防禦性牽開器復古構圖包含了各種技術含量高的防禦tract毀者。這些實質上涉及以競爭方式向後下棋,而職位合法性問題通常是關鍵,沒有這些問題,構成問題就毫無意義。
基本上,答案是“否”,並且可能永遠不會改變。
我將把它與數據庫進行比較,因為它的相關性與您在數據庫中的要求相比似乎很相關你的問題。我意識到它們在某些其他方面是不同的。
數據庫是完美的殘局遊戲數據庫,其計算完全按照您要求的方式進行:它們從最終位置開始,然後返回到最終位置。可能的原始位置。當然,它們是從遊戲結束時開始的,當時棋盤上只剩下7個或更少的棋子,包括國王。您可以看到這實際上比您的問題要容易得多,但正如我們目前所知道的那樣,它仍然是計算能力的巨大任務。
只有7件,不僅花費了驚人的數量。即使要解決一個位置,也需要花費140 TB以上的時間來存儲所有7人的數據庫。花費了幾年的時間。您可以看到如何添加更多的片段,並且呈指數增長。由於極高的計算能力成本,我們甚至還沒有開始使用8人制的表庫,並且估計它們將需要10 PB以上的存儲空間。即使您沒有嘗試用32個棋子來解決每個位置,您也可以看到如何嘗試從遊戲結束回到原來的32個棋子的開始位置是不可行的。
唯一的問題他們是否可以按照人類傾向於以各種方式進行搜索的傾向進行編程,但是我非常懷疑,即使如此,數字仍然很大。
否。
首先,引擎(以及每個人)也要與其他人(人類玩家,另一個引擎,甚至是自己的對立顏色)對抗。他們可能會猜測其他演員的可能舉動,但步伐不會太遠。他們選擇了一個好方法,另一位演員的方法幫助他們縮小了可能性範圍。
反轉遊戲位置是一個不同的問題,因為您需要知道兩個玩家的方法解決它。您不知道這些舉動是好是壞,或者即使它們是合理的,您也只知道它們是合法的。從這個意義上講,重建遊戲更像是“解決”國際象棋(從開始位置獲取遊戲的所有可能解決方案)。
此外,即使您加強了要求(“每個玩家總是使用當前引擎以最好的解析度進行移動”),在很多情況下確實會出現幾種可能的前任狀態。只需猜測
rnbqkbnr / pp1p1ppp / 8/8 / 3p / N7 / PPP1PPPP / R1B1KBNR w--1 13
這是從哪裡來的?
[fen“”] 1。 d3 c5 2. d4 e5 3. Na3 exd4 4. Qxd4 cxd4
還是來自?
[fen“”] 1。 d3 c5 2. d4 e5 3. Na3 cxd4 4. Qxd4 exd4
在兩種情況下,black的最後一招是最強的一招,但它不能幫助您確定哪個是前一塊板情況。隨著分析的向後擴展,可能性會增加。
正如其他人所說,當前的引擎並不能做到這一點。但是從理論上計算機科學的角度來看,這是“可能的”,儘管可能是不可行的。
就像“前進”的國際象棋引擎在將來最多可以搜索幾個(幾十個)動作(因為可能性呈指數級增長),後向引擎將受到完全相同的限制。
我認為枚舉從給定的董事會狀態進行的所有合法後向移動相對簡單(與其他人所說的相反),但是數量
無論如何,由於電路板狀態的數量是有限的,因此從理論上講,編寫這樣的程序是“可能的”:只要有足夠的時間,計算機就會分析所有可能的情況。狀態,並最終在該點之前以有效遊戲結束(這是不唯一的;許多遊戲可以導致相同的狀態),或者得出這樣的位置是不可能的(即使獲得宇宙年齡的時間是很多倍)在那裡,因此引用“可能”)。這就是我們計算機科學家所說的可確定的問題。這種方法可能不可行(因為“向前下棋”當然不可行)。
但是現代象棋引擎並不能盲目地列舉所有可能性。取而代之的是,他們使用非常先進的啟發式方法來確定運動的可能性,並且在對抗人類方面表現出色。在我看來,至少在某些情況下可以使用類似的試探法和技術來創建向後下棋的遊戲。
從目標位置開始,搜索可能的先前動作確實是不可行的。但是,有一種方法可以產生能夠擊中目標位置的合理遊戲。
在普通的國際象棋引擎中,計算機會根據一些標準(例如,剩餘多少個棋子)對每個位置評分。得分的目的是確定從該位置獲勝的可能性。
一個人可以改用另一套評分標準,例如在正確位置有多少張以及該組是否
將兩個這樣的引擎放置在彼此之間進行正常的前向遊戲可能會產生最終以目標位置結束的遊戲。
額外:一個有趣的擴展是使用正常得分來預測對手的動作,而將目標得分用於國際象棋引擎自身的動作。這樣,以目標為目標的象棋引擎將試圖迫使以勝利為目標的對手最終處於特定位置。當然,這僅適用於一小部分職位。
雖然目前尚不可能編寫出比人類更好的AI,但在此處
的“復古,程序化,úlohy”子標題下有一些相關程序。從純粹的理論角度來看:是的,這是可能的。
您只需要繼續玩所有可能的遊戲,直到找到至少一個包含當前位置的遊戲。然後,您可以使用它向前播放的動作進行回溯分析。
但是您不能只是這樣做,因為可能的遊戲數量很多。因此,這僅是理論上的證明。在實踐中,問題是它是否在合理的時間內可處理。
我想通過擴展一些當前的規劃方法來可處理,但是細節並不簡單。我建議在 https://ai.stackexchange.com上詢問AI是否可以實現這一目標,因為這是一個有關遊戲AI的有趣問題,並可能在該網站上引發一些非常有趣的答案。