Пилю программку по обсчёту китайского покера

Последний пост:26.11.2023
22
1 56 76 77 78 79 98 114
  • Цитата (БиллиУбили @ 18.5.2020)
    Какие карты попали в руку, а какие ауты мы по дороге "потеряли".

    Здесь нечего комментировать, ты не понял просто , что в узлах вся информация присутствует... Карты попали или нет, состояния все равно все описать придется... И в конечном счёте нам не важно какие карты приходят и уходят, нам необходимо просто быть уверенным в оптимальности хода, допустим есть состояние дамы наверху и тузы в середине то мы можем быть уверены что оно даёт 7 за дам и фантазию, оттого что нам раздадут не изменится почти ничего... Так и во флеш дро есть евшка и карты которые раздают нам меняют ее крайне слабо , поэтому можно пренебречь детальными описаниями, тебе достаточно поставить галочку 4карточное фд или 3х карточное фд
    Алгоритм сам сравнит эти состояния и выберет максимальное по ев, но евшка не оптимальная, поэтому надо много симуляцией чтобы уточнять эти значения
    Но старшинство фд тебе придется учитывать потому что
    Кхай фд4
    Ахайфд4

    Это не
    Ахайфд4
    Кхайфд4

    Тебе придется придумать как это просто сравнить и записывать Ев таких спотов
    Например хранить максимальную карту

    Цитата (БиллиУбили @ 18.5.2020)
    Если заполнить эти "терминальные состояния" один раз, то можно гонять подьёмы.

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

    Кидай 5 баксов)))
    А то желание угасает , пергамент и чернила заканчивается

    Пс если бы ты занимался плотно темой то за 2-3 дня ты бы написал для предпоследней сдачи и эти расчеты были бы на порядок лучше расчетов Жака

    Ну а от предпоследней до стартера 3 шага но стартер крези труд ...
    Сообщение отредактировал c00l0ne - 19.5.2020, 10:39
    462/882
    Ответить Цитировать
    0
  • Пока сложно понять, что написал c00l0ne, отложим...
    Возникла такая идея.
    Имеем руку и осталось 2 подьёма. Тогда мы можем найти все "очковые" завершения и построить из них дерево. Да, при данном подходе, вся рука представляется в одномерном виде и теоретически возможны коллизии, на какую именно линию попала та или иная карта.
    Тем не менее. Предположим, К1К2К3К4 дадут флаш.
    Тогда, если в колоде осталось 40 карт(включая К1К2К3К4) мы можем составить дерево завершений. Всего С(36,2)C(2,4) = 3780 записей вида
    К1К3Н1К2К4Н2, К1К4Н2К2К3Н1 и т.п. где Н1, Н2 - "ненужные карты".
    Таким образом, получается 6ти уровневое дерево. Как теперь добавлять в него наши "записи"?
    В узлы (К1К3)Н1 И потомком "К2К4Н2" надо добавить 4 очка. Все остальные потомки(есть они в дереве или их нет) можно по умолчанию считать за -6 очков.
    Теперь, вдруг, мы нашли продолжение К1К3Н1К5К6Н2, которое даёт 2 очка. Отлично, находим узлы (К1К3)Н1 И их потомку К5К6Н2 присваиваем 2 очка, А корню (К1К3)Н1 обновляем ев(было 4, станет 8 = 4+2).
    Для чего мы построим это дерево?
    Теперь, имея руку и дерево завершений мы можем сделать "правильный" следующий подьём: для этого надо найти максимум всего из 3ёх продолжений(К1К2К3, К3К2К1и К3К1К2). Здесь К1, К2, К3 - карты, которые мы получили для подьёма.
    Памятуя предыдущий печальный опыт, надо оценить время, необходимое для
    а) нахождения всех очковых завершений = С(40,3)C(37,3) проверок для 2ух подьёмов и 40 карт в колоде
    б) построения на их основе дерева = добавление Х перестановок(?) из п. а)
    673/741
    Ответить Цитировать
    0
  • Важное дополнение. Если, вдруг, мы найдём продолжение К1К3Н1К5К4Н2, которое даёт 8 очков, то в узле К1К3Н1, корне К2К4Н2 нам надо будет исправить 4 на 8(и далее вверх до корня), так как К5К4 - частный случай К2К4
    Отсюда вывод: начинать заполнение лучше с бОльших очков.
    ЗЫ Кулончик, а чем тебе это не нейросеть?
    3х(число подьёмов) слоёв, в каждом слое - 52 нейрона.
    Пока ты будешь свою сеть "обучать", я заполню её абсолютно точно )
    674/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 20.5.2020)
    и далее вверх до корня

    Если заполним всё дерево, то в корне будет ЕВ данной руки, как мне кажется.
    Это будет либо просто какое-то положительно число, если записывать только +очковые завершения. Или даже отрицательное, если записывать все. Оценивать(сравнивать) его можно напрямую, а можно с С(40,3)C(37,3)х(-6) (это, так сказать, предельный минус. Любое продолжение ведёт к "мёртвой руке").
    Поправьте, если я ошибаюсь
    675/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 21.5.2020)
    Если заполним всё дерево

    Если ты всё так получилось бы, то некоторые потомки можно было бы обрубать. Допустим, у нас в топе 2 свободных места и последний подьём. Что толку, что к нам придёт ? Ну, добавится +7 очков в какое-то завершение...(при построении дерева, естественно) Ну, добавятся они к -154321, и что? Всё равно -154314 будет меньше -99999. То, что никакого смысла играть на такой исход нет, будет понятно за 2-3 подьёма до конца
    676/741
    Ответить Цитировать
    0
  • Добавил первую комбинацию в дерево. Точнее всего лишь один её вариант К1К3Н1К5К4Н2
    Обычное программирование:
    идёшь сверху вниз, запоминаешь узлы(корни), доходишь до конца, проверяешь, приносит ли она больше очков, чем существующая в дереве, идёшь обратно вверх, добавляя в запомненных узлах +очки за комбинацию.
    Спортивное программирование:
    идёшь сверху вниз, И сразу добавляешь во все узлы(корни) +очки. Если новая комбинация приносит больше очков, чем существующая в дереве - всё ОК.
    Если меньше, дополнительно вызываешь туже функцию добавить add(комбинация, -очки).
    Комбинация в дереве останется, а очков в узлы не добавит.

    Но, чувствую, огромным дерево будет. Если не удастся как-то его сократить...
    677/741
    Ответить Цитировать
    0
  • БиллиУбили, не совсем по теме, но давно ты таким занимаешься? Хочу проконсультироваться
    1/1
    Ответить Цитировать
    0
  • Цитата (Pokermaster @ 22.5.2020)
    давно ты таким занимаешься?


    судя по теме полтора года минимум :) но не очень успешно.
    но тут тусит несколько прогеров, может и тебе ответят
    5/6
    Ответить Цитировать
    0
  • Pokermaster, с начала темы )
    ВОпросы задавай, конечно, тут полно программистов. c00l0ne вообще на любой вопрос может ответить, если настроение хорошое...
    678/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 22.5.2020)
    Точнее всего лишь один её вариант

    Добавление 55К вариантов комбинации - чуть более 2 минут. Но это связано с тем, наверное, что дерева ещё не существует и "строится" походу.
    Добавление тех же 55К вариантов повторно -
    мгновенно

    В принципе, резервы по ускорению есть.
    Во-первых, зачем на разбивать подьёмы на карты? Их корня(узла) может сразу выходить потомок "К1К2К3", а не К1, потом у него потомок К2 и наконец потомок К3.
    А, во-вторых, сейчас мы спускаемся по дереву уровень за уровнем и ищем, есть ли на уровне продолжение для нашего набора. То есть, из каждого узла мы в теории ищем среди 52 продолжений(до 51 сравнения). Это удобно, если в дереве не слишком много элементов. А так можно сразу создать все переходы и переходить на уровень ниже не через поиск, а прямым переходом. Тут уж точно никаких потерь времени не будет.
    Походу, ребята застали эпоху перфокарт и заботятся об экономии памяти...
    679/741
    Ответить Цитировать
    0
  • БиллиУбили, чувак, опять сделаю тебе замечание....
    Цитата (БиллиУбили @ 23.5.2020)
    Их корня(узла) может сразу выходить потомок "К1К2К3", а не К1, потом у него потомок К2 и наконец потомок К3.


    Зачем конкретно ты рассматривает... Пример... У тебя пространство событий огромное, 10 в большой степени... Оттого что ты рассмотришь одно состояние , это не решит задачу, тебе нужно универсально обходить ветки с узлами, узлы у тебя определены не верно... 🌲 кривое... В узлы надо добавит параметры...
    463/882
    Ответить Цитировать
    0
  • c00l0ne, чувак, я и обхожу все ветки с узлами путём добавления комбинации за комбинацией. По умолчанию любая ветка ведёт к (-6), а так может стать +4 или даже 0
    680/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 23.5.2020)
    c00l0ne, чувак, я и обхожу все ветки с узлами путём добавления комбинации за комбинацией. По умолчанию любая ветка ведёт к (-6), а так может стать +4 или даже 0


    Поэтому я и написал что кривое
    Это все исходы раздачи +4 -6 0, больше нету?))) У тебя ещё две лайны...
    464/882
    Ответить Цитировать
    0
  • Цитата (c00l0ne @ 23.5.2020)
    У тебя ещё две лайны...

    на текущий момент все лайны свёрнуты в одну большую змею
    Цитата (c00l0ne @ 23.5.2020)
    Это все исходы раздачи +4 -6 0, больше нету?

    Как раз и есть. От -6 до +17 и старше

    Цитата (c00l0ne @ 23.5.2020)
    тебя пространство событий огромное, 10 в большой степени...

    я согласен с тем, что я сделал допущение: 2 карты, которые попадают в руку, попадают в неё одним единственным образом. Но увеличить размерность не проблема, если заработает одномерная версия
    681/741
    Ответить Цитировать
    0
  • БиллиУбили, в узлы надо те лайны тоже включить , иначе у тебя дерево решений не правильное...

    Цитата (БиллиУбили @ 23.5.2020)
    на текущий момент все лайны свёрнуты в одну большую змею


    Это и есть апроксимация функции валью, сворачивание огромного числа состояний во что то гибкое и тонкое... В валью функцию от н параметров например

    Цитата (БиллиУбили @ 23.5.2020)
    Как раз и есть. От -6 до +17 и старше


    Интересно +17 как ты получаешь ... Видишь что наверху закрылось в дереве, а середину и низ не видишь ?)

    Ладно пойду завтракать
    МММ какая вкусняшка, зоооож
    Стейк бы:

    465/882
    Ответить Цитировать
    0
  • Цитата (c00l0ne @ 23.5.2020)
    Интересно +17 как ты получаешь ... Видишь что наверху закрылось в дереве, а середину и низ не видишь ?)

    Если я знаю все завершения для данной руки, то я знаю, какие подьёмы приведут к +17
    Да, апроксимация. Я предполагаю, что ЕВ рухнет катастрофически, если определить, какие 2 карты класть в руку, но положить их не на "те" места, которые приведут к +17
    682/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 23.5.2020)
    Если я знаю все завершения для данной руки, то я знаю, какие подьёмы приведут к +17


    А где ты их хранишь?) Тебе же надо все эти пути посчитать, чтобы понять евшку той или иной стратегии

    Допустим
    ДД
    А(1аут)
    222

    ДД
    А(2 аута)
    222
    Это разные узлы с разной евшкой
    И если ты начнёшь в одну корзинку складывать их , у тебя будет результат не точный...
    466/882
    Ответить Цитировать
    0
  • Цитата (c00l0ne @ 23.5.2020)
    А где ты их хранишь?)

    Я их храню отдельно. А потом загоняю по одной в дерево "подьёмов". Или ты спрашиваешь, как я получаю "продолжения"? Отнимаю из разложения на +17 очков руку и сворачиваю в одномерный(пока) список...
    683/741
    Ответить Цитировать
    0
  • Цитата (c00l0ne @ 23.5.2020)
    Это разные узлы с разной евшкой

    Естественно, это разные евешки. Во первом случае у меня будут продолжения только с одним А, их будет меньше(чем с двумя АА) и они закономерно внесут меньше очков в итоговое ЕВ
    684/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 23.5.2020)
    Я их храню отдельно. А потом загоняю по одной в дерево "подьёмов". Или ты спрашиваешь, как я получаю "продолжения"? Отнимаю из разложения на +17 очков руку и сворачиваю в одномерный(пока) список...


    Краткость не твоя сестра
    Храню отдельно это как?) Как они связаны между собой...

    Загоняю в 🌲, да вы пастух батенька, дерево подъемов... Это что за дерево, дерево состояний знаю , дерево решений знаю, дерево событий знаю, а вот дерева подъемов не знаю...
    "Продолжения" что такое...

    Что такое сворачивание в одномерный список

    Ничего не понятно из вышенаписанного , складывается ощущение что ты сам не понимаешь что делаешь
    467/882
    Ответить Цитировать
    0
1 56 76 77 78 79 98 114
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.