| ||||
| ||||
|
Важные объявления |
|
13.03.2007, 16:26 | #61 (permalink) | |
Бессмертный
Регистрация: 30.04.2004
Сообщений: 3,612
|
Цитата:
__________________
Arthur Grey |
|
0 |
14.03.2007, 00:06 | #62 (permalink) |
Бессмертный
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
|
Уважаемый Шамсутдинов, в данной теме мы сравнивали скорости функций анализа одной руки игрока против карты дилера (вычисление числа возможных комбинаций дилера младще/старше/равно для подсчета МО руки). Так тот факт что на одном и том же оборудовании ваш софт анадизирует 350 000 рук в секунду а у Грея например 950 000 говорит о том что при использовании его функции Ваш софт будет считать почти втрое быстрее. Тест с полным перебором был предложен мной для исключения неоднозначности в постановке задачи. То, что наш код может работать с неполной колодой - само собой разумеется, просто для теста СКОРОСТИ это не требовалось. И еще, не совсем понятно как Вы успеваете анализировать все варианты обменов (Русский покер) без упрощений, ведь один только пятак на первом боксе требует анализа 1370754 вариантов (3 секунды при вашей скорости).
|
0 |
14.03.2007, 07:10 | #63 (permalink) | |
Бессмертный
Регистрация: 30.04.2004
Сообщений: 3,612
|
Цитата:
__________________
Arthur Grey |
|
0 |
14.03.2007, 07:22 | #64 (permalink) |
Бессмертный
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
|
Оказывается я отстал от жизни и у нас новый лидер по моему тесту - Grey с результатом 50 сек на анализ 52*51*50*49*48*47/5/4/3/2= 122 151 120 вариантов рук игрока против 1-й карты дилера, или 2,5 миллиона рук в секунду на моем железе. ПОЗДРАВЛЯЮ. Я пока на почетном 3-м месте со 123 секундами, Sharky на втором. |
0 |
14.03.2007, 10:32 | #65 (permalink) | |
Бессмертный
Регистрация: 30.04.2004
Сообщений: 3,612
|
Цитата:
__________________
Arthur Grey |
|
0 |
14.03.2007, 11:19 | #66 (permalink) | |
Увлечённый
Регистрация: 26.10.2005
Адрес: Провинция
Сообщений: 462
|
Цитата:
for(int i0=4;i0<52;i0++) { ____for(int i1=3;i1<i0;i1++) ____{ ________... ____} } с проверкой на выкинутые карты - это обязательное условие соревнования (нельзя оптимизировать)? Прикинул, получилось за 838 (минус проверка на выкинутые, инкремент, подсчет результата, округлим 800) тактов проверяется <,>,=,0 (пустая, наверное, высчитывается из общей). Вроде очень мало. Сравню со своим приближенным методом. |
|
0 |
14.03.2007, 12:00 | #67 (permalink) |
Бессмертный
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
|
Цель теста - сравнение скорости функции анализа руки игрока против каты дилера, используемой в нашем покерном софте, на одинаковом железе. Для этого я и предложил оформить ее в виде демо-модуля и выложить здесь, чтобы любой мог запустить разные демки на своем железе. Почему итменно эта функция: это ядро любого покерного софта, от которого напрямую зависит производительность всего комплекса. Есть еще алгоритмя оптимизации более высокого порядка, но это уже другая история. Как сравнивать - не принципиально, для сравнение важно лишь чтобы демки выполняли ОДНУ и туже работу. В данном случае предлагалось именно 6 честных циклов с вызовом функции внутри последнего и накоплением результата. Под тестовой функцией понимался именно рабочий модуь из покерного софта, специально не заточеный под эту задачу, т.к. сама задача уже давно решена.
|
0 |
14.03.2007, 12:29 | #68 (permalink) |
Увлечённый
Регистрация: 26.10.2005
Адрес: Провинция
Сообщений: 462
|
Я не сторонник точных формул, поэтому в вашем соревновании не участвую. Хотел просто прикинуть, можно ли при точном расчете получить скорость необходимую для поставленной мной задачи (уже отставленной, правда).
|
0 |
14.03.2007, 12:32 | #69 (permalink) |
Новичок
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
|
Вынужден признать, что моя процедура подсчета комбинаций у дилера (4 карты) в 4,3 раза меденнее, чем у Грея. Совпадение с ним результата МО абсолютно точное при любом количестве выкинутых из колоды карт, известных игроку.
Насчет используемой памяти моей программой. В прошлый раз я непонятно каким образом ошибся. Действительно, моя программа занимает 22-25 МБ в памяти. 15,2 МБ занимают массивы, определяющие сортировку и комбинацию 5 или 6 карт. Причем, большая часть - для 6-карточных комбинаций, например, в русском покере. Самая сложная часть моей программы - покупка игры. Но я уже не строю иллюзий насчет правильности моих претензий. Но быть в вакууме тоже нелегко. Теперь я полностью в теме - еще раз перечитал все сообщения этого форума. Про масти никаких разногласий нет. Моя программа все делает правильно, но медлено (я считал, что быстро). Какими-то преимуществами, она безусловно обладает, в ней сделано очень многое и очень хорошо (опять, с оговогкой, что другие могли бы сделать в 4,3 раза лучше). Например, можно одсчитывать точное МО, когда нет мен карт, но для этого нужно вручную перебирать все карты дилера, потом находить реднее арифметическое. Дело в том, что когда в моей программе варьируются только карты на 1 боксе и 0 Change, то ведется полный перебор этих карт. Нажав на кнопку слева от таблицы результатов появится окно с более полной информацией о результатах, от туда можно взять в буфер обмена точное МО последней операции - с большим числом знаков после запятой. Замечу, что программа rp отличается от pkr большую сторону только тем, что там есть возможность исключения мен 4 или 5 карт, если они о хуже. Извиняюсь за поспешные заявления и выставление своей программы. Буду очень признателен, за объяснения как сделать более быстрый алгоритм подсчета комбинаций у дилера (Grey). |
0 |
14.03.2007, 15:45 | #73 (permalink) | |
Бессмертный
Регистрация: 30.04.2004
Сообщений: 3,612
|
Цитата:
__________________
Arthur Grey |
|
0 |
14.03.2007, 15:45 | #74 (permalink) |
Участник
Регистрация: 13.10.2004
Сообщений: 165
|
Не хотелось бы огорчать г-на Коровина, но я тут исправил ошибки у себя в программе и вот результаты:
При полной колоде я отстаю от Grey, а при не полной - почему-то опережаю, не могу объяснить этот феномен. Кстати, выделил процедуру подсчета (<,>,=,нет игры) в отдельный unit для Delphi, могу отправить интересующимся. Тока надо написать help нему с параметрами всех процедур, которые можно из него вызвать. В главной процедуре на входе 5-ка карт игрока, карта дилера, отсутствующие карты - на выходе 3 числа - >, <, =. Дальше в зависимости от параметров оплаты можно все посчитать. Начал делать для русского с двойными комбинациями, но пока не доделал. |
0 |
14.03.2007, 15:50 | #75 (permalink) | |
Новичок
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
|
Цитата:
Все-таки мне очень хочется разобраться, почему мой алгоритм хуже. Ответьте на следующий вопрос: Пусть на 1-ом боксе есть какая-то комбинация (-, AK, 2, 2+2, 3, S, F, 3+2, 4, FS, FR). Я получаю количества всех комбинаций у дилера (AK, 2, 2+2, 3, S, F, 3+2, 4, FS, FR). Получаю количество пустых комбинаций у дилера вычитанием из его общего количества этих. Если у игрока не пустая комбинация, то производится подсчет таких же по достоинству комбинаций у дилера, равных или больших по сравнению всех карт - это наибольшее сложная и большая часть кода по количеству строк. Так ли делаетcя в вариантах, лучших чем мой? Например, ищется ли количество всех стритов и флеш-стритов по отдельности у делера, если у игрока пара? Или, если у игрока нет игры, может быть сразу ищется в скольких случаях у дилера она есть, то есть хотя бы 2 одного достоинства, флеш или стрит (придется еще искать количество FS). Я не проверял какие части этой процедуры имеют какую составную часть во времени выполнения. Мне казалось, что его нельзя убыстрить. Ладно, возможно, попытаюсь переписать этот алгоритм. Дело в том, что у меня была идея, заключающаяся в том, что для получения количества комбинаций у дилера, можно сначала расчитать массивы всех случаев, по количеству неизвестных карт по достоинствам (0..12) (количеству этих количеств (0..4), то есть [13][12][12][12][12][12], где первый элемент - достоинство карты дилера). Когда мне пришла в голову эта идея, то я понял что процедуру можно ускорить в разы, но что это не стоит делать, потому что и так быстро, и будет тормозить покупка игры, которая сделана идеально - ее я делал 3 года тому назад, а ту процедуру - 8 лет тому назад. Но пару месяцев тому назад я вернулся к этому вопросу, посмотрел свой код, и не смог понять почему можно добиться убыстрения, хотя эту идею я помнил. Теперь мне опять кажется, что убыстрение возможно. Ответьте что-нибудь. Можно на мой e-mail. Как пользоваться форумом? Например, удобно цитировать несколько раз. Как подписаться на новые сообщения, чтобы уведомления приходили по почте? |
|
0 |
14.03.2007, 15:56 | #76 (permalink) | |
Новичок
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
|
Цитата:
|
|
0 |
14.03.2007, 16:15 | #77 (permalink) | |
Бессмертный
Регистрация: 30.04.2004
Сообщений: 3,612
|
Цитата:
__________________
Arthur Grey |
|
0 |
14.03.2007, 16:23 | #78 (permalink) | |
Увлечённый
Регистрация: 26.10.2005
Адрес: Провинция
Сообщений: 462
|
Цитата:
|
|
0 |
14.03.2007, 16:50 TS | #79 (permalink) |
Ветеран
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
|
Мде, отстал я от жизни.. И все-таки Grey, как ты считаешь? Если 143K заготовок, то это одно, и сравнивать тесты так как мы имхо нельзя, или все пересчитываешь? Тогда снимаю шляпу.
2 Шамсутдинов: Абсолютно точную покупку игры уже я делал, и алгоритм был описан на страницах форума + демка была..
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
0 |
14.03.2007, 17:50 | #80 (permalink) | |
Бессмертный
Регистрация: 30.04.2004
Сообщений: 3,612
|
Цитата:
P.S. Если во время расчета дергать форму мышкой, то время расчета существенно увеличится, т.к. во время перемещения все останавливается. Ты не дергал часом? По уму надо бы отдельным тредом сделать.
__________________
Arthur Grey |
|
0 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автозамена. TEST | Grey | Техническая поддержка форума | 10 | 21.12.2008 13:01 |
Japanese IQ Test | Vors | Поговорим за жизнь | 9 | 28.04.2008 11:40 |
был такой Donkey test | Гламуризатор-р-р | Около покерного стола | 1 | 22.04.2007 03:25 |
|
|