Написав свои шахматы, я просто изобрел колесо (просто мне было интересно изобретать такое колесо)
Вам никто не мешает изобрести похожее колесо для преферанса :)
В ИИ для преферанса нужно еще как-то ввести элемент «разумного риска», иначе игра будет превращаться в «постоянные распасы». Кроме того, возможны ситуации, когда, например, выгоден «недозаказ», т.е. ИИ должен обсчитывать не только текущую ситуацию с картами, но и общие расклады в записи.
Намного более того. В преферансе фактически есть несколько подигр: торговля, игра (обычная, мизер), вистование (обычное, ловля мизера), пасование стоя, распасы. Каждая игра со своими «мухами» и, по большому счету, со своим ИИ.
И более того — наличие разных наборов правил в этих подиграх и расчета их результатов (вист ответственный/полуответственный, жлобский/джентльменский, прогрессии при распасах, выход с распасов) зачастую ещё более усложняет задачу — для таких правил простыми весовыми коэффициентами не отделаться.
Прошлая версия играла достаточно неплохо, но кандидат по шахматах выиграл)
Версия, которую я делаю сейчас, на стадии «ядро есть, интерфейса нет». Прошлая версия — WinForms (сейчас перевожу на WPF) и .NET Remoting (сейчас или сделаю с нуля на tcp/ip или поизвращаюсь с WCF)
Замените пожалуйста всё-таки офицер -> слон, тура -> ладья, королева -> ферзь.
Не придирки ради, а просто шахматист во мне взбунтовался) Отличная статья, но это — просто убило.
В Википедии сказано, что Хоар открещивается от цитаты про преждевременную оптимизацию:
«The famous quote, „We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil“, by Donald Knuth,[6] has also been mistakenly attributed to Hoare (by Knuth himself),[7] although Hoare disclaims authorship.[8]»
Вопрос к автору:
Интересно, а GNU Chess насколько мощный, что за алгоритмы в нем? Наверняка вы слышали про него? Сам долго не играл, но проц он загружает на 100% даже во время моего хода!
Алгоритмы бывают такие, что считают оценку после перебора и такие, что держат оценку для каждой клетки доски и после каждого хода для клеток оценку изменяют. Вот GNU Chess использует вариант с оценкой для каждой клетки.
Во время вашего хода, компьютерный игрок думает над ответом на лучший (по его мнению) ход, который вы можете сделать. Если вы и делаете такой ход, то компьютер продолжает думать над ответом на него, иначе начинает думать над ответом на ваш новый ход (комп все равно время не потерял).
Ещё есть классическая книга экс-чемпиона М. Ботвинника «О кибернетической цели игры» — о том, каким он видел алгоритм игры в шахматы. Очень познавательно сравнить то, что он описывал и то, каким образом на самом деле стали эту проблему решать.
В интернете можно найти электронную версию.
Некоторые идеи написания искуственного интелекта для шахмат