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

»  Оценка карты играющего при заданном сносе, Определение результата игры для мизера и игры на взятки Подписаться | Сообщить другу | Версия для печати
      » 18/03/2018, 22:20,  Pochemuk 
Кутруповезет (18 марта 2018, 21:54)
Если итоговый вывод такой:
()
Т.к. перебор дерева игры построен на принципе Минимакса, то в данном случае он не пригоден. А другого способа перебора никто еще не придумал.

то что вы имеете в виду под:
Pochemuk (18 марта 2018, 19:03)

Нет ничего не возможного. Есть только цена, которую Вы готовы заплатить.
?

Например, готовы ли Вы отказаться от точной оценки хода и перейти к интервальной?

А что? Может быть в этом что-то и есть.

Например, если один ход дает интервал числа взяток [2, 3], а другой [4, 6], ясно, что выбирать надо первый. Но вот как быть, если второй дает интервал [1, 5]?

И, кстати, для таких интервальных оценок никакие альфа-бета отсечения еще не придуманы. Так что, готовьтесь к тому, что основная цена, которую придется платить - существенное падение производительности.
      » 18/03/2018, 22:24,  Фрэд 
Очень интересная и познавательная дискуссия, всем спасибо) Ситуация у меня в проге такая, что мне удалось, по-видимому, удачно организовать транспонирование и хэширование, в отличие от альфа-бета-перебора. Потому что, когда я его отключаю, время просчёта почти не увеличивается. А если отключить хэширование, то упомянутая здесь задача Галактионова считается часа 3 примерно. С хэшированием (у меня на компе), но без отсечений - 2 секунды. Помимо этого, правда, у меня организованы следующие правила отсечения заведомо неоптимальных ходов:

1. Из карт, идущих подряд (типа трельяжа и т.п. с учётом выхоженных) рассматриваем только ход одной из них.

2. Каждые 3 хода (после получения кем-то взятки) проверяем расклад на предмет "остальные все мои" для разыгрывающего. Немного, но ускоряет перебор.

3. Если масть одного вистующего бьётся козырем второго, он ходит с младшей карты этой масти (остальные карты этой масти не рассматриваются).

4. То же самое касается разыгрывающего. Но для него также прописывается правило ходить младшей картой масти (а остальные карты этой масти не рассматривать), если любая карта этой масти заведомо бьётся кем-то из вистующих (ну например у кого-то из них синглетный туз или Т-К в этой масти). Плюс к этому, если разыгрывающему вышли в козырь (а оба вистующих дают в масть), он бьёт младшим из наличествующих козырей.

Пункты 3 и 4 не касаются мизеров, конечно. Эти правила заметно ускоряют перебор. Примерно раза в 3.

Таких правил можно напридумывать много. Но это увеличивает объём кода, а, кроме того, можно понаделать ошибок, заблокировав правильные ходы.

Покамест я хочу разобраться с альфа-бета-перебором. Идея-то его проста как дважды два четыре, но с применением его к расчёту раскладов возникли некоторые трудности. Ведь мы не можем оценить конкретный ход, пока не разыграем после него всё до конца. Единственное, что можем сделать - это проверить, доберём ли мы за оставшиеся после него ходы взяток больше, чем при более ранних вариантах. Ну, например. Выход с первой карты разыгрывающего дал ему 8 взяток. Проверяем выход со второй карты. И вдруг видим, что после первых двух кругов ходов взяток у него 0. Осталось 8 кругов ходов, т.е. больше 8 взяток он уже не возьмёт. Следовательно, отсекаем вариант выхода с этой карты. Всё это касается, конечно, и промежуточных вариантов розыгрыша. Вот это я и попытался реализовать. Но в результате скорость обсчёта раскладов выросла только в 2 раза примерно. Что мало.

Пока у меня всё)
      » 18/03/2018, 22:35,  Байкер 
Pochemuk (18 марта 2018, 21:01)
Байкер (18 марта 2018, 20:49)
Речь о том, чтобы найти оптимальный ход, когда он ваш. Конечно, перебор для этого в распасах не подходит. Особенно (точнее, хотя бы потому) если расклад еще не удалось посчитать. Вроде, как очевидно... Или нет? ))

Перебор не подходит для распасов даже и на открытых картах.

Еще можно как-то решить этот вопрос, если не увязывать максимальный результат противника с минимальным нашим. Т.е. можно как-то работать только по максимуму для каждого игрока.

Но вот беда, если бы максимизирующий ход для соперника был единственным, то это было бы возможно. А на практике ему может быть по фиг куда ходить (результат для него один), а вот нам далеко не по фиг, куда он зайдет.

Вот и получится, что для большинства наших ходов нельзя получить точный окончательный результат.

Чего ты "помешался" на этом переборе? Я тебе про то и толкую, что не перебором надо заниматься, а алгоритмизацией собственно преферанса как игры. "В преферанс поиграть не пробовали?.." )

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

И что? Из этого и надо исходить как из начального условия: "иногда ему может быть пофиг куда ходить". Что в этом удивительного или особенного?

Для всех наших ходов всегда можно получить точный окончательный результат, читай, оптимальное решение. Правда, в соответствии с исходными данными, которые автор алгоритма соизволил принимать во внимание, в соответствии с заданным критерием оптимальности и достигнутой точностью работы созданного алгоритма.
      » 18/03/2018, 22:42,  Pochemuk 
Фрэд (18 марта 2018, 22:24)
Помимо этого, правда, у меня организованы следующие правила отсечения заведомо неоптимальных ходов:

Я бы не назвал это отсечениями. Чтобы не возникало терминологической путаницы.

В терминах альфа-бета перебора отсечением называется прекращение уточнения результата хода, если предварительная оценка оказалась хуже, чем результат другого хода. Зачем делать ход, который заведомо хуже другого? А раз он не будет сделан, то и его точный результат нас не интересует.

А то, что ты перечислил, можно назвать как-то по другому, но только не отсечениями.

П. 1 даже называть как-то не надо. И так понятно, что это надо применять.
П. 2 мы не реализовывали. Но вряд ли в нем много пользы при кэшировании. Ситуации, когда "все мои" быстро заносятся в кэш и по второму разу не обсчитываются.
П. 3, 4 это и есть эвристики лучшего хода. Только их не надо мешать в кучу с прочими улучшениями, а выделить отдельно.

Что касается максимально возможного числа взяток исходя из оставшихся карт, то это можно учесть корректировкой диапазона альфа-бета. И у нас и у Словеснова именно так и сделано.
      » 18/03/2018, 22:45,  Pochemuk 
Байкер (18 марта 2018, 22:35)
Чего ты "помешался" на этом переборе?

Я ни на чем не помешался.

Просто в этой теме обсуждают программы, которые работают на принципе минимаксного перебора.
      » 18/03/2018, 22:52,  Кутруповезет 
Фрэд (18 марта 2018, 22:24)

Вот еще по графическому интерфейсу:
- Если нажать кнопку "Разыграть до конца", то после розыгрыша невозможно нажать ни на "Новый расклад", ни на "Изменить расклад", приходится возвращаться к 1 ходу.

Это сообщение отредактировал Кутруповезет - 18/03/2018, 23:05
      » 18/03/2018, 23:03,  Фрэд 
Букву уже удалил, сам заметил)

Да, согласен, что надо сделать возможным переход к новому раскладу с любого момента розыгрыша текущего. Это делов на 5 минут в общем)
      » 19/03/2018, 12:10,  american_boy 
Pochemuk (18 марта 2018, 22:45)
Байкер (18 марта 2018, 22:35)
Чего ты "помешался" на этом переборе?

Я ни на чем не помешался.


Честно говоря, не понимаю, почему программисты ставят палки в колёса.
Не преферансисты должны подстраиваться под существующие методы перебора, а программисты, выслушав суть проблемы, сначала попытаться понять о чем говорят опытные преферансисты, потом взять какое-то время подумать, возможно, посоветоваться. И начать действовать как им говорят. Другого пути нет.
А тут сразу в одну минуту слышишь: нельзя, невозможно, нереально.
Кто как не опытные преферансисты подскажут логику принятия решений?
      » 19/03/2018, 12:46,  Байкер 
Какая-то польза тоже есть: все "стороны" согласились, что на поезде до Луны доехать нельзя. )
      » 19/03/2018, 15:02,  Невозмутимый 
да программисты походу видимо никогда в преферанс не играли, только пихают несчастным преферансистам свои методы

слава богу что нашлись готовые помочь ценным советом
« Предыдущая тема | Перечень тем | Следующая тема »
3 Пользователей читают эту тему (3 Гостей и 0 Скрытых Пользователей)
0 Пользователей: