This is the Towers of Hanoi problem in which you've to find the minimum number of moves required to move from one configuration to another.(Not the classical.Thats easy).I've been stranded on this for a complete day.
There are K pegs. Each peg can hold discs in decreasing order of radius when looked from bottom to top of the peg. There are N discs which have radius 1 to N; Given the initial configuration of the pegs and the final configuration of the pegs, output the moves required to transform from the initial to final configuration. You are required to do the transformations in minimal number of moves.
A move consists of picking the topmost disc of any one of the pegs and placing it on top of anyother peg. At anypoint of time, the decreasing radius property of all the pegs must be maintained.
Constraints: 1<= N<=8 3<= K<=5
Input Format: N K 2nd line contains N integers. Each integer in the second line is in the range 1 to K where the i-th integer denotes the peg to which disc of radius i is present in the initial configuration. 3rd line denotes the final configuration in a format similar to the initial configuration.
Output Format: The first line contains M - The minimal number of moves required to complete the transformation. The following M lines describe a move, by a peg number to pick from and a peg number to place on. If there are more than one solutions, it's sufficient to output any one of them. You can assume, there is always a solution with less than 7 moves and the initial confirguration will not be same as the final one.
Sample Input #00:
2 3 1 1 2 2 Sample Output #00:
3 1 3 1 2 3 2
Sample Input #01:
6 4 4 2 4 3 1 1 1 1 1 1 1 1 Sample Output #01:
5 3 1 4 3 4 1 2 1 3 1
My approach for this problem was to find out a graph for the state space and then do a BFS on it to find out the shortest path.However, the problem is how to create this graph . I've thought of recursively implementing it though I'm facing great difficulty here ie how to connect the nodes of the sub-graphs recursively.If anybody has a better insight or approach to this problem kindly share it along with the algorithm.A similar solution used is on http://en.wikipedia.org/wiki/Tower_of_Hanoi