Quando se estuda Teoria da Computação, recai-se muito em problemas da Matemática e vice-versa - até por isso existe o curso de Matemática Computacional. Uma das teorias interessantes trata sobre a redução de problemas: caso se tenha um problema A, cuja solução seja desconhecida, e se conhece um problema B com propriedades em comum, sendo possível a redução de uma instância de A para o problema B, utiliza-se a técnica de B para resolver A. Daí se depreende, não claramente a partir da explicação acima, que o problema A é mais complexo que B além de que toda nem toda solução resolve A.
A redução só é possível por meio da modelagem que se aplica ao problema A "transformando-o" em uma instância de B. Exemplo: se o problema A é para multiplicar n números, mas só se sabe como somá-los (problema B), como fazer? Modela-se o problema A como sendo somar repetidas vezes cada par de números, tendo assim o produto dois-a-dois; repete-se o procedimento para cada produto fazendo com que se torne fator de uma nova multiplicação até que se tenha o resultado correto. Computacionalmente isso é possível embora vá levar muito mais tempo, mas a questão de tempo só é levada em conta se você não o tem sobrando :)
Ainda em Computação, estuda-se uma classe de problemas chamada Programação Linear,
que trata de buscar o ótimo para uma dada função linear (função-objetivo) - ótimo é o maior valor, em módulo, que esta função pode assumir (querendo maximizar, é o maior valor, e o contrário para minimzar). Obviamente, para chegar ao ótimo, bastaria colocar os valores máximos nas variáveis e pronto. Vida e Computação não são óbvios (aprenda!). Desse jeito, os maiores valores são infinitos, e o ótimo também. Para controlar isso, existem as chamadas funções de restrição: equações ou inequações que servem como parâmetros aos valores que as variáveis da função-objetivo.
Para que tudo isso?
Nos muitos paralelos que faço relacionando "além-Computação" com Computação, acabo fazendo uma espécie de redução, ou seja, aplico um certo modelamento para tentar encontrar soluções que não sejam respostas prontas para instâncias específicas do Problema Maior, mas subsídios valiosos a seu entendimento.
Um exemplo disso é observar o que muitos consideram o objetivo da vida: serem felizes. Logicamente ser feliz acaba sendo resultado de momentos felizes, e uma função-objetiva aplicável seria maximizar esses momentos. Aí já se começa a entrar em Programação Linear, faltando somente as funções de restrição, o que acaba sendo até fácil de observar, por tratar-se de toda e qualquer coisa, pessoas, circunstância etc... qualquer coisa serve, pois tudo pode potencialmente (olha o plenoasmo!) ser restritivo à felicidade. É evidente que, minimizando-se as restrições, chega-se ao máximo na função objetivo.
"Grande! Isso eu já sabia!", tornaria o Pequeno Gafanhoto (agora com letra maiúscula). Matemática não é um mistério tão impossível quanto alguns pensam, porque mesmo ela, por increça que parível, derivou a partir da observação das coisas simples que aconteciam ao redor do homem, por isso não é surpresa e nem um grande mérito "matematizar" qualquer coisa.
Para escolha que se faz, há, pelo menos, uma renúncia a ser feita - senão não haveria o que escolher. Saber otimizar o valor das escolhas talvez não seja evidente, por não se conhecer a priori os resultados que podem trazer. Outra possibilidade é analisar o problema complementar: reduzir as perdas com as renúncias. Definição de prioridades é uma maneira de fazê-lo - isso equivaleria a atribuir pesos a cada possibilidade, ou seja, os valores dos coeficientes nas funções-objetivo.
Citada a idéia, agora basta que se traga o modelo à luz da realidade a nela o submeta para ver se funciona. Alguém se arrisca?