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

Последний пост:26.11.2023
22
1 5 25 26 27 28 47 114
  • Цитата (c00l0ne @ 17.12.2019)
    что тебе придется палить три карты опов алгоритму

    я пока что решаю разложение руки в вакууме, без регистраций и СМС оппонентов

    Цитата (c00l0ne @ 17.12.2019)
    Это возможно только на супер железе 1к ядер+

    ну, всё, пацаны, расходимся? слышу это заклинание который год ))
    207/741
    Ответить Цитировать
    0
  • БиллиУбили, s1 s32 матрицы состояний
    Функция f (s1) допустим даёт вес...
    Max f(si) это вес для предыдущей ноды и так до стартера

    Если бы не было проблемы в вычислительной мощности давно бы солвер выпустили или ты думаешь никто до тебя не писал? Я лично видел 2 разных софтины годно считающих... Но на серверах мощных...

    Пс тебе рекомендую начать с матчасти... То что ты за метод Монте Карло принимаешь это просто полный перебор, а по серьезному метод MCTS(monte carlo tree search) делается так как я написал выше... Но для задач с неизвестной информацией его сложно применять, кстати если подмешать сюда пару нейронных сетей то получиться альфазеро
    Сообщение отредактировал c00l0ne - 17.12.2019, 13:16
    104/882
    Ответить Цитировать
    0
  • Цитата
    Конкретику давай. Если у меня 588 вариантов закончить, то на каком этапе мне подрубать Монте - Карло? Выкинуть из них 450?


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

    Перебираешь варианты обновляешь веса... Вот и весь алгоритм,
    Но если бы мы писали бота , то тогда нам пришлось бы хранить все дерево решений... Которое "больше чем атомов во вселенной"...
    Но и для этого есть алгоритмы с нейронными сетями
    105/882
    Ответить Цитировать
    0
  • Если есть вопросы задавай...безбомбежа только
    106/882
    Ответить Цитировать
    0
  • c00l0ne, если я правильно понял, метод MCTS используется в тех играх, где невозможно оценить текущее состояние. Точнее, можно, но через дерево с весами. Это очень сложный подход, я надеюсь, что оценить "перспективы" текущего разложения можно проще.

    Цитата (c00l0ne @ 17.12.2019)
    Мы считаем для конкретной симуляции, поэтому нам не нужно хранить все дерево решений, достаточно обновлять веса...

    Своими словами можешь обьяснить? Вот, в данной шахматной позиции нам лучше сходить конём. Не потому что мы посчитали все возможные завершения партии, а прикинули на глазок: нам ответят слон с3, мы двинем пешку на линии b...вроде как получаем преимущество. То есть мы используем N известных завершений данной позиции.
    А что в Китае, в чём преимущество данного метода(перед полным перебором)?
    208/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 17.12.2019)
    Я сейчас таки попробую поиском по массиву, но уже чувствую, что придётся пересесть на
    твой велосипед.

    Странно, но предчувствие меня не обмануло.
    Обратная задача. Имеем 3 рандомные карты, для которых ищем "продолжения" = 2ве карты, которые дают комбинацию старше "Ахай". Имеем массив векторов вида k1,k2,k3,k4,k5 где собраны все(!) комбинации старше "Ахай". То есть вектор 2,3,5,8,11(например) в этот массив не попадёт, так как образует комбинацию младше "пары".

    Результаты на выходе: все "продолжения".
    Быстродействие - более 1кк/с, то есть мгновенно. Тут, наверно, сказалось то, что не требуется сортировки. Хотя и требуется поиск.

    2 Jak, сорри за глупый вопрос. А вот этот волшебный массив, он на каком языке реализован? Паскаль или С++? Ну, даже не сам массив, а функции поиска/заполнения.

    Ну, и следующий вопрос. Присваиваешь ли ты уникальной комбинации уникальный ID, чтобы мгновенно определять, какая из двух(и более) старше?
    А пока ты отвечаешь, поищу "продолжение" для 2ух и 1ой карт.
    209/741
    Ответить Цитировать
    0
  • Забавный результат получился. Думаю где-то ошибка.

    Дело в том, что и 7-ка и 2-ка одинаковое число аутов, но двойка же дает немного больше стритов через туза.
    13/17
    Ответить Цитировать
    0
  • Цитата (DmNass @ 17.12.2019)
    Дело в том, что и 7-ка и 2-ка одинаковое число аутов, но двойка же дает немного больше стритов через туза.

    согласен , но даже если бы стритов было бы столько же, то разницы в 0,4 не может быть. А вариант 3 и 4 должны быть вообще равны.

    JAK, колись где напортачил
    3/14
    Ответить Цитировать
    0
  • Цитата (brdss @ 17.12.2019)
    А вариант 3 и 4 должны быть вообще равны.

    на эту особенность я уже указывал
    210/741
    Ответить Цитировать
    0
  • Наверно "3 cards" нажимал? это МК для 3 карт. Разумеется рассматривает только 200 вариантов из 4960.
    А попробуй "Full 3". Или "Combo" - тут вначале находятся 10 лучших вариков, потом они считаются полным перебором. По времени меньше, чем Full.
    Цитата (БиллиУбили @ 17.12.2019)
    2 Jak, сорри за глупый вопрос. А вот этот волшебный массив, он на каком языке реализован? Паскаль или С++? Ну, даже не сам массив, а функции поиска/заполнения.

    действительно ... вопрос, а какая разница? Внутри же нет указаний на язык. Одни циферки.
    В оригинале делался на C. Я делал его и аналоги для короткой колоды, 36 карт на Delphi. Языки же похожи. Практически одинаковы.
    Все занимает пару десятков строк. Тебе надо? Или уже слали?
    Цитата (БиллиУбили @ 17.12.2019)
    Ну, и следующий вопрос. Присваиваешь ли ты уникальной комбинации уникальный ID, чтобы мгновенно определять, какая из двух(и более) старше?

    ID ты получишь в конце, при пятом обращении к массиву. Там будет полное ID: комбинация (фулл, стрит, пара и т.д.) + все кикеры. Можно просто сравнивать между собой. Делаешь сдвиг вправо на 24 бита - и номер комбинации, младшие 20 бит - 5*4бит кикеры.

    Бля!!! Ну писал же я это давным-давно! Херли, сложно прочитать еще раз?
    48/314
    Ответить Цитировать
    1
  • Цитата (БиллиУбили @ 17.12.2019)
    Результаты на выходе: все "продолжения".
    Быстродействие - более 1кк/с, то есть мгновенно.

    Очередной крутой облом
    необучаемой породы

    Решал обратную задачу №2. Из колоды удалили 2 карты, найти новое пространство решений(массив возможных комбинаций). Время обсчёта насторожило...И вот тут выяснилось, что и обратная задача №1 мгновенно не решается. Хотя своими глазами помню, как увеличивал число прогонов...наверно, что-то напутал.

    Так что возвращаюсь к волшебному массиву.
    2 Jak, скинь, плиз код его заполнения. Ну, заодно, функцию нахождения "продолжений", если таковая есть.
    Как он работает я более-менее понял, единственное что осталось непонятным - какого он размера?
    Превышает известные 2.6кк байт или в точности равен ему?
    ЗЫ функция назначения id конкретной комбинации тоже будет полезна ))

    Цитата (Jak @ 17.12.2019)
    Бля!!! Ну писал же я это давным-давно! Херли, сложно прочитать еще раз?

    Что я могу сказать? Сорян. Чтобы придти к правильному решению, надо попробовать 2-3 "неправильных".
    211/741
    Ответить Цитировать
    0
  • Ничего по сорок раз слать не буду. Ищи сам.
    49/314
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 18.12.2019)
    какого он размера?
    Превышает известные 2.6кк байт или в точности равен ему?

    Не совсем правильно задал вопрос. В нём 2598960 ячеек или больше? (если остальные ячейки пустые, он займёт столько же памяти)

    Господа, у кого сохранился файл с комбинациями из проги Jak? Просьба переслать мне.
    212/741
    Ответить Цитировать
    0
  • БиллиУбили,
    300 $
    4/27
    Ответить Цитировать
    0
  • Цитата (mahatmaGandi @ 18.12.2019)
    БиллиУбили,
    300 $


    Файл стоит?
    если что я за 299.99$ отдам)
    Сообщение отредактировал c00l0ne - 19.12.2019, 4:18
    107/882
    Ответить Цитировать
    0
  • mahatmaGandi, выслал тебе х*й на воротничок, чекай

    Ну, а пока Jak упорно подсовывает мне технологии 2000ых, будем двигаться дальше. Очевидно, что на обратной задаче(найти комбинации, включающие N произвольных карт) поиск по массиву захлёбывается. Ведь нужно проверить каждую ячейку, а их миллионы. Предлагаю использовать "поиск по словарю", с реализацией, скажем, в виде префиксного дерева.
    То, что это работает, я не сомневаюсь. Забив в строке поисковика "кита" вы мгновенно получаете подсказку "китайский".
    Теперь, прежде чем подрываться программировать, надо подумать об оставшихся обратных задачах: сортировке и удалении. Скажем, оппонент вытащил из колоды 2 карты - словарь должен "обеднеть" на все слова, содержащие эти карты. Снова отмечу, что перебор всего словаря(массива) "в лоб" также захлёбывается.
    Теперь сортировка. Ясно, что "китай" старше "каши", но младше "кувалды". Но тут есть нюанс. Слова - это слова. Они не допускают перестановок букв. А комбинации неразличимы вплоть до сколь угодного кол-ва перестановок(например, флаш). Но в словах люди делают ошибки, для чего и ввели расстояние Левенштейна, то есть считать написание "итак" за ошибочное написание "кита". Происходит классическое натягивание совы на глобус.

    В общем, жду ваших комментариев и соображений. Как бы вы запрограммировали колоду карт...словарь комбинаций...производили вставку/удаление/сортировку? Только своими словами, плиз(можно и с ссылками).
    213/741
    Ответить Цитировать
    0
  • в своей работе Михов и Шульц показали, что расстояние Дамерау-Левенштейна между инверсиями двух строк равно расстоянию между самими строками.
    https://habr.com/ru/post/276019/
    Этого следовало ожидать. Наконец-то пришло время пощупать "расстояние" руками.
    Появилась идея посчитать расстояние для подстроки (и всеми возможными комбинациями) и понять убедится, что в маленький радиус попадут только флаш и тройки(которые, естественно, будут в словаре).
    А весь "мусор"(если он будет в словаре) вынесет за радиус...
    ЗЫ Кто за, поставьте плюс!
    214/741
    Ответить Цитировать
    -1
  • Избавился от загрузки массивов с комбинациями. Теперь их не будет в рассылке.
    Генерирую сразу за 1,5 сек все 3 массива. Массив для 5 карт сократил с 22,8мб до 1,4мб. Всего 357006 элементов покрывают все 2,6млн комб. Просто сжал до одинаковых пятерок, которые не флеш.
    50/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 22.12.2019)
    Генерирую сразу за 1,5 сек все 3 массива

    ты бы хоть рассказал, что за массивы...
    Цитата (Jak @ 22.12.2019)
    Всего 357006 элементов покрывают все 2,6млн комб.

    не может быть такого. Около половина из 2.6 млн - комбинация младше "пара", а это значит 5 кикеров, их сжать невозможно. Если, конечно, ты не планируешь сравнивать на "старшинство" подобные комбинации
    215/741
    Ответить Цитировать
    0
  • Я никогда не вру. Даже жене.
    Ты не поверишь, но самолеты летают!

    А знаешь сколько всего различных комбинаций в колоде? С учетом флешей и всех пустых комбинаций? Этот факт я знал еще когда в 2000 решал стратегию для казиношного покера.
    134459 с учетом перестановок по мастям. Здесь и разные, тк нельзя перестановкой мастей из одной получить другую.

    И из них почти половина совпадает, если считать что сила рук под спойлером одинакова. В массиве эти руки совпадают, точнее ведут в одно место. У них одинаковая сила руки.
    51/314
    Ответить Цитировать
    0
1 5 25 26 27 28 47 114
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.