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

»  мизер: вопрос знатокам, играю мизер, не знаю чем ходить Подписаться | Сообщить другу | Версия для печати
      » 7/07/2017, 23:01,  Байкер 
Преферанс = ПСИХОЛОГИЯ между людьми - это лишь многократно повторяемый тезис. Когда просишь привести аргументацию, в лучшем случае приводят или пример на дезинформацию оппонента, или говорят о банальном использовании особенностей противника. Но и то, и другое прекрасно формализуется (хотя первое и не простая задача) и подключается к алгоритму. А коли так, это не психология, а "математика". Потому что у игрового автомата не мб психологии по определению.

Последнее пристанище "психологов" - очная игра, где действительно методы практической психологии очень эффективны по части извлечения информации из поведения соперника и перевода этого соперника из рабочего состояния в нерабочее. Такая психология действительно работает, но она являет собой отдельную область знаний, которую можно применить к любой карточной игре, в том числе и к игре в преферанс. В интернете этот фактор ничтожен.
Это всё, никаких других аргументов я никогда не слышал, потому что их и быть не может, ибо никакой психологии внутри преферанса нет.

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

Наконец, как то в дискуссии на эту тему я приводил простой пример, который исчерпывает ситуацию. Вот, лично я некоторые аспекты преферанса знаю очень хорошо, но в целом игрок очень даже посредственный. Однако если взять любого светилу от психологии, не умеющего играть в преферанс, заставить его на 5 с плюсом изучить правила игры преферанс и посадить его играть со мной, то вистовый результат для психолога будет плачевен, и никакие изыски от психологии ему не помогут. Почему? Потому что рулят в преферансе алгоритмические знания и бойцовские качества, а психологические изыски за пределами этих самых бойцовских качеств не более чем аптекарские гирьки против весов для взвешивания грузовых фур.
      » 7/07/2017, 23:46,  extasy 
Психология в игре это умение правильно прогнозировать действия соперника и создавать ситуации, в которых соперник реализует свои слабые стороны. Одновременно, это умение скрывать свои намерения и не давать сопернику правильно спрогнозировать свои действия.

Проще выражаясь, психология это поиск слабых мест соперника и умение их использовать.

--------------------
the elephant has you..
      » 8/07/2017, 02:10,  american_boy 
пару десятков структур могу закинуть (не 200), ради эксперимента мизер это или не мизер (в бесконечной пуле на 3-х).

1) Байкер и экстизи, будете оценивать?
2) трёхдырочные структуры можно кидать?
3) оценивать прога умеет только первую руку или и с чужим ходом тоже можно?
      » 8/07/2017, 10:47,  extasy 
american_boy ( "8/".$m["июл"]."/2017," 02:10)
пару десятков структур могу закинуть (не 200), ради эксперимента мизер это или не мизер (в бесконечной пуле на 3-х).

1) Байкер и экстизи, будете оценивать?
2) трёхдырочные структуры можно кидать?
3) оценивать прога умеет только первую руку или и с чужим ходом тоже можно?

Прога все умеет, только заниматься этим не буду.

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

--------------------
the elephant has you..
      » 8/07/2017, 11:24,  Байкер 
Ну, если бы при этом ты "снял" свой тезис
"Смысл в том, что без такого программного инструмента быстрая и правильная оценка любой структуры попросту невозможна",
то был бы вообще красавец. Я и заговорил об этом не потому, что хочу соревноваться с твоей программой, а потому, сто есть
а) полный перебор;
б) Монте-Карло;
но и есть
в) логический анализ статистических данных.
А коли так, то я и говорю, что у "в)" свои плюсы и результаты получаются вполне приличными. А у тебя прозвучало, что без а)/б) вообще никуда. Именно это по мне и неправильно.
Более того, на данном этапе я могу и выиграть. По той причине, что речь о решении. А в таком случае МО вистового результата заявки "Мизер" должно сопоставляться с МО других возможных альтернатив при торговле. У меня тут не очень точный механизм, но против никакого он даст плюс в вистах.
А минус был бы в зависимости от предъявленных структур и типов дырок. Дело в том, что некоторые мизерные руки встречаются очень часто, а некоторых вообще не дождешься. Я это дело учитывал, и на "края" времени много не тратил. В результате там очень низкая точность. А твоя машина всё считает "добросовестно". Поэтому если набрать примеров из редких структур, мой алгоритм поплывет против "робота".
      » 8/07/2017, 12:13,  Pochemuk 
extasy ( "7/".$m["июл"]."/2017," 18:26)
Андрей, оказывается все еще проще.

Пусть vector - закодированная в 0, 1, 2 восьмикарточная масть.

for (auto it = vector.begin(); it < vector.end(); ++it)
{
if (*it == 2)
std::rotate( it, it + 1, vector.end() );
}
Вот и все, мы склеили любую комбинацию масти в классы эквивалентности. Дальше просто упаковываем vector в int16.

Протестил на мизере. 8169 сносов склеилось в 3387. Правда, я ожидал более существенного эффекта..
Кстати, мизер {"sJ17 cJ97 dJ87 hQ", "", "", ""} плох в плане склейки, ибо не имеет длинных мастей с непрерывными последовательностями карт.
Предполагаю, что на других структурах эффект от склейки может быть в разы лучше.

Проще с точки зрения кодинга, но не выполнения этого кода.

Ты делаешь ротацию элементов вектора. Для этого приходится пересылать кучу байт из памяти в память. А потом по второму разу просматривать этот вектор, чтобы запоковать его в битовое представление uint16.

Как раз эффективнее будет сначала упаковать вектор в битовое представление, а потом уже делать склейку именно на нем.

Или делать склейку одновременно с упаковкой вектора в битовое представление.
      » 8/07/2017, 12:53,  Pochemuk 
extasy ( "7/".$m["июл"]."/2017," 18:44)
Сомнительно )

Чтобы понять опасная дырка или нет ее надо сначала оценить.. Оценка происходит путем перебора. Ты предлагаешь создать альтернативный инструмент оценки сноса?

На мизере фильтруются все сносы, содержащие 7ку и это очень эффективная вещь.
15246 сносов фильтруются в 8169 и склеиваются в итоге в 3387.

Думаю, что эта оценка гораздо проще. Ибо она не опирается ни на какие вероятности, а оперирует закусками горячими исключительно понятием увеличения максимального числа взяток. Причем, только в данной масти.

Например, {7 Д Т}.

Тут максимальное число возможных взяток - 2.

Снос хоть дамы, хоть туза, хоть обоих фигур НЕ увеличивает это число. Поэтому все три эти варианта сноса должны быть рассмотрены.
Таким образом, вариант оставления туза на перехват никуда не потеряется.

А вот {7 9 В К} - другое дело.

Тут 0 взяток (на своем ходе может быть и 1-2-3, но подумаем об этом завтра).

Снос короля не увеличивает эту цифру. А вот снос валета, девятки и семерки увеличит ее до 1, 2, 3 соответственно (масть с дыркой внизу предлагаю априори оценивать в 3 взятки, типа "много"wink.gif. Поэтому, такие сносы нерациональны.

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

Затем будет так:

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

Вот давай для примера проверим мизер до сноса {7 9 В}{7 9 В Т}{7 Д Т}{8 9}.
Вряд ли этот алгоритм оставит слишком много бестолковых сносов. И при этом откинет более-менее рациональные.
      » 8/07/2017, 14:42,  extasy 
Pochemuk ( "8/".$m["июл"]."/2017," 12:13)
extasy ( "7/".$m["июл"]."/2017," 18:26)
Андрей, оказывается все еще проще.

Пусть vector - закодированная в 0, 1, 2 восьмикарточная масть.

for (auto it = vector.begin(); it < vector.end(); ++it)
{
    if (*it == 2)
std::rotate( it, it + 1, vector.end() );
}
Вот и все, мы склеили любую комбинацию масти в классы эквивалентности. Дальше просто упаковываем vector в int16.

Протестил на мизере. 8169 сносов склеилось в 3387. Правда, я ожидал более существенного эффекта..
Кстати, мизер {"sJ17 cJ97 dJ87 hQ", "", "", ""} плох в плане склейки, ибо не имеет длинных мастей с непрерывными последовательностями карт.
Предполагаю, что на других структурах эффект от склейки может быть в разы лучше.

Проще с точки зрения кодинга, но не выполнения этого кода.

Ты делаешь ротацию элементов вектора. Для этого приходится пересылать кучу байт из памяти в память. А потом по второму разу просматривать этот вектор, чтобы запоковать его в битовое представление uint16.

Как раз эффективнее будет сначала упаковать вектор в битовое представление, а потом уже делать склейку именно на нем.

Или делать склейку одновременно с упаковкой вектора в битовое представление.

Я обошелся без промежуточного вектора. Сейчас уже нечего улучшать.
Вот код:
()

Key
  encrypt()                const
{
  vector<uint16> key( 6, 0 );

  for (int i = 0; i < 4; ++i)
  {
    int k = 0;
    for (auto& card : G_PATTERN.get_deck()[i])
    {
    if (card.get_location() == FOURTH_HAND)
    {
      k++;
      continue;
    }
    card.get_location() == Game::PLAYER ?
    key[i] = (key[i] << 2) | 1 :
    key[i] <<= 2;
    }
  while (k-- != 0)
    key[i] = (key[i] << 2) | 2;
  }
  std::sort( key.begin(), key.begin() + 4, std::greater<uint16>() );
  return  key;
};

Странность в том, что алгоритм с промежуточным вектором и его ротацией в точности должен совпадать с этим алгоритмом. А по факту, получилось 3387 и 3073 эквивалентных сноса.
Пока не знаю в чем штука, но это будет потом легко потестить на полном переборе с отключенной склейкой.

--------------------
the elephant has you..
      » 8/07/2017, 14:46,  extasy 
Pochemuk ( "8/".$m["июл"]."/2017," 12:53)
Думаю, что эта оценка гораздо проще. Ибо она не опирается ни на какие вероятности, а оперирует закусками горячими исключительно понятием увеличения максимального числа взяток. Причем, только в данной масти.

Вообще, мысль здравая об отсеве безполезных сносов. Но идею я не вполне понял. Не говоря уже о реализации.

Можешь раскрыть тему подробнее?

--------------------
the elephant has you..
      » 8/07/2017, 15:02,  extasy 
Байкер ( "8/".$m["июл"]."/2017," 11:24)
есть
а) полный перебор;
б) Монте-Карло;
но и есть
в) логический анализ статистических данных.
А коли так, то я и говорю, что у "в)" свои плюсы и результаты получаются вполне приличными. А у тебя прозвучало, что без а)/б) вообще никуда. Именно это по мне и неправильно.

На данный момент я не представляю адекватного "В"(в узком понимании анализа применительно к оценке МО) без "А" и "Б"..

Я уверен, что логический анализ должен базироваться на переборе вариантов.

Логические алгоритмы оценки имеют место быть, но лишь как вспомогательные
инструменты первого приближения.

Это сообщение отредактировал extasy - 8/07/2017, 15:03

--------------------
the elephant has you..
« Предыдущая тема | Перечень тем | Следующая тема »
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей: