Rybka explained?

Тема в разделе "Машинное отделение", создана пользователем WinPooh, 2 ноя 2006.

  1. atoku Модератор

    • Команда форума
    Рег.:
    05.02.2006
    Сообщения:
    2.949
    Симпатии:
    9
    Репутация:
    0
    Адрес:
    USA
    Оффлайн
    НС, вы меня разочаровываете. Зачем изобретать велосипед? Да еще на Дельфи.

    Вы мне напомнили одного студента, который для защиты диплома переписал известный диплом, написанный на фортране, переписал его на Матлабе. Ничего не добавив, кроме новых багов ;) Не обижайтесь, читайте про NIH sindrome
  2. NS Нефёдов Сергей

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

    For k:=1 to j do
    for m:=1 to j do
    if m<>k then
    Begin
    koef:=ar[m,k];
    for k1:=k to j+1 do
    ar[m,k1]:=ar[m,k1]-koef*ar[k,k1]/ar[k,k];
    end;

    Для этого нужно использовать библиотеку???
    Которая будет считать медленней???
  3. NS Нефёдов Сергей

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

    И если бы вы знали, кто пишет готовые библиотеки, сколько в них багов, насколько они тормозные и т.д. - то так бы не боготворили их, и их создателей.

    Вот они как раз написаны студентами :)
    А я всё-таки не студент :)

    Наверху - деление в цикле, не вынесено в расчет коэффициента - так как иначе идет потеря точности.

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

    И еще один вопрос - мне в методе Гаусса/наименьших квадратов нужно находить и исключать взаимосвязанные критерии (не только 100% взаимосвязанные, но и близкие, на практике взаимозаменяемые, причем могу привести случай когда одна тыщенка критериев будет завязана на другую :) ), и критерии с плохим доверительным интервалом (с большой погрешностью)
    Это тоже готовые библиотеки умеют делать?
    Если вы даже найдете такую готовую библиотеку, то никто не будет гарантировать её работоспособность, и на поиск вы потратите больше времени, чем я на написание :)
  4. atoku Модератор

    • Команда форума
    Рег.:
    05.02.2006
    Сообщения:
    2.949
    Симпатии:
    9
    Репутация:
    0
    Адрес:
    USA
    Оффлайн
    1) НС, я вас очень уважаю.

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

    3) Где у вас Гаусс? Вижу приведение к треугольному виду без проверки деления на ноль.

    4) Вы ДЕЙСТВИТЕЛЬНО думаете, что написали быстрый Гаусс??? А если я на спор напишу Гаусс который будет на пентиуме работать, скажем, в три раза быстрее?

    5) А если я на спор с библиотечным кодом дам вам в пять раз быстрее?
  5. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    3. Я написал что в моем случае не нужна проверка на ноль. И это не приведение к треугольному виду, вы ошибаетесь :)
    К треугольному виду приводит вот такой код
    For k:=1 to j do
    for m:=к+1 to j do
    Begin
    koef:=ar[m,k];
    for k1:=k to j+1 do
    ar[m,k1]:=ar[m,k1]-koef*ar[k,k1]/ar[k,k];
    end;
    4. Готов забиться на 100$, скорость теряется только на доступе к памяти (массиву). Из трех доступов вы уберете не больше одного (ar[k,k]) - увеличение быстродействия на 1/3 на той-же технике.

    5. Во первых готовая библиотека мне не подойдет, причины указаны выше,
    а во вторых она не даст пятикратный рост скорости.
    Есно для спора переписываю это код точь-в-точб без изменений (кроме +=) на Си, и компилирую Intel Compiler.
  6. Binary Учаcтник

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

    тем более за столько лет они оптимизированы до дыр...
  7. NS Нефёдов Сергей

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

    А насчет скорости, и увеличения её в пять раз (очень ошибочное мнение) - сколько я выигрывал таких споров, и олимпиад, где как раз нужно реализовать алгоритм с лучшей сложностью, и максимально его оптимизировать :)
    И отлично знаю сколько минимально требуется обращений к памяти для реализации Гаусса.
  8. NS Нефёдов Сергей

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

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    ну вот. облажали библиотеки. если бы все библиотеки писались студентами, и были дырявыми - ими бы никто не пользовался. я вот сам как раз верчусь вокруг повторного использования кода. пусть не 10 лет, но и моих 3-х лет мне вполне хватает, чтобы понять, что проще взять неглючную (что известно заранее!) библиотечную функцию, чем написать свой баг.
  10. NS Нефёдов Сергей

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

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

    Например мне никогда бы не пришло в голову писать свой treeView на задаче на пару сотен часов разработки - я бы всяко использовал готовый. :)
  11. NS Нефёдов Сергей

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

    Тут шла речь о стеке/очереди - так вот квалифицированный программист никогда не будет для них использовать готовые библиотеки в критичном по скорости участке кода...

    То-же самое для метода гаусса, метода наименьших квадратов. Всё зависит от квалификации.

    Допустим новичку тяжело написать простейший SQL запрос - он использует конструкторы.
    Профи запрос напишет вручную.

    Алгоритм закраски - тоже самое, нахождение собственного вектора и собственного числа - задача настолько специфична, что в каждом конкретном случае используются разные алгоритмы...
    Поиск Экстремумов - если вся задача на это завязана, то никто не будет использовать готовые библиотеки. У нас частный случай, и именно за решение этого частного случая нам платят бабло, а не за использование неоптимальных готовых алгоритмов.
  12. atoku Модератор

    • Команда форума
    Рег.:
    05.02.2006
    Сообщения:
    2.949
    Симпатии:
    9
    Репутация:
    0
    Адрес:
    USA
    Оффлайн
    NS, вы все же не поняли... Я добьюсь x3 за счет оптимизации цикла и знания устройства конвеера. Хорошо, гарантировать могу лишь 2кратное увеличение, так как вы отреклись от Дельфи.

    GSL использует ATLAS и, поверьте, даже мои развороты циклов не помогут его побить.
  13. NS Нефёдов Сергей

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

    Но цель мной была выполнена (причем за несколько минут), сложность была известна О(n^3), дополнительно посчитан коэффициент, и получено значение в 50000 весов в неделю. И эта цифра при оптимизации значительно не изменится...
    А при расчете есно я оставлю в цикле только одно обращение к массиву :)
  14. NS Нефёдов Сергей

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

    А скорость в 50000 весов за неделю - меня устраивает. Такой скорости достаточно, тем более в моем случае изначально признаков будет всего несколько тысяч.
  15. Kucherov_Dmitry Зарегистрирован

    Рег.:
    13.11.2006
    Сообщения:
    2
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Мне кажется,программа Васика"Rybka" близка по алгоритму к программе "Пионер" Ботвинника.Я думаю,Васек лично общался с Михаилом Моисеевичем или с его программистами,а,возможно,хорошо изучил его алгоритм!
  16. NS Нефёдов Сергей

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

    Рег.:
    13.11.2006
    Сообщения:
    2
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    ДЛЯ NS Пионер работал,прежде всего,как экономическая программа(Пионер 3),она решала задачи,которые не решает ни одна шахматная программа(Этюд Надирашвили).,
    и потом,читали ли Вы эти работы Ботвинника,прежде чем судить его программу!
  18. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Этюд Надирашвили действительно не может решить ни одна шахматная программа, потому что в нем есть один ньюанс... он нерешаем, в нем ошибка. Его может решить только Ботвинник, потому что человек частенько видит решение там, где его нет. Если Вы про это - то этим Рыбка и Пионер никак не схожи.
    Рыбка есно этот этюд не решит.
    Вы говорите что я не знаком с работами Ботвинника - почему-же знаком...
    Это вы скрываете что-же такого было в Пионере (а может всё-таки не в "Пионере", а в статьях Ботвинника?!?) Что позволило Рыбке стать номер 1 в мире...
  19. NS Нефёдов Сергей

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

    • Участник
    • Старожил
    Рег.:
    11.02.2006
    Сообщения:
    700
    Симпатии:
    3
    Репутация:
    0
    Адрес:
    Gotham City
    Оффлайн
    NS, как вы не понимаете: Ботвинник собирался сделать принципиально новую и самую сильную программу, а Райлих такую программу сделал. Разве вы не видите тут очевидной связи? ;)
  21. NS Нефёдов Сергей

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

    • Участник
    • Старожил
    Рег.:
    11.02.2006
    Сообщения:
    700
    Симпатии:
    3
    Репутация:
    0
    Адрес:
    Gotham City
    Оффлайн
    А в чем фишка?



    1. g6 Kf6 2. g7 Bh7 3. e4 Bxe4 4. g8=Q

    это не выигрыш?
  23. NS Нефёдов Сергей

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

    • Участник
    • Старожил
    Рег.:
    11.02.2006
    Сообщения:
    700
    Симпатии:
    3
    Репутация:
    0
    Адрес:
    Gotham City
    Оффлайн
    лично я не понимаю, где в конце равенсто... да и бог с ним
  25. NS Нефёдов Сергей

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

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

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

    Короче - совместными усилиями было нарисовано дерево из 200 позиций.... И что это? Решение этюда???
  28. TopicStarter Overlay

    WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Этюд - в студию! Давайте для него отдельную ветку заведём.
    Кому не лень - вставьте диаграмму! (книжки под рукой нет, Яндекс находить не желает)

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