Rybka explained?

Discussion in 'Машинное отделение' started by WinPooh, 2 Nov 2006.

  1. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    НС, вы меня разочаровываете. Зачем изобретать велосипед? Да еще на Дельфи.

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

    NS Нефёдов Сергей баннер

    Репутация:
    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
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    У меня программы и обработки без багов :)
    Я всё-таки 20 лет пишу...
    А метод Гаусса - у меня не тот уровень программирования чтоб я мог допустить в нем ошибку, и за минуту я найду в инете тестовую матрицу 3x4 с готовым ответом для проверки.

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

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

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

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

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

    atoku Модератор

    Репутация:
    0
    1) НС, я вас очень уважаю.

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

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

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

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

    NS Нефёдов Сергей баннер

    Репутация:
    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
    Оффлайн

    Binary Учаcтник

    Репутация:
    0
    NS - зря думаешь , что библиотечные функции (пусть даже и для Дельфи)
    пишут ламаки :)

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

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Я не думаю, я просто знаю кто их пишет. Я в этом бизнесе как раз и вращаюсь :)
    Хотя сейчас за деньги пишу только чисто Экономический софт, но я не с него начинал. :)

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

    NS Нефёдов Сергей баннер

    Репутация:
    3
    О блин! Облажался :)
    Можно убрать два обращения к памяти :)
     
  9. krey
    Оффлайн

    krey Михаил Кройтор Staff Member Команда форума

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

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Разговор перевелся на совсем другую тему - речь идет не о полном отказе от библиотек, а о том что быстрее написать пять строк кода, чтоб посчитать что за неделю рассчитываются 50000 признаков. Чем перед этим искать час библиотеку, разбираться с ней - и тоолько для того чтоб убедиться что в частном случае она медленней...

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

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

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Раз уж пошел такой злостный Офф :)
    Практика показывает, что с ростом квалификации программиста идёт постепенный отказ от использования конструкторов, и растет планка применения готовых библиотек.
    Человек использует библиотеки только если велики трудозатраты на самостоятельное написание, вероятность собственной ошибки и есть уверенность в безошибочности и оптимальности библиотеки.

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

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

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

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

    atoku Модератор

    Репутация:
    0
    NS, вы все же не поняли... Я добьюсь x3 за счет оптимизации цикла и знания устройства конвеера. Хорошо, гарантировать могу лишь 2кратное увеличение, так как вы отреклись от Дельфи.

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

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Не добъетесь двухкратного ускорения, так как я оставлю в цикле только вычисляемое значение, а весь коээфициент (все три, еще дополнительно две переменные) вынесу за цикл в одну регистровую переменную. :)

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

    NS Нефёдов Сергей баннер

    Репутация:
    3
    И мне же не нужен чистый Гаусс, мне нужно сочетание гаусса (либо иных выч. методов) с методом наименьших квадратов и с расчетом доверительных интервалов и поиском групп взаимосвязанных (я говорил - при этом не на 100% взаимосвязанных, а именно групп близзких!!!) признаков, для исключение ненужных сочетаний из базы.
    Нет таких готовых методов, и никогда не было. :)

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

    Kucherov_Dmitry Зарегистрирован

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

    NS Нефёдов Сергей баннер

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

    Kucherov_Dmitry Зарегистрирован

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

    NS Нефёдов Сергей баннер

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

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Прочитайте "О решении неточных переборных задач" Издательство Кибернетика, 1979г.
    Начиная со страницы 60, где сам Ботвинник сознается что дерево перебора было практически выведено вручную, и получилось путем ручного отсечения ненужных ветвей...
     
  20. Инсайдер
    Оффлайн

    Инсайдер Bruce Wayne

    Репутация:
    0
    NS, как вы не понимаете: Ботвинник собирался сделать принципиально новую и самую сильную программу, а Райлих такую программу сделал. Разве вы не видите тут очевидной связи? ;)
     
  21. NS
    Оффлайн

    NS Нефёдов Сергей баннер

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

    Инсайдер Bruce Wayne

    Репутация:
    0
    А в чем фишка?



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

    это не выигрыш?
     
  23. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Сейчас смотрю, но в распечатке Ботвинника не все варианты. На западе говорили что вся распечатка Ботвинника явная подтасовка, а у нас он сам написал что дерево они правили сами :)
    То есть в любом случае "Пионер" сам этюд не решил.
     
  24. Инсайдер
    Оффлайн

    Инсайдер Bruce Wayne

    Репутация:
    0
    лично я не понимаю, где в конце равенсто... да и бог с ним
     
  25. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    7...Kd4 за черных конечно-же сильнее...
     
  26. NS
    Оффлайн

    NS Нефёдов Сергей баннер

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

    NS Нефёдов Сергей баннер

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

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

    WinPooh В.М. Staff Member

    Репутация:
    95
    Этюд - в студию! Давайте для него отдельную ветку заведём.
    Кому не лень - вставьте диаграмму! (книжки под рукой нет, Яндекс находить не желает)