Hierarchical knowledge clustering: a way to represent and use problem-solving knowledge