Author | Message |
---|---|
ummata
Posts: 68
|
Posted 20:33 May 07, 2014 |
Do we need to make AlphaBeta support single player games? |
rabbott
Posts: 1649
|
Posted 22:12 May 07, 2014 |
Here's the key step in my program. Given the current MachineState I want to find the best Move.
[I've listed the types as Java rather than Scala. I convert the result to Scala. But this is what I start with. It's essentially the same either way.] My algorithm looks at the list of States for each Move. It finds the worst one, and assigns that value to the Move. (That's the minimizing step.) Then it picks the best Move assuming those worst values. (That's the maximizing step.) This works no matter how many players are in the game. if there is only one player, the list of states to which each Move maps has only one element. So it's the worst State. But the code works the same way. Adding alphaBeta to this has nothing to do with the number of players. It just cuts off the minimizing and maximizing steps early before all the Moves are examined (if maximizing) and before all the States in the StateList are examined (if minimizing). Of course, if there's only one State in the StateList, Alpha-cutoff never gets a chance to do anything. This is different from the way Bryan's code seemed to work. We only looked at it briefly, but it looked like he did things a bit differently. Last edited by rabbott at
22:17 May 07, 2014.
|
ummata
Posts: 68
|
Posted 23:29 May 07, 2014 |
In Tic-Tac-Toe, I print out the length of the list of states of one move, it has only one elements.
|
rabbott
Posts: 1649
|
Posted 00:25 May 08, 2014 |
Right. In Tic-Tac-Toe each move leads to only one state. A problem with the general approach (the one sketched above) is that it takes two minimax cycles for each one cycle of a known two-player minimax. The first one is the maximizer's move. The associated minimizer looks at the single state that move leads to. Then the maximizer maximizes its noop move (obviously no choice). But that move leads to all the states the opponent can make. So instead of a maximizer move and a minimizer move, there's a maximizer move, a minimizer step on a single state, a maximizer step on a single (noop) move, and a minimizer move on a list of states. |
ummata
Posts: 68
|
Posted 00:49 May 08, 2014 |
In turn-based multiple player games, each move should lead to only one state. |
rabbott
Posts: 1649
|
Posted 08:56 May 08, 2014 |
You are right that in deterministic (no dice) turn-based multi-player games each move leads to exactly one state. But that's not how GGP is organized. It assumes that there are no turns, that on each round every player makes a move -- even though the move may be noop. So at every round, my move can lead to any of a number of states depending on what the other players do. You are right that if this is essentially a turn-based game, then all the other players (whether there is one other or more than one other) play noop. So each move leads to exactly one state. But that's not the general case. Last edited by rabbott at
08:57 May 08, 2014.
|
ummata
Posts: 68
|
Posted 11:10 May 08, 2014 |
I got it and I still want to see an example of game that players can make moves other than noop in the same round. |
rabbott
Posts: 1649
|
Posted 13:25 May 08, 2014 |
In Bidding Tic-Tac-Toe the players place bids at the same time. |
ummata
Posts: 68
|
Posted 15:34 May 08, 2014 |
In bidding tic tac toe, is a move a bid from a player and a list of states contains possible marks on the board from a winning player and noop from another player? |
rabbott
Posts: 1649
|
Posted 22:01 May 08, 2014 |
Here's the game: http://www.ggp.org/view/all/games/base/biddingTicTacToe/v0/ Last edited by rabbott at
22:01 May 08, 2014.
|