#0
by izekia
почему-то никак не могу найти идею для оптимального расчета: Если взять готовую руку, к примеру холдем, на ривере, то есть на столе лежат все пять карт, возможных комбинаций: 1 (без карманных карт) + 5х2 (с одной карманной картой) + 10 (с двумя карманными картами) = 21 в принципе 21 комбинацию можно просчитать перебором, но возьмем, к примеру омаху, где карманных карт четыре, а в комбинации участвуют две и только две соответственно комбинаций: 6 (комбинаций карманных карт) х 10 (комбинаций карт доски) = 60 уже практически в три раза больше, но для определения готовой руки, в принципе тоже можно использовать перебор Теперь если взять ситуацию, когда на столе лежат 4 карты из 5ти и нам известны 4 наших карманных карты и 4 карты оппонента, чтобы определить наши шансы на победу, нам перебором нужно будет проверить 60 х 40 = 2400 комбинаций, это достаточно много В такой ситуации оптимальнее определить готовую старшую комбинацию и соответственно карты, которые помогут младшей руке и не усилят старшую руку до натса(лучшей комбинации). С одной картой такой алгоритм выглядит простым, но если взять две карты, то уже становится сложнее, не говоря уже про подсчеты шансов одной руки против другой, когда на столе нет ни одной карты, то есть префлоп. Это один момент. Второй, это то, что мне кажется не совсем оптимальным перебирать комбинации по пять карт, как мне кажется должен существовать оптимальный алгоритм подбора пяти карт составляющих лучшую комбинацию из ограниченного набора карт. Собственно такие мысли ... может кто-то подскажет какую-то идею, или хотя бы ссылку ...
#5
by izekia
я знаю математику покера те примеры, которые можно найти по ссылкам достаточно простые то есть по ним можно посчитать приблизительные шансы
#7
by izekia
почему не посчитаю? количество карт в колоде известно, перспективы моей руки известны даже если оставить шансы в стороне и взять второй момент, как оптимизировать поиск лучшей комбинации из ограниченного набора карт?
#8
by Рэйв
Лучшие комбинации по столу и так видно хорошо. Если лезет флэш или стрит - уж не спутаешь.
#10
by Рэйв
1. Сортировка по возрастанию номинала. 2. перебор с сравнением с предыдущей картой. 3.Если разница с предыдущей больше 1 номинала- значит не стрит - прерывание. Если дошли до конца без прерывания- значит стрит
#15
by Рэйв
Это частный случай. Можно исключить его простым поиском туза и двойки. Если есть то тузу присваивается низший приоритет
#16
by Molinor
Просто надо смотреть комбинации, начиная с первой, второй и третей карты. Проблема, когда стрит начинается с А. Например 234589А
#18
by Рэйв
Ставишь счетчик сколько карт прошло подряд, если следующая не попорядку скидываешь в 0. Если после пребеора счетик = 5 или выше- значит стрит
#22
by luns
туза "делим" на две карты с номиналом 1 и 14 соответственно (для стрита) тока непонятно зачем тебе это? без размеров стэков, банка, нет смысла считать шансы.
#23
by Рэйв
+ если с низким тузом недостигая 5 вышел сброс счетчика тузу возвращается высший приоритет
#27
by izekia
да туза можно за две карты считать, с этим как раз никаких проблем, чем лишние костыли в коде
#34
by izekia
получается делаем два словаря в одном ключами являются величины карт в другом их масти в качестве значений выступает количество вхождений по размерам словарей уже можно будет сделать определенные выводы, анализировать их или отбрасывать
#35
by izekia
слушай, а если попробовать оба варианта и сравнить насколько выгодна будет оптимизация?
#37
by NS
У WildCat (Дикая Кошка) есть очень быстрый алгоритм оценки рук на Си - если попросить наверно даст :) Я где-то выкладывал свой на Делфи, но скорость особо не оптимизировал.
#38
by NS
Кстати, в последних постах там написан действительно самый быстрый алгоритм - предрасчитанный массив. И нам остается только вычислить порядковый номер сочетания - он считается достаточно просто.
#39
by izekia
предрасчитанный массив, с готовыми руками действительно все тогда просто будет вот еще ссылку нашел
#45
by NS
Успешным выступлением на AAAI (чемпионат мира среди покерных программ) Последняя колонка - количество выигранных денег (в среднем) - бот Игоря (WildCat-а) - Gomel по выигранным деньгам оказался сильнейшим в мире в безлимит (среди всего состава, и если смотреть результат только по ТОП9).
#46
by izekia
да, действительно перебором все решается, пока на текущий момент написал тест на питоне, неоптимально, но результаты, в принципе неплохие, теперь необходимо переписать на чем-то более быстром + оптимизация
#47
by izekia
поиграл с блаффботом, есть явные лики в алгоритме даже интересно стало написать своего)
#49
by izekia
ну в теме вроде были ссылки на сервер и апи от него до этого пока все равно далеко, меня пока интересует написание базовых модулей, которые можно было бы использовать в своих утилитах
#50
by izekia
у меня есть примеры реально играющих ботов, даже с неким подобием языка, на котором описывается алгоритм игры бота но я даже с ними не успел разобраться, а вообще тема интересная
#52
by izekia
а сервер отсюда не пробовали брать? я сейчас в свободное время изучаю библиотеку poker eval проблема в том, что я с С знаком очень плохо выручает то что писал когда-то на асме)
#54
by izekia
в общем параллельно добрался до этого списка не думаю, что есть смысл изобретать велосипед, материала очень много, есть смысл изучить готовые алгоритмы для общего понимания и определения и двигаться дальше
#56
by izekia
тот сервер, как я понял, ограничен только Холдемом и определенными условиями игры + здесь еще прикручены интерфейсы типа или я функциональности того сервера до конца не знаю?
#57
by NS
Да, ограничен холдемом, а ты что сразу всё хочешь писать? Игры то разные, и играть на сервере Бот в Омаху с ботом в Холдем ну никак не сможет.
#58
by izekia
омаха - это моя специализация + пока бот только в планах есть много неплохого софта, который хотелось бы реализовать
#59
by NS
Если хочешь писать омаху - то AAAI пролетает, ибо они проводят чемпионат только по Холдему. При чемпионаты среди программ в Омаху не слышал, поэтому лично для меня Омаха интереса не представляет.
#60
by izekia
в любом случае пока про бота говорить рано если интересно, можно позже вернуться к этой теме, интересно было бы попробовать.
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Проверка физической целостности файла БД
- Задвоилась Регламентная отчётность
- Как в ТЧ в ячейках одной колонки организовать выбор из списка?
- Нумерация в ЗиК
- 1С 8.2. Как в обработке сделать документ непроведенным ?
- Организация процесса отгрузки товара УТ 10.3
- справка 2-НДФЛ для уволенных из ЗУП
- синхронизация локальной папки компьютера с папкой на фтп сервере
- Как получить остаток по взаиморасчетам
- Запуск через ярлык 1С8.2 базы 1С8.1
- Символ переноса строки в 1С 7.7 для текстовой переменной
- УПП 35 изменились проводки в платежных поручениях
- Можно ли и как выгрузить только изменения конфигурации?
- Указание периода в отчете на СКД
- УФ: динамическое создание кнопок со стандартными командами формы
- Перенос обособленного подразделения из ЗиК 7.7 в ЗУП 8.2
- Как сделать недоступной табличную часть формы?
- 8.2 как обойти ТЧ документа?
- ЗУП. Слияние данных из разных организаций в одну базу
- типовые правила переноса данных из УСН 177 под 7.7 в БП 2.0 под 8.2?