Fitness clouds and problem hardness in genetic programming