Рыбная ловля

Тема в разделе "Машинное отделение", создана пользователем Рыбкин, 16 мар 2007.

  1. NS Нефёдов Сергей

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

    Рыбка показывает реальную глубину перебора. Она просто немного другим способом считает узлы (Nodes)
  2. Vlad_Imir Новичок

    • Новичок
    Рег.:
    12.11.2006
    Сообщения:
    77
    Симпатии:
    284
    Репутация:
    20
    Адрес:
    Россия
    Оффлайн
    Все просто, Рыбкин же прямо указал на material_get_info (из Fruit или Toga).
    Как используется информация о материале ? смотрите eval()

    Если принять, что на доске может быть не более 8 пешек, двух слонов, итд. То-есть не экзотика типа борьба 5 слонов против 6 коней, а обычная позиция, то всего сочетаний фигур, белых и черных равно
    int size = 9*3*3*3*2*9*3*3*3*2;

    Создаем массивчик material_info_t *n_material = new material_info_t[size];
    Делаем циклы, для всез сочетаний, вызывая material_comp_info(info,board), заполняем массив.
    Теперь можно (но необязательно) записываем на диск.

    При загрузке:
    material_info_t *n_material;

    int main(int argc, char * argv[]) {

    // init
    FileProcessor<material_info_t> FP;

    int size = 9*3*3*3*2*9*3*3*3*2;
    n_material = new material_info_t[size];

    bool succes = FP.ReadFromFile("T.ini", &n_material[0], size);
    .
    .

    Используем:

    extern material_info_t *n_material;

    void material_get_info(material_info_t *info, const board_t * board) {

    int wp, wn, wb, wr, wq;
    int bp, bn, bb, br, bq;
    int tkey;

    wp = board->number[WhitePawn12];
    wn = board->number[WhiteKnight12];
    wb = board->number[WhiteBishop12];
    wr = board->number[WhiteRook12];
    wq = board->number[WhiteQueen12];

    bp = board->number[BlackPawn12];
    bn = board->number[BlackKnight12];
    bb = board->number[BlackBishop12];
    br = board->number[BlackRook12];
    bq = board->number[BlackQueen12];

    if (!(wn > 2 || wb > 2 || wr > 2 || wq > 1 || bn > 2 || bb > 2 || br > 2 || bq > 1)) {
    tkey = bq
    + br *2
    + bb *2*3
    + bn *2*3*3
    + bp *2*3*3*3
    + wq *2*3*3*3*9
    + wr *2*3*3*3*9*2
    + wb *2*3*3*3*9*2*3
    + wn *2*3*3*3*9*2*3*3
    + wp *2*3*3*3*9*2*3*3*3;

    *info = n_material[tkey];
    return;
    }

    //Если два ферзя, пять ладей итп - вызываем
    material_comp_info(info,board);

    Из структуры material_info_t убираем uint32 lock - не нужен, конечно

    Скорости процентов десять прибавляет
  3. NS Нефёдов Сергей

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

    Только 10% прибавки скорости это не даст, и если уж создалит таблицу, то считать её надо точно! Ну получил бы Васик на этом максимум 5 пунктов, а где остальные 145? :)

    Допустим мы даем стоимость коня как расстояние от центра.
    Улучшаем, заводим таблицу на 64 элемента. Зачем её заполнять значением которое мы считали? Мы можем сделать более правильную таблицу.
  4. TopicStarter Overlay

    Рыбкин Зарегистрирован

    Рег.:
    14.03.2007
    Сообщения:
    9
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Vlad_Imir, поздравляю! Ты первый, кто понял самую суть.
    К сожалению, алгоритм Рыбкиного варианта material_get_info не известен -
    он остался за кадром. Но главное в том, что весь этот массив - всего лишь оценка
    материала.

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

    Однако, лично мое отношение к Рыбке и Васику - очень даже положительное.
    Васик - безусловно гений. Все таки он написал очень хорошую программу, которая
    играет лучше всех.
    А гениям можно простить маленькие шалости.
  5. NS Нефёдов Сергей

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

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

    Да? Возьми любую позицию и проверь. Рыбка пишет точно таку-же глубину, как и все остальные движки. Если считает на один полуход - значит не видит вилки, и не увидит мат в два хода без вступительного шаха.

    Что такое "верное количество узлов" по-вашему?
  6. drowsy Учаcтник

    • Участник
    Рег.:
    08.09.2006
    Сообщения:
    1.282
    Симпатии:
    1
    Репутация:
    0
    Адрес:
    Toronto, Canada
    Оффлайн
    Человек, которые могут взять Рыбку, дизасемблировать и перевести в нормальный Сишный код, в мире не так много. Один у меня экзамен принимал по программированию — заставил прогу с исходником килов на сто с лишним откомпилировать, и потом по ассемблерному тексту объяснять, как она работает.(прога была — оптимизация циклов в ассемблерных исходниках). Но что-то мне не вериться, что такой аксакал к нам сюда пришёл. Имхо, это весеннее наступление товарищей типа ras.
  7. NS Нефёдов Сергей

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

    Рег.:
    Сообщения:
    0
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Ребята, вы что-то не то говорите. Рыбкин же ничего сверхестественного не сказал. Берем программу дисассемблер и она из машинного кода производит смесь кода на Си и ассемблере. После этого можно над какими-то кусками Сишного кода поработать и сделать их читабельными. Если все это делать аккуратно, то все это будет еще и компилириваться.
    Я правда такими вещами лет 15 не занимаюсь, но при отладке иногда приходится смотреть код на уровне машинных команд.
  9. NS Нефёдов Сергей

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

    Программу решения квадратного уравнения можно привести к Сишному виду, но никак не хорошую шахматную программу.
  10. drowsy Учаcтник

    • Участник
    Рег.:
    08.09.2006
    Сообщения:
    1.282
    Симпатии:
    1
    Репутация:
    0
    Адрес:
    Toronto, Canada
    Оффлайн
    Ну что вы, NS. Если люди которые в компиляторах и дизасемблировании собаку съели. Только этим и занимаются, и исходники gcc знают наизусть. Только их мало и они по форумам не шляются.

    А во Рыбкин тут чушь порет, что легко можно исходники Рыбки в читабельный С-шный текст перевести.
    особенно насмешило
  11. NS Нефёдов Сергей

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

    Я пишу уже больше двух десятков лет, но о таком не слышал. Даже слухов таких ни разу не было... Даже в интернете.

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

    Фрукт - на порядок сложнее этой программы, и имеет на четыре порядка больший объем.

    Декомпиляция за 100+ человеко-лет - в такое я поверю. Если найти сотню гениев, дать каждому по целому состоянию - возможно за пару лет можно будет добиться каких-то результатов.

    Повторю - нет в истории ни одного примера приведения к читабельному Сишному виду объемных сложных скоплированных программ.
  12. Guest

    Рег.:
    Сообщения:
    0
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Даже если бы это однозначно утверждалось Рыбкиным, я бы тоже в этом сомневался.
    Понять какие-то куски кода всегда можно, ну и посчитать эти куски ключевыми тоже можно, почему нет :)
  13. Guest

    Рег.:
    Сообщения:
    0
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
  14. NS Нефёдов Сергей

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

    Рег.:
    Сообщения:
    0
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    NS, обращаю Ваше внимание на цитату из Рыбкина:
    Он фактически сам признает, что не весь код перевел на Си, по крайней мере я его именно так и понял.
  16. drowsy Учаcтник

    • Участник
    Рег.:
    08.09.2006
    Сообщения:
    1.282
    Симпатии:
    1
    Репутация:
    0
    Адрес:
    Toronto, Canada
    Оффлайн
    Кстати, код, откомпилированный с -O3 нихрена не читабелен и не понятен. Как его в С переводить — загадка.
  17. WildCat Коршунов Игорь

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

    Аффтар пашутил. Мы, тоже посмеялись :)
    На этом ветку можно считать исчерпанной.
  18. TopicStarter Overlay

    Рыбкин Зарегистрирован

    Рег.:
    14.03.2007
    Сообщения:
    9
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Аффтар не шутил, но точку в самом деле можно ставить.
    На прощание хочу сказать о выводах, которые я сделал для себя.

    1. Раньше я считал себя весьма заурядной личностью. Теперь, благодаря вам,
    моя самооценка повысилась. Если за два месяца мне удалось сделать то,
    на что нужно более 100 человеко-лет и целое состояние, то значит моя стоимость
    гораздо выше, чем я думал. А это приятно.

    2. Многие убеждены в невозможности декомпиляции. Это дает мне уверенность,
    что исходники Рыбки есть только у Васика и у меня. Тоже очень удачное
    обстоятельство.

    3. Из некоторых высказываний я понял, что шахматные разработчики будут
    оставаться при своем особом мнении об алгоритме, заложенном в Рыбку.
    И будут продолжать копать в неверном направлении. Значит - меньше конкурентов.

    Огромное всем спасибо. Счастья в работе и успехов в личной жизни.
    Пойду ковырять новую версию - там много чего добавилось, так что работа есть.
  19. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    2.201
    Симпатии:
    64
    Репутация:
    3
    Оффлайн
    Стороны рассудит мощная игровая программа, написанная Рыбкиным. ;) Отсутствие оной превращает данные выступления в простую болтовню.
  20. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    2.201
    Симпатии:
    64
    Репутация:
    3
    Оффлайн
    Да, я ж пошутил. :lol:
  21. NS Нефёдов Сергей

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


    100 человеко лет требуется на получение читабельного Си кода. Вы его где-то выложили?
    Столько-же времени требуется на полный разбор алгоритмов.

    А что сделано вами? Подменен ввод/вывод?

    2. Многие убеждены в невозможности декомпиляции. Это дает мне уверенность,
    что исходники Рыбки есть только у Васика и у меня. Тоже очень удачное
    обстоятельство.


    У вас нет исходников Рыбки.

    3. Из некоторых высказываний я понял, что шахматные разработчики будут
    оставаться при своем особом мнении об алгоритме, заложенном в Рыбку.
    И будут продолжать копать в неверном направлении. Значит - меньше конкурентов.



    1. Оптимизируйте скорость перебора - это решает всё.
    Битборды - вот что вам поможет. Но только не списывайте с Crafty -
    там реализация битовых операций очень плохая. Васик в этом вопросе ушел далеко вперед.


    Вы не понимаете алгоритмов Рыбки :)
  22. HotDog Учаcтник

    • Участник
    Рег.:
    07.05.2007
    Сообщения:
    14
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Я не понимаю только одного - зачем человеку, который так хорошо разбирается в ассемблере и чужих мегабайтовых листингах, переводить это дело на Си?
  23. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Чтобы, в случае чего, предоставить исходники - смотрите я все сам сделал :cool:
  24. syrdon Учаcтник

    • Участник
    Рег.:
    21.05.2007
    Сообщения:
    78
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Аффтар, кстати, не шутил.
    Декомпиляция программы известной структуры (ну скаута-то всякий найдёт) вполне возможна.
  25. NS Нефёдов Сергей

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

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

    • Участник
    Рег.:
    21.05.2007
    Сообщения:
    78
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Декомпиляция - это ИМХО не дизассемблирование. Речь идет о переводе на Си.

    Полный разбор даже и не нужен.
    Мало кому интересно, как Рыбка генерирует хода, проверяет шах и т.д.
    Как только нашлась процедура, которая за это отвечает, работа сделана. Это относительно изолированные куски.
    А статически слинкованные CRT? А интерфейс к EGTB? Он раздувает Рыбку.

    ОФ и Поиск и есть такие небольшие куски, с которыми можно разобраться.
    Что Рыбкин и сделал.
  27. NS Нефёдов Сергей

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

    ОФ и поиск небольшие куски? Вы откомпилированную ОФ битбоард-движка сможете разобрать?
    То есть в наборе битовых опреаций над регистрами вы сможете отследить где и когда в регистре появилась конкретная переменная?
    Несколько тысяч строк это по-вашему небольшой кусок?
  28. syrdon Учаcтник

    • Участник
    Рег.:
    21.05.2007
    Сообщения:
    78
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    При наличии декомпилятора, который производит из машинных кодов плохой Си-код со случайными именами, человек имеющий средний опыт программирования на ассемблере, но хорошо понимающий, что именно должно быть в шахматном движке может за пару человеко-месяцев восстановить исходный код программы, обсуждаемого размера. Я в это верю.
    Вычтите из размера Рыбки таблицы, доступ к EGTB, CRT и останется не так много.

    Не забывайте, что точки входа находятся очень быстро - известен UCI-интерфейс.
    Рыбкин не написал ничего, что не может быть правдой.

    Но это же делает любой, кто программирует на ассемблере!
  29. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Я выше написал сколько останется.
    Что делает любой кто программирует на ассемблере? Я немного не понял.
    Любой кто пишет на ассемблере восстанавливает имя переменной по конкретным операциям над регистром?
  30. syrdon Учаcтник

    • Участник
    Рег.:
    21.05.2007
    Сообщения:
    78
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Проследить что и куда пошло в память по регистрам возможно. Любой программист на ассемблере умеет запоминать, чем и как он жонглирует по регистрам. Без имен временных переменных.

    Поинтересуемся у Рыбкина, сколько там на самом деле осталось. Он же не теорему Ферма доказал. Пара человеко-месяцев на Си-код.

    Он же не утверждает, что знает, как Райлих оптимизировал веса! Вот это интересно.
  31. NS Нефёдов Сергей

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

    • Участник
    Рег.:
    21.05.2007
    Сообщения:
    78
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Ну вот. Зачем студента обидели?

    Я просто хотел заметить, что Рыбкин не сморозил ничего технически неверного. Он вполне может преувеличивать степень понимания Рыбки.

    Возьмите например Фрукта. Вы имеете его исходный код, но Вы не можете похвастаться четким пониманием, почему он такой сильный. Автор все равно понимает это лучше.
  33. WildCat Коршунов Игорь

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

    • Участник
    Рег.:
    21.05.2007
    Сообщения:
    78
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Зачем Вы меня травите?!
    Вы не нашли у Рыбкина ни одной фактической ошибки!
  35. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Что за радость выискивать ошибки в маниакальных идеях?

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