With the small graph in the post, finding the solution by searching backwards from "finished" graphs (ie. single-city) using dynamic programming should be simpler than beam search and guaranteed optimal.
I think it would also be easier to add some meaningful variation to the resulting graph removals by building up instead of trying to remove and retain properties. The proposed algorithms are perhaps too predictable by the player for the game, depending on how it is played.
I think it would also be easier to add some meaningful variation to the resulting graph removals by building up instead of trying to remove and retain properties. The proposed algorithms are perhaps too predictable by the player for the game, depending on how it is played.