Хеширование и счетчик 50 ходов

Тема в разделе "Машинное отделение", создана пользователем WildCat, 26 окт 2007.

  1. NS
    Оффлайн

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

    Репутация:
    3
    Конечно мало - всего-лишь половина всех узлов дерева :)
    На первый ход сильнейшей стороны в корне 50% всех узлов дерева.
    В ответ - 1% PV, 99% отсекаемых оценкой >=GlobalScore.
    Это в случае идеальной сортировки. Но в реальной программе сортировки близки к идеальным. А если даже и будут неидеальными - то сокращение числа отсекаемых ходов в ответ на первый ход из корня компенсируется отсечками на остальных ходах из корня дерева.

    я послал в мыло рисунок по тем узлам которые отсекаются.
     
  2. WildCat
    Оффлайн

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

    Репутация:
    0
    Я все равно не пойму что они могут отсечь.

    Давай разбираться с самого начала. Мы имеем довольно статичную позицию. Пешки вперед не идут, хороших разменов нет. Фигуры топчуться на месте.

    Почти вся хеш-таблица забита именно этими позициями, т.к. варианты движения пешек и размены отсекались довольно быстро как невыгодные (в них слабейшая сторона рассматривала очень мало ходов (а чаще всего один) чтобы опровергнуть).

    Теперь мы досчитались до того, что топтание на месте - это ничья. Всю эту хеш-таблицу теперь можно выбросить. Откуда возьмуться в хеше позиции, которые смогут что-то отсечь?
     
  3. NS
    Оффлайн

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

    Репутация:
    3
    В ответ на плохие ходы слабейшей стороны (а их рассмотреть придется) опровергающими могут быть (и скорей всего будут) взятия и продвижения пешек. Оценки узлов после плохих ходов слабейшей стороны срабатывать и будут. Если хеширование отключится то быстро отсекаться эти ветви не будут. Они будут занимать подавляющий процент от всего перебора.

    А если просто отключать хеш - то по какому признаку? По Depth не получится, так как могут быть продления. Отключать всегда оценки >=А при А>0 - получим ухудшение бренчинг-фактора.
     
  4. WildCat
    Оффлайн

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

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

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

    Репутация:
    3
    Я не понял, как ты будешь отсекать оценки из хеша? по depth ведь не выйдет...
    Когда это еще произойдет, до этого еще досчитаться надо © :)
     
  6. WildCat
    Оффлайн

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

    Репутация:
    0
    Позиций до которых досчитываться нужно в твоем хеше просто не будет. Так что тебе их тоже придется считать.
     
  7. NS
    Оффлайн

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

    Репутация:
    3
    Но у меня будет в хеше больше позиций, и это хорошо...
    А наоборот, оценки испорченные достижением правила 50 ходов (либо нулевые) ты как исключаешь? Или они пишутся в Хеш?

    Я условия если оценка в A-B окне сформулировал. В примере я поставил правильные условия только если опровержение по альфе либо бете.
     
  8. WildCat
    Оффлайн

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

    Репутация:
    0
    Именно поэтому я не хочу делать по-хорошему. Слишком много изврата придется добавлять в программу. Как-то же все обходятся без этого...
     
  9. NS
    Оффлайн

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

    Репутация:
    3
    ИМХО когда в каждой записи в Хеше мы уверены что
    1. Не будет ни одной неправильно взятой из хеша оценки.
    2. По возможности максимально используются оценки из Хеша.
    Это хорошо, и это не изврат.
    Для этого достаточно возвращать два параметра и аккуратно прописать их использование в нескольких местах. (это для правила 50 ходов)

    Без этого обходятся авторы движков с открытыми исходниками, но это не значит что без этого обходятся все :)
     
  10. WildCat
    Оффлайн

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

    Репутация:
    0
    То, что должно реализовываться в нескольких местах - это изврат и источник постоянных проблем. Чтобы такое делать нужны серьезные причины. А т.к. таких причин нет, то никто этого и не делал.
    Ну может быть за исключением нескольких извращенцев. :D
     
  11. NS
    Оффлайн

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

    Репутация:
    3
    Чтоб не хешировать оценки искаженные нулевой оценкой от правила 50-ти - нужно добавить 5 строк в одно место. :)
     
  12. MS
    Оффлайн

    MS Михаил Семионенков

    Репутация:
    175
    Эх, не утерпел :)

    С правилом 50 ходов есть 2 принципиально разные ситуации:
    а) выигрыш об'ективно есть, но 50 ходов не хватает
    б) выигрыша нет.

    Об "искажении оценки" можно говорить в первом случае (программа правильно считает, что есть об'ективный перевес, но не учитывает правила 50 ходов, не позволяющего перевес реализовать) приличная программа должна знать все законные исключения правила и писать письмо в ФИДЕ, если найдет новое за доской.

    А в ситуация, когда происходит повтор позиции, т.е. об'ективно перевеса нет, и правило лишь обрывает бессмысленное возюкание фигур по доске, мозги нужно вправлять программе, чтобы правильно оценивала позиции якобы с перевесом. Если я правильно понимаю, программа с феном получает информацию о правиле 50 ходов. Если позиция из загашника имеет большее число ходов "до контроля", то это - серьезный повод подумать о переоценке позиции.
     
  13. NS
    Оффлайн

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

    Репутация:
    3
    Совершенно другие две ситуации, и обе связаны с ошибками на захешированных оценках :)
    Если бы не было Хеша, то никаких проблем с правилом 50-ти нет.
     
  14. MS
    Оффлайн

    MS Михаил Семионенков

    Репутация:
    175
    Мы, возможно, не можем понять друг друга.

    По оригинальному описанию WildCat, я нахожусь в полной уверенности, что у него речь идет о ситуации б): программа считает, что перевес есть, тогда как реально позиция ничейна. Оценка ведь не хешируется абстрактно: она должна быть привязана позиции, а с парой оценка-позиция должно хранить и число ходов по правилу 50.

    Если для текущей позиции
    Мы вытаскиваем из хеша позицию с ненулевой оценкой, но меньшим числом ходов по правилу 50
    То встает толстый вопрос:
    А верна ли ненулевая оценка?

    Вообще, мне кажется, здесь заложен лучший для традиционной программы (т.е. программы, не анализирующей позицию на какие-либо виды позиционной ничьи) способ определения позиционной ничьи - если мы стали вытаскивать позиции где число ходов меньше, то мы вертимся по кругу)

    Или хеш - это что-то совсем другое в этом контексте?
     
  15. NS
    Оффлайн

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

    Репутация:
    3
    Да, это один из двух случаев - решение этой проблемы описано на первой странице ветки...