題:
象棋引擎可以做復古分析嗎?
Snack_Food_Termite
2019-11-28 13:56:22 UTC
view on stackexchange narkive permalink

如果我擔任合法的國際象棋職務,那麼發動機可以在多大程度上解決之前的舉動? [在其他類似Othello的棋盤遊戲中,使用引擎即可輕鬆完成遊戲的重構。]

我沒有任何真實的數據,但是您的問題使我思考,是否可以讓像Alpha-Zero這樣的引擎反向學習象棋,努力達到初始狀態。鑑於Alpha-Go在Go上獲得了勝利,隨著您的前進,位置變得更加複雜,我想知道他們的算法是否可以克服答案中提出的限制。
我前段時間問過類似的問題:https://chess.stackexchange.com/questions/15146/calculate-the-first-n-unknown-moves-of-a-chess-game
我認為您可能會誘使Code Golf SE的人們為您編寫一個求解器:-D
-1
九 答案:
Remellion
2019-11-28 14:44:04 UTC
view on stackexchange narkive permalink

Stockfish和Komodo之類的引擎無法計算出先前的動作,因為這不是它們所針對的。

但是,幾乎不可能有人能對能正常工作的引擎進行編程排除以前的合法舉動。找出可能的先前舉動是否合法的邏輯非常困難。

首先,我們如何列出可能的先前舉動?

通過算法很容易找到可能的先前動作,稱為收回(如果我們一秒鐘忽略合法性)-每塊棋子在向前的國際象棋中移動時都會收回(典當除外),它們也可以“俘獲”敵方單位-兵,騎士,主教,白痴或女王。例如wBc4反轉f7上的棋子,看起來像主教從f7移到c4上,黑色棋子出現在f7上。 (您可以弄清楚雙重步驟的樣子。)

關於檢查,一個人可以縮回常規象棋中看起來像“檢查”的東西,而一個人必須始終縮回以永不離開對手“檢查”。 (因此,如果前面的wBc4xbPf7示例檢查了e8上的黑色國王,則需要白色使主教縮回以移除“支票”。)

解鑄很容易可視化(並增加了國王的約束)或新手無法再次撤消)。難以傳遞的內容很難描述,並且構成了許多經典復古問題的基礎。取消促銷再次很容易看到。

因此,從編程的角度來看,列出所有潛在的撤回並不困難。 難以置信的部分是確定哪些撤回是合法的。撤回不合法的原因有很多,從簡單(例如撤回捕獲以在板上保留9個黑卒)到高度令人費解(請參閱大多數逆行分析問題,請參閱逆行轉角。)

例如,在Chess.SE上查看 Troitsky的問題,以及我對此的隨附答案。大量的邏輯證明,實際上只有一個合法的黑色撤退,這並不明顯,涉及計數典當捕獲,考慮其順序和速度限制。

寫一個引擎來要執行此任務,必須能夠以一種計算機可以執行邏輯的方式來闡明其背後的人為邏輯。鑑於“撤退的合法性”遠比“前棋動作的合法性”模糊得多,這似乎根本不可能。

那很有意思。人類可以做得更好的一件事!
證明從起始位置可以到達某個位置通常與解決象棋一樣困難。人類只能在一小部分位置上這樣做。對於計算機,這是不可行的。
@Sopel *人類只能在一小部分位置上這樣做。*這是不正確的。給定一個隨機的位置,在大多數情況下,無論合法與否,人類都可以說得很漂亮。有些顯然由於典當結構而無法到達,有些則因為“沒什麼特別的事情”而合法。逆行分析者將注意力集中在狹窄的邊界區域,構建複雜的謎題,其位置由於多重細微原因而合法或不合法。
*難以描述,並且構成許多經典復古問題的基礎。* –我看不到這一點。每當有敵人發生時,您都可以正常捕獲單個前進的棋子。設置和結果都無法區分。因此,在整個追溯分析過程中,您可能會忽略pass-pass,只需在末尾將其添加為一個附加的,微不足道的一動分支即可,只要直接捕獲一個前進的pawn(並且不阻止其前進兩個字段)即可。
@Wrzlprmft這並非易事,而且設置確實是可區分的:https://chess.stackexchange.com/a/23541/15989
@Remellion:嗯,我知道了。因此,唯一困難的原因是捕獲的典當可能阻塞了支票?
@Wrzlprmft這就是原因之一。另一個(相當廣泛的話題)是被動撤回與retract回權之間的相互作用。請參閱https://www.janko.at/Retros/Glossary/Castling-and-En-passant.htm以獲取樣本,即最近的8個問題(9-16)。還有其他甚至更微妙的交互作用(例如三重重複/ 50移動/航位推算)-逆向分析比它給人的第一印像要深得多。
ling回和en行的逆行分析也將很有趣。 40次移動後,有很多選項可供選擇以返回到起始位置。
BlindKungFuMaster
2019-11-28 14:18:13 UTC
view on stackexchange narkive permalink

當前的引擎根本無法做到這一點。向後計算與向前計算有很大不同。碎片出現而不是被拿走。

但是您當然可以調整引擎以使其在此任務上表現出色。

我不同意第二點陳述-迄今為止,沒有引擎甚至能夠完整列出某個職位的所有可能撤回(合法或非法)。在回溯問題中,極其困難的是確定撤消是否合法–沒有將所有邏輯封裝到計算機程序中的巧妙方法。
是的,合法性很難。我認為您必須找到整個遊戲。但是縮回應該相對容易實現。然後就是樹搜索。
如果在許多可能的線中只有一條15層縮迴線是合法的,則樹木搜索是可怕的。而且它甚至沒有回到起始位置。請參閱我的答案中與之相關的問題,以品嚐中等難度的逆行問題。
當然,樹搜索需要修剪。但是我承認,這樣的引擎可能在Troitzky問題上表現不佳,因為Troitzky問題只有一條合法的15層線。我更多地考慮了重新構造最可能導致該職位的路線的一般任務。我認為這將是一個非常有趣且易於處理的問題。
即使是一般任務,也很難說。要擁有某種發動機,我們必須告訴它什麼是“合法的”移動/後退。對於常規引擎(移動驗證),這確實是困難的部分,對於撤消引擎而言,這幾乎是不可能的部分-您如何以可驗證的方式定義合法撤消?
對於實際的遊戲,我會嘗試通過機器學習合法/可能的撤消。合法性的最終證明只能是一個完整的遊戲。
@Remellion確定在常規發動機中哪些動作合法是微不足道的,我不明白為什麼收回這個動作會更加困難。
@MilesRout合法棋步是由國際象棋規則定義的,因此很容易地檢查棋步是否合法-您只需要參考國際象棋規則即可。合法撤消被定義為(一種可能的定義),其始於並導致合法地位(可通過合法舉動從起始數組中到達)。但是,您如何判斷該職位是否合法?沒有簡單的方法可以做到這一點。
Laska
2019-11-28 18:26:34 UTC
view on stackexchange narkive permalink

我已決定將其擴展為對引擎在各種複古子流派中的適用性進行更一般的調查。

國際象棋引擎(例如Stockfish)善於嘗試所有未來的發展

以相同的方式,您可以輕鬆地嘗試撤回可能的最小移動,方法是使碎片向後移動,對相對的碎片孵化而不是捕獲它們並運行遠離正在“檢查”他們的敵對國王。困難在於抽象通用特徵以找出該位置是否可以從起始位置導出。法律動作和法律地位之間的區別是這裡的關鍵,也是國際棋聯法律中的區別。

證明遊戲是證明遊戲。這些就像復古的問題,除了為您提供了有關預期移動次數的其他信息。時鐘的概念極大地簡化了復古過程,就像可以推論奧賽羅遊戲一樣,因為人們知道確切的移動次數。有些人認為它們是前瞻性規定,因為您確實是從遊戲陣列開始的並且可以向​​前玩,但是通常將它們視為回溯。該領域的主要引擎是Natch,Euclide,Popeye和童話問題Jacobi。

普通後退普通後退問題的引擎較少。這些通過允許求解器指定由人工求解器推導出的約束來工作。 Jacobi在一定數量的舉動範圍內做到了這一點,但是我所知道的最好的就是神秘的Rawbats,該工具僅由其製造商Mario Richter使用,並且僅以其增強開發人員技能的結果而聞名。

幫助牽開器對於擁有計算機的人來說,這是一個很大的機會,他們可以構建一個簡單的撤回引擎,該引擎在不擔心全局合法性的情況下嘗試撤回最近的舉動,然後像常規問題引擎一樣向前播放。這樣的引擎,加上一點點人類常識,將能夠驗證數百種目前無法測試的輔助牽引器組合物。

我想通過提及兩個較不適合引擎使用的逆向區域來結束本文攻擊。

基於約定的問題之一是追溯約定的領域:castling,en passant和其他相關規則。尚未將邏輯推理系統與國際象棋引擎結合在一起,並且在某些情況下,約定本身也存在很大的歧義。這項工作通常留給人類解決,但是原則上,如果這些約定可以合理地紮根,那將是一個有趣的研究主題。

防禦性牽開器復古構圖包含了各種技術含量高的防禦tract毀者。這些實質上涉及以競爭方式向後下棋,而職位合法性問題通常是關鍵,沒有這些問題,構成問題就毫無意義。

PhishMaster
2019-11-28 18:28:27 UTC
view on stackexchange narkive permalink

基本上,答案是“否”,並且可能永遠不會改變。

我將把它與數據庫進行比較,因為它的相關性與您在數據庫中的要求相比似乎很相關你的問題。我意識到它們在某些其他方面是不同的。

數據庫是完美的殘局遊戲數據庫,其計算完全按照您要求的方式進行:它們從最終位置開始,然後返回到最終位置。可能的原始位置。當然,它們是從遊戲結束時開始的,當時棋盤上只剩下7個或更少的棋子,包括國王。您可以看到這實際上比您的問題要容易得多,但正如我們目前所知道的那樣,它仍然是計算能力的巨大任務。

只有7件,不僅花費了驚人的數量。即使要解決一個位置,也需要花費140 TB以上的時間來存儲所有7人的數據庫。花費了幾年的時間。您可以看到如何添加更多的片段,並且呈指數增長。由於極高的計算能力成本,我們甚至還沒有開始使用8人制的表庫,並且估計它們將需要10 PB以上的存儲空間。即使您沒有嘗試用32個棋子來解決每個位置,您也可以看到如何嘗試從遊戲結束回到原來的32個棋子的開始位置是不可行的。

唯一的問題他們是否可以按照人類傾向於以各種方式進行搜索的傾向進行編程,但是我非常懷疑,即使如此,數字仍然很大。

除非我有誤解,否則構建一個*所有可能的遊戲可能出現方式(表)的表比*制定一種遊戲可能出現的方式(復古分析)要困難得多。
user20689
2019-11-29 06:31:00 UTC
view on stackexchange narkive permalink

否。

首先,引擎(以及每個人)也要與其他人(人類玩家,另一個引擎,甚至是自己的對立顏色)對抗。他們可能會猜測其他演員的可能舉動,但步伐不會太遠。他們選擇了一個好方法,另一位演員的方法幫助他們縮小了可能性範圍。

反轉遊戲位置是一個不同的問題,因為您需要知道兩個玩家的方法解決它。您不知道這些舉動是好是壞,或者即使它們是合理的,您也只知道它們是合法的。從這個意義上講,重建遊戲更像是“解決”國際象棋(從開始位置獲取遊戲的所有可能解決方案)。

此外,即使您加強了要求(“每個玩家總是使用當前引擎以最好的解析度進行移動”),在很多情況下確實會出現幾種可能的前任狀態。只需猜測

  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的最後一招是最強的一招,但它不能幫助您確定哪個是前一塊板情況。隨著分析的向後擴展,可能性會增加。

感謝您的答復和歡迎。進行逆行分析時,我們幾乎在所有情況下都會考慮搬家的質量而做出拋棄。僅考慮合法性就足夠困難。我認為問題中提到的引擎是為複古目的而設計的假設引擎,而不是像Stockfish這樣的熟悉的前向引擎之一
-1
再次感謝您的回复,user20689。如何對搬家的質量絕對客觀?它不能在給定的時間依賴於引擎。我從頂級復古作曲家尼古拉斯·杜邦(Nicolas Dupont)那裡聽到的一個未來主義想法是,與反射條件聯繫在一起,因此1中的任何交配都是強制性的。在reflexmate-2下,2中的任何夥伴都是必需的,依此類推。因此,我們可以朝著逆向分析假設完美的世界過渡。但是請記住,主要目標是像棋構圖是一種藝術性的構想:要達到炫酷效果,並不一定會使逆向分析更容易。
lvella
2019-11-30 00:33:11 UTC
view on stackexchange narkive permalink

正如其他人所說,當前的引擎並不能做到這一點。但是從理論上計算機科學的角度來看,這是“可能的”,儘管可能是不可行的。

就像“前進”的國際象棋引擎在將來最多可以搜索幾個(幾十個)動作(因為可能性呈指數級增長),後向引擎將受到完全相同的限制。

我認為枚舉從給定的董事會狀態進行的所有合法後向移動相對簡單(與其他人所說的相反),但是數量

無論如何,由於電路板狀態的數量是有限的,因此從理論上講,編寫這樣的程序是“可能的”:只要有足夠的時間,計算機就會分析所有可能的情況。狀態,並最終在該點之前以有效遊戲結束(這是不唯一的;許多遊戲可以導致相同的狀態),或者得出這樣的位置是不可能的(即使獲得宇宙年齡的時間是很多倍)在那裡,因此引用“可能”)。這就是我們計算機科學家所說的可確定的問題。這種方法可能不可行(因為“向前下棋”當然不可行)。

但是現代象棋引擎並不能盲目地列舉所有可能性。取而代之的是,他們使用非常先進的啟發式方法來確定運動的可能性,並且在對抗人類方面表現出色。在我看來,至少在某些情況下可以使用類似的試探法和技術來創建向後下棋的遊戲。

我毫不懷疑,在大多數情況下,我們可以開發出可以在可接受的時間內取得合法地位的遊戲。但是,該結果幾乎肯定是毫無意義的,因為我們不得不放棄遊戲“有意義”的隱含假設。我們很可能會獲得一種遊戲,首先只有棋子在位置上移動,然後所有丟失的棋子都被犧牲掉,最後每個棋子都像發條一樣在位置上移動。
重建的法律博弈可能是“不合邏輯的”,但我高度懷疑有那麼多“不合邏輯的”法律路徑會導致邏輯董事會狀態,特別是如果使用位置分析來幫助重建的話。實際上,“邏輯”可能性可能會幫助後退引擎過濾掉不太可能的路徑。
jpa
2019-11-30 13:23:34 UTC
view on stackexchange narkive permalink

從目標位置開始,搜索可能的先前動作確實是不可行的。但是,有一種方法可以產生能夠擊中目標位置的合理遊戲。

在普通的國際象棋引擎中,計算機會根據一些標準(例如,剩餘多少個棋子)對每個位置評分。得分的目的是確定從該位置獲勝的可能性。

一個人可以改用另一套評分標準,例如在正確位置有多少張以及該組是否

將兩個這樣的引擎放置在彼此之間進行正常的前向遊戲可能會產生最終以目標位置結束的遊戲。

額外:一個有趣的擴展是使用正常得分來預測對手的動作,而將目標得分用於國際象棋引擎自身的動作。這樣,以目標為目標的象棋引擎將試圖迫使以勝利為目標的對手最終處於特定位置。當然,這僅適用於一小部分職位。

alphacapture
2019-12-01 19:25:27 UTC
view on stackexchange narkive permalink

雖然目前尚不可能編寫出比人類更好的AI,但在此處

的“復古,程序化,úlohy”子標題下有一些相關程序。
allo
2019-12-01 00:31:19 UTC
view on stackexchange narkive permalink

從純粹的理論角度來看:是的,這是可能的。

您只需要繼續玩所有可能的遊戲,直到找到至少一個包含當前位置的遊戲。然後,您可以使用它向前播放的動作進行回溯分析。

但是您不能只是這樣做,因為可能的遊戲數量很多。因此,這僅是理論上的證明。在實踐中,問題是它是否在合理的時間內可處理。

我想通過擴展一些當前的規劃方法來可處理,但是細節並不簡單。我建議在 https://ai.stackexchange.com上詢問AI是否可以實現這一目標,因為這是一個有關遊戲AI的有趣問題,並可能在該網站上引發一些非常有趣的答案。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...