Сортировка корня дерева

Тема в разделе "Машинное отделение", создана пользователем bankuss, 7 дек 2006.

  1. TopicStarter Overlay

    bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    Как оптимально сортировать корень? Лучший ход предыдущих итераций ставить первым?
    Использовать оценку после хода?
  2. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.492
    Симпатии:
    3.122
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Почему бы не сортировать его так же, как и любой другой узел основного поиска?
  3. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    У меня в корне - начальная сортировка как в любом другом узле, на каждой итерации ход с оценкой выше уже обеспеченной вытягивается наверх списка.
  4. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    То есть если в PV лучшим стал другой ход - то он попадает наверх списка ходов.
  5. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.492
    Симпатии:
    3.122
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    У меня лучший ход в корне, как и в любом другом узле, попадает в хэш и на следующей итерации сразу оттуда берётся (с гарантией, что он не будет перезаписан - т.к. это делается до новых обращений к хэшу). Никаких специальных телодвижений по вытаскиванию первого хода из текущего PV не требуется...
  6. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    У меня лучший ход вытаскивается вверх. Больше ничего.
    Но мне еще нравится случайная сортировка в самом начале перебора.
  7. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    У меня рандомность делается при помощи Randomize() перд заполнением таблиц для Зобриста.
    В шахматах на 1С криво, но использовался метод случайной корректировки оценки в корне - дает достаточно хорошую рандомность без видимого ослабления силы движка.
    Начальное перемешивание - при достаточной глубине перебора не дает нормальной рандомности...
  8. TopicStarter Overlay

    bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    А что дает случайная сортировка?
  9. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Рандомность игры она дает :)
    Я в своей первой программе, когда была очень маленькая дебютная - на Рандомность игры положил просто кучу сил!
  10. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Все же лучше, чем ничего.
  11. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    У меня есть алгоритм очень хорошей рандомности с просто минимальным падением силы (пара пунктов)
    Не знаю насколько он нов, но он очень прост, и при этом никаких рандомных сортировок :)
  12. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Суть алгоритма -
    Делаем полную сортировку ходов (никакого рандома)
    Лучший всегда вытягиваем наверх.
    Negascout, в корне
    Каждый ход кроме первого проверяем при помощи
    Search(BestScore,BestScore+1)
    Но!!!
    Search(BestScore+Delta,BestScore+Delta+1)
    Не уменьшает силу программы, например при Delta в интервале [0,0.03]
    (в некоторых программах намертво зашита Дельта, например равная 0.03 пешки)

    Алгоритм Рандомности - в корне, каждый раз при нулевом окне выбираем случайную Дельту в интервале, например [0,0.03] - падения силы практически нет, а рандомность есть при любой глубине перебора.
  13. варяг Учаcтник

    • Участник
    Рег.:
    23.10.2006
    Сообщения:
    98
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Гонду-Раша
    Оффлайн
    А не проще в ОФ добавить небольшой случайный вес (те же 0.03 пешки) на первые несколько ходов? Это кажется попроще будет. Я пробовал и особого падения силы не заметил
  14. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    А как падение силы можно заметить без Тыщенки-другой тестовых партий???
    Наверно нехорошо, когда программа может выдать разную оценку, при этом показав в PV одинаковый вариант?
  15. варяг Учаcтник

    • Участник
    Рег.:
    23.10.2006
    Сообщения:
    98
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Гонду-Раша
    Оффлайн
    А разве оценка плюс-минус 0,03 пешки (или меньше) так принципиальна? Она же все равно не точная - веса позиционных признаков далеки от идеала
  16. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    У тебя одни и те-же признаки в разных ветвях дерева дают разную оценку. А это уже плохо.
    Плюс ты добавляешь нестабильности перебору, что еще хуже...
  17. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Менять позиционные признаки можно до перебора.
  18. варяг Учаcтник

    • Участник
    Рег.:
    23.10.2006
    Сообщения:
    98
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Гонду-Раша
    Оффлайн
    Так эта нестабильность-то добавляется всего первые несколько ходов, где материал потерять трудно (если не делать совсем глупых ходов), выбор идет из ходов с примерно одинаковой позиционной оценкой, а потом рандомность отключается. Таким образом розыгрыш дебюта становится лишь немного более разнообразным. Здесь конечно предполагается, что программа играет из начальной позиции без дебютной библиотеки. Если есть дебютная библиотека, я рандомность не использую. Твой вариант, как я понимаю, предназначен для игры целиком?
  19. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Да, этот вариант предназначен для анализа позиций и игры после дебюта.
    В дебюте возможны другие варинты, в том числе и с небольшим изменением весов в ОФ (если их не менять в течении партии - так как если Сила игры это функция от весов признаков, и веса подобраны оптимально, то функция силы имеет с данными весами нулевую производную - то есть их небольшое изменение на силе особо не скажется)
    Но мне вариант с изменением весов признаков в ОФ всё-равно не нравится :)

Поделиться этой страницей