s algoritmos de força bruta podem ser dimensionado

Eu tenho um problema de matemática que resolvo por tentativa e erro (acho que isso é chamado de força bruta), e o programa funciona bem quando há algumas opções, mas à medida que adiciono mais variáveis / dados, leva mais e mais tempo para executar .

Meu problema é que, embora o protótipo funcione, ele é útil com milhares de variáveis e grandes conjuntos de dados; então, eu estou querendo saber se é possível escalar algoritmos de força bruta. Como posso abordar a escala?

Eu estava começando a aprender e brincar com Hadoop (e HBase); embora pareça promissor, eu queria verificar se o que estou tentando fazer não é impossível.

Se ajudar, escrevi o programa em Java (e posso usá-lo se possível), mas acabei portando-o para o Python, porque me sinto mais confortável com ele.

Atualizar Para fornecer mais informações, acho que vou adicionar uma versão simplificada do código para entender a ideia. Basicamente, se eu souber que a soma é 100, estou tentando encontrar todas as combinações das variáveis que poderiam ser iguais. Isso é simples, na minha versão eu posso usar números maiores e muitas outras variáveis. É o diofantino, e acredito que não existe um algoritmo para resolvê-lo sem força brut

int sum = 100;
int a1 = 20;
int a2 = 5;
int a3 = 10;
for (int i = 0; i * a1 <= sum; i++) {
    for (int j = 0; i * a1 + j * a2 <= sum; j++) {
        for (int k = 0; i * a1 + j * a2 + k * a3 <= sum; k++) {
            if (i * a1 + j * a2 + k * a3 == sum) {
              System.out.println(i + "," + j + "," + k);
            }
        }
    }   
}

Sou novo em programação e lamento se não estou enquadrando essa pergunta corretamente. Essa é mais uma pergunta geral.

questionAnswers(3)

yourAnswerToTheQuestion