?

Log in

No account? Create an account

Previous Entry Поделиться Пожаловаться Next Entry
Русскоязычная справка по работе с yacpdb
vt wrote in ru_chess_art
Апдейт 23.1.12: Новая версия справки доступна по адресу: http://www.yacpdb.org/download/yacpdb-user-guide-RUS-20120112.pdf

Огромное спасибо Александру Сыгурову, написавшему справку для работы с yacpdb. Объяснена общая концепция базы данных, и подробнейшим образом, рассчитывая на самого неквалифицированного пользователя, описаны (с большим количеством картинок) две самые главные функции программы: поиск предшественников и добавление новых задач в систему. Описаны некоторые трудности, которые могут возникнуть при работе с базой данных.

Несмотря на то, что база данных разработана представителем России (Дмитрием Туревским), основными помощниками являются зарубежные любители композиции. В результате, задачи российских и советских авторов(а также всех шахматных композиторов пост-советского пространства) представлены не достаточно полно. Хотелось бы, чтобы российские любители композиции более активно участвовали в ее наполнении. Можно начать со своих личных задач и задач друзей - это отличный способ сохранить ваше шахматное наследие для потомков. Можно также вносить задачи из русскоязычных журналов по композиции, а также итоги многочисленных соревнований, публикуемых на сайте Андрея Селиванова.

От вашего активного участия (не только в качестве потребителей, но и добровольных помощников) зависит дальнейший успех yacpdb! Справку можно скачать по адресу: http://www.yacpdb.org/download/yacpdb-user-guide-RUS.pdf


  • 1
Вопрос Дмитрию.
Почему при поиске по матрице обязательно наличие на доске черного короля? Ведь бывает так, что он вне схемы, а бывают задачи вообще без королей.

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

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

Вот, кстати, Winchloe - настольное приложение, занимай процессор сколько хочешь, но поиск по матрице тоже требует либо белого, либо черного короля.
Или MPDBS, там, как я понимаю, использовался алгоритм MatPlus Librarian, можно задавать совершенно произвольные матрицы, но поиск выглядел так (сам не видел, только читал на форуме): оставляешь запрос, он становится в очередь, можно зайти попозже, посмотреть, готово ли. Или завтра зайти. А в это время над запросами трещал домашний (не колокейшн!) компьютер Милана В.

Это все очень интересные вопросы для меня, но я не уверен, насколько надо вдаваться в технические детали.

мне интересно. ты мне правда уже объяснил

Как раз и надо вдаваться. Теперь понятно в чем проблема. Теперь есть надежда, что лет через десять (компы помощнее станут) можно будет осуществлять поиск и по произвольным матрицам.

Если кому-то очень-очень-очень нужно поискать в yacpdb по произвольной матрице, то нет ничего невозможного:
1. Берем yacpdb в CSV формате (есть на сайте)
2. В редакторе электронных таблиц выделяем колонку FEN и сохраняем ее в отдельный текстовый файл.
3. В текстовом редакторе заменяем концы строк на недостающие куски PGN чтобы в итоге получился полноценный PGN файл.
4. Ищем произвольную матрицу в PGN файле при помощи CQL

С такими темпами ты меня и английскому выучишь и программистом сделаешь за год...

М-да, есть такие подробности, которые я совсем не понимаю...

Сейчас примерно объясню. Еще раз оговорюсь, что этим стоит заниматься только если возникла очень острая необходимость, развлечения по ходу дела немного. С другой стороны, никакие специальные знания не нужны, это просто работа на персональном компьютере.

CSV это, грубо говоря, файл с электронной таблицей, его можно открыть, например, в Excel. Одна строчка - одна задача. Там есть колонка с позициями в нотации форсайта. Ее можно выделить (опять в том же, допустим, экселе) и сказать "Скопировать". Потом открыть текстовый редактор (пусть будет "Блокнот") и сказать "Вставить". Получится текстовый файл с позициями по одной на каждой строке.
Дальше, в текстовом редакторе (в большинстве из них) есть команда "Найти и заменить"
Нам надо найти \n (все переводы строки) и все заменить на примерно такую абракадабру:
w - - 0 1"]

*
[Event "?"]
[SetUp "1"]
[FEN "

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

PGN хорош тем, что с ним работают большинство шахматных программ. В частности, с ним работает программа (бесплатная) CQL (Chess Query Language). Научится пользоваться этой программой, честно скажу, непросто, но, в частности, она позволяет искать произвольные конфигурации фигур в партиях.

Чем дальше в лес - тем больше дров!

Первый этап у меня получился: скачал базу, перенес позиции в текстовый файл. Найти "\n" и заменить на "абракадабру" не получается, пробовал в разных текстовых файлах, все твердят одно: \n - не найдено.
CQL тоже скачал, как работать вроде понял, осталось разобраться во всех хитростях запросов.

Ох, я не силен в текстовых редакторах для Windows, но вроде вот в этом должно работать:
http://ftp.gnome.org/pub/GNOME/binaries/win32/gedit/2.30/gedit-setup-2.30.1-1.exe
Строку для замены надо будет написать тоже с \n:
w - - 0 1"]\n\n*\n[Event "?"]\n[SetUp "1"]\n[FEN "
После замены надо будет подправить начало и конец файла, чтобы он начинался с [Event], а кончался звездочкой.

Получилось?

Если что, я решил, что проще на всякий случай выкладывать данные и в PGN тоже:
http://dt.dewia.com/yacpdb/#Download

Ну теперь-то, когда есть готовая pgn, получилось!!
Осталось найти ещё какую программку, чтоб можно было эти pgn просматривать на диаграмме.

Так сейчас, наверное, любая шахматная программа это может. А из композиторских - Problemist.

Ну, ни каждая. Из тех, что у меня - ни одна. А вот Problemist - может.
Теперь, получивши "хорошо", хочется "лучше"!
То бишь - сделать какую надстройку, чтоб с диаграммы автоматически переводить запросы в cql, а результаты - сразу с диаграммой!

Неужели так часто нужно искать конфигурации, в которых совершенно неважно, где находится черный король?

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

Тогда средство для перевода диаграммы в запрос это не совсем то, что нужно.

это как раз CQL может дать - поиск по механизму. Осталось только придумать, как его встроить в сайт. кстати, а исходников cql случайно нет? можно было бы на крайний случай в php или перевести.
Хочу заметить, что продукция Chess Assistant поддерживает cql

Во-первых, исходников нет. Во-вторых, CQL на сервере запускать нельзя, он очень медленный. В-третьих, ты, например, никогда не задумывался как PGN записать решение кооперативной задачи с иллюзорной игрой? Или угрозу в двухходовке? И как тогда найти ключевые моменты при помощи CQL? И т.д.

Надо делать по-другому. Надо строить очень подробную классификацию (как это делает для yacpdb Саша Сыгуров) и писать автоматическую определялку, чтобы потом люди искали больше ориентируясь на ключевые слова, нежели на конфигурации фигур.

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

Под словом "решение" просто понимается две разные вещи. Авторское решение это такой текст в свободной форме, в котором описываются ходы, идеи, для понятности буковки в скобках у ходов и т.д. И еще есть полное дерево ходов, которое строит решающая программа, например.
Идея yacpdb в том, чтобы хранить только первое, а второе нужно только для анализа разными автоматическими средствами. Которых пока негусто.

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

Поиск в ChessBase (по крайней мере в CB2007, если я не ничего не путаю) не учитывает повороты и сдвиги позиции, только горизонтальные и/или вертикальные отражения если отметить соотв. галочки. Это немного другая задача.

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

Да, действительно, там не учитывается поворот доски, видимо, это связано с тем, что база программы рассчитана на практическую партию (а там жесткая привязка к пешкам, т.к. эндшпиль без пешки - большая редкость в партии, я уже не говорю о других стадиях игры).
Поиск по матовой картинке, конечно, был бы удобен. Но он большей частью нужен для чешской школы и для задач с правильными матами (в остальных направлениях мат как таковой не важен, главное - чтобы был в срок!).
У меня другая мысль: надо усовершенствовать уже существующий поиск по позиции, задавая условие типа "линия действия фигуры". Поясню, сейчас поиск по позиции Ka2, Ba1 и Ka2, Bh8 - это две отдельные истории. В каждом случае будут показаны только задачи с соответствующим ВЗАИМНЫМ расположением фигур. Но очевидно, что слон и с нижнего и с верхнего угла атакует одну и ту же линии, и за ее пределы не выйдет. В одних схемах ключевую линейную фигуру можно поставить с одной стороны доски, в других - с обратной. Игра останется прежней.
... У плагиаторов здесь поле для "творчества" необъятное - переставляй фигуру на новое поле (лишь бы позиция после 1-го хода совпала) и публикуй. Вчера Альбом России по миниатюрам смотрел - на первых двух страницах трехходовок 12 предшественников к 18 задачам.

Правильные маты - частый гость в задачах на кооперативный мат, расчет на это. Когда я говорю "поиск по матовой картине", я имею в виду конечно конфигурацию атакованных полей вокруг короля. Т.е., например, по такому запросу:

будут находится задачи и с такими, например, финалами:

Это некоторый шаг к тому, о чем ты пишешь дальше.

>Но очевидно, что слон и с нижнего и с верхнего угла атакует одну и ту же линии, и за ее пределы не выйдет.

Слон с a1 атакует h8, а с h8 - нет. То есть, разница все же есть, но идею я понимаю. Конечно, поиск предшественников по матрице это вовсе не механический процесс, надо понимать, позиции каких фигур действительно фиксированы, а какие можно переместить. И соответственно, "перемещаемые" не включать в запрос, а если результатов в таком случае будет слишком много, то пытаться их поставить на разные поля. Причем "перемещаемость" и даже "заменяемость" фигур это не следствие "линий действия фигуры", а более глобально следствие той роли, которую фигура выполняет в задаче.

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

В принципе, сложное описание матовых картин в базе задач с ММ Коса-Фомичева, подтверждает, что задача эта технически очень сложная. Согласен, жалко тебя (работы много, конечно), но помочь не могу - не программер я.
Вот еще одна, кстати, идея на будущее. Опять же - к теме ключевых полей или полей, которые атакуются фигурами. Сравни три задачи - http://dt.dewia.com/yacpdb/?id=49592 (две я указал в comments)
Во всех схема одна и та же, только белые кони стоят на разных полях. Однако эти кони контролируют одни и те же поля. Отсюда мысль - можно было бы и в поиск по позиции заложить такую опцию - "такое-то поле контролируется (атакуется) такой-то фигурой". Суть схемы-то от этого не поменяется. Например, ладья и с а1 и с а2 контролирует одно и то же поле а8.
В сказках, к слову, есть такая полезная фигура - блокер, что ли. Стоит себе на поле, ВООБЩЕ НЕ ХОДИТ, просто тупо блокирует клетку. Сколько в обычной ШК схем, когда такая фигура пригодилась бы! Применительно к показанным тобой диаграммам - ты введи в число фигур такую фишку, и пусть программа ее сама заменяет на ЛЮБУЮ другую фигуру того же цвета, лишь бы условиям блокирования отвечала.

Небольшой совет на тот случай, если вы ищете задачи по фамилии автора.
В процессе записи фамилии в поле Author возникает список авторов, фамилии которых начинаются с тех букв, которые вы уже ввели. Кликнув по одной из них, вы автоматически заполняете поле. Это удобно. Но есть одна ловушка. База заполняется разными людьми, из разных источников и.т.д. Поэтому, фамилия и отчество могут быть написаны по разному:
  • Фамилия, Имя Отчество

  • Фамилия, Имя О.

  • Фамилия, И.О.

Т.е. будут найдены только те задачи, данные об авторе в которых полностью совпадают с тем, что вы выбрали из списка. Поэтому, в поле Author лучше просто написать фамилию вручную. Однофамильцы потом отфильтруются.

Решил время от времени подбрасывать задачи в yacpdb. Только что случился казус. Ввел задачу Jozsef Toth, но система выдала ошибку - дубликат. Только автором там был не Jozsef, а Gyula Toth. Решил подстраховаться и заглянул в PDB. Эта задача там была, да вот только автор ее Imre Toth. Это что - один и тот же человек?

шахматные программы

(Анонимно)
Здравствуйте, хочу найти программы Gustav и yacpdb.
Помогите. С уважением Караман.

  • 1