Pattern recognition algorithms