Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2010, 11:53   #1
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию Каков найэффективнейший метод для решения задачи?

Доброго всем
Есть формула i=(a*b)/(c*d);
известно что a,b,c,d это числа от 24 до 100, и задано i

Вопрос: Каким численным методом можно найэффективнее найти a,b,c,d?
И кстати буду благодарен за ссылку на литературу по алгоритму.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2010, 13:07   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Может симплекс-методом?
http://www.snipetz.com/math/sysanalysys/line/03.htm
psycho-coder вне форума Ответить с цитированием
Старый 24.11.2010, 13:22   #3
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

При таких ограничениях можно найти за секунду любым алгоритмом, так что я не вижу в этом требовании смысла) Простая оптимизация - перебирать 3 числа вместо 4. N^3 сложность (здесь и дальше параметром N будет ограничение на числа а...d)
Можно загнать в память пары произведений (т.е для каждого числа в пределах 10000 забить в память, как его можно представить в виде произведения двух чисел), и дальше перебрать пары вида і*x, x - получится сложность N^2.
Можно перебрать разложения i на пару множителей. Тогда у нас есть представление в виде a/c*b/d. Для каждой пары можно найти НОД за логарифмическое время и дальше проверить пару вида (a/GCD)/(c/GCD), можно за одиничное время определить, подходит ли она нам (домножить с на минимальное допустимое "подходящее" число и проверить, прокатит ли нам пара с этим с и соответственным а)
Общая сложность получается N*log(N).

Наверно, можно еще быстрее, это первое, что пришло на ум. Надо быстрее? Можно увидеть пример, зачем это надо? (Ограничения повыше или что-то в этом роде... Или это должно быть ручное вычисление?)
LeBron вне форума Ответить с цитированием
Старый 24.11.2010, 14:39   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Может симплекс-методом?
Ну как вариант...
Цитата:
При таких ограничениях можно найти за секунду любым алгоритмом
В принципе согласен. Это для подбора пар зубчатых колес по передаточному числу.

Ее то запускают не так часто и не так много народу, но до меня ее решали через БД, забивая все возможные значения в базу.
Я посчитал это излишеством. Четыре вложенных цикла делают свое дело но хотелось бы еще быстрее )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Звуковая студия для решения конкретной задачи Ivan_32 Софт 1 29.08.2009 23:26
Метод Гаусса с выбором главного элемента для решения СЛАУ lira_slava Помощь студентам 3 21.05.2009 20:56
Нужен Макрос, для решения конкретной задачи IREN_27 Microsoft Office Excel 5 23.04.2009 12:42
Метод перебора для нахождения решения "Судоку" ДЖО Помощь студентам 23 04.06.2008 22:29