У меня есть математическая проблема, которую я решаю по пробным и ошибкам (я думаю, что это называется грубой силой), и программа работает нормально, когда есть несколько вариантов, но, как я Добавьте больше переменных / данных, которые требуется больше времени и дольше.
Моя проблема - хотя, хотя прототип работает, это полезно с тысячами переменных и больших наборов данных; Итак, мне интересно, можно ли масштабировать алгоритмы грубой силы. Как я могу приблизиться к расширению масштабирования?
Я начинал учиться и играть с Hadoop (и HBASE ); Хотя это выглядит многообещающе, я хотел проверить, что я пытаюсь сделать, не невозможно.
Если это поможет, я написал программу в Java (и может использовать ее, если это возможно), но в конечном итоге портировал его к Python, потому что я чувствую себя более комфортно с этим.
Обновление: Для обеспечения большего понимания, я думаю, что добавлю упрощенную версию кода, чтобы получить идею. В основном, если я знаю, что сумма 100, я пытаюсь найти все комбинации переменных, которые могут сравниться с ней. Это просто, в моей версии я могу использовать большие числа и многое другое переменные. Это диофантин, и я полагаю, что нет алгоритма, который существует, чтобы решить его без грубой силы.
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);
}
}
}
}
Я новичок в программировании, и мне жаль, если я не образую этот вопрос правильно. Это более общий вопрос.
-121--1404991-
Есть хороший способ объединить обозначенные инициализаторы от C99, с результатом Malloc
?
Следующее, похоже, имеет ненужное дублирование:
typedef struct {
int a, b, c;
} Type;
Type *t = malloc(sizeof *t);
*t = (Type) {
.a = 2,
.b = 3,
.c = 5,
};
может Использование типа
и * T
быть удалена из вышеуказанного кода?