consiste en buscar una determinada entidad matemática de entre un conjunto de entidades del mismo tipo que además satisfaga las llamadas condiciones de problema. Formalmente todo problema puede reducirse a una terna (S,C(),r) donde s es un cojunto de objetos, C(s) es una condición (o condiciones) tal que dado s E s puede o no ser satisfecho (para ello la condición debe ser una fórmula lógica bien formada y cerrada).