Показать сообщение отдельно
Старый 29.01.2007, 19:14     # 26
v_mirgorodsky
Junior Member
 
Регистрация: 08.12.2004
Сообщения: 132

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