Размышления о создании сильной программы (поиск истины)

Диана Кенина однажды сказала, что тогызкумалак для нее - это жизнь. Для меня тогызкумалак - это постоянный, непрекращающийся поиск истины, взлеты и падения, открытия и разочарования, своего рода научно-исследовательская работа.

Как говорил мой учитель математики, Темир Темиргалиевич Конурбаев, несмотря на то, что игра тогызкумалак имеет тысячелетнюю историю, она никогда не изучалась на научном уровне, с использованием математического аппарата.

Написать программу, умеющую играть в тогызкумалак, несложно. Это должен уметь делать любой студент любой специальности, имеющей отношение к информатике (надеюсь, что не за горами проведение чемпионата Казахстана среди компьютерных программ). Скорее всего, такая программа будет обыгрывать начинающих и слабых любителей, но споткнется в игре с первым же крепким игроком. Поэтому если вы привыкли доводить начатое дело до ума, то вам, без сомнений, захочется сделать программу, способную сражаться с сильнейшими игроками на равных и побеждать их. И вот здесь программист сталкивается с рядом сложностей. Одна из проблем - это недостаток литературы по теории игры тогызкумалак (дебютные монографии, например, вообще отсутствуют, очень мало книг по стратегии игры) и практически полное отсутствие литературы по программированию игр семейства манкала (поэтому приходится изобретать свои эвристики, затрачивая массу времени). Можно найти немного информации по программированию родственной игры - калаха (см. журнал "Наука и жизнь" за 1971-й год), но калах слишком прост в сравнении с тогызкумалаком. Как ни странно, в наше время проще написать сильную шахматную программу, потому что шахматному программированию около 50 лет и на эту тему существует масса статей, материалов и накопленного опыта.

В игре тогызкумалак присутствует уникальный элемент - это туздык. Честно говоря, трудно подыскать аналог туздыка в других логических играх. Любой программист, решающий описываемую задачу, вынужден дать туздыку количественную оценку, а с этим не так все просто. Если в шахматах давным-давно известна ценность каждой фигуры (пешка - одна единица, конь и слон - по три, ладья - пять единиц, ферзь - девять, хотя на самом деле эти величины имеют немного другие значения, но это не так важно), то как определить ценность туздыка? Ни один игрок (будь он опытный любитель либо чемпион мира) не сможет дать вам точный ответ на этот вопрос, а если и даст, то со множеством оговорок, допущений и исключений. Ценность туздыка зависит от того, где он расположен, в какой стадии он установлен, зависит от взаимного расположения туздыков и т.д. Туздык не имеет точного математического эквивалента, а при создании программ желательно иметь строгие числовые значения, а не расплывчатые рассуждения. Формализация человеческого мышления - нетривиальная задача и неслучайно написание программ, играющих в логические игры, относят к одному из разделов искусственного интеллекта.

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

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

Все материалы сайта можно использовать только с разрешения автора (Е. Шамбаева). При перепечатке активная ссылка на данный сайт обязательна.



^:3919