Как имя ал хорезми связано с алгоритмом

Слово алгоритм содержит в своем составе преобразованное географическое название Хорезм. Термин «алгоритм» обязан своим происхождением великому ученому средневекового Востока — Муххамад ибн Муса ал-Хорезми (Магомет, сын Моисея, из Хорезма). Он жил приблизительно с 783 по 850 годы, и в 1983 году отмечалось 1200-летие со дня его рождения в городе Ургенче — областном центре современной Хорезмской области Узбекистана. В латинских переводах с арабского арифметического трактата ал-Хорезми его имя транскрибировалось как algorismi. Откуда и пошло слово «алгоритм» — сначала для обозначения алгоритмов цифровых вычислений десятичной позиционной арифметики, а затем для обозначения процессов, в которых искомые величины решаемых задач находятся последовательно из исходных данных по определенным правилам и инструкциям.

Во всех сферах своей деятельности, и в особенности в сфере обработки информации, человек сталкивается с различными способами или методиками решения задач. Они определяют порядок выполнения действий для получения желаемого результата — можно трактовать это как первоначальное или интуитивное определение алгоритма. Некоторые дополнительные требования приводят к неформальному определению алгоритма.

Алгоритм — это заданное на некотором языке конечное предписание, задающее конечную последовательность выполнимых элементарных операций для решения задачи, общее для класса возможных исходных данных. Пусть D — область (множество) исходных данных задачи, а R — множество возможных результатов, тогда мы можем говорить, что алгоритм осуществляет отображение D > R. Поскольку такое отображение может быть не полным, то вводятся следующие понятия: алгоритм называется частичным алгоритмом, если мы получаем результат только для некоторых , и полным алгоритмом, если алгоритм получает правильный результат для всех .

Несмотря на все усилия исследователей, отсутствует одно исчерпывающе строгое определение понятия «алгоритм». Поэтому в теории алгоритмов были введены различные формальные определения алгоритма. При этом удивительным научным результатом является доказательство эквивалентности этих формальных определений в смысле их равномощности.

Варианты словесного определения алгоритма принадлежат российским ученым А.Н. Колмогорову и А.А. Маркову.

Алгоритм по Колмогорову — это всякая система вычислений, выполняемых по строго определенным правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи.

Алгоритм по Маркову — это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату.

Следует отметить, что различные определения алгоритма, в явной или неявной форме, постулируют следующий ряд требований:

? алгоритм должен содержать конечное количество элементарно выполнимых предписаний, т.е. удовлетворять требованию конечности записи;

? алгоритм должен выполнять конечное количество шагов при решении задачи, т.е. удовлетворять требованию конечности действий;

? алгоритм должен быть единым для всех допустимых исходных данных, т.е. удовлетворять требованию универсальности;

? алгоритм должен приводить к правильному по отношению к поставленной задаче решению, т.е. удовлетворять требованию правильности.

Вплоть до 30-х годов прошлого столетия понятие алгоритма оставалось интуитивно понятным и имело скорее методологическое, а не математическое значение. К началу ХХ века много ярких примеров дала алгебра и теория чисел.

Среди них можно упомянуть алгоритм Евклида нахождения наибольшего общего делителя двух натуральных чисел или двух целочисленных многочленов, алгоритм Гаусса решения системы линейных уравнений над полем, алгоритм нахождения рациональных корней многочленов одного переменного с рациональными коэффициентами. К ним также можно отнести алгоритм Штурма определения числа действительных корней многочлена с действительными коэффициентами на некотором отрезке действительных чисел, алгоритм разложения многочлена одного переменного над конечным полем на неприводимые множители. Указанные алгоритмические проблемы решены путем указания конкретных разрешающих процедур. Очевидно, что для получения результатов такого типа достаточно понятия алгоритма в интуитивной интерпретации, т.е. в суждениях не алгоритмизированных, а основанных на особой проницательности, позволяющей угадывать правду. Достаточно подробно об этом пишет Р. Пенроуз в своих работах «Новый ум короля» и «Тени разума».

Однако в начале ХХ века были сформулированы алгоритмические проблемы, положительное решение которых представлялось маловероятным. Решение таких проблем потребовало привлечения новых логических средств. Ведь одно дело доказать существование разрешающего алгоритма — это можно сделать, используя интуитивное понятие алгоритма. Другое дело — доказать отсутствие алгоритма — для этого нужно знать точно, что такое алгоритм.

Начальной точкой отсчета современной теории алгоритмов можно считать работу немецкого математика Курта Гёделя (1931 год — теорема о неполноте символических логик), в которой было показано, что некоторые математические проблемы не могут быть решены алгоритмами из некоторого класса. Общность результата Гёделя связана с тем, совпадает ли использованный им класс алгоритмов с классом всех (в интуитивном смысле) алгоритмов. Эта работа дала толчок к поиску и анализу различных формализаций алгоритма.

Задача точного определения понятия алгоритма была решена в 30-х годах в работах Д. Гильберта, А. Чёрча, С. Клини, Э. Поста, А. Тьюринга в двух формах: на основе понятия рекурсивной функции и на основе описания алгоритмического процесса. Рекурсивная функция — это функция, для которой существует алгоритм вычисления ее значений по произвольному значению аргумента.

Класс рекурсивных функций был определен строго как конкретный класс функций в некоторой формальной системе. Был сформулирован тезис (называемый «тезис Чёрча»), утверждающий, что данный класс функций совпадает с множеством функций, для которых имеется алгоритм вычисления значений по значению аргументов.

Другой подход заключался в том, что алгоритмический процесс определяется как процесс, осуществимый на конкретно устроенной машине (называемой «машиной Тьюринга»). Был сформулирован тезис («тезис Тьюринга»), утверждающий, что любой алгоритм может быть реализован на подходящей машине Тьюринга. Оба данных подхода, а также другие подходы (А.А. Марков, Э. Пост) привели к одному и тому же классу алгоритмически вычислимых функций и подтвердили целесообразность использования тезиса Чёрча или тезиса Тьюринга для решения алгоритмических проблем.

В данном направлении получен ряд фундаментальных результатов. Среди них — отрицательное решение в 1952 году П.С. Новиковым классической проблемы тождества для конечно определенных групп, сформулированной Деном в 1912 году. Алгоритмическая неразрешимость знаменитой десятой проблемы Гильберта, сформулированной им среди других 23 проблем в 1900 году.

Задача о разрешимости диофантова уравнения. Пусть задано диофантово уравнение с произвольными неизвестными и целыми рациональными числовыми коэффициентами. Указать способ, при помощи которого возможно после конечного числа операций установить, разрешимо ли это уравнение в целых рациональных числах»), была доказана в 1970 году Ю.В. Мятиясевичем.

Для получения верхних оценок достаточно интуитивного понятия алгоритма. Для этого строится неформальный алгоритм решения конкретной задачи, после чего он формализуется для реализации на подходящей алгоритмической модели. Если показывается, что сложность (время или память) вычисления для этого алгоритма не превосходит значения подходящей функции при всех значениях аргумента, то эта функция объявляется верхней оценкой сложности решения рассматриваемой задачи. В области получения верхних оценок получено много ярких результатов для конкретных задач. Среди них разработаны быстрые алгоритмы умножения целых чисел, многочленов, матриц, решения линейных систем уравнений, которые требуют значительно меньше ресурсов, чем традиционные алгоритмы.

Установить нижнюю оценку — значит доказать, что никакой алгоритм вычисления не имеет сложности меньшей, чем заданная граница. Для получения результатов такого типа необходима точная фиксация рассматриваемой алгоритмической модели, и такие результаты получены только в очень жестких вычислительных моделях. В связи с этим получила развитие проблематика получения «относительных» нижних оценок, так называемая теория NP-полноты, связанная с трудной решаемостью переборных задач.

В результате продолжительных теоретических и практических изысканий были сформулированы основные требования к алгоритмам:

1. Каждый алгоритм имеет дело с данными — входными, промежуточными, выходными. Для того чтобы уточнить понятие данных, фиксируется конечный алфавит исходных символов (цифры, буквы и т.п.) и указываются правила построения алгоритмических объектов. Типичным используемым средством является индуктивное построение.

Например, определение идентификатора во многих алгоритмических языках: идентификатор — это либо буква, либо идентификатор, к которому приписана справа либо буква, либо цифра. Слова конечной длины в конечных алфавитах — наиболее обычный тип алгоритмических данных, а число символов в слове — естественная мера объема данных. Другой случай алгоритмических объектов — формулы. Примером могут служить формулы алгебры предикатов и алгебры высказываний.

2. Алгоритм для размещения данных требует памяти. Память обычно считается однородной и дискретной, т.е. она состоит из одинаковых ячеек, причем каждая ячейка может содержать один символ данных, что позволяет согласовать единицы измерения объема данных и памяти.

3. Алгоритм состоит из отдельных элементарных шагов, причем множество различных шагов, из которых составлен алгоритм, конечно. Типичный пример множества элементарных шагов — система команд ЭВМ.

4. Последовательность шагов алгоритма детерминирована, то есть после каждого шага указывается, какой шаг следует выполнять дальше, либо указывается, когда следует работу алгоритма считать законченной.

5. Алгоритм должен обладать результативностью, то есть останавливаться после конечного числа шагов (зависящего от исходных данных) с выдачей результата. Данное свойство иногда называют сходимостью алгоритма.

6. Алгоритм предполагает наличие механизма реализации, который по описанию алгоритма порождает процесс вычисления на основе исходных данных. Предполагается, что описание алгоритма и механизм его реализации конечны.

Можно заметить аналогию с вычислительными машинами. Требование 1 соответствует цифровой природе ЭВМ, требование 2 — памяти ЭВМ, требование 3 — программе машины, требование 4 — её логической природе, требования 5, 6 — вычислительному устройству и его возможностям.

Имеются также некоторые черты неформального понятия алгоритма, относительно которых не достигнуто окончательного соглашения. Эти черты можно сформулировать в виде вопросов и ответов.

1. Следует ли фиксировать конечную границу для размера входных данных?

2. Следует ли фиксировать конечную границу для числа элементарных шагов?

3. Следует ли фиксировать конечную границу для размера памяти?

4. Следует ли ограничить число шагов вычисления?

На все эти вопросы далее принимается ответ «НЕТ», хотя возможны и другие варианты ответов, поскольку у физически существующих ЭВМ соответствующие размеры ограничены. Однако теория, изучающая алгоритмические вычисления, осуществимые в принципе, не должна считаться с такого рода ограничениями, поскольку они преодолимы, по крайней мере, в принципе (например, любой фиксированный размер памяти всегда можно увеличить на одну ячейку).

Таким образом, уточнение понятия алгоритма связано с уточнением алфавита данных и формы их представления, памяти и размещения в ней данных, элементарных шагов алгоритма и механизма реализации алгоритма. Однако эти понятия сами нуждаются в уточнении.

Ясно, что их словесные определения потребуют введения новых понятий, для которых, в свою очередь, снова потребуются уточнения и т.д. Поэтому в теории алгоритмов принят другой подход, основанный на конкретной алгоритмической модели, в которой все сформулированные требования выполняются очевидным образом. При этом используемые алгоритмические модели универсальны, то есть моделируют любые другие разумные алгоритмические модели, что позволяет снять возможное возражение против такого подхода: не приводит ли жесткая фиксация алгоритмической модели к потере общности формализации алгоритма? Поэтому данные алгоритмические модели отождествляются с формальным понятием алгоритма.

Всякому алгоритму соответствует задача, для решения которой он был построен. Обратное утверждение в общем случае является неверным по двум причинам: во-первых, одна и та же задача может решаться различными алгоритмами; во-вторых, можно предположить (пока), что имеются задачи, для которых алгоритм вообще не может быть построен.

Как уже отмечалось, термин «алгоритм» появился в математике достаточно давно и использовался долго — под ним понималась процедура, позволявшая путем выполнения последовательности определенных элементарных шагов получать однозначный результат, не зависящий от того, кто эти шаги выполнял. Таким образом, само проведенное решение служило доказательством существования алгоритма. Однако был известен целый ряд математических задач, разрешить которые в общем виде не удавалось. Примерами могут послужить три древние геометрические задачи: о трисекции угла, о квадратуре круга и об удвоении куба — ни одна из них не имеет общего способа решения с помощью циркуля и линейки без делений.

Интерес математиков к задачам подобного рода привел к постановке вопроса: возможно ли, не решая задачи, доказать, что она алгоритмически неразрешима, т.е. что нельзя построить алгоритм, который обеспечил бы ее общее решение? Ответ на этот вопрос важен, в том числе и с практической точки зрения, например, бессмысленно пытаться решать задачу на компьютере и разрабатывать для нее программу, если доказано, что она алгоритмически неразрешима.

Именно для ответа на данный вопрос и понадобилось сначала дать строгое определение алгоритма, без чего обсуждение его существования просто не имело смысла. Построение такого определения, как мы знаем, привело к появлению формальных алгоритмических систем, что дало возможность математического доказательства неразрешимости ряда проблем. Оно сводится к доказательству невозможности построения рекурсивной функции, решающей задачу, либо к невозможности построения машины Тьюринга для нее, либо несостоятельности любой другой модели. То есть задача считается алгоритмически неразрешимой, если не существует машины Тьюринга (или рекурсивной функции, или нормального алгоритма Маркова), которая ее решает.

Первые доказательства алгоритмической неразрешимости касались некоторых вопросов логики и самой теории алгоритмов. Оказалось, например, что неразрешима задача установления истинности произвольной формулы исчисления предикатов — эта теорема была доказана в 1936 г. Чёрчем.

В 1946-47 гг. А.А. Марков и Э. Пост независимо друг от друга доказали отсутствие алгоритма для распознавания эквивалентности слов в любом ассоциативном исчислении.

В теории алгоритмов к алгоритмически неразрешимой относится «проблема остановки»: можно ли по описанию алгоритма (Q) и входным данным (x) установить, завершится ли выполнение алгоритма результативной остановкой? Эта проблема имеет прозрачную программистскую интерпретацию. Часто ошибки разработки программы приводят к зацикливанию — ситуации, когда цикл не завершается и не происходит завершения работы программы и остановки. Неразрешимость проблемы остановки означает, что нельзя создать общий, пригодный для любой программы алгоритм отладки программ. Неразрешимой оказывается и проблема распознавания эквивалентности алгоритмов: нельзя построить алгоритм, который для любых двух алгоритмов выяснял бы, всегда ли они приводят к одному и тому же результату или нет.

Важность доказательства алгоритмической неразрешимости в том, что если такое доказательство получено, оно имеет смысл закона-запрета, позволяющего не тратить усилия на поиск решения, подобно тому, как законы сохранения в физике делают бессмысленными попытки построения вечного двигателя. Вместе с этим необходимо сознавать, что алгоритмическая неразрешимость какой-либо задачи в общей постановке не исключает возможности того, что разрешимы какие-то её частные случаи. Справедливо и обратное утверждение: решение частного случая задачи еще не дает повода считать возможным её решения в самом общем случае, т.е. не свидетельствует об ее общей алгоритмической разрешимости.

Роль абстрактных алгоритмических систем в том, что именно они позволяют оценить возможность нахождения общего решения некоторого класса задач. Для специалиста в области информатики важно сознавать, что наличие алгоритмически неразрешимых проблем приводит к тому, что оказывается невозможным построить универсальный алгоритм, пригодный для решения любой задачи. К подобным проблемам приводят и попытки алгоритмизировать сложную интеллектуальную деятельность человека, например, обучение других людей, сочинение стихов и пр.

Источник: studentopedia.ru

В День программиста. Кто придумал алгоритм?

Недавно я подумал, что в глазах юных граждан двадцать первого века, с детства привыкших к компьютеру, я — мамонт какой-то, живший в доисторические времена. Мне пришлось работать еще на вычислительных агрегатах, которые занимали несколько комнат. Учебники, по которым мне пришлось учиться, поминали древнеримский абак и Аль-Хорезми (786 — 850).

Впрочем, и сейчас мы нет-нет да и помянем великого этого ученого, к месту и не к месту вставляя в свою речь слово «алгоритм». Потому что произошло это слово из латинского написания (alhorithm) арабского имени ученого: «аль-Хорезми», то есть «из Хорезма».

Благодаря тому, что Хорезм вместе со всем Узбекистаном в свое время входил в Советский Союз, аль-Хорезми считался более «нашим», чем другие ученые — его современники. Хотя судя по другому его имени, «аль-Маджуси» (из магов), происхождения он был, скорее всего, персидского, из рода зороастрийских жрецов, которых называли «магами». Впрочем, в те времена, графы «национальность» ни в каких документах не ставили, поскольку и понятия такого в заводе не было.

В Хиве сейчас и памятник стоит знаменитому земляку. Хотя большую часть своей жизни аль-Хорезми прожил вдали от Хорезма, в Багдаде. Багдад того времени был город молодой и динамичный. Его основали в 762 году как столицу новорожденного халифата. Несколько поколений халифов (среди них и знаменитый по «Тысяче и одной ночи» Гарун аль-Рашид) строили и украшали свою новую столицу.

Сын Гаруна аль-Рашида, аль-Мамун, организовал в Багдаде «дом мудрости», нечто вроде академии. Очень скоро «дом мудрости» стал одним из главных средоточий учености в тогдашнем мире.

И не только учености мусульманской. В здешнюю библиотеку собирали труды античных, византийских, индийских, персидских ученых и философов и переводили их на арабский язык. Труд переводчиков оплачивался замечательно — золота за работу отвешивали столько же, сколько весил переведенный трактат. В библиотеке «дома мудрости» (а это была только одна из многих багдадских библиотек) переждали тяжелые времена труды многих древнегреческих философов, чтобы спустя столетия-лихолетия возвратиться в Европу и заложить основу европейской науки и философии.

Именно эту библиотеку при халифе аль-Мамуне возглавил аль-Хорезми. Однако был он не только библиотекарем и собирателем книг, но и ученым.

Подобно тому, как на багдадском рынке встречались товары из Индии, из Аравии и из Европы, так и в «доме мудрости» сходились учения и умения из всех окрестных стран. На багдадском базаре происходил обмен товаров. В багдадском «доме мудрости» происходил обмен знаниями. Но знания, в отличие от ковров или пряностей, обладают замечательным свойством: отдавая, ты их не теряешь.

Аль-Хорезми написал трактат по арифметике, который назывался «Об индийском счёте». Для того времени книга эта оказалась таким же «усилителем интеллекта», каким в двадцатом веке стал компьютер. Сложение и вычитание больших чисел перестало быть сокровенным знанием, за которое в университетах выдавали степень доктора. А произошло это всего-навсего из-за двух изобретений.

Оба изобретения кажутся нам сейчас очевидными, что, впрочем, не умаляет их гениальности. Оба родились в Индии, но всему миру рассказал о них аль-Хорезми по-арабски.

Первым изобретением была позиционная система счисления, в которой для записи числа применялось некоторое конечное количество знаков (цифр). При этом числовое значение цифры определялось ее положением в записи (позицией).

Все достоинства позиционной системы становятся очевидными, если сравнить привычную нам десятеричную систему счисления с какой-нибудь непозиционной системой записи чисел. Например, с римской, в которой для записи чисел применяются буквы латинского алфавита. I=1, V=5, X=10, L=50, C=100, D=500, M=1000. Число записывается слева направо, сначала бо`льшие цифры, потом меньшие.

Результирующее число получается сложением всех цифр. MDCLXVI=1000+500+100+50+10+1=1661. Запись IVXLCDM считается неправильной, потому что в ней цифры с меньшим значением предшествуют цифрам с бо`льшим значением. Если рядом стоят две или три одинаковые римские цифры I, C или M, они складываются. II=2, MMM=3000.

Вместо написания подряд четырех одинаковых цифр I, X и C, эту цифру вычитают из цифр V, L и D соответственно. Для этого меняют порядок следования цифр и меньшую ставят слева от бо`льшей. IV=5−1=4. XL=50−10=40. Запись IC — неправильная, потому что из C вычитание не производится.

Запись IL — тоже неправильная, потому что из L можно вычесть только соседнюю младшую цифру, X. Четыре одинаковые цифры римляне писали только в одном случае: IIII=4. Это делалось для того, чтобы не употреблять без надобности инициал верховного божества, Юпитера, IV.

Ну что, все понятно? Тогда небольшое упражнение. Какое событие произошло в MDCDLXI году?
В MDCDLXI=1000+500−100+500+50+10+1=1961 году произошло много событий, но главное, вероятно, полет человека в космос. Который вряд ли совершился бы, если бы баллистические расчеты производились в римской, непозиционной, и потому очень громоздкой системе счисления.

Ну, и второй вопрос. Какое самое большое число можно написать с помощью римских цифр?
Очевидно, MMMCMXCIX=3000+900+90+9=3999. Мы тут боимся, что в 2012 году произойдет конец света из-за того, что кончается календарь майя, а у древних римлян вся арифметика на 4000 заканчивалась — и ничего страшного!

Вторым великим изобретением, облегчившим человечеству счет, было создание знака, обозначающего отсутствие какого-либо числа. Индийцы называли этот знак «сунья» («пустота»). Аль-Хорезми перевел его на арабский словом «сифр», имеющим то же значение. От этого слова произошло слово «цифра». И слово «шифр» тоже.

Мы называем эту цифру «нулем» от латинского слова «nullus» («никакой»).

Благодаря этим двум великим изобретениям стало возможным всего лишь с помощью десяти цифр единообразно записать как сколь угодно большое, так и сколь угодно малое число. Более того, теперь правила сложения и вычитания многозначных чисел упростились настолько, что стало возможным обучить им даже ребятишек. Все мы выучили эти правила еще в первом классе и запомнили их навсегда. Если вдруг под рукой не оказалось калькулятора, любой сможет произвести вычисления «на бумажке». Или уже не любой?

Правила сложения и вычитания для многозначных чисел, записанных в десятичной системе счисления, аль-Хорезми сформулировал в своей «Книге об индийском счете» в виде точной последовательности действий, которые надо произвести для того, чтобы прийти к требуемому результату. Такая последовательность инструкций и называется алгоритмом. Один алгоритм в этом тексте уже был. Это правило записи чисел с помощью римских цифр, которое находится четырьмя абзацами выше. Для удобства я выделил его курсивом.

Другой трактат аль-Хорезми был посвящен решению линейных и квадратных уравнений. В этой книге (опять же в виде алгоритмов) был описан процесс решения задач, сводимых к линейным или квадратным уравнениям. Трактат назывался «Книга о восстановлении и противопоставлении», или по-арабски «Китаб аль-джебр валь-мукабала».

От этого самого «аль-джебр» произошло слово «алгебра», как название науки о решении уравнений. Таким образом, книгу аль-Хорезми можно считать самым первым учебником алгебры, но без привычных нам формул. Формульную запись алгебраических алгоритмов ввел только французский математик Франсуа Виет (François Viète)(1540 — 1603).

Третья книга аль-Хорезми была посвящена календарю. В ней рассматривались системы счисления времени у всех окрестных народов и, главное, описывались алгоритмы перевода дат между разными календарями. Надо сказать, что эти алгоритмы с небольшими изменениями используются и в современных компьютерах

Источник: www.shkolazhizni.ru

История алгоритма

Книга Аль-Хорезми.jpg

Слово алгоритм происходит от имени великого среднеазиатского ученого 8–9 вв. Абу Абдуллах Мухаммеда ибн Мусса аль-Хорезми. Из математических работ Аль-Хорезми до нас дошли только две – алгебраическая и арифметическая. Вторая книга долгое время считалась потерянной, но в 1857 в библиотеке Кембриджского университета был найден ее перевод на латинский язык.

В ней описаны четыре правила арифметических действий, практически те же, что используются и сейчас. Первые строки этой книги были переведены так: «Сказал Алгоритми. Воздадим должную хвалу Богу, нашему вождю и защитнику». Так имя Аль-Хорезми перешло в Алгоритми, откуда и появилось слово алгоритм. Термин алгоритм употреблялся для обозначения четырех арифметических операций, именно в таком значении он и вошел в некоторые европейские языки.

Постепенно значение слова расширялось. Учёные начинали применять его не только к сугубо вычислительным, но и к другим математическим процедурам. Например, около 1360 г. французский философ Николай Орем написал математический трактат «Algorismus proportionum» («Вычисление пропорций»), в котором впервые использовал степени с дробными показателями и фактически вплотную подошёл к идее логарифмов. Когда же на смену абаку пришёл так называемый счёт на линиях, многочисленные руководства по нему стали называть «Algorithmus linealis», то есть правила счёта на линиях.

В 1684 году Готфрид Лейбниц в сочинении «Nova Methodvs pro maximis et minimis, itemque tangentibus…» впервые использовал слово «алгоритм» (Algorithmo) в ещё более широком смысле: как систематический способ решения проблем дифференциального исчисления.

Готфрид Лейбниц.jpg

Пользовался словом алгоритм и Леонард Эйлер, одна из работ которого так и называется — «Использование нового алгоритма для решения проблемы Пелля» («De usu novi algorithmi in problemate Pelliano solvendo»). Понимание Эйлером алгоритма как синонима способа решения задачи уже очень близко к современному.

Историки датируют 1691 годом один из списков древнерусского учебника арифметики, известного как «Счётная мудрость». Это сочинение известно во многих вариантах и восходит к ещё более древним рукописям XVI в. По ним можно проследить, как знание арабских цифр и правил действий с ними постепенно распространялось на Руси.

Таким образом, слово «алгоритм» понималось первыми русскими математиками так же, как и в Западной Европе. Однако его не было ни в знаменитом словаре В. И. Даля, ни спустя сто лет в «Толковом словаре русского языка» под редакцией Д. Н. Ушакова (1935 г.). Зато слово «алгорифм» можно найти и в популярном дореволюционном Энциклопедическом словаре братьев Гранат, и в первом издании Большой Советской Энциклопедии (БСЭ), изданном в 1926 г. И там, и там оно трактуется одинаково: как правило, по которому выполняется то или иное из четырёх арифметических действий в десятичной системе счисления. Однако к началу XX в. для математиков слово «алгоритм» уже означало любой арифметический или алгебраический процесс, выполняемый по строго определённым правилам, и это объяснение также даётся в БСЭ.

Точное определение понятия алгоритма дало возможность доказать алгоритмическую неразрешимость многих математических проблем. Появление первых проектов вычислительных машин (А.Тьюринг, Э.Пост ) стимулировало исследование возможностей практического применения алгоритмов, использование которых, ввиду их трудоемкости, было ранее недоступно. Дальнейший процесс развития вычислительной техники определил развитие теоретических и прикладных аспектов изучения алгоритмов.

Современный взгляд на алгоритмизацию.

Теория алгоритмов строит и изучает конкретные модели алгоритмов. С развитием вычислительной техники и теории программирования возрастает необходимость построения новых экономичных алгоритмов, изменяются способы их построения, способы записи алгоритмов на языке, понятном исполнителю. Особый тип исполнителя алгоритмов – компьютер, поэтому необходимо создавать специальные средства, позволяющие, с одной стороны, разработчику в удобном виде записывать алгоритмы, а с другой – дающие компьютеру возможность понимать написанное. Такими средствами являются языки программирования или алгоритмические языки.

Источник: letopisi.org

Рейтинг
( Пока оценок нет )
Загрузка ...
Заработок в интернете или как начать работать дома