Normalmente, ouço o "solucionador" usado para descrever o software, o que significa que ele se aplica a uma implementação específica de um algoritmo. Por exemplo, isso parece se aplicar à maioria das perguntas do SciComp.SE com a tag solver .
Geralmente, o termo parece ser reservado para problemas matemáticos com uma "solução bem definida". Uma solução única se qualificaria como suficiente "bem definido", conforme observado pela Sycorax nos comentários. (Os solucionadores de Gurobi parecem ser os problemas desta classe; pelo que vale Gurobi parece-me uma suíte ou biblioteca de solucionadores).
Mas não acho que único seja necessário . Por exemplo, problemas de otimização local e global podem ter soluções bem definidas, mas não exclusivas (por exemplo, a funçãof[ x ] = pecado[ πx]2 tem um mínimo global f[ k ] = 0 para k ∈ Z)
Discordo dessa resposta , que parece estar discutindo "solucionadores de sistemas de equações" em vez de "solucionadores de otimização". Por exemplo, em mínimos quadrados lineares, o problema de álgebra linear é superdeterminado, mas o problema de otimização é convexo , com uma solução exclusiva (em casos não degenerados). Observe também que a página "solucionador" da Wikipedia vinculada nessa resposta lista "problemas de otimização linear e não linear, problemas de caminho mais curto, problemas mínimos de extensão de árvore" entre seus exemplos.
Em resposta ao comentário, vou esclarecer o que quero dizer no caso "regressão".
Dada uma função F:Rn→Rm, uma solução para o sistema de equações especificado por
F[ x ] = 0
é um vetor
x∈Rn de modo que todos
m componentes de
F[x]são zero. Dependendo da função
F, não pode haver soluções, uma única solução única ou muitas soluções (geralmente muitas infinitas), dependendo da dimensão do
espaço nulo de
F. No caso em que
F é linear, ie
F[x]=Ax−b para alguns
A∈Rm×n,b∈Rm, nenhuma solução poderá existir a menos que
m≤rank[A]≤n.
Por outro lado, para uma determinada função objetiva EF:Rn→Re conjunto viável ΩF⊂Rn, que dependem de F, uma solução para o problema de otimização especificado por
ϵ=minx∈ΩFEF[x]
é um vetor
x∈ΩF de tal modo que
EF[x]≤EF[y] para todos
y∈ΩF.
Na otimização "mínimos quadrados", a função EFé uma soma de quadrados. Os dois problemas mais comuns de mínimos quadrados são 1)
EF[x]=∥F[x]∥2 , ΩF=Rn
onde corresponde a um sistema de equações
sobredeterminado e 2)
onde corresponde a um sistema de equações
sub-determinado .
FEF[x]=∥x∥2 , ΩF={y∈Rn ∣F[y]=0}
F
Plataformas comuns de álgebra linear, como o Matlab, podem combinar esses três problemas matemáticos distintos "sob o capô" na função de conveniência, como linsolve () . No entanto, bibliotecas de baixo nível ("solucionador"), como LAPACK , não serão.
Dois pontos finais de esclarecimento:
Um "solucionador" normalmente corresponde a um problema matemático bem definido, mas abstrato . Por exemplo, "inferência estatística" ou "previsão bem sucedida" não são esses problemas. Na linguagem da Ciência da Computação , você verifica um solucionador, valida um modelo.
- As idéias de exclusivo / não exclusivo ou exato / aproximado não são totalmente claras. Digamos que nos concentramos apenas no caso de sistemas quadrados de equações, que devem remover a maioria dos pontos de contenção. É onipresente falar de "solucionadores iterativos" nesse campo (por exemplo, ~ 600.000 acessos no Google Scholar ). Portanto, a definição de fato de "solucionador" deve incluir essa classe de algoritmos, que por definição são essencialmente inexatos.