Poker-AI.org Poker AI and Botting Discussion Forum 2013-12-09T07:41:03+00:00 http://poker-ai.org/phpbb/feed.php?f=24&t=2558 2013-12-09T07:41:03+00:00 2013-12-09T07:41:03+00:00 http://poker-ai.org/phpbb/viewtopic.php?t=2558&p=5464#p5464 <![CDATA[Re: Card Isomorphisms]]> Statistics: Posted by HontoNiBaka — Mon Dec 09, 2013 7:41 am


]]>
2013-12-09T01:48:29+00:00 2013-12-09T01:48:29+00:00 http://poker-ai.org/phpbb/viewtopic.php?t=2558&p=5463#p5463 <![CDATA[Re: Card Isomorphisms]]> Poker Papers Forum. The cool thing is that the author not only explains the algorithm in great detail, but he also provides a C implementation at https://github.com/kdub0/hand-isomorphism

Statistics: Posted by ConvexPolytope — Mon Dec 09, 2013 1:48 am


]]>
2013-08-30T17:54:19+00:00 2013-08-30T17:54:19+00:00 http://poker-ai.org/phpbb/viewtopic.php?t=2558&p=4758#p4758 <![CDATA[Re: Card Isomorphisms]]>
The next question is, how to extend it to the turn. The main idea of course is, to find hands, that are strategically equal, but I dont see an algorithm so far.

I am also still looking for a general purpose algorithm for finding isomorphisms. Of course I am also willing to share infos on my implementation, if anyone can help me to get the general idea.

Statistics: Posted by HontoNiBaka — Fri Aug 30, 2013 5:54 pm


]]>
2013-08-23T11:13:19+00:00 2013-08-23T11:13:19+00:00 http://poker-ai.org/phpbb/viewtopic.php?t=2558&p=4694#p4694 <![CDATA[Re: Card Isomorphisms]]>
I have a problem with combining the isomorphisms with the O(n) fast ShowdownNode evaluator.
It all seems to work with the O(n²) evaluator, and it works with the O(n) evaluator, when the cards dont block each other,
but in the case, that there is cardremoval, I have a problem in that line:

Code:
double[] wincr = new double[52];
    for (int i = 0; i < p.length; i++)
   {
      while(j < op.length && oHoles.get(j).getRank() < pHoles.get(i).getRank()){
         winsum += op[j];
         wincr[oHoles.get(j).getCard1()-1] += op[j];
         wincr[oHoles.get(j).getCard2()-1] += op[j];
         j++;
      }
//etc


The wincr basically keeps track of how often a certain card gets blocked. I dont see, how I can do that, without itterating over all cards in the bucket, which would bring me back to O(n2).

Statistics: Posted by HontoNiBaka — Fri Aug 23, 2013 11:13 am


]]>
2013-08-22T05:38:50+00:00 2013-08-22T05:38:50+00:00 http://poker-ai.org/phpbb/viewtopic.php?t=2558&p=4690#p4690 <![CDATA[Re: Card Isomorphisms]]> pulser wrote:

Hope that wasn't too confusing.


I think, I understand it, thank you. I will try to implement it.

How do I learn more about isomorphisms though? I had isomorphism in CS, but it wasn't helpful for cardgames.

Is there even a general way to find isomorphm cards, or do I just have to think about what cards are strategically equal each time?

Is there something, like a way to abstract it and then just run an algorithm, that I can use in every situation?

Statistics: Posted by HontoNiBaka — Thu Aug 22, 2013 5:38 am


]]>
2013-08-21T16:07:43+00:00 2013-08-21T16:07:43+00:00 http://poker-ai.org/phpbb/viewtopic.php?t=2558&p=4688#p4688 <![CDATA[Re: Card Isomorphisms]]> ranks together.

Then, for each hand within such a group, count the number of hands removed by card-removal for each of the opponent's groups.

Then, group all hands with (proportionally) identical card-removal effects within a local group together.

You'd then have the smallest lossless abstraction possible. Hope that wasn't too confusing.

Statistics: Posted by pulser — Wed Aug 21, 2013 4:07 pm


]]>
2013-08-21T02:00:42+00:00 2013-08-21T02:00:42+00:00 http://poker-ai.org/phpbb/viewtopic.php?t=2558&p=4685#p4685 <![CDATA[Card Isomorphisms]]> I want to speed it up by using card isomorphisms, but I dont get the theory behind it so far.

My first idea was to just group the hands by the handrank computed by the 2p2 handevaluator, but I guess
this wont work, because I would lose information about cardremoval?

Is there a site, that explains card isomorphisms in a simple and practical way? And is there a way
to make it even faster using the fact, that I am only analysing rivergame, so no new cards can
change the ranks?

What I basically want to acheive, is to group hands and treat them as one hand, but still have the card removal effect.

For instance if I run AK vs QJ, I do 16*16 terminal node computations, while I could just do one, because each AK and QJ is the same.
But it gets more complicated, when I run AK vs QK and QJ, now I need to bear in mind, that AK blocks KQ and vice versa.

Statistics: Posted by HontoNiBaka — Wed Aug 21, 2013 2:00 am


]]>