Solver (engl., dt. Löser) ist eine Sammelbezeichnung für spezielle mathematische Computerprogramme, die mathematische Probleme numerisch lösen können.
Beschreibung
Solver können als eigenständiges Softwarepaket existieren oder als Programmbibliothek in andere Softwaresysteme integriert sein.
Solver sind zumeist auf die Lösung spezieller Probleme programmiert, wie z. B.
- Lineare und Nichtlineare Gleichungssysteme
- Ganzrationale Funktionen
- Mathematische Optimierung
- Gewöhnliche Differentialgleichungen
- Erfüllbarkeitsproblem der Aussagenlogik
- Constraint-Satisfaction-Problem
- Kürzester-Pfad-Problem
- Minimaler-Spannbaum-Problem
- Suchverfahren
Mit dem General Problem Solver (GPS) versuchten Herbert Simon, J. C. Shaw und Allen Newell 1957 eine Software zu schreiben, die jedes formalisierbare Problem lösen kann. Dies war das erste Computerprogramm, das Wissen über das Problem (also sogenannte Anwendungsdomäne) und die Problemlösestrategie trennte (die sogenannte Engine).
Allgemeine Solver nutzen bis heute diese Architektur, bei der sie die Problemdefinition und die Lösungsstrategie trennen. Während bei GPS noch einzig das Ziel der Lösung die Vollständigkeit war, nutzen heutige Solver spezielle Strategien, die auf bestimmte Problemklassen zugeschnitten sind. Vorteil dieser Trennung ist, dass diese Solver universeller einsetzbar und nicht auf bestimmte Probleminstanzen abgestimmt werden müssen.
Da in bestimmten Problemklassen teilweise eine sehr große Anzahl an Lösungsalgorithmen existieren, nutzen Solver oft mehrere Lösungsstrategien gleichzeitig, um ein Problem zu lösen.
Beispiele
- General Problem Solver – Software mit einer allgemeinen Problemlösemethode
- SAT-Solver – Software für das Erfüllbarkeitsproblem der Aussagenlogik
- FE-Solver – Software zur Lösung von Finite-Elemente-Aufgaben (z. B. Nastran)
- STRIPS – Automatische Planungssoftware
Siehe auch
Einzelnachweise
- ↑ GAMS-Solvers. (Memento vom 26. November 2014 im Webarchiv archive.today)
- ↑ O. Goldschmit: LP Solver.
- 1 2 M. Lange: SAT-Solver. (PDF; 141 kB)