- Updated Saturday, March 19th 2016 @ 06:49:59
I would like to suggest that it would be better if the engine handled Ko situations, and sent a "3" for an empty tile which is forbidden due to Ko. There are several reasons for this:
Starter packages should be able to make consistently legal moves: therefore they have to handle Ko. This makes it harder to write a starter package, plus it increases the disparity between efficient and inefficient implementations of the starter package itself.
With such a short time limit and bots finding Ko by themselves, bots may actually do better if they ignore superko and only handle the simplest Ko stiuations.
The engine is going to be calculating Ko anyway, so there is no extra overhead cost.
In short, I think moving the responsibility for this into the engine, and simply informing the bots by IO, allows the bots to spend more time thinking about strategy rather than simply understanding which moves are legal and which are not.
Of course when looking ahead, good bots will still want to try to see superko in advance; but I would prefer to see this left as a challenge to the programmer. There are many ways to approach the problem, and which approach you take may affect final performace, so it feels like part of the challenge itself.
- Created Saturday, March 19th 2016 @ 15:06:06
Good point. I agree.
- Created Saturday, March 19th 2016 @ 17:19:21
Same here, was just thinking the exact same thing.
- Created Sunday, March 20th 2016 @ 09:04:13
agree as well
- Created Sunday, March 20th 2016 @ 12:33:59
Quite agree. In particular, there's also a bug in the handling:
Both AIs focus on getting that Ko resolved and both keep trying, and their second tries are accepted while they should not have been.
- Created Sunday, March 20th 2016 @ 18:09:38
Thinking on it a bit closer, isn't it even necessary? How would I know if the single stone that is in atari is a ko point or not? We don't have the game history, we just get the current position.
- Updated Monday, March 21st 2016 @ 08:19:02
I noticed that the engine does not recognize super ko (recurring board states after more than two rounds; see http://gobase.org/studying/rules/ikeda/?sec=e3020001 for a detailed explanation).
You can see an example in game http://theaigames.com/competitions/go/games/56eea8408be8df4ef3a2d856 between MrGobot and Nibbits: the moves repeat every 4 rounds as from round 67 and the game is stuck.
As from version 7, MrGobot does not violate the super ko rule anymore.
@ingwa: if your bot remembers all board states, it can prevent super ko. And yes, it is necessary to prevent this, because the game is stuck if both players violate the (super) ko rule.
- Updated Monday, March 21st 2016 @ 12:23:58
@AdsRiskbot Working on it... :-) I did notice yours had stopped doing this.
Added a past-board check in v22, but I realized now that it also has to do the capture-cleanup if it can actually check the board against previous ones, making this much more complicated than I expected initially.