The problem is that deciding if a configuration c is reducible to a configuration c' is NP-complete. So, it's difficult to have that final single final configuration. I could use the rule of three to decide if a game is not playable, but the rule of three did not give me a method to enumarate all really possible final configuration (the rule of three is only a necessary condition).
I want to write a program that can solve an arbitrary initial configuration, created by the user. So i don't know the final configuration.
So, which pagoda function should i use???
No, i'm really new to pagoda function. I have read so little about this functions and i don't know if i can use this functions to make some cut to the search space (remember that i use a brute-search algorithm).
Uhmm..., i'll read more carefully what you have wrote..i don't understand english very well so i have not understood very well what you have written..
I map each configuration to a 64-bit value. The cache is a bb-tree. When i search a particular configuration in the cache, i check also the symmetric configurations (for a given configuration there are 7 equivalent other configurations).
The cache really help to speed up the process, because the game is highly symmetric. By the way, some configurations take more to calculate.
The cause is clear to me: the order in which the possible moves are tried make the difference.
So, i use a function that try to say:'this move is better than this other'. But this procedure needs to look-ahead 3/4 moves to work decently.
But the look-ahead take much time...so now i have a program that in some cases work faster without look-ahead than with lookahead.
I've not found any other cut to use to speed-up the process
