8. Откуда берутся алгоритмы?

          Источников получения алгоритмов много. И главный из них – опыт мышления. Алгоритмы, приводящие к решению интересных для нac задач в условиях первой или второй природы, т.е. техники, можно получить экспериментально, подбирая действия, приводящие к желаемому результату. Их мы не будем выделять в отдельную группу и отнесем к эмпирическим. Эти алгоритмы для нас представляют наибольший интерес, потому что больше всего связаны с нашим опытом.
  Узнаете ли вы, в приведенных ниже строгих, в том числе математически, рассуждениях процесс, который привлекал внимание не только мое, но, думаю, и ваше в далеком уже детстве?
  «…«прощупывание» окрестности свелось к измерению значений функции в соседних точках, что позволяет найти наклон, крутизну по каждой координате.
А как только крутизны найдены, можно сдвинуться в новую точку, сделав «большой» шаг по каждой координате. Размер шага и главное его направление определяются величиной и знаком крутизны, а также коэффициентом пропорциональности, одинаковым для всех координат.
  Однако как же выбирать этот коэффициент? Здесь уже известны приемы: либо выбрать заранее, раз и навсегда, для всей итеративной (повторяющейся) процедуры, для любого шага, либо выбирать на каждом шаге наилучшее значение коэффициента, осуществляя одномерный поиск (ведь он — просто число), производя измерения значений функции при увеличении  от нуля, т. е. при движении от исходной точки по выбранному направлению и выбирая такое значение коэффициента, которое соответствует наилучшему из встречающихся на пути значений функции. В сущности для этого нет необходимости непосредственно знать, каково направление, какой путь проходит точка в n-мерном  пространстве при  изменении коэффициента. 
           Можно  просто определять по формулам, как изменяется любая координата при   его изменении, а по значениям координат измерить (или сосчитать) функцию цели. Тем самым каждому значению коэффициента ставится в соответствие определенное значение функции цели. Таким образом, пока координаты меняются не произвольно, а строго согласно написанным формулам, функция цели становится функцией единственного аргумента, которая тем самым играет роль координаты, отсчитывающей движение по выбранному в результате ощупывания пути!»
   Догадались? Да! Да! Именно прихотливый путь ручейка воды по асфальту описан здесь так основательно и точно. То, как ручеек ищет путь, чтобы стечь в самую низкую, доступную ему точку. В случае ручейка n = 3. И называется этот алгоритм оптимизации, подсмотренный каким то математиком у природы – метод наискорейшего спуска.
   Впрочем, узнать столь обычный, на первый взгляд, процесс, описанный не на языке чувственной информации, а на языке строгих формул, довольно легко только человеку, имеющему высокую  математическую подготовку, и для которого этот язык столь же близок и естественен из-за  длительности применения, как язык зрительных и других чувственных образов.   
   В процессе развития естественных наук наше сознание постепенно овладевало, но уже на другом уровне восприятия, переходя на другой язык описания, теми сведениями, которые нервной системе человека уже «были известны». Когда в 1644 г. Рене Декарт дал окончательную формулировку закона инерции, он осознал и представил в виде математической теории тот фундаментальный факт, который «на практике» дикий зверь, рассчитывавший свой прыжок, или охотник, метавший копье в бегущую лань, давно уже использовали с одинаковым успехом.  Значительно позже, уже в наше время, эта давняя практика человека, но уже в виде математической теории, была положена в основу алгоритмов артиллерийской стрельбы по движущейся цели.
   Изобретатель центробежного регулятора для паровой машины Уатт владел математикой в пределах четырех действий, а первые паровозы Стефенсона, развивающие скорость до 50 км/ч, создавались в начале 19 века даже без использования логарифмической линейки. В 20 веке теория центробежных регуляторов и паровозостроения была описана в столь многих книгах и обросла таким математическим аппаратом в которых, будь живы сами изобретатели, они не скоро разобрались бы.
           В качестве второго источника алгоритмов следует указать научную теорию из основных положений и установленных фактов которой алгоритмы в некоторых случаях могут быть выведены.
           Третьим источником новых алгоритмов может являться совокупность уже накопленных. Оказывается, с помощью специальных приемов из имеющихся алгоритмов можно получать новые алгоритмы.
           Наконец, четвертым источником алгоритмов может быть изобретательность их разработчика. Алгоритмы кодирования и декодирования по заданному ключу происходят из этого источника.
           Но как бы ни был получен алгоритм, он должен быть обоснован. Это означает, что если алгоритм  создан для решения определенной задачи, то необходима уверенность в том, что для всех исходных данных, для которых эта задача может быть решена, алгоритм позволяет получить решение и ни для каких исходных данных не дает неправильного результата. Это называется корректностью алгоритма.
           Корректность эмпирических алгоритмов обычно проверяют экспериментально. Какую-то уверенность в их корректности можно получить, если их многократное применение всегда приводит к необходимому результату, Однако одно только многократное экспериментальное подтверждение еще не вселяет полной уверенности.
           Полная уверенность в корректности эмпирического алгоритма возникает лишь в том случае, когда полученные с его помощью результаты не только подтверждаются экспериментально, но и согласуются со всеми другими накопленными и объединенными в научную теорию фактами данной области науки или техники.
           Если хотя бы один из даваемых алгоритмом результатов противоречит хотя бы одному из ранее установленных и получивших признание фактов, эмпирический алгоритм нельзя признать корректным (хотя после проверки может оказаться некорректным не алгоритм, а тот «факт», которому он противоречит).

См. продолжение в других частях монографии "Микроструктурирование мышления ..." в этом же разделе моей страницы.


Рецензии