Un solucionador es un programa matemático , que puede presentarse como un programa informático independiente o como una biblioteca de software , y que "resuelve" un problema matemático. Un solucionador toma descripciones de problemas en algún tipo de formato genérico y calcula su solución. En un solucionador, el énfasis está puesto en crear un programa o una biblioteca que pueda aplicarse fácilmente a otros problemas de tipo similar.
Los tipos de problemas con los solucionadores dedicados existentes incluyen:
El Solucionador General de Problemas ( GPS ) es un programa informático creado en 1957 por Herbert Simon , JC Shaw y Allen Newell , con la intención de funcionar como un solucionador de problemas universal, que teóricamente puede utilizarse para resolver todos los problemas posibles que puedan formalizarse en un sistema simbólico, dada la configuración de entrada adecuada. Fue el primer programa informático que separó su conocimiento de los problemas (en forma de reglas de dominio ) de su estrategia de cómo resolverlos (como un motor de búsqueda general ).
Los solucionadores generales suelen utilizar una arquitectura similar al GPS para disociar la definición de un problema de la estrategia utilizada para resolverlo. La ventaja de este desacoplamiento es que el solucionador no depende de los detalles de ninguna instancia de problema en particular. La estrategia utilizada por los solucionadores generales se basaba en un algoritmo general (generalmente basado en el retroceso ) con el único objetivo de la completitud. Esto induce un tiempo computacional exponencial que limita drásticamente su usabilidad. Los solucionadores modernos utilizan un enfoque más especializado que aprovecha la estructura de los problemas para que el solucionador pase el menor tiempo posible retrocediendo.
Para problemas de una clase particular (por ejemplo, sistemas de ecuaciones no lineales ), normalmente hay varios algoritmos disponibles. Algunos solucionadores implementan varios algoritmos.