Чому шахові двигуни іноді пропускають хороші кроки (або вічно беруть участь на місці)?


17

Це не перший раз, коли я виявив значно кращий крок, ніж шаховий двигун, навіть їм потрібно певний час, щоб зрозуміти ці кроки після того, як ви їх зробите.

Наприклад, рух 15 ... Bf2у грі нижче:

NN - NN, 0-1
1. є4 е5 2. Nf3 Кс6 3. Bb5 Nf6 4. ГО Ng4 5. h3 h5 6. hxg4 hxg4 7. bxc6 gxf3 8. Qxf3 Qh4 9. Qh3 Qxh3 10. gxh3 dxc6 11. Ке1 Bxh3 12. f3 Bc5 + 13. Kh2 Bf1 + 14. Kg3 Rh3 + 15. Kg4 Bf2 16. Rxf1 Rg3 + 17. Kf5 Rxf3 + 18. Kg4 Rg3 + 19. Kf5 f6 20. d3 Kf7 0-1

Рух на деякий час залишається непоміченим двигуном, він не починає бачити решту айсберга.

Я знаю, що все залежить від того, скільки часу ви надаєте їм на аналіз, але неприпустимо, що іноді людям вдається знайти ці кроки за менший час, ніж комп'ютери.

  • Чому шахові двигуни не вдається помітити хороші рухи в деяких позиціях? (Я колись прочитав щось про "ефект горизонту", можливо, це пов'язано?)
  • Чи є інші помітні приклади? (наприклад, ця знаменита головоломка , щоб вирішити комп'ютери, потрібно час)

Ці питання містять корисну інформацію для часткового пояснення деяких факторів, які можуть викликати цю аномалію: Які алгоритми та евристика популярні в комп'ютерних шахах? , Під час гри в суперника на комп’ютері, які ситуації я повинен створити, щоб дати собі більше шансів на перемогу? , Комп'ютерні оцінки: наскільки вони надійні?

Примітки: Пастка відома як Рибалка , я знаю, що я пропустив товариша в 3 (а товариш в 7) :(, обмеження часу на ходу було дні (кореспонденція в шахи), але на це у мене пішло 5-10 хвилин закінчити все обчислити.


1
Дуже цікаво. Запаси на моєму ПК середньої сили не знайшли 15... Bf2взагалі через 5 хвилин.
Тоні Енніс

... і знадобилося 7 хвилин, щоб знайти подібного товариша-7 на наступному кроці.
Тоні Енніс

20 d3 - помилка. спробуйте 20 d4.
dcaswell

1
Чому ви використовуєте мову, "неприйнятну" для людини, щоб знайти крок за менший час, ніж комп'ютер? Чи можете ви розпакувати свої думки з цього приводу?
Xonatron

Це пропустило багато кращих рухів. Навіщо конкретно виділяти цю?
йобамама

Відповіді:


33

Чому шахові двигуни не вдається помітити хороші рухи в деяких позиціях?

Причиною називаються прийоми обрізки вперед (див. Http://chessprogramming.wikispaces.com/Pruning ) із програмою ProbCut у першому рядку.

Хід 15 ... Bf2 обрізається на неглибоких глибинах, оскільки він включає жертву 16.Rxf1, не повертаючи щось конкретне з доказами одразу після. Матенет також важко помітити, оскільки він включає деякий подальший «безшумний» хід, як, наприклад, 17 ... Ke7, і так само двигуни, не тільки люди мають труднощі бачити далекі безшумні ходи, оскільки їх часто обрізають.

У цьому конкретному випадку ви навіть не можете сказати, що двигуни не можуть помітити хороших рухів, тому що також продовження 15 ... Rh3h1 - дуже хороший хід і призводить до абсолютно виграної позиції.

І останнє, але не менш важливе, ви повинні пам’ятати, що міцність двигуна завжди вимірюється з точки зору elo-strong, а не в здатності знайти абсолютний найкоротший шлях до перемоги. Не має значення, якщо двигун виграє в 8 ходів або в 25 ходах. Прагнути до найкоротшого виграшу, це би означало марний час, адже більшість часу взагалі не існує такого таємного хорошого кроку. А втрата часу зашкодить двигунам ELO-Rating.


1
Приємна відповідь, ласкаво просимо на сайт!
Андрій

+1 для згадування компромісу між обрізаним та повним пошуком. Я не принаймні здивований, що комбінація 13+ PLY не знайдеться швидко. Двигун має "кращі справи", ніж обчислювати всі можливості на цю глибину.
Даніель Б

2
Гарна відповідь загалом. +1 за "Останнє, але не менш важливе, ви повинні пам’ятати, що міцність двигуна завжди вимірюється з точки зору elo-сила, а не в здатності знайти абсолютний найкоротший шлях до перемоги"
ferit

Відмінна відповідь.
Xonatron

12

Я пробую це з Houdini 1.5 (безкоштовна версія). Спочатку 15 ... Bf2 не відображається в перших 5 рухах, потім, коли він досягає глибини 15, він робить, як №1. На моєму чотирирічному комп’ютері забирає близько 19 секунд, не так довго.

Тож він не промацує його, а натомість вважає це найкращим рухом лише після досягнення глибини 15. Мабуть, поки це виглядає лише на 14 плів глибше, інші рухи є кращими (як і виграшні 15 ... f5 +).

Мабуть, 15 ... Bf2 - це товариш в 8, що в 15 шарів (8 ходів по чорному, 7 по білому). Але спочатку це просто вважає +10 або близько того, потім +20, потім пару в 10, потім пару в 8.

Парубок у 8 рядках:

NN - NN
1. є4 е5 2. Nf3 Кс6 3. Bb5 Nf6 4. ГО Ng4 5. h3 h5 6. hxg4 hxg4 7. bxc6 gxf3 8. Qxf3 Qh4 9. Qh3 Qxh3 10. gxh3 dxc6 11. Ке1 Bxh3 12. f3 Bc5 + 13. Kh2 Bf1 + 14. Kg3 Rh3 + 15. Kg4 Bf2 16. Rxf1 Rh4 + 17. Kg5 Ke7 18. Rh1 Rxh1 19. Nc3 Rah8 20. Nd5 + cxd5 21. d3 R8h5 + 22. Kg4 R1h4 #.

Ясна річ, коли Гудіні 1.5 думає про глибину на 15 пластів, вона не враховує всіх можливих ліній, які є глибиною на 15 шарів, або вона побачить товариша за 8 мить, коли закінчила свій 15-глибокий пошук.

Я думаю, що це через обрізку , вона перестає дивитись на деякі рядки, коли думає, що вони недостатньо обіцяють. Таким чином, це може витратити більше часу на перспективні лінії, а програміст вважає, що плюси переважують мінуси. Але зараз я не маю відповіді на те, що він вирішив обрізати тут (можливо, він приймає мільйони окремих рішень щодо обрізки на глибині 15).

Це може бути пов'язане з тихими рухами ... Ke7, і ... Rah8, два неперевірені невлаштування в рядку, де чорний шматок вниз. Цілком ймовірно, що десь вирішить, що не корисно продовжувати дивитися в цей рядок. Лише пізніше, коли вона продовжить лінію і знайде товариша в кінці, зробіть інші рядки, які продовжують гру (з 18.Rh1 Rxh1 і так далі), потім з'являться.

У будь-якому випадку відомо, що це не так добре, щоб дозволити комп'ютеру думати кілька секунд, лише якщо ви хочете щось дістати до нижньої точки, на кілька хвилин краще.


Я здогадуюсь, чому воно обрізає, це тому, що 16. Rxf1 виглядає "евристично" не тим, що король великого білого знаходиться на відкритому повітрі, але немає негайної мат-матки, а чорний спускає лицаря за пішаком у матеріалі. Лише до глибшого аналізу (як ви сказали) не стане зрозумілим значення цієї «жертви».
Джо К

Зауважте, що "15-слойний" означає, що він переглянув деякі рухи на глибину 15, а не всі рухи . Це займе waay більше , ніж за 4 секунди, навіть на супер-ЕОМ.
BlueRaja - Danny Pflughoeft

2

прочитавши всі відповіді та інші джерела, я тепер розумію, що вони не «пропускають» або не бажають пропустити ці кроки, люди запрограмували їх таким чином, щоб вони слідували певній схемі пошуку (де / як / коли + до) пошуку і що ще важливіше, коли призупинити пошук і вивчити перспективніші рядки, щоб заощадити ресурси.

Але, враховуючи достатньо часу, комп'ютер оштрафує кожну можливу комбінацію на певну глибину.

TL; DR

  • Q1: вони ніколи не пропускають ходи, просто їх ще не знайшли
  • Q2: вони вимагають часу, оскільки вони запрограмовані для економії ресурсів, і вони надаватимуть пріоритет деякі лінії перед іншими (наприклад, ті, які не мають пасивних рухів або не відновлюють матеріал у наступних кількох рухах).

-1

Я думаю, що всім бракує набагато швидшого товариша. Під час перевірки позиції за допомогою Худіні 3, чорний насправді має товариша в 3 на ходу 13. Замість Bf1 +, чорний повинен був грати в Bf2, і він продовжується з 14. d3 bf1 + 15. Bh6 Rxh6 #. Так, у незвичній відповіді на ваше запитання, можливо, певні двигуни не побачили ваш хід відразу, але, у випадку з Гудіні 3, він виявив набагато швидшого товариша.


5
Якщо ви прочитаєте все запитання, то побачите, що він знає про товари в 3. Усі розумно нові двигуни знайдуть пару в 3 негайно, і це не є частиною того, що тут задають.
Халвард
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.