?

Log in

No account? Create an account

Previous Entry Поделиться Next Entry
Программы для решения шахматных задач
me
shahmatiuga wrote in ru_chess_art
У меня возникла определенная проблема: сложность проверки задач на обратный мат с большим количеством ходов. В моём распоряжении: ChestUCI, Popeye и... пожалуй, всё. Я их держал максимум по часу, но безрезультатно. Problemiste не тянет больше 5 ходов, да и работает он значительно медленней чем Popeye. Программы наподобие Chess Explorer и MateMaster я всерьёз не воспринимаю. Winchloe в силу некоторой особенности этой программы я в глаза не видел, как и Gustav, Alybadix и MatPlusLibrarian на 64-разрядной платформе не запустились. возникает вопрос - как проверить задачу с заданием,скажем, обратный мат в 9 ходов?
пример:

Cebanov Nicolai, 2009, s#9

  • 1
Gustav, говорят, самый крутой по обраткам. Но он платный. Вроде 50евро стоит.

Vaclav Kotěšovec на своем сайте рекламирует Gustav как самую быструю программу для таких задач:
http://web.iol.cz/vaclav.kotesovec/gustav/gustav_alybadix.htm

На моем компьютере Popeye 4.51 проанализировал эту позицию с заданием S#4 примерно за 3 секунды, S#5 - за 40 секунд, S#6 - за 12 минут, S#7 решает уже часа три-четыре и еще не закончил, так что для S#9 нужны будут недели/месяцы.
Только Gustav может помочь, вернее, его счастливые обладатели.

я вижу, в Gustav есть еще интересный режим On Click - решает обратки практически мгновенно. Интересно, по какому принципу.

решение S#9

Просто найти решение легко,но проверить что оно единственное довольно сложно.
Я например пользуюсь ChestUCI которая за 1.5 сек на спец.уровне нашла побочку.

WinCHEST Ver.3.19h+, 12-Apr-2008
Options = -M64 -Z9 -el -X1 -0 -rS
Input file: STDIN
Reading job:
% created by ChestUCI Ver.5.1
W: Kh1 Df1 Tf4 Tg2 Le5 Bc2 (6)
S: Ke3 Ba6 Bg6 (3)
FEN: 8/8/p5p1/4B3/5R2/4k3/2P3R1/5Q1K w - -
analysing (special-selfmate in 9 moves):
Solution (in 8 moves):
Df1 : a6
Time (virt) = 1.484 sec

PV= Qxa6 g5 Rfg4 Kf3 R2g3+ Kf2 Re4 g4 Bd4+ Kxg3 Qf6 Kh3 Bf2 g3 Bg1 g2#
Da6: g5 Tfg4 ...+6

end of solution tree
Total Time (virt) = 1.500 sec

В инструкции к popeye есть описание опции nontrivial, предназначенной для решения многоходовых обраток. Правда, я так и не смог ничего понять. Может, кто-нибудь толково переведет и объяснит?

Спасибо за подсказку, похоже работает. у меня нашла 1.Фа6 с деревом вариантов за приемлемое время.
BeginProblem
Author Unknown
Origin Unknown
Protocol D:\TEMP\fancy\py.txt
Pieces
White Be5 Rf4 Pc2 Rg2 Qf1 Kh1
Black Pa6 Pg6 Ke3
Stipulation s#8
Option Variation NonTrivial 0 1 NoBoard
EndProblem

solution finished. Time = 4:13.295 m:s




если поставить nontrivial 1 1, то выдает побочки с любым ходом слона по большой диагонали, например:
1.Be5-a1 ! a6-a5 2.Rf4-a4 g6-g5 3.Rg2-h2 g5-g4 4.Qf1-e1 + Ke3-f3 5.Rh2-f2 + Kf3-g3 6.Rf2-f1 + Kg3-h3 7.Ba1-d4 g4-g3 8.Bd4-g1 g3-g2 #

Edited at 2010-07-15 17:27 (UTC)

Владимир, объясни, пожалуйста, что такое m и n.

я сам еще не разобрался. просто взял значения из их примера. 0 1, насколько я понял, - самый ограниченный случай, т.е. побочки будут находится наиболее быстро.

Мой вариант почти дословного перевода из инструкции к Popeye 4.51:
NonTrivial m n
A special option to solve/cook/test long self and (semi)reflex problems. The second argument n determines which black moves are considered to be trivial - a move that can be met by a s#n (or r=n resp.). In long problems (more than n moves) black has at every stage at least one nontrivial move. I. e. a move that doesnot lead to a s#n.
The first argument m determines how many additional nontrivial moves can be granted to black by white during the whole solving procedure.
Example: nontr 0 1. This is the most restrictive option. White forced to play moves that leave black with only one move not met by a s#1.

Nontrivial m n
Специальный параметр для решения/поиска побочных решений/тестирования многоходовых обратных и (semi)reflex задач. Второй аргумент n определяет, какие ходы черных рассматриваются как 'тривиальные' - ход, за которым следует обратный мат в n ходов (s#n, или r=n соответственно).
В многоходовых задачах (более чем в n ходов) черные имеют на каждой стадии по крайней мере один нетривиальный ход. Т.е. ход, который не приводит к s#n. Первый аргумент m задает, сколько дополнительных нетривиальных ходов предоставляется черным белыми во время всей процедуры решения.
Например: nontr 0 1. Это наиболее сильное ограничение. Белые заставляют делать ходы, которые оставляют черным только один ход, не ведущий к немедленному s#1.

Николай, спасибо за перевод. Кто-нибудь разобрался как это понять?
Предложу свою версию, возможно, не вполне верную.
Когда задаешь условие nontrivial 0 1 для вышеуказанной задачи(задание - s#8), то белые рассматривают только ходы 1.Q:a6, который решает и 1.R:g6(1.Rg5), которые не решают. Т.к. в позиции возможны два хода черными пешками, а число тривильных ходов задано равным 1, то ходы, уменьшающие это количество - взятие или блокирование пешки(1.Q:a6, 1.R:g6, 1.Rg5). Когда задаешь условие nontrivial 1 1, то появляется масса побочек с уходом слона по большой диагонали, т.е. белые рассматривают больше ходов(и оба 1...g5 и 1...a5 рассматриваются программой). Т.к. этим лимит нетривильных ходов исчерпывается, вторым ходом необходимо заблокировать(или забрать) одну из пешек, т.е. в этом случае программа рассматривает ходы 2.Ra4, 2.Rg4 и и т.п. и отбрасывает все остальные продолжения.

Edited at 2010-07-16 16:17 (UTC)

очень интересно, оказывается, есть возможность ускорить процесс решения задачи! Я как чувствовал, что в этой задаче есть побочки, но не мог их найти так как решение меня сбивало.
Кстати, ни одна из решательских программ не использует мультипроцессорность. а вроде уже пора.

да, программы серьезно отстают. Алибадих до сих пор остается MS-DOS программой(не все уже помнят что это такое), что тут говорить о мультизадачности...

Кстати, по поводу Алибадикса. Судя по этой странице, Икка Блом включил в последнюю версию всю yacpdb. Дима, ты в курсе? У тебя разрешение спросили?

Edited at 2010-07-17 02:51 (UTC)

Мое разрешение не нужно, все могут пользоваться всем как хотят, мне так кажется правильно.
Они, вроде, хорошие ребята, такие же энтузиасты. Фактически Пол Вирейн мне писал в уведомительном ключе, еще рассказывал как APWin использовать для базы, еще мы договорились, что я включу в базу архивы Блома и Фогеля.
Только у меня времени летом катастрофически нет ни на что. 4 коллекции лежат недобавленные и один серьезный апдейт к поиску недописанным.

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

племянник ошибается. суть мультипроцессорности другая, она следующая: предположим, вы перебираете кучу бобовых, горох в одну сторону, фасоль в другую, нут в третью. Один человек будет перебирать долго. Два человека будут работать в два раза быстрее.Таки с процессорами. Но следует учесть, что ,во-первых, не каждая задача может решаться на нескольких процессорах, во-вторых, необходимо еще написать программу таким образом, чтобы все процессоры работали а не один. Имеется в виду, что каждая типичная программа в оперативной памяти есть один процесс. Этот процесс может обрабатывать только один процессор. Если написать с учетом нескольких процессоров программу (параллельное программирование), то программа будет состоять уже из нескольких процессов, а значит её смогут выполнять несколько процессоров одновременно.

кстати, а вы знаете что авторское решение и рядом не стояло с приведенными? :) по замыслу блокировалось поле h2, а не g1 :)

так покажи. видишь, popeye с трудом находит решение в 8 ходов.

Авторское решение: 1.Qc4 a5 2.Re4+ Kf3 3.Bh2 a4 4.Rg3+ Kf2 5.Ra3! g5 6.Qa2! (не замечена дуаль с 6.Qd4+) 6... g4 7.c4+ Kf1 8.Rf3+ gf 9.Qg2+ fg#

  • 1