Solved using Hill Climbing Heuristic Search technique. This searching is implemented using simple HCS, so it may get stuck on Local Maxima.
Random Restart HC will restart every time if the HC gets stuck, the default no of iterations can be determined by the iterations parameter
Simple Hill Climbing Search
heurisitc = h(currentState)
while True
neighbours = currentState
neighbour = min(h(nieghbours))
newHeurisitc = h(neighbour)
if newHeuristic >= heuristic
exit
currentState = neighbour
Random Restart Hill Climbing Search
for 0 --> iterations
heurisitc = h(currentState)
while True
neighbours = currentState
neighbour = min(h(nieghbours))
newHeurisitc = h(neighbour)
if newHeuristic >= heuristic
exit
currentState = neighbour
if stuck in local maxima
restart --> new currentState
n = 4
Starting Board ::
Q - - -
- Q - -
- - - Q
- Q - -
Final Board ::
- - Q -
Q - - -
- - - Q
- Q - -
Steps climbed :: 2
n = 5
Starting Board ::
- - - Q -
- - - - Q
- - - - Q
Q - - - -
- - - Q -
Final Board ::
- Q - - -
- - - - Q
- - Q - -
Q - - - -
- - - Q -
Steps climbed :: 2
Local Maxima Case
Starting Board ::
Q - - - -
Q - - - -
- - - Q -
- - - Q -
Q - - - -
Final Board ::
- - Q - -
Q - - - -
- - - Q -
- - - Q -
Q - - - -
Steps climbed :: 1
Stuck at Local Maxima State