Здравствуйте, гость Правила · Помощь

»  Теория. Алгоритм распасовки. Подписаться | Сообщить другу | Версия для печати
      » 12/03/2013, 09:37,  Клейн 
isabsent ("12/".$m["мар"]."/2013," 09:36)
Клейн ("12/".$m["мар"]."/2013," 09:30)
0)И, конечно же, будет любопытен ответ вашей проги о действиях игрока 6-м и 7-м ходу


Уточните пожалуйста - у кого первый ход в игре.

По картинке у Запада.
Он начинает торговлю, значит его первых ход.
Карты со знаком звёздочка * - это карты делающие первых ход во взятке.
Игра на троих.

Это сообщение отредактировал Клейн - 12/03/2013, 09:42
      » 12/03/2013, 10:06,  isabsent 
Клейн ("12/".$m["мар"]."/2013," 09:37)
1)По картинке у Запада.
Он начинает торговлю, значит его первых ход.

1) Об этом говорит приподнятый "pass" над Западом? Или это просто ошибка в HTML'е?
И кстати, почему такой нетрадиционный для преферанса порядок расположения мастей на руке?

Это сообщение отредактировал isabsent - 12/03/2013, 10:14
      » 12/03/2013, 12:36,  isabsent 
First move - Player
Prikup ♥A,♦A
************************ Trick #1 ************************
Trump:
Player: ♠ A,9, ♣ A,Q,J,8,7, ♦ 10, ♥ K,7,
First: ♠ K,J,10,8, ♣ 9, ♦ J,9, ♥ J,10,8,
Second: ♠ Q,7, ♣ K,10, ♦ K,Q,8,7, ♥ Q,9,

♥K: [2,48, 3,52, 4,00]
♥7: [2,83, 3,38, 3,79]
Computer moves as Player ♥K

Первый ход просчитался быстро, а второго не удалось дождаться за час... Когда Вы говорили об однозначности и просчитываемости ходов, Вы имели ввиду с первого хода? Вот, например, насколько однозначен ход ♠9 в начале 4-ой взятки? С одной стороны, взял на неё если 78 пик лежат на разных руках - и Запад уже свободен до конца игры, а с другой - зачем проверять как лежат 78 пик, если у Запада ест надежда пронести ее если кто-то из оппов зайдет в бубну?
      » 12/03/2013, 12:50,  isabsent 
Morozko_prr ("12/".$m["мар"]."/2013," 08:26)
Вынужден полностью согласиться.
Человек, похоже, действительно НЕ понимает саму задачу, за решение которой он взялся.

Это утверждение касается именно распасов, или Вы вообще считаете, что мой способ не способен решить никакую преферансную задачу - игру на взятки, поймать мизер?
      » 12/03/2013, 14:16,  Байкер 
В принципе, человек на правильном пути. И, кстати, он уже получает вполне приличные результаты (ответы), хотя и иногда.
()
Без частичной или полной реконструкции расклада решить распасы не представляется возможным.

Это смотря что понимать под реконструкцией. Насколько я понимаю то, что делает isabsent, он пытается реализовать совсем не новую идею. Она заключается в том, чтобы каждый раз находить лучший ход против всех возможных раскладов на данный момент. Иначе говоря, применить этот самый метод Монте-Карло. Тут и рождается на свет некий такой дуализм: конкретный расклад можно вообще не вычислять (по крайней мере на начальном этапе создания алгоритма), но выводы основываются на генерации всего множества возможных раскладов - расклады таки "реконструируются" и используются в алгоритме.

Главная проблема на пути такого подхода - достаточность вычислительного ресурса. Ибо если ответов ждать в среднем более 30 секунд, то практический смысл алгоритма теряется. А задачу надо ставить вообще порядка 10 секунд. Когда-то это станет возможным и на настольных компьютерах.
Что делать сейчас?
Путей я вижу два. Во-первых, не ориентироваться на какой-то андроид (читай, на доступность применения), а выбрать комп наимощнейший из доступных. Во-вторых, применить логическую оптимизацию процесса. Типа, если масть вида ТК7, то считать не все 3 карты, а только 2: короля можно приравнять к тузу. Или, например, если у вас первый ход и 8 карт на руке, то не считать все 8, условно, 1000 раз против всех раскладов, а посчитать всего 10 раз, после этого 4 худших хода отбросить сразу, а 4 оставшихся обсчитать "подробно". Ну, и так далее, "в таком духе, в таком разрезе". Так или иначе, но 30 секунд должны быть пределом, и пофиг какого качества ход предлагает алгоритм. Оптимизация хода (в рамках 30 секунд) - вторая задача. Как ни странно.

Там еще встает проблема отбрасывания "невозможных" раскладов, типа, на руке 10 взяток, а партнер якобы играет распасы, но тоже решается...

Что касается критериев правильности ответов, то напрасно забраковано мое предложение о 30 раскладах (раздачах). Это раздач 30 - типа мало. Но давайте посмотрим чуть пристальнее. В каждой раздаче у каждого 10 карт. Положим, в среднем разыгрывается 7 взяток. Пусть в каждой 3 варианта. Всего решений - 20 в раздаче. Игроков трое - 60 решений. Раздач 30 - 1800 всего. Округлим до 1000 - уж столько-то реальных игровых проблем точно останется.
Предположим, ты добился того, что твой алгоритм на ЭТИХ эталонных раскладах из 1000 случаев выдает 999 правильных ответов - а это я и имел в виду, делая предложение... Тогда (я это утверждаю) такой алгоритм на любом другом наборе 30 раздач выдаст минимум 950 правильных ответов из той же 1000, а на самом деле не меньше 990. Что, в свою очередь, позволит внести поправки. Проблема эталона решена. А ежели тебе этого недостаточно, тогда я не понимаю, какую задачу ты собираешься решить? И потом, на первом уроке программирования чему учат? Тому, что программировать нужно "сверху вниз", идти от общего к частному. А у тебя пока алгоритм каким-то странным образом не воспринимает свою руку и несколько сделанных ходов - см. мой пример, где дело встало. А этого уж никак не должно быть и на данном этапе программирования.
Удачи. )

Это сообщение отредактировал Байкер - 12/03/2013, 14:17
      » 12/03/2013, 14:42,  Клейн 
isabsent ("12/".$m["мар"]."/2013," 10:06)
Клейн ("12/".$m["мар"]."/2013," 09:37)
1)По картинке у Запада.
Он начинает торговлю, значит его первых ход.

1) Об этом говорит приподнятый "pass" над Западом? Или это просто ошибка в HTML'е?
2) И кстати, почему такой нетрадиционный для преферанса порядок расположения мастей на руке?

1. Это не ошибка, так отображается торговля в архиве партии, если её играть на сервере Гамблер.
2. Так сделано в архиве на Гамблере и так сделано в форуме местном, где значки мастей есть в виде смайликов.

Кстати, ваши тексты с раскладами корректно не отображаются.


isabsent ("12/".$m["мар"]."/2013," 12:36)
Computer moves as Player h.gifK

Первый ход просчитался быстро, а второго не удалось дождаться за час...
1. Когда Вы говорили об однозначности и просчитываемости ходов, Вы имели ввиду с первого хода?
2. Вот, например, насколько однозначен ход s.gif9 в начале 4-ой взятки?
3. С одной стороны, взял на неё если 78 пик лежат на разных руках - и Запад уже свободен до конца игры, а с другой - зачем проверять как лежат 78 пик, если у Запада ест надежда пронести ее если кто-то из оппов зайдет в бубну?

Ну-у... если всё так грустно, то ответа на задачку (во что надо сходить на 6 и 7 ходу югу) придётся ждать долго.

1. Однозначно считаем 6 и 7 ход для Юга более-менее сильными игроками и однозначно считаем расклад, после пяти ходов, вплоть до фосок (ими же).
2. Совершенно логичный, вытекающий из логики третьего хода и структуры руки.
3. О как, вы начали интересоваться игрой: задаёте вопросы типа "почему", предлагаете варианты и пытаетесь их обосновать - это хорошо. smile.gif
      » 12/03/2013, 14:50,  Клейн 
isabsent ("12/".$m["мар"]."/2013," 12:50)
Morozko_prr ("12/".$m["мар"]."/2013," 08:26)
Вынужден полностью согласиться.
Человек, похоже, действительно НЕ понимает саму задачу, за решение которой он взялся.

Это утверждение касается именно распасов, или Вы вообще считаете, что мой способ не способен решить никакую преферансную задачу - игру на взятки, поймать мизер?

Скорее всего, имелись в виду распасы.
Уже более 10 лет существует прога обсчитывающая розыгрыш всветлую за игрока - она представлена на сервере в виде "Профессор Го" и любой игрок видит что Профессор пишет о количестве взяток в сдаче, указывая в архиве ещё и на ошибки.
Думаю, у вас будут возникать проблемы при тёмном висте, при вистовании ряда БК контрактов всветлую и на некоторых мизерах (особенно в разновидностях преферанса типа разбойник и скачки).
В общем, чем более неполна информация, тем тяжелее вам будет.
      » 12/03/2013, 14:53,  Клейн 
И, да, Байкер один из немногих тут, кто вполне может помочь вам советом - прислушайтесь к его словам.
Правда, я не очень понимаю зачем ему это надо, так как у вас похоже интерес денежный, а у него что тогда?
      » 12/03/2013, 15:14,  isabsent 
Байкер ("12/".$m["мар"]."/2013," 14:16)
Это смотря что понимать под реконструкцией. Насколько я понимаю то, что делает isabsent, он пытается реализовать совсем не новую идею. Она заключается в том, чтобы каждый раз находить лучший ход против всех возможных раскладов на данный момент. Иначе говоря, применить этот самый метод Монте-Карло. Тут и рождается на свет некий такой дуализм: конкретный расклад можно вообще не вычислять (по крайней мере на начальном этапе создания алгоритма), но выводы основываются на генерации всего множества возможных раскладов - расклады таки "реконструируются" и используются в алгоритме.

Главная проблема на пути такого подхода - достаточность вычислительного ресурса. Ибо если ответов ждать в среднем более 30 секунд, то практический смысл алгоритма теряется. А задачу надо ставить вообще порядка 10 секунд. Когда-то это станет возможным и на настольных компьютерах.

Всё так. Только смысл слова "реконструкция" тут не совсем подходит на мой взгляд. Расклады просто генерируются и обсчитываются. Вычислительного ресурса для игр на взятки лёжа и мизеров вполне хватает даже и на не совсем запущенных Андроидах. Для качественного обсчета игр на взятки стоя хватает ресурсов приличного ноутбука. Для распасов пока не знаю сколько потребуется.

Байкер ("12/".$m["мар"]."/2013," 14:16)
Там еще встает проблема отбрасывания "невозможных" раскладов, типа, на руке 10 взяток, а партнер якобы играет распасы, но тоже решается...

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

Байкер ("12/".$m["мар"]."/2013," 14:16)
Что касается критериев правильности ответов, то напрасно забраковано мое предложение о 30 раскладах (раздачах).

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

Байкер ("12/".$m["мар"]."/2013," 14:16)
...см. мой пример, где дело встало.

От общего к частному наверное можно идти - там где известно решение задачи заранее. К сожалению распасы - это не тот случай. А дело не встало - мне просто нужно немного переформулировать ввод начальных данных в задачу - чтобы с произвольного места счет запускать. Сам алгоритм тут ни при чем.

Это сообщение отредактировал isabsent - 12/03/2013, 15:25
      » 12/03/2013, 15:26,  Клейн 
isabsent ("12/".$m["мар"]."/2013," 15:14)
Байкер ("12/".$m["мар"]."/2013," 14:16)
Там еще встает проблема отбрасывания "невозможных" раскладов, типа, на руке 10 взяток, а партнер якобы играет распасы, но тоже решается...

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

Например, http://www.gambler.ru/forum/index.php?show...dpost&p=1407171
isabsent ("11/".$m["мар"]."/2013," 19:43)
Я попробовал такой:
Player: s.gif 10,8,7, c.gif K,8, d.gif 10,8,7, h.gif 9,8,
First:  s.gif J,9, c.gif Q,7, d.gif J, h.gif A,Q,J,10,7,
Second:  s.gif A,K,Q, c.gif A,J,10,9, d.gif K,Q, h.gif K,
Prikup: d.gifA,d.gif9
Тут не будут играться распасы.
Это один из вариантов, когда расклад нельзя учитывать.
Second, если только он не идиот, скажет 6 пик или 7 пик - в зависимости от ситуации.
« Предыдущая тема | Перечень тем | Следующая тема »
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей: