Шахматное программирование: алгоритмы поиска и сортировки ходов

Тема в разделе "Машинное отделение", создана пользователем NS, 28 май 2006.

  1. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Я добавил горизонтальные возможности ладьи после того, как она запуталась в своих пешках в миттельшпиле :)
     
  2. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    > В Го, например, сохраняют всю историю опровергающих ходов :)

    Хотелось бы линки на эту тему увидеть.
     
  3. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Надо искать... Вечером посмотрю в исходниках GnuGo, но вообще сохраняют всю историю (или максимум истории) опровергающих ходов для каждой позиции во всех играх, где медленная оценка, нет четкого критерия для хорошей сортировки ходов, и много возможных ходов в каждой позиции - ГО, Hex, Хальма (уголки на поле 16x16 у каждого по 19 шашек в углу)

    Либо в специфических ситуациях - когда памяти много, а быстродействие низкое - например шахматы на встроенном языке 1С :))))
     
  4. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
  5. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    А вот статистика по моей программе (тест на начальной позиции)
    if (oc>a1)and(hhoo<>0)and(bestM1<>0)and(hhoo<>bestM) then
    Begin
    vspopal:=vspopal+1;
    if hhoo=bestM1 then
    vspopal1:=vspopal1+1;
    end;

    Что это: oc - полученная оценка, если она больше a1 (сохраненное значение альфа), значит есть лучший ход.
    hhoo - номер лучшего хода, если равен нулю (в данном случае по первому условию этого быть не может), значит нет лучшего хода.
    bestM1 - вытесненный (второй) лучший ход в хеше (он всегда просматривается только после первого -bestM) Если не равен нулю, значит в хеше было два лучших хода.
    Ну и последнее условие - опровергающий ход не равен первому лучшему ходу из хеша (ситуация, когда пришлось использовать второй...)
    Ну и статистика -
    19513 18311 (vspopal, vspopal1)
    практически в 94% случаев второй ход из хеша сработал...
    (был опровергающим, или лучшим(в случае ненулевого окна))
    Вдобавок к этому - делая ход из хеша (пускай второстепенный, второй) - мы можем быть уверены, что дальнейшие ветви у нас хорошо прохешированы, так как ход оказался в хеше - значит по нему уже разок прошлись...
    Ну и как я уже говорил - ход "обычно хороший", и в хистори редукшн по нему не сокращаем перебор. А по истории. так как она не привязана к конкретной позиции - ход может оказаться плохим...
     
  6. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Далее - двухуровневый хеш... Использовался в Крейблиц. В тестах (не на играющей программе, а просто "стреляем в хеш" случайными 64-битными числами) - показывает очень хорошие результаты...
    Врятли это плохая идея (хотя сейчас большие объемы памяти, можно особо не заморачиваться. Но в чемпионате СНГ использовался (должен был использоваться по регламенту) 32МБ), и в условия недостатка памяти (длинные контроли) Должен давать заметную прибавку.
    Потом... В западных чатах неоднократно "случайно подслушал" о причинах сильной игры Рыбки - двухпроходный переборный алгоритм... Говорят, что сейчас используется и в Junior-e...
    Я в курсе, что до этого было много неудачных попыток. На сей раз похоже получилось...
     
  7. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Статистика по 40-му посту на острой позиции r1bqk2r/pppp1ppp/2n2n2/2b1p1N1/2B1P3/8/PPPP1PPP/RNBQK2R w KQkq - 6 5

    40258 38469 96.6%
     
  8. Booot
    Оффлайн

    Booot Учаcтник

    Репутация:
    0
    Раз уж мы взялись повышать эффективность использования хистори редкшн, то статистику лучше всего собирать по следующему критерию: процент бета отсечений (по всему дереву в основной модели перебора - без учета бета отсечений в модели форсированной игры), которые пришлись на 1-й 2-й или 3-й ход в отсортированном списке ходов. В идеале должно быть 100% (в этом случае все ходы с номером 4 и выше что вырезалось хистори редукшн вырезается правильно и безвредно). А уж после замеряния процентов можно и об методах их увеличения поговорить :). В том числе и о схемах хеша.
    У последней версии booot 4.10.1 в приведенной вами позиции после 30 секунд расчета этот процент равняется 97%. То есть в 3% бета отсечений опровергающим оказался ход с большим, чем 3 номером в списке ходов после сортировки и в этих случаях есть шанс получить дырку в переборе, используя хистори редукшн.
     
  9. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Я вроде пока говорил не о хистори, а о хеше лучших (опровергающих) ходов, в рамках основной хеш-таблицы :) И об использовании в нем не одного, а двух лучших ходов. Это нужно в основном не для хистори, а для лучшего упорядочивания ходов в рамках переборных алгоритмов (для того-же, для чего нужен и первый ход в хеше)
    Хистори вообще другая тема.
    Дыру получить при Хистори всегда большая вероятность :)
    Только непонятно какие показатели считать... Наверно нужно много показателей.
    1. Общий процент опровержения по бете на "сокращенных" ходах.
    Среди них - процент опровержения по бете и процент опровержения по альфе при Верификации (повторном проходе с полной глубиной)
    2. Среднее количество "сокращенных" ходов (общий процент) по опровергнутым по альфе ветвям, то есть где просмотрели (были опровергнуты) все ходы... (есно всё там, где применяется метод - король не под шахом, не PV ветвь)
    Хотя это "навскидку" - надо подумать, что считать...
    Или просто гонять на тактических тестах - там где хистори и проваливается... :)
    [q]"Имеются в виду позиции с тихими ходами и перебросками фирур."[/q]
    А о хистори я говорил только в том ключе - что раз уж у нас есть еще один ход в хеше, и на какой-то глубине он был хороший, то есно на нем тоже не будем сокращать - тем более что он смотрится раньше тактических ходов.
     
  10. Booot
    Оффлайн

    Booot Учаcтник

    Репутация:
    0
    Так предложенный мной критерий как раз и является показателем качества упорядочивания ходов! Ведь чем меньше номер опровергающего хода в списке (лучше всего - первый), тем меньше дерево перебора . Ну а для применения Хистори редукшн хорошее упорядочивание вообще жизненно необходимо! Проверьте свой движок по этому критерию - может интересным оказаться. только гонять его лучше не в в совсем тактических позициях (там опровергающие ходы часто очевидны), а в нормальных миттельшпильных игровых позициях. Типа "ежа".
     
  11. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Лучше наверно всё-таки проверять упорядочивание не по косвенным, а по прямым признакам. :)
    Отключить все Прунинги (Null Move, Футилити и т.д.) и Редукшины (Хистори), а потом уже смотреть на коэфициенты.
    Методы отсечений и сокращений это уже второстепенно, и откношение к упорядочиванию имеют только косвенное...
    Насчет Хистори Редукшн - Всё зависит от схемы. У меня упорядочивание при Хистори важно не более, чем без него.
    Так как режутся конкретные ходы, по конкретным признакам, а не по сортировке, и номеру хода в отсортированном списке (это не является четким критерием).
    Но естественно - в меру возможностей несокращаемые ходы вытягиваются в начало списка.
    (шахи вытягивать достаточно ресурсоемко, но это в моей схеме)
     
  12. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Наверно немного другая статистика нужна (пока без деления по типам ветвей)
    В ветвях, в которых БЫЛО ОПРОВЕРЖЕНИЕ ПО БЕТЕ - какой процент опровержений был -
    На первом ходе, если он из хеша.
    На первом ходе, если он не из Хеша.
    На первых двух ходах, если Один из них не из хеша
    На первых двух ходах, если оба они не из Хеша
    На первых двух ходах, если они оба из Хеша (только для моей схемы с двумя ходами в Хеша)
    и т.д.
     
  13. dan77790
    Оффлайн

    dan77790 Учаcтник

    Репутация:
    0
    Хммм последнее сообщение за 2006 год.... алгоритмы поиска видимо не развиваются(
     
  14. Хайдук
    Оффлайн

    Хайдук Учаcтник

    Репутация:
    0
    Хаос такому не потакает *lol*
     
  15. dan77790
    Оффлайн

    dan77790 Учаcтник

    Репутация:
    0
    Хаос поглотил шахматное программирование
     
  16. Сергей С. Питер
    Оффлайн

    Сергей С. Питер Старожил

    Репутация:
    11
    Ну просто NS забил на шахматное программирование, лень ему.
     
  17. kpripper
    Оффлайн

    kpripper Новичок

    Репутация:
    0
    А у какого движка алгоритм больше всего напоминает человеческий ? то есть ходы делает не компьютерные ,а более человеческие?
     
  18. dan77790
    Оффлайн

    dan77790 Учаcтник

    Репутация:
    0
    У Фрица вроде
     
  19. kpripper
    Оффлайн

    kpripper Новичок

    Репутация:
    0
    Которого?
     
  20. Kesandr
    Оффлайн

    Kesandr Учаcтник

    Репутация:
    11
    Да нет ето Rybka
     
  21. kpripper
    Оффлайн

    kpripper Новичок

    Репутация:
    0
    Мнения разделились :(
    а как же движки типа заппы и шреддера, вроде лучше позицию понимают ?
     
  22. dan77790
    Оффлайн

    dan77790 Учаcтник

    Репутация:
    0
    Думаю у великой проги - Fritz 10 )
     
  23. Chemer
    Оффлайн

    Chemer Максим

    Репутация:
    0
    Просто вся тусня переехала на форум sdchess.net
     
  24. dan77790
    Оффлайн

    dan77790 Учаcтник

    Репутация:
    0
    Chemer

    Там вирусов чуть меньше чем до фига
     
  25. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    dan77790, там нет вирусов.
     
  26. dan77790
    Оффлайн

    dan77790 Учаcтник

    Репутация:
    0
    NS

    Спасибо, что успокоили, но мой антивирус иного мнения(
     
  27. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    dan77790, а можно узнать какие вирусы и на каких страницах?
    похоже вы единственный кто может их увидеть.
     
  28. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    NOD32, Symantek, Касперский, Авира и Лавасофт, все с последними обновлениями - вирусов на сайте не видят.
     
  29. Fruit
    Оффлайн

    Fruit Александр баннер

    Репутация:
    3
    Сколько туда захожу, а захожу я туда давно и часто, никогда вирусов не встречал.
     
  30. dan77790
    Оффлайн

    dan77790 Учаcтник

    Репутация:
    0
    я не помню какой там вирус. Я раньше када заходил на него, не было вирусов, а так что то искал в яндексе, на сайт ссылку открыл на этот и антивирус заверещщал
     
  31. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Мой AVAST тоже сохраняет спокойствие.
     
  32. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    На сайте либо есть вирус, либо нет его. Сам он исчезнуть не может.
    Вирус был, но безобидный для пользователей в течении недели в ФЕВРАЛЕ месяце.
    (Вирус на страницах открываемых пользователями не появлялся)
    И это единственный случай за всё время существования форума.