Цитата:
Сообщение от doro
Я то, например, находил в последовательности медианное или среднее арифметическое значение. Потом к наименьшему значению прибавлял, а от наибольшего отнимал тот коэффициент, с которым в данный момент работаем (начинаю всегда с наибольшего коэффициента), при условии, что результат сложения/вычитания не больше/меньше значения наибольшего/наименьшего значения последовательности в данный момент.
|
А вот это и есть решение задачи методом прямого перебора "в лоб". Начальное приближение, взятое как "медианное или среднее арифметическое значение" относится к стратегии ведения перебора вариантов. В зависимости от выбора стратегии можно получить более быструю или медленную сходимость к приемлемому результату.
Цитата:
Сообщение от doro
Но часто программа на этом моменте зацикливалась.
|
Здесь, вероятнее всего есть алгоритмическая или логическая ошибка. Скорее логическая, поскольку алгоритмическая проявлялась бы более регулярно. Еще, возможно, недостаточно хорошо проработано условие выхода из циклов перебора и/или фиксации приемлемого варианта. BTW, необходимо очень аккуратно следить, чтобы следующая итерация перебора возможно меньше зависела от результатов предыдущей - иначе очень вероятны зацикливания на определенных наборах входных значений.
Цитата:
Сообщение от doro
Да и тяжело и не красиво как-то. Чувствую есть какое-то более элегантное решение.
|
К сожалению, все переборы не отличаются красотой и имеют ограниченную область применения. Возможно и есть более элегантное решение вашей задачи, однако с моими познаниями в дискретной математике оно не просматривается.