ТС, все вам правильно говорят:
В дискретной математике эти пары можно явно выписать, и еще в некоторых областях дискретной математики как раз очень важно различие между формулой и функцией: так как любую функцию можно реализовывать разными формулами, то возникают задачи типа: найти формулу минимальной сложности для функции , доказать, что все формулы для сложные, оценить максимальную сложность самой маленькой формулы для некоторой функции и т.п. Поэтому это различие важно и его отмечают с самого начала.
Вот здесь
topic62784.html я писал код, и мне нужна была
функция, которая для каждого натурального аргумента возвращает ближайшую снизу степень тройки удвоенного модуля аргумента - ну так надо было для алгоритма. И в одном примере кода я написал её как
Код:
m = 1;
while m < 2*abs(int)/3
m = m*3;
end
а в другом - эту же функцию другой формулой
Код:
m = 3^fix(log(2*abs(int))/log(3))
. Можете убедиться, что обе формулы задают одну и ту же функцию. А теперь возвращаемся к цитате - первая формула длиннее по визуальной записи кода, но вторая скорее всего более затратна по машинным ресурсам - это зависит от реализации логарифма и наличия аппаратного деления. Именно поэтому при написании кода для определенных платформ актуально искать компромисс между скоростью выполнения/требуемому объему ОЗУ/объему флеш под алгоритм - и все это в зависимости от аппаратных возможностей (есть аппаратное деление или нет, RISC или CISC архитектура и т.п.). Обобщая понятие функции от однозначного соответствия числового результата числовому аргументу на более общее понятие - набора реакции системы в зависимости от состояния и истории изменения управляющих параметров, мы приходим к обобщению формулы на понятие алгоритм. И, как сказано выше, можно ставить задачу оптимизации формулы/алгоритма при заданных критериях и ограничениях.
ЗЫ да даже банальные многочлены никто не считает как
- это 3 сложения, 3 умножения и 2 возведения в степень (которые можно расписать через умножения), а считают по схеме Горнера
http://ru.wikipedia.org/wiki/%D0%A1%D1% ... 1%80%D0%B0Код:
y = a_3
y = a_2 + y*x
y = a_1 + y*x
y = a_0 + y*x
- 3 сложения и 3 умножения.