Search and knowledge for human and machine problem solving : doctoral dissertation