Пионер Ботвинника - К истории "незаконченной" программы

Discussion in 'Машинное отделение' started by NO, 22 Aug 2006.

  1. TopicStarter Overlay

    NO Учаcтник

    • Участник
    Member Since:
    01.05.2006
    Message Count:
    31
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
  2. TopicStarter Overlay

    NO Учаcтник

    • Участник
    Member Since:
    01.05.2006
    Message Count:
    31
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    "Шахматы, как игра, предопределена как ничейная. Это означает, что при абсолютно правильной игре, с точки зрения Бога, любая партия при правильной игре должна закончиться вничью. А то, что у шахматистов бывают победы и поражения всего лишь означает, что в процессе игры были допущены ошибки."

    То есть задача шаматной программы - заставить человека сделать ошибку. Снотворное короче, морфий.
  3. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Гекс, без правила swap-а выигран для начинающей стороны, с правилом swap-а - проигран. Но это не мешает в него играть, так как для доски 10x10 Выигрывающая стратегия неизвестна.
    Любая игра двух соперников с полной информацией имеет точный результат (по теореме Церемело)
    В шахматы этот результат неизвестен, но скорей всего это ничья.
    Любая игра двух соперников имеет предопределенный результат (вес игры), но пока стратегия ведущая к этому результату неизвестна (либо известна, но не реализуема при сегодняшнем уровне развития техники и алгоритмов) - в игру можно играть.

    ЗЫ. Бог тут абсолютно не при чем.
  4. TopicStarter Overlay

    NO Учаcтник

    • Участник
    Member Since:
    01.05.2006
    Message Count:
    31
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    Значит для повышения вероятности выигрыша нужно делать не универсально хорошо играющую систему, т.е. защищающуюся. А такую, которая подстраивается под стиль противника. Теоретически шахматы игра с полной информацией, а практически выходит не с полной интерпретацией этой информации. Значит любой алгоритм среди равных ходов выбирает какие-то свои. И чем алгоритм сложнее тем больше этих априорных приоритетов.
    Для обучения из общеизвестных методов лучшим является марковская цепь со скрытым слоем. Скрытый конечный автомат тут, видимо, соответствует алгоритму противника. Он строится автоматически. А шахматисты ничего нового не придумали?
    В терминологии обработки сигналов это еще называется адаптивным рекуррентным фильтром. Лингвистичность метода Штильмана это тоже рекуррентность. Эти данные абстрактны, не указывают сразу "который" делать ход, а скорее "какой", требуются еще вычисления, а они постепенно добавляют предпочтений.
  5. MS Михаил Семионенков

    • Команда форума
    Member Since:
    11.02.2006
    Message Count:
    6.542
    Likes Received:
    3.361
    Репутация:
    175
    Оффлайн
    Спасибо за ссылки. Это, кажется обо мне позаботились. Тронут. Если не обо мне - все равно спасибо.
    Если цитаты скомпилированы более-менее корректно, то вопрос о наследии Патриарха в этой области выглядит закрытым. А жаль.
  6. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Для обучения из общеизвестных методов лучшим является марковская цепь со скрытым слоем. Скрытый конечный автомат тут, видимо, соответствует алгоритму противника. Он строится автоматически.

    Да нет никакого "алгоритма противника" - в прошлый раз ведь объясняли...
    Никаких реальных механизмов самоубучения в шахматных программах нет!
  7. WinPooh В.М.

    • Команда форума
    Member Since:
    13.02.2006
    Message Count:
    9.491
    Likes Received:
    3.120
    Репутация:
    95
    Location:
    Москва
    Оффлайн
    Он есть, алгоритм противника. Только мы постулируем, что он тождественно равен нашему - весь рекурсивный минимакс именно на этом и основан. Можем в каких-то деталях считать, что он отличается от нашего - вводя разного рода асимметрию в поиск и оценку для стороны компьютера и игрока...
  8. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Я считаю что это неправильный подход - выдумывать ненужные определения.
    У нас есть минимаксная процедура максимизирующая спущенную в корень оценку - никакого соперника, и никакого алгоритма соперника.
  9. WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    В принципе алгоритм у сопреника есть. Но где гарантии, что он будет придерживаться этого алгоритма? Поэтому мы и считаем, что противник будет играть наилучшим образом. К тому же какой-же противник расскажет нам о своем алгоритме?
  10. TopicStarter Overlay

    NO Учаcтник

    • Участник
    Member Since:
    01.05.2006
    Message Count:
    31
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    Противник не говорит "Я не знаю куда ходить т.к. не могу выбрать ход. Я не успел просчитал их все до мата, и ради объективности не буду давать предпочтение ни какому." и не говорит "Ход может быть лучший, хороший, плохой или худший. Я делаю лучший. Реши сам какой именно по твоим приоритетам или объективно, если просчитал каждую ветвь до мата".
    Он делает конкретный ход. Если всего возможных ходов 256 то этот ход есть сообщение размером в 8 бит информации отправленное доске. В этом сообщении часть зависит от позиции, часть от приоритетов. Если она полностью зависит от позиции значит противника действительно нет, нам известны все его ходы. Если не вся то оставшаяся все равно указывает как именно он играет.

    Если, допустим, у него совсем плохой компьютер, просчитывает на 1 полуход и он использует дополнительно ГСЧ с 4-битным зерном, то за 16 ходов я даже это зерно узнаю.

    Игра без противника это поиск ничьей. А нам нужно выиграть. Поэтому нужно заставить противника сделать ошибку.
  11. krey Михаил Кройтор

    • Команда форума
    Member Since:
    10.04.2006
    Message Count:
    3.709
    Likes Received:
    50
    Репутация:
    1
    Location:
    Кишинев
    Оффлайн
    скоро желающим смогу выслать книжку Ботвинника "Шахматный метод решения переборных задач". Уверен, что многим будет она полезна...
  12. WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    Всем желающим?
  13. krey Михаил Кройтор

    • Команда форума
    Member Since:
    10.04.2006
    Message Count:
    3.709
    Likes Received:
    50
    Репутация:
    1
    Location:
    Кишинев
    Оффлайн
    всем знакомым мне ;)
    там ничего особого не содержится...
    правда, математик может что-то обнаружить. ждите начала сентября...
  14. morkoffkin Учаcтник

    • Участник
    Member Since:
    19.02.2006
    Message Count:
    298
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    > Он есть, алгоритм противника. Только мы постулируем, что он тождественно равен нашему

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

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Да, в некоторых программах такие натройки есть - антигросс (против человека), и настройки против конкретных сильных программ.
    Путем перекоса позиционной оценки (ассиметричности) затягивают противника в неудобные именно для него позиции.
  16. morkoffkin Учаcтник

    • Участник
    Member Since:
    19.02.2006
    Message Count:
    298
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    Нет, я не про настройки. Вот Заппа на 4 процессорах слабее Рыбки на 2. Отдаем два процессора под полноценную Рыбку и более менее точно можем предсказать как она сыграет. Остальные два процессора пытаются найти изъян в оценках Рыбки. (Вопросы соблюдения авторских прав пока для простоты не рассматриваем).
  17. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Не, так не получится... :)
  18. morkoffkin Учаcтник

    • Участник
    Member Since:
    19.02.2006
    Message Count:
    298
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    Не совсем понимаю почему. Если вам известна стратегия противника, то вы получаете полное преимущество над ним. Во всяком случае ваш ожидаемый выигрыш будет выше, чем в случае, когда вы не имеете представления о стратегии противника.
  19. NS Нефёдов Сергей

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

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Единственно что можно сделать - это "посчитать Рыбкой", и сделать лучший ход по её мнению... Лучшей стратегии быть не может.
  21. atoku Модератор

    • Команда форума
    Member Since:
    05.02.2006
    Message Count:
    2.949
    Likes Received:
    9
    Репутация:
    0
    Location:
    USA
    Оффлайн
    Почему вы такой догматичный? Вас призывают придумать как использоваться дополнительную информацию, а вы сразу "все дураки"! Очевидно, дополнительная информация может дать уточнение, и никак не ухудшит. А может ли улучшить - видимо да.

    Ну, вот пример может быть такой. Ваша программа имеет возможность видеть возможный ответ противника. Иногда рыбку зашкаливает (она пропускает комбинации из-за отсечений). Ваша программа имеет два продолжения. Одно ведет в плюс 0.1, а другое в 0.08. Но второе, как вы установили, заставляет рыбку сделать принципиально проигрывающий ход. В итоге ваша программа идет по этому пути.
  22. miptus Заслуженный

    • Заслуженный
    • Участник
    Member Since:
    11.02.2006
    Message Count:
    1.159
    Likes Received:
    78
    Репутация:
    5
    Оффлайн
    А нельзя как-нибудь время перераспределять? Например если наш движок играет с Рыбкой, то после того как он посчитал варианты (по своему алгоритму) он может пройтись по ним Рыбкой и потратить еще время на те варианты где его ходы не совпадают с ходами Рыбки (считаем что время на это есть так как наш движок скажем на 4х ядрах против 2х). Может ли это дать прирост в силе?
  23. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Нет, не даст. Допустим у нас в два раза больше процессорного времени (не процессоров, а именно времени, так как увеличение вдвое количества процессоров не позволяет сосчитать в два раза быстрее)
    Мы потратили одну часть времени (ровно столько сколько может тратить наш соперник, Рыбка), нашли лучший ход за нас.
    Теперь исполняем его, у нас осталось ровно времени чтоб узнать как ответит Рыбка и какую оценку она при этом даст.
    Узнали - что дальше?
    Вдвое больше процессорного времени позволяет только выбрать два хода (Без обдумывания), и узнать какой из них с точки зрения лучше (что нам ничего не даст - так как это два взятых с потолка хода, абсолютно не лучшие в данной позиции)
    Либо провести какие-то вычисления, узнать ответ Рыбки (и оценку) ровно на один ход, и еще чего-нибудь посчитать.
    Как можно воспользоваться оценкой Рыбки в одной единственной позиции? Да никак!
  24. morkoffkin Учаcтник

    • Участник
    Member Since:
    19.02.2006
    Message Count:
    298
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    Почему ровно на один ход? Есть дерево вариантов от Рыбки. Можно, наверное, еще какую-то информацию заставить ее выдавать. Даже мгновенная оценка позиции Рыбкой может быть полезна.
  25. miptus Заслуженный

    • Заслуженный
    • Участник
    Member Since:
    11.02.2006
    Message Count:
    1.159
    Likes Received:
    78
    Репутация:
    5
    Оффлайн
    Ну хорошо, а если у нас есть не просто ход Рыбки в конкретной позиции а ее оценочная функция? Тогда мы получаем не один ход а все дерево вариантов с двумя оценками: одна наша, а другая - Рыбки (ну или скажем Фрукта, у него ОФ известна). Можно ли это использовать?
  26. miptus Заслуженный

    • Заслуженный
    • Участник
    Member Since:
    11.02.2006
    Message Count:
    1.159
    Likes Received:
    78
    Репутация:
    5
    Оффлайн
    morkoffkin, без знания оценочной функции дерева вариантов у нас нет (потратив минуту на ход мы будем знать только оценку рыбкой одной позиции а не дерево).
  27. morkoffkin Учаcтник

    • Участник
    Member Since:
    19.02.2006
    Message Count:
    298
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    Может оно не очень ветвистое, но все же дерево. Если Рыбка выдает, к примеру, 10 линий.
  28. WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    Если бы у нас процессор был на много порядков быстрее, чем у соперника, тогда бы мы смогли моделировать его алгоритм для принятия своих решений. А так мы просто никак не успеваем это сделать.
    С другой стороны имея такой процессор мы итак его обыграем, без всяких ухищрений.
  29. TopicStarter Overlay

    NO Учаcтник

    • Участник
    Member Since:
    01.05.2006
    Message Count:
    31
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    В минимаксе мы предполагаем, что противник предполагает... и т.д., что мы оба играем по минимаксу.
    То есть он как раз полностью основан на использовании знания стратегии противника. Причем не знания, а предположения, и одного-единственного.

    Мне кажется минимакс склонен создавать очень напряженные позиции, где первые ходы ничего не меняют, а дальние все одинаково угрожающие. То есть перебираться нужно все больше.
    А играть против него нужно, например, вывести ферзя просто погулять и пусть противник боится сколько ему нравится. А мы несколько ходов будем думать как взять какую-нибудь пешку.
  30. TopicStarter Overlay

    NO Учаcтник

    • Участник
    Member Since:
    01.05.2006
    Message Count:
    31
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    Кстати очень похоже на "холодную войну". Кажется там она называется spagetti-tactic.
    Минимакс это защитный алгоритм, для слабых и мирных. Движется по седловым точкам как вдоль стеночки, осматривается.

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

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

    На что минимакс не обращает внимания особенно упорно?
  31. dan77790 Учаcтник

    • Участник
    Member Since:
    06.03.2008
    Message Count:
    3.792
    Likes Received:
    17
    Репутация:
    0
    Оффлайн
    Так и на что минимакс не обращает внимания особенно упорно?)
  32. Chemer Максим

    • Участник
    Member Since:
    14.09.2006
    Message Count:
    1.674
    Likes Received:
    13
    Репутация:
    0
    Location:
    Запорожье
    Оффлайн
    Коль пошла такая пьянка - а не поднять ли нам забытую тему? Думаю самый лучший момент!
  33. WinPooh В.М.

    • Команда форума
    Member Since:
    13.02.2006
    Message Count:
    9.491
    Likes Received:
    3.120
    Репутация:
    95
    Location:
    Москва
    Оффлайн
    Ещё одна гипотеза из альтернативной реальности: незадолго до конца своего земного пути Ботвинник передаёт секрет "Пионера" Васику, с условием опубликовать программу не ранее, чем через десять лет...
  34. WinPooh В.М.

    • Команда форума
    Member Since:
    13.02.2006
    Message Count:
    9.491
    Likes Received:
    3.120
    Репутация:
    95
    Location:
    Москва
    Оффлайн
    Фильм: "Спасти СССР. Идея Ботвинника".

Share This Page