Un solucionador es una pieza de software matemático , posiblemente en forma de programa informático independiente o como biblioteca de software , que "resuelve" un problema matemático. Un solucionador toma descripciones de problemas en algún tipo de forma genérica y calcula su solución. En un solucionador, el énfasis está en crear un programa o biblioteca que pueda aplicarse fácilmente a otros problemas de tipo similar.
Los tipos de problemas con los solucionadores dedicados existentes incluyen:
El General Problem Solver ( GPS ) es un programa informático particular 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 usarse para resolver todos los problemas posibles que puedan formalizarse en un sistema simbólico, dada la configuración de entrada correcta. 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 resolver problemas (como motor de búsqueda general ).
Los solucionadores generales suelen utilizar una arquitectura similar al GPS para desacoplar 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 ningún caso de problema en particular. La estrategia utilizada por los solucionadores generales se basó en un algoritmo general (generalmente basado en retroceso ) con el único objetivo de estar completo. Esto induce un tiempo de cálculo 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 dedique el menor tiempo posible a retroceder.
Para problemas de una clase particular (p. ej., sistemas de ecuaciones no lineales ), suelen estar disponibles múltiples algoritmos. Algunos solucionadores implementan múltiples algoritmos.