I thought of a game that involves a square lattice graph (e.g. 8x8). At turn=0, we randomly pick 4 nodes ("source nodes") and color each one a separate color :
In each turn, a color is randomly selected and has the option to pick any node touching one of its nodes and claim that color - for example (at the end of turn 16, the board looks like this):
For example, suppose at turn = 17, green is selected. Green has the option of coloring any of the following nodes (in dark green):
The winner is decided at the end of the game with the most popular color.
This leads me to some questions:
- When it comes to the positions of source nodes, are some positions more advantageous than others? (e.g. corners, perimeter, center, etc.)
- At any intermediate point in the game, based on the configuration - is it possible to predict the most likely outcome in which the game will end? e.g. we are currently at turn=16 with purple(5), yellow(4), red(2) and green (5) .... is it possible to know the probability of the final score being: red 60%-yellow 20%-green 10% - purple 10%? Can we do this without the exact positionings - or are the exact positionings needed?
- In general, will the winner of the game win by huge margins? Or will the games be close? E.g. 1st Place Score - 4th Place Score $\leq c$?
- Finally, suppose we are the start of turn 17 and its greens turn. Out of all the possible spots green can currently pick, which one is optimal? Will some of these spots more likely to secure larger regions or interrupt progress of other colors? Or is random choice is the best strategy here?
Can these problems be mathematically answered? Or can they only be simulated?
I am interested in hearing mathematical discussion on this!
PS: I wonder how the above answers would change if the starting graph is a random graph (e.g. erdos remy)
Sample R code for problem:
library(igraph)
n <- 8
g <- make_lattice(length=n, dim=2)
layout <- layout_on_grid(g, width=n)
node_colors <- rep("white", vcount(g))
node_colors[c(1,2,9)] <- "#ffb3b3"
node_colors[c(19,20,10,18,17,27,20)] <-
node_colors[c(15,16,13,14,22)] <- "#ffffb3"
node_colors[c(23,24,32,31,30,38)] <- "#e6b3ff"
border_colors <- rep("gray80", vcount(g))
border_colors[c(1,15,23,19)] <- "black"
plot(g,
layout=layout,
vertex.color=node_colors,
vertex.size=20,
vertex.label=1:64,
vertex.label.cex=0.8,
vertex.frame.color=border_colors,
vertex.frame.width=ifelse(1:vcount(g) %in% c(1,15,23,19), 3, 1),
edge.width=1)


