Википедия

Вычислительный алгоритм

Алгори́тм (лат. algorithmi — от имени среднеазиатского математика Аль-Хорезми) — совокупность точно заданных правил решения некоторого класса задач или набор инструкций, описывающих порядок действий исполнителя для решения определённой задачи. В старой трактовке вместо слова «порядок» использовалось слово «последовательность», но по мере развития параллельности в работе компьютеров слово «последовательность» стали заменять более общим словом «порядок». Независимые инструкции могут выполняться в произвольном порядке, параллельно, если это позволяют используемые исполнители.

Ранее в русском языке писали «алгорифм», сейчас такое написание используется редко, но тем не менее имеет место исключение (нормальный алгорифм Маркова).

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

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

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

Частичная формализация понятия алгоритма началась с попыток решения проблемы разрешения (нем. Entscheidungsproblem), которую сформулировал Давид Гильберт в 1928 году. Следующие этапы формализации были необходимы для определения эффективных вычислений или «эффективного метода»; среди таких формализаций — рекурсивные функции Геделя — Эрбрана — Клини 1930, 1934 и 1935 гг., λ-исчисление Алонзо Чёрча 1936 г., «Формулировка 1» Эмиля Поста 1936 года и машина Тьюринга.

История термина

image
Титульная страница «Алгебры» аль-Хорезми
image
Аль-Хорезми на советской марке

Современное формальное определение вычислительного алгоритма было дано в 30—50-е годы XX века в работах Тьюринга, Поста, Чёрча (тезис Чёрча — Тьюринга), Н. Винера, А. А. Маркова.

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

В первой половине XII века книга аль-Хорезми в латинском переводе проникла в Европу. Переводчик, имя которого до нас не дошло, дал ей название Algoritmi de numero Indorum («Алгоритмы о счёте индийском») — таким образом, латинизированное имя среднеазиатского учёного было вынесено в заглавие книги. Сегодня считается, что слово «алгоритм» попало в европейские языки именно благодаря этому переводу. В течение нескольких следующих столетий появилось множество других трудов, посвящённых всё тому же вопросу — обучению искусству счёта с помощью цифр, и все они имели в названии слово algoritmi или algorismi.

Про аль-Хорезми позднейшие авторы ничего не знали, но поскольку первый перевод книги начинается словами: «Dixit algorizmi: …» («Аль-Хорезми говорил: …»), всё ещё связывали это слово с именем конкретного человека. Очень распространённой была версия о греческом происхождении книги. В англо-норманнской рукописи XIII века, написанной в стихах, читаем:

Алгоризм был придуман в Греции.

Это часть арифметики. Придуман он был мастером по имени Алгоризм, который дал ему своё имя. И поскольку его звали Алгоризм,

Он назвал свою книгу «Алгоризм».

Около 1250 года английский астроном и математик Иоанн Сакробоско написал труд по арифметике Algorismus vulgaris, на столетия ставший основным учебником по вычислениям в десятичной позиционной системе счисления во многих европейских университетах. Во введении Сакробоско назвал автором науки о счёте мудреца по имени Алгус (Algus). А в популярной средневековой поэме «Роман о Розе» (1275—1280) Жана де Мена «греческий философ Алгус» ставится в один ряд с Платоном, Аристотелем, Евклидом и Птолемеем! Встречался также вариант написания имени Аргус (Argus). И хотя, согласно древнегреческой мифологии, корабль «Арго» был построен Ясоном, именно этому Арго приписывалось строительство корабля.

«Мастер Алгус» (или Аргус) стал в средневековой литературе олицетворением счётного искусства. И в уже упоминавшемся «Романе о розе», и в известной итальянской поэме «Цветок», написанной Дуранте, имеются фрагменты, в которых говорится, что даже «mestre Argus» не сумеет подсчитать, сколько раз ссорятся и мирятся влюблённые. Английский поэт Джефри Чосер в поэме «Книга герцогини» (1369 г.) пишет, что даже «славный счётчик Аргус» (noble countour Argu) не сможет счесть чудовищ, явившихся в кошмарных видениях герою.

Однако со временем такие объяснения всё менее занимали математиков, и слово algorism (или algorismus), неизменно присутствовавшее в названиях математических сочинений, обрело значение способа выполнения арифметических действий посредством арабских цифр, то есть на бумаге, без использования абака. Именно в таком значении оно вошло во многие европейские языки. Например, с пометкой «устар.» оно присутствует в представительном словаре английского языка Webster’s New World Dictionary, изданном в 1957 году Энциклопедический словарь Брокгауза и Ефрона предлагает такую трактовку: алгорифм (до революции использовалось написание алгориѳмъ, через фиту) производится «от арабского слова „аль-горетм“, то есть корень».

Алгоритм — это искусство счёта с помощью цифр, но поначалу слово «цифра» относилось только к нулю. Знаменитый французский трувер Готье де Куанси (Gautier de Coincy, 1177—1236) в одном из стихотворений использовал слова algorismus-cipher (которые означали цифру 0) как метафору для характеристики абсолютно никчёмного человека. Очевидно, понимание такого образа требовало соответствующей подготовки слушателей, а это означает, что новая система счисления уже была им достаточно хорошо известна.

Многие века абак был фактически единственным средством для практичных вычислений, им пользовались и купцы, и менялы, и учёные. Достоинства вычислений на счётной доске разъяснял в своих сочинениях такой выдающийся мыслитель, как Герберт Аврилакский (938—1003), ставший в 999 году папой римским под именем Сильвестра II. Новое с огромным трудом пробивало себе дорогу, и в историю математики вошло упорное противостояние лагерей алгорисмиков и абацистов (иногда называемых гербекистами), которые пропагандировали использование для вычислений абака вместо арабских цифр. Интересно, что известный французский математик Николя Шюке (Nicolas Chuquet, 1445—1488) в реестр налогоплательщиков города Лиона был вписан как алгорисмик (algoriste). Но прошло не одно столетие, прежде чем новый способ счёта окончательно утвердился, столько времени потребовалось, чтобы выработать общепризнанные обозначения, усовершенствовать и приспособить к записи на бумаге методы вычислений. В Западной Европе учителей арифметики вплоть до XVII века продолжали называть «магистрами абака», как, например, математика Никколо Тарталью (1500—1557).

Итак, сочинения по искусству счёта назывались Алгоритмами. Из многих сотен можно выделить и такие необычные, как написанный в стихах трактат Carmen de Algorismo (латинское carmen и означает стихи) Александра де Вилла Деи (Alexander de Villa Dei, ум. 1240) или учебник венского астронома и математика Георга Пурбаха (Georg Peurbach, 1423—1461) Opus algorismi jocundissimi («Веселейшее сочинение по алгоритму»).

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

Можно обратить внимание на то, что первоначальная форма algorismi спустя какое-то время потеряла последнюю букву, и слово приобрело более удобное для европейского произношения вид algorism. Позднее и оно, в свою очередь, подверглось искажению, скорее всего, связанному со словом arithmetic.

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

В XVIII веке в одном из германских математических словарей, Vollstandiges mathematisches Lexicon (изданном в Лейпциге в 1747 году), термин algorithmus всё ещё объясняется как понятие о четырёх арифметических операциях. Но такое значение не было единственным, ведь терминология математической науки в те времена ещё только формировалась. В частности, выражение algorithmus infinitesimalis применялось к способам выполнения действий с бесконечно малыми величинами. Пользовался словом алгоритм и Леонард Эйлер, одна из работ которого так и называется — «Использование нового алгоритма для решения проблемы Пелля» (De usu novi algorithmi in problemate Pelliano solvendo). Мы видим, что понимание Эйлером алгоритма как синонима способа решения задачи уже очень близко к современному.

Однако потребовалось ещё почти два столетия, чтобы все старинные значения слова вышли из употребления. Этот процесс можно проследить на примере проникновения слова «алгоритм» в русский язык.

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

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

image
Баронесса Ада Лавлейс в 1836/1837 годах написала алгоритм для вычисления чисел Бернулли на разностной машине Бэббиджа, за что её считают первым программистом в истории.

Алгоритмы становились предметом всё более пристального внимания учёных, и постепенно это понятие заняло одно из центральных мест в современной математике. Что же касается людей, от математики далёких, то к началу сороковых годов это слово они могли услышать разве что во время учёбы в школе, в сочетании «алгоритм Евклида». Несмотря на это, алгоритм всё ещё воспринимался как термин сугубо специальный, что подтверждается отсутствием соответствующих статей в менее объёмных изданиях. В частности, его нет даже в десятитомной Малой советской энциклопедии (1957 г.), не говоря уже об однотомных энциклопедических словарях. Но зато спустя десять лет, в третьем издании Большой советской энциклопедии (1969 год) алгоритм уже характеризуется как одна из основных категорий математики, «не обладающих формальным определением в терминах более простых понятий, и абстрагируемых непосредственно из опыта». Как мы видим, отличие даже от трактовки первым изданием БСЭ разительное! За сорок лет алгоритм превратился в одно из ключевых понятий математики, и признанием этого стало включение слова уже не в энциклопедии, а в словари. Например, оно присутствует в академическом «Словаре русского языка» (1981 г.) именно как термин из области математики.

Одновременно с развитием понятия алгоритма постепенно происходила и его экспансия из чистой математики в другие сферы. И начало ей положило появление компьютеров, благодаря которому слово «алгоритм» вошло в 1985 году во все школьные учебники информатики и обрело новую жизнь. Вообще можно сказать, что его сегодняшняя известность напрямую связана со степенью распространения компьютеров. Например, в третьем томе «Детской энциклопедии» (1959 г.) о вычислительных машинах говорится немало, но они ещё не стали чем-то привычным и воспринимаются скорее как некий атрибут светлого, но достаточно далёкого будущего. Соответственно и алгоритмы ни разу не упоминаются на её страницах. Но уже в начале 70-х гг. прошлого столетия, когда компьютеры перестали быть экзотической диковинкой, слово «алгоритм» стремительно входит в обиход. Это чётко фиксируют энциклопедические издания. В «Энциклопедии кибернетики» (1974 год) в статье «Алгоритм» он уже связывается с реализацией на вычислительных машинах, а в «Советской военной энциклопедии» (1976 г.) даже появляется отдельная статья «Алгоритм решения задачи на ЭВМ».

За последние полтора-два десятилетия компьютер стал неотъемлемым атрибутом нашей жизни, компьютерная лексика становится всё более привычной. Слово «алгоритм» в наши дни известно, вероятно, каждому. Оно уверенно шагнуло даже в разговорную речь, и сегодня мы нередко встречаем в газетах и слышим в выступлениях политиков выражения вроде «алгоритм поведения», «алгоритм успеха» или даже «алгоритм предательства». Академик Н. Н. Моисеев назвал свою книгу «Алгоритмы развития», а известный врач Н. М. Амосов — «Алгоритм здоровья» и «Алгоритмы разума». А это означает, что слово живёт, обогащаясь всё новыми значениями и смысловыми оттенками.

Определения алгоритма

Свойства алгоритмов

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

  • Дискретность — алгоритм должен представлять процесс решения задачи как упорядоченное выполнение некоторых простых шагов. При этом для выполнения каждого шага алгоритма требуется конечный отрезок времени, то есть преобразование исходных данных в результат осуществляется во времени дискретно.
  • Детерминированность (определённость). В каждый момент времени следующий шаг работы однозначно определяется состоянием системы. Таким образом, алгоритм выдаёт один и тот же результат (ответ) для одних и тех же исходных данных. В современной трактовке у разных реализаций одного и того же алгоритма должен быть изоморфный граф. С другой стороны, существуют вероятностные алгоритмы, в которых следующий шаг работы зависит от текущего состояния системы и генерируемого случайного числа. Однако при включении метода генерации случайных чисел в список «исходных данных» вероятностный алгоритм становится подвидом обычного.
  • Понятность — алгоритм должен включать только те команды, которые доступны исполнителю и входят в его систему команд.
  • Завершаемость (конечность) — в более узком понимании алгоритма как математической функции, при правильно заданных начальных данных алгоритм должен завершать работу и выдавать результат за определённое число шагов. Дональд Кнут называет процедуру, которая удовлетворяет всем свойствам алгоритма, кроме, возможно, конечности, методом вычисления (англ. computational method). Однако довольно часто определение алгоритма не включает завершаемость за конечное время. В этом случае алгоритм (метод вычисления) определяет [англ.]. Для вероятностных алгоритмов завершаемость как правило означает, что алгоритм выдаёт результат с вероятностью 1 для любых правильно заданных начальных данных (то есть может в некоторых случаях не завершиться, но вероятность этого должна быть равна 0).
  • Массовость (универсальность). Алгоритм должен быть применим к разным наборам начальных данных.
  • Результативность — завершение алгоритма определёнными результатами.

Формальное определение

Разнообразные теоретические проблемы математики и ускорение развития физики и техники поставили на повестку дня точное определение понятия алгоритма.

Первые попытки уточнения понятия алгоритма и его исследования осуществляли в первой половине XX века Алан Тьюринг, Эмиль Пост, Жак Эрбран, Курт Гедель, А. А. Марков, Алонзо Чёрч. Было разработано несколько определений понятия алгоритма, но впоследствии было выяснено, что все они определяют одно и то же понятие (см. Тезис Чёрча — Тьюринга)

Российский математик, основоположник структурной лингвистики в Советском Союзе В. А. Успенский считал, что понятие алгоритма впервые появилось у Эмиля Бореля в 1912 году, в статье об определённом интеграле. Там он написал о «вычислениях, которые можно реально осуществить», подчеркивая при этом: «Я намеренно оставляю в стороне большую или меньшую практическую деятельность; суть здесь та, что каждая из этих операций осуществима в конечное время при помощи достоверного и недвусмысленного метода».

Машина Тьюринга

image
Схематическая иллюстрация работы машины Тьюринга.

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

На основе исследования этих машин был выдвинут тезис Тьюринга (основная гипотеза алгоритмов):

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

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

Рекурсивные функции

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

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

Подобно тезису Тьюринга в теории вычислимых функций была выдвинута гипотеза, которая называется тезис Чёрча:

Числовая функция тогда и только тогда алгоритмически исчисляется, когда она частично рекурсивна.

Доказательство того, что класс вычислимых функций совпадает с исчисляемыми по Тьюрингу, происходит в два шага: сначала доказывают вычисление простейших функций на машине Тьюринга, а затем — вычисление функций, полученных в результате применения операторов.

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

Нормальный алгоритм (алгорифм) Маркова

Нормальный алгоритм (алгорифм в авторском написании) Маркова — это система последовательных применений подстановок, которые реализуют определённые процедуры получения новых слов из базовых, построенных из символов некоторого алфавита. Как и машина Тьюринга, нормальные алгоритмы не выполняют самих вычислений: они лишь выполняют преобразование слов путём замены букв по заданным правилам.

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

Создатель теории нормальных алгоритмов А. А. Марков выдвинул гипотезу, которая получила название принцип нормализации Маркова:

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

Подобно тезисам Тьюринга и Черча, принцип нормализации Маркова не может быть доказан математическими средствами.

Стохастические алгоритмы

Однако приведённое выше формальное определение алгоритма в некоторых случаях может быть слишком строгим. Иногда возникает потребность в использовании случайных величин. Алгоритм, работа которого определяется не только исходными данными, но и значениями, полученными из генератора случайных чисел, называют стохастическим (или рандомизированным, от англ. randomized algorithm). Стохастические алгоритмы часто бывают эффективнее детерминированных, а в отдельных случаях — единственным способом решить задачу.

На практике вместо генератора случайных чисел используют генератор псевдослучайных чисел.

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

Некоторые исследователи допускают возможность того, что стохастический алгоритм даст с некоторой заранее известной вероятностью неправильный результат. Тогда стохастические алгоритмы можно разделить на два типа:

  • алгоритмы типа Лас-Вегас всегда дают корректный результат, но время их работы не определено.
  • алгоритмы типа Монте-Карло, в отличие от предыдущих, могут давать неправильные результаты с известной вероятностью.

Другие формализации

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

  • многоленточная и недетерминированная машины Тьюринга;
  • регистровая и РАМ-машина — прототип современных компьютеров и виртуальных машин;
  • конечные и клеточные автоматы.

Виды алгоритмов

Виды алгоритмов как логико-математических средств отражают указанные компоненты человеческой деятельности и тенденции, а сами алгоритмы в зависимости от цели, начальных условий задачи, пути её решения. Следует подчеркнуть принципиальную разницу между алгоритмами вычислительного характера, преобразующими некоторые входные данные в выходные (именно их формализацией являются упомянутые выше машины Тьюринга, Поста, РАМ, нормальные алгоритмы Маркова и рекурсивные функции), и интерактивными алгоритмами (уже у Тьюринга встречается C-машина, от англ. choice — выбор, ожидающая внешнего воздействия, в отличие от классической A-машины, где все начальные данные заданы до начала вычисления и выходные данные недоступны до окончания вычисления). Последние предназначены для взаимодействия с некоторым объектом управления и призваны обеспечить корректную выдачу управляющих воздействий в зависимости от складывающейся ситуации, отражаемой поступающими от объекта управления сигналами. В некоторых случаях алгоритм управления вообще не предусматривает окончания работы (например, поддерживает бесконечный цикл ожидания событий, на которые выдается соответствующая реакция), несмотря на это, являясь полностью правильным.

Можно также выделить алгоритмы:

  • Механические алгоритмы, или иначе детерминированные, жесткие (например, алгоритм работы машины, двигателя и т. п.) — задают определённые действия, обозначая их в единственной и достоверной последовательности, обеспечивая тем самым однозначный требуемый или искомый результат, если выполняются те условия процесса, задачи, для которых разработан алгоритм.
  • Гибкие алгоритмы, например, стохастические, то есть вероятностные и эвристические.
  • Вероятностный (стохастический) алгоритм даёт программу решения задачи несколькими путями или способами, приводящими к вероятному достижению результата.
  • Эвристический алгоритм (от греческого слова «эврика») — алгоритм, использующий различные разумные соображения без строгих обоснований.
  • Линейный алгоритм — набор команд (указаний), выполняемых последовательно во времени друг за другом.
  • Разветвляющийся алгоритм — алгоритм, содержащий хотя бы одно условие, в результате проверки которого может осуществляться разделение на несколько альтернативных ветвей алгоритма.
  • Циклический алгоритм — алгоритм, предусматривающий многократное повторение одного и того же действия (одних и тех же операций). К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов. Цикл программы — последовательность команд (серия, тело цикла), которая может выполняться многократно.
  • Вспомогательный (подчинённый) алгоритм (процедура) — алгоритм, ранее разработанный и целиком используемый при алгоритмизации конкретной задачи. В некоторых случаях при наличии одинаковых последовательностей указаний (команд) для различных данных с целью сокращения записи также выделяют вспомогательный алгоритм. На всех этапах подготовки к алгоритмизации задачи широко используется структурное представление алгоритма.
  • Структурная блок-схема, граф-схема алгоритма — графическое изображение алгоритма в виде схемы связанных между собой с помощью стрелок (линий перехода) блоков — графических символов, каждый из которых соответствует одному шагу алгоритма. Внутри блока дается описание соответствующего действия. Графическое изображение алгоритма широко используется перед программированием задачи вследствие его наглядности, так как зрительное восприятие обычно облегчает процесс написания программы, её корректировки при возможных ошибках, осмысливание процесса обработки информации. Можно встретить даже такое утверждение: «Внешне алгоритм представляет собой схему — набор прямоугольников и других символов, внутри которых записывается, что вычисляется, что вводится в машину и что выдается на печать и другие средства отображения информации».

Нумерация алгоритмов

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

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

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

Алгоритмически неразрешимые задачи

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

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

Случай, когда результатом вычисления функции image является логическое выражение «истина» или «ложь» (или множество {0, 1}), называют задачей, которая может быть решаемой или нерешаемой, в зависимости от вычислимости функции image.

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

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

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

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

Анализ алгоритмов

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

Использование математического аппарата для анализа алгоритмов и их реализаций называют формальными методами. Формальные методы предусматривают применение формальных спецификаций и, обычно, набора инструментов для синтаксического анализа и доказательства свойств спецификаций. Абстрагирование от деталей реализации позволяет установить свойства системы независимо от её реализации. Кроме того, точность и однозначность математических утверждений позволяет избежать многозначности и неточности естественных языков.

По гипотезе Ричарда Мейса, «избежание ошибок лучше устранения ошибок». По гипотезе Хоара, «доказательство программ решает проблему корректности, документации и совместимости». Доказательство корректности программ позволяет выявлять их свойства по отношению ко всему диапазону входных данных. Для этого понятие корректности было разделено на два типа:

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

Во время доказательства корректности сравнивают текст программы со спецификацией желаемого соотношения входных-выходных данных. Для доказательств типа Хоара спецификация имеет вид утверждений, которые называют предусловиями и постусловиями. В совокупности с самой программой их ещё называют тройкой Хоара. Эти утверждения записывают как

{P}Q{S}

где P — это предусловия, должные выполняться перед запуском программы Q, а S — постусловия, истинные после завершения работы программы.

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

Время работы

image
Графики функций, приведённых в таблице ниже.

Распространённым критерием оценки алгоритмов является время работы и порядок роста продолжительности работы в зависимости от объёма входных данных.

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

Время, которое тратит алгоритм как функция от размера задачи image, называют временной сложностью этого алгоритма T(n). Асимптотику поведения этой функции при увеличении размера задачи называют асимптотичной временной сложностью, а для её обозначения используют нотацию «O» большое. Например, если алгоритм обрабатывает входные данные размером image за время cn², где c — некоторая константа, то говорят, что временная сложность такого алгоритма O(n²).

Асимптотическая сложность важна тем, что является характеристикой алгоритма, а не его конкретной реализации: «оптимизацией» операций, без замены алгоритма, можно изменить только мультипликативный коэффициент c, но не асимптотику. Как правило, именно асимптотическая сложность является главным фактором, который определяет размер задач, которые алгоритм способен обработать.

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

Грубо говоря, анализ средней асимптотической временной сложности можно разделить на два типа: аналитический и статистический. Аналитический метод даёт более точные результаты, но сложен в использовании на практике. Зато статистический метод позволяет быстрее осуществлять анализ сложных задач.

В следующей таблице приведены распространённые асимптотические сложности с комментариями.

Сложность Комментарий Примеры
O(1) Устойчивое время работы не зависит от размера задачи Ожидаемое время поиска в хеш-таблице
O(log log n) Очень медленный рост необходимого времени Ожидаемое время работы интерполирующего поиска n элементов
O(log n) Логарифмический рост — удвоение размера задачи увеличивает время работы на постоянную величину Вычисление xn; Двоичный поиск в массиве из n элементов
O(n) Линейный рост — удвоение размера задачи удвоит и необходимое время Сложение/вычитание чисел из n цифр; Линейный поиск в массиве из n элементов
O(n log n) Линеаритмичный рост — удвоение размера задачи увеличит необходимое время чуть более, чем вдвое Сортировка слиянием или кучей n элементов; нижняя граница сортировки сопоставлением n элементов
O(n²) Квадратичный рост — удвоение размера задачи увеличивает необходимое время в четыре раза Элементарные алгоритмы сортировки
O(n³) Кубичный рост — удвоение размера задачи увеличивает необходимое время в восемь раз Обычное умножение матриц
O(cn) Экспоненциальный рост — увеличение размера задачи на 1 приводит к c-кратному увеличению необходимого времени; удвоение размера задачи увеличивает необходимое время в квадрат Некоторые задачи коммивояжёра, алгоритмы поиска полным перебором

Наличие исходных данных и некоторого результата

Алгоритм — это точно определённая инструкция, последовательно применяя которую к исходным данным, можно получить решение задачи. Для каждого алгоритма есть некоторое множество объектов, допустимых в качестве исходных данных. Например, в алгоритме деления вещественных чисел делимое может быть любым, а делитель не может быть равен нулю.

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

Для разработки алгоритмов и программ используется алгоритмизация — процесс систематического составления алгоритмов для решения поставленных прикладных задач. Алгоритмизация считается обязательным этапом в процессе разработки программ и решении задач на ЭВМ. Именно для прикладных алгоритмов и программ принципиально важны детерминированность, результативность и массовость, а также правильность результатов решения поставленных задач.

Алгоритм — это понятное и точное предписание исполнителю совершить последовательность действий, направленных на достижение цели.

Представление алгоритмов

Формы записи алгоритма:

  • словесная или вербальная: на естественном языке;
  • на алгоритмическом языке: языке программирования или псевдокоде;
  • в машинном коде (код процессора ЭВМ);
  • в математической нотации (см. выше представленные варианты);
  • схематическая:
    • графическая (например, блок-схемы и ДРАКОН-схемы);
    • структурограммы (диаграммы Насси-Шнейдермана).

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

Эффективность алгоритмов

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

Для каждой задачи может существовать множество алгоритмов, приводящих к цели. Увеличение эффективности алгоритмов составляет одну из задач информатики, начиная с 1940-х годов в связи с этим простроен ряд более эффективных в асимптотическом смысле алгоритмов для традиционных задач (например, [англ.], алгоритм Чудновского для вычисления числа image).

Пример

Алгоритм Евклида — эффективный метод вычисления наибольшего общего делителя (НОД). Назван в честь греческого математика Евклида; один из древнейших алгоритмов, который используют до сих пор.

Описан в «Началах» Евклида (примерно 300 лет до н. э.), а именно в книгах VII и X. В седьмой книге описан алгоритм для целых чисел, а в десятой — для длин отрезков.

Существует несколько вариантов алгоритма, ниже записанный в псевдокоде рекурсивный вариант:

алг нод(a, b) нач если b = 0 возврат a иначе возврат нод(b, a mod b) кон 
image
Иллюстрация выполнения алгоритма Евклида для вычисления НОД чисел 1599 и 650.

НОД чисел 1599 и 650:

Шаг 1 1599 = 650*2 + 299
Шаг 2 650 = 299*2 + 52
Шаг 3 299 = 52*5 + 39
Шаг 4 52 = 39*1 + 13
Шаг 5 39 = 13*3 + 0

См. также

Примечания

  1. АЛГОРИ́ТМ : [арх. 30 октября 2018] / А. Л. Семёнов // А — Анкетирование. — М. : Большая российская энциклопедия, 2005. — С. 426. — (Большая российская энциклопедия : [в 35 т.] / гл. ред. Ю. С. Осипов ; 2004—2017, т. 1). — ISBN 5-85270-329-X.
  2. Kleene 1943 in Davis 1965: 274
  3. Rosser 1939 in Davis 1965: 225
  4. Кнут, 2006, 1.1. Алгоритмы.
  5. Robert Andrew Wilson, Frank C. Keil. The MIT Encyclopedia of the Cognitive Sciences. — MIT Press, 2001. — С. 11. — 1106 с. — ISBN 9780262731447. Архивировано 17 ноября 2021 года.
  6. (Игошин, с. 317)
  7. В. А. Успенский: «Математика — это гуманитарная наука» // Троицкий вариант. — 2014. — 28 января (№ 2(146)). — С. 4—6. Архивировано 27 ноября 2018 года.
  8. Basics: The Turing Machine (with an interpreter!). Good Math, Bad Math (9 февраля 2007). Архивировано 11 февраля 2012 года.
  9. (Игошин, раздел 33)
  10. Энциклопедия кибернетики, т. 2, c. 90—91.
  11. (Игошин, раздел 34)
  12. «Probabilistic algorithms should not be mistaken with methods (which I refuse to call algorithms), which produce a result which has a high probability of being correct. It is essential that an algorithm produces correct results (discounting human or computer errors), even if this happens after a very long time». Henri Cohen. A Course in Computational Algebraic Number Theory (англ.). — Springer-Verlag, 1996. — P. 2. — ISBN 3-540-55640-0.
  13. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rives't, Clifford Stein. Introduction to Algorithms (англ.). — 2-е. — MIT Press, 2001. — P. 531. — ISBN 0-262-03293-7.
  14. (Раздел 12, с. 12—22 в Atallah, 2010)
  15. Dina Goldin, Peter Wegner. The origins of the Turing Thesis Myth, CS-04-14, October 2004
  16. Interactive Computation Is More Powerful Than Non Interactive. Архивировано 19 ноября 2015 года., c2.com
  17. М. Гэри, Д. Джонсон, Вычислительные машины и труднорешаемые задачи, М.: Мир, 1982, C. 155.
  18. (Игошин, раздел 36)
  19. Peter Linz. An Introduction to Formal Languages and Automata (англ.). — , 2000. — ISBN 0-7637-1422-4.
  20. computability and complexity. Encyclopedia of computer Science and Technology. Facts On File. 2009. ISBN 978-0-8160-6382-6. Given any computer program, can you determine whether the program will halt (end) given any input?
  21. (O’Regan, раздел 4.5)
  22. (раздел 5.3.6 в Enders, 2003)
  23. (раздел 5.3.7 в Enders, 2003)
  24. (O’Regan, с. 119)
  25. А. Ахо, Дж. Хопкрофт, Дж. Ульман. Построение и анализ вычислительных алгоритмов = The Design and Analysis of Computer Algorithms. — М.: «Мир», 1979.
  26. (раздел 11 в Atallah, 2010)
  27. (раздел 1 в Atallah, 2010)
  28. Knuth D. The Art of Computer Programming, Volume 2: Seminumerical Algorithms (англ.). — 3rd. — Addison–Wesley, 1997. — ISBN 0201896842.

Литература

  • Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн. Алгоритмы: построение и анализ = Introduction to Algorithms, Third Edition. — 3-е. — М.: , 2013. — 1328 с. — ISBN 978-5-8459-1794-2.
  • Дональд Кнут. Искусство программирования = The Art of Computer Programming, vol. 1. Fundamental Algorithms. — 3-е изд.. — М.: , 2006. — Т. 1. Основные алгоритмы. — С. 720. — ISBN 0-201-89683-4.
  • Томас Х. Кормен. Алгоритмы: вводный курс = Algorithms Unlocked. — М.: , 2014. — 208 с. — ISBN 978-5-8459-1868-0.
  • Игошин В. И. Математическая логика и теория алгоритмов. — 2-е изд., стер.. — М.: ИЦ «Академия», 2008. — 448 с. — ISBN 5-7695-1363-2.

Ссылки

  • «Слово „алгоритм“: происхождение и развитие», В. В. Шилов, Журнал «Потенциал» — источник исторических сведений.
  • Об алгоритме (недоступная ссылка — история). в энциклопедии «Кругосвет»

Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Вычислительный алгоритм, Что такое Вычислительный алгоритм? Что означает Вычислительный алгоритм?

U etogo termina sushestvuyut i drugie znacheniya sm Algoritm znacheniya Algori tm lat algorithmi ot imeni sredneaziatskogo matematika Al Horezmi sovokupnost tochno zadannyh pravil resheniya nekotorogo klassa zadach ili nabor instrukcij opisyvayushih poryadok dejstvij ispolnitelya dlya resheniya opredelyonnoj zadachi V staroj traktovke vmesto slova poryadok ispolzovalos slovo posledovatelnost no po mere razvitiya parallelnosti v rabote kompyuterov slovo posledovatelnost stali zamenyat bolee obshim slovom poryadok Nezavisimye instrukcii mogut vypolnyatsya v proizvolnom poryadke parallelno esli eto pozvolyayut ispolzuemye ispolniteli Ranee v russkom yazyke pisali algorifm sejchas takoe napisanie ispolzuetsya redko no tem ne menee imeet mesto isklyuchenie normalnyj algorifm Markova Chasto v kachestve ispolnitelya vystupaet kompyuter no ponyatie algoritma neobyazatelno otnositsya k kompyuternym programmam tak naprimer chyotko opisannyj recept prigotovleniya blyuda takzhe yavlyaetsya algoritmom v takom sluchae ispolnitelem yavlyaetsya chelovek a mozhet byt i nekotoryj mehanizm naprimer tkackij ili tokarnyj stanok s chislovym upravleniem Mozhno vydelit algoritmy vychislitelnye dalee rech v osnovnom idyot o nih i upravlyayushie Vychislitelnye algoritmy po suti preobrazuyut nekotorye nachalnye dannye v vyhodnye realizuya vychislenie nekotoroj funkcii Semantika upravlyayushih algoritmov sushestvennym obrazom mozhet otlichatsya i svoditsya k vydache neobhodimyh upravlyayushih vozdejstvij libo v zadannye momenty vremeni libo v kachestve reakcii na vneshnie sobytiya v etom sluchae v otlichie ot vychislitelnogo algoritma upravlyayushij mozhet ostavatsya korrektnym pri beskonechnom vypolnenii Ponyatie algoritma otnositsya k pervonachalnym osnovnym bazisnym ponyatiyam matematiki Vychislitelnye processy algoritmicheskogo haraktera arifmeticheskie dejstviya nad celymi chislami nahozhdenie naibolshego obshego delitelya dvuh chisel i t d izvestny chelovechestvu s glubokoj drevnosti Odnako v yavnom vide ponyatie algoritma sformirovalos lish v nachale XX veka Chastichnaya formalizaciya ponyatiya algoritma nachalas s popytok resheniya problemy razresheniya nem Entscheidungsproblem kotoruyu sformuliroval David Gilbert v 1928 godu Sleduyushie etapy formalizacii byli neobhodimy dlya opredeleniya effektivnyh vychislenij ili effektivnogo metoda sredi takih formalizacij rekursivnye funkcii Gedelya Erbrana Klini 1930 1934 i 1935 gg l ischislenie Alonzo Chyorcha 1936 g Formulirovka 1 Emilya Posta 1936 goda i mashina Tyuringa Istoriya terminaTitulnaya stranica Algebry al HorezmiAl Horezmi na sovetskoj marke Sovremennoe formalnoe opredelenie vychislitelnogo algoritma bylo dano v 30 50 e gody XX veka v rabotah Tyuringa Posta Chyorcha tezis Chyorcha Tyuringa N Vinera A A Markova Samo slovo algoritm proishodit ot imeni persidskogo horezmskogo i maverannahrskogo uchyonogo al Horezmi Okolo 825 goda on napisal sochinenie Kitab al dzhebr val mukabala Kniga o slozhenii i vychitanii iz originalnogo nazvaniya kotorogo proishodit slovo algebra al dzhebr vospolnenie V etoj knige vpervye dal opisanie pridumannoj v Indii pozicionnoj desyatichnoj sistemy schisleniya Persidskij original knigi ne sohranilsya Al Horezmi sformuliroval pravila vychislenij v novoj sisteme i veroyatno vpervye ispolzoval cifru 0 dlya oboznacheniya propushennoj pozicii v zapisi chisla eyo indijskoe nazvanie araby pereveli kak as sifr ili prosto sifr otsyuda takie slova kak cifra i shifr Priblizitelno v eto zhe vremya indijskie cifry nachali primenyat i drugie arabskie uchyonye V pervoj polovine XII veka kniga al Horezmi v latinskom perevode pronikla v Evropu Perevodchik imya kotorogo do nas ne doshlo dal ej nazvanie Algoritmi de numero Indorum Algoritmy o schyote indijskom takim obrazom latinizirovannoe imya sredneaziatskogo uchyonogo bylo vyneseno v zaglavie knigi Segodnya schitaetsya chto slovo algoritm popalo v evropejskie yazyki imenno blagodarya etomu perevodu V techenie neskolkih sleduyushih stoletij poyavilos mnozhestvo drugih trudov posvyashyonnyh vsyo tomu zhe voprosu obucheniyu iskusstvu schyota s pomoshyu cifr i vse oni imeli v nazvanii slovo algoritmi ili algorismi Pro al Horezmi pozdnejshie avtory nichego ne znali no poskolku pervyj perevod knigi nachinaetsya slovami Dixit algorizmi Al Horezmi govoril vsyo eshyo svyazyvali eto slovo s imenem konkretnogo cheloveka Ochen rasprostranyonnoj byla versiya o grecheskom proishozhdenii knigi V anglo normannskoj rukopisi XIII veka napisannoj v stihah chitaem Algorizm byl priduman v Grecii Eto chast arifmetiki Priduman on byl masterom po imeni Algorizm kotoryj dal emu svoyo imya I poskolku ego zvali Algorizm On nazval svoyu knigu Algorizm Okolo 1250 goda anglijskij astronom i matematik Ioann Sakrobosko napisal trud po arifmetike Algorismus vulgaris na stoletiya stavshij osnovnym uchebnikom po vychisleniyam v desyatichnoj pozicionnoj sisteme schisleniya vo mnogih evropejskih universitetah Vo vvedenii Sakrobosko nazval avtorom nauki o schyote mudreca po imeni Algus Algus A v populyarnoj srednevekovoj poeme Roman o Roze 1275 1280 Zhana de Mena grecheskij filosof Algus stavitsya v odin ryad s Platonom Aristotelem Evklidom i Ptolemeem Vstrechalsya takzhe variant napisaniya imeni Argus Argus I hotya soglasno drevnegrecheskoj mifologii korabl Argo byl postroen Yasonom imenno etomu Argo pripisyvalos stroitelstvo korablya Master Algus ili Argus stal v srednevekovoj literature olicetvoreniem schyotnogo iskusstva I v uzhe upominavshemsya Romane o roze i v izvestnoj italyanskoj poeme Cvetok napisannoj Durante imeyutsya fragmenty v kotoryh govoritsya chto dazhe mestre Argus ne sumeet podschitat skolko raz ssoryatsya i miryatsya vlyublyonnye Anglijskij poet Dzhefri Choser v poeme Kniga gercogini 1369 g pishet chto dazhe slavnyj schyotchik Argus noble countour Argu ne smozhet schest chudovish yavivshihsya v koshmarnyh videniyah geroyu Odnako so vremenem takie obyasneniya vsyo menee zanimali matematikov i slovo algorism ili algorismus neizmenno prisutstvovavshee v nazvaniyah matematicheskih sochinenij obrelo znachenie sposoba vypolneniya arifmeticheskih dejstvij posredstvom arabskih cifr to est na bumage bez ispolzovaniya abaka Imenno v takom znachenii ono voshlo vo mnogie evropejskie yazyki Naprimer s pometkoj ustar ono prisutstvuet v predstavitelnom slovare anglijskogo yazyka Webster s New World Dictionary izdannom v 1957 godu Enciklopedicheskij slovar Brokgauza i Efrona predlagaet takuyu traktovku algorifm do revolyucii ispolzovalos napisanie algoriѳm cherez fitu proizvoditsya ot arabskogo slova al goretm to est koren Algoritm eto iskusstvo schyota s pomoshyu cifr no ponachalu slovo cifra otnosilos tolko k nulyu Znamenityj francuzskij truver Gote de Kuansi Gautier de Coincy 1177 1236 v odnom iz stihotvorenij ispolzoval slova algorismus cipher kotorye oznachali cifru 0 kak metaforu dlya harakteristiki absolyutno nikchyomnogo cheloveka Ochevidno ponimanie takogo obraza trebovalo sootvetstvuyushej podgotovki slushatelej a eto oznachaet chto novaya sistema schisleniya uzhe byla im dostatochno horosho izvestna Mnogie veka abak byl fakticheski edinstvennym sredstvom dlya praktichnyh vychislenij im polzovalis i kupcy i menyaly i uchyonye Dostoinstva vychislenij na schyotnoj doske razyasnyal v svoih sochineniyah takoj vydayushijsya myslitel kak Gerbert Avrilakskij 938 1003 stavshij v 999 godu papoj rimskim pod imenem Silvestra II Novoe s ogromnym trudom probivalo sebe dorogu i v istoriyu matematiki voshlo upornoe protivostoyanie lagerej algorismikov i abacistov inogda nazyvaemyh gerbekistami kotorye propagandirovali ispolzovanie dlya vychislenij abaka vmesto arabskih cifr Interesno chto izvestnyj francuzskij matematik Nikolya Shyuke Nicolas Chuquet 1445 1488 v reestr nalogoplatelshikov goroda Liona byl vpisan kak algorismik algoriste No proshlo ne odno stoletie prezhde chem novyj sposob schyota okonchatelno utverdilsya stolko vremeni potrebovalos chtoby vyrabotat obshepriznannye oboznacheniya usovershenstvovat i prisposobit k zapisi na bumage metody vychislenij V Zapadnoj Evrope uchitelej arifmetiki vplot do XVII veka prodolzhali nazyvat magistrami abaka kak naprimer matematika Nikkolo Tartalyu 1500 1557 Itak sochineniya po iskusstvu schyota nazyvalis Algoritmami Iz mnogih soten mozhno vydelit i takie neobychnye kak napisannyj v stihah traktat Carmen de Algorismo latinskoe carmen i oznachaet stihi Aleksandra de Villa Dei Alexander de Villa Dei um 1240 ili uchebnik venskogo astronoma i matematika Georga Purbaha Georg Peurbach 1423 1461 Opus algorismi jocundissimi Veselejshee sochinenie po algoritmu Postepenno znachenie slova rasshiryalos Uchyonye nachinali primenyat ego ne tolko k sugubo vychislitelnym no i k drugim matematicheskim proceduram Naprimer okolo 1360 g francuzskij filosof Nikolaj Orem Nicolaus Oresme 1323 25 1382 napisal matematicheskij traktat Algorismus proportionum Vychislenie proporcij v kotorom vpervye ispolzoval stepeni s drobnymi pokazatelyami i fakticheski vplotnuyu podoshyol k idee logarifmov Kogda zhe na smenu abaku prishyol tak nazyvaemyj schyot na liniyah mnogochislennye rukovodstva po nemu stali nazyvat Algorithmus linealis to est pravila schyota na liniyah Mozhno obratit vnimanie na to chto pervonachalnaya forma algorismi spustya kakoe to vremya poteryala poslednyuyu bukvu i slovo priobrelo bolee udobnoe dlya evropejskogo proiznosheniya vid algorism Pozdnee i ono v svoyu ochered podverglos iskazheniyu skoree vsego svyazannomu so slovom arithmetic V 1684 godu Gotfrid Lejbnic v sochinenii Nova Methodvs pro maximis et minimis itemque tangentibus vpervye ispolzoval slovo algoritm Algorithmo v eshyo bolee shirokom smysle kak sistematicheskij sposob resheniya problem differencialnogo ischisleniya V XVIII veke v odnom iz germanskih matematicheskih slovarej Vollstandiges mathematisches Lexicon izdannom v Lejpcige v 1747 godu termin algorithmus vsyo eshyo obyasnyaetsya kak ponyatie o chetyryoh arifmeticheskih operaciyah No takoe znachenie ne bylo edinstvennym ved terminologiya matematicheskoj nauki v te vremena eshyo tolko formirovalas V chastnosti vyrazhenie algorithmus infinitesimalis primenyalos k sposobam vypolneniya dejstvij s beskonechno malymi velichinami Polzovalsya slovom algoritm i Leonard Ejler odna iz rabot kotorogo tak i nazyvaetsya Ispolzovanie novogo algoritma dlya resheniya problemy Pellya De usu novi algorithmi in problemate Pelliano solvendo My vidim chto ponimanie Ejlerom algoritma kak sinonima sposoba resheniya zadachi uzhe ochen blizko k sovremennomu Odnako potrebovalos eshyo pochti dva stoletiya chtoby vse starinnye znacheniya slova vyshli iz upotrebleniya Etot process mozhno prosledit na primere proniknoveniya slova algoritm v russkij yazyk Istoriki datiruyut 1691 godom odin iz spiskov drevnerusskogo uchebnika arifmetiki izvestnogo kak Schyotnaya mudrost Eto sochinenie izvestno vo mnogih variantah samye rannie iz nih pochti na sto let starshe i voshodit k eshyo bolee drevnim rukopisyam XVI veka Po nim mozhno prosledit kak znanie arabskih cifr i pravil dejstvij s nimi postepenno rasprostranyalos na Rusi Polnoe nazvanie etogo uchebnika Siya kniga glagolemaya po ellinski i po grecheski arifmetika a po nemecki algorizma a po russki cifirnaya schyotnaya mudrost Takim obrazom slovo algoritm ponimalos pervymi russkimi matematikami tak zhe kak i v Zapadnoj Evrope Odnako ego ne bylo ni v znamenitom slovare Dalya ni spustya sto let v Tolkovom slovare russkogo yazyka pod redakciej Ushakova 1935 Zato slovo algorifm mozhno najti i v populyarnom dorevolyucionnom Enciklopedicheskom slovare bratev Granat i v pervom izdanii Bolshoj sovetskoj enciklopedii BSE izdannom v 1926 godu I tam i tam ono traktuetsya odinakovo kak pravilo po kotoromu vypolnyaetsya to ili inoe iz chetyryoh arifmeticheskih dejstvij v desyatichnoj sisteme schisleniya Odnako k nachalu XX veka dlya matematikov slovo algoritm uzhe oznachalo lyuboj arifmeticheskij ili algebraicheskij process vypolnyaemyj po strogo opredelyonnym pravilam i eto obyasnenie takzhe dayotsya v sleduyushih izdaniyah BSE Baronessa Ada Lavlejs v 1836 1837 godah napisala algoritm dlya vychisleniya chisel Bernulli na raznostnoj mashine Bebbidzha za chto eyo schitayut pervym programmistom v istorii Algoritmy stanovilis predmetom vsyo bolee pristalnogo vnimaniya uchyonyh i postepenno eto ponyatie zanyalo odno iz centralnyh mest v sovremennoj matematike Chto zhe kasaetsya lyudej ot matematiki dalyokih to k nachalu sorokovyh godov eto slovo oni mogli uslyshat razve chto vo vremya uchyoby v shkole v sochetanii algoritm Evklida Nesmotrya na eto algoritm vsyo eshyo vosprinimalsya kak termin sugubo specialnyj chto podtverzhdaetsya otsutstviem sootvetstvuyushih statej v menee obyomnyh izdaniyah V chastnosti ego net dazhe v desyatitomnoj Maloj sovetskoj enciklopedii 1957 g ne govorya uzhe ob odnotomnyh enciklopedicheskih slovaryah No zato spustya desyat let v tretem izdanii Bolshoj sovetskoj enciklopedii 1969 god algoritm uzhe harakterizuetsya kak odna iz osnovnyh kategorij matematiki ne obladayushih formalnym opredeleniem v terminah bolee prostyh ponyatij i abstragiruemyh neposredstvenno iz opyta Kak my vidim otlichie dazhe ot traktovki pervym izdaniem BSE razitelnoe Za sorok let algoritm prevratilsya v odno iz klyuchevyh ponyatij matematiki i priznaniem etogo stalo vklyuchenie slova uzhe ne v enciklopedii a v slovari Naprimer ono prisutstvuet v akademicheskom Slovare russkogo yazyka 1981 g imenno kak termin iz oblasti matematiki Odnovremenno s razvitiem ponyatiya algoritma postepenno proishodila i ego ekspansiya iz chistoj matematiki v drugie sfery I nachalo ej polozhilo poyavlenie kompyuterov blagodarya kotoromu slovo algoritm voshlo v 1985 godu vo vse shkolnye uchebniki informatiki i obrelo novuyu zhizn Voobshe mozhno skazat chto ego segodnyashnyaya izvestnost napryamuyu svyazana so stepenyu rasprostraneniya kompyuterov Naprimer v tretem tome Detskoj enciklopedii 1959 g o vychislitelnyh mashinah govoritsya nemalo no oni eshyo ne stali chem to privychnym i vosprinimayutsya skoree kak nekij atribut svetlogo no dostatochno dalyokogo budushego Sootvetstvenno i algoritmy ni razu ne upominayutsya na eyo stranicah No uzhe v nachale 70 h gg proshlogo stoletiya kogda kompyutery perestali byt ekzoticheskoj dikovinkoj slovo algoritm stremitelno vhodit v obihod Eto chyotko fiksiruyut enciklopedicheskie izdaniya V Enciklopedii kibernetiki 1974 god v state Algoritm on uzhe svyazyvaetsya s realizaciej na vychislitelnyh mashinah a v Sovetskoj voennoj enciklopedii 1976 g dazhe poyavlyaetsya otdelnaya statya Algoritm resheniya zadachi na EVM Za poslednie poltora dva desyatiletiya kompyuter stal neotemlemym atributom nashej zhizni kompyuternaya leksika stanovitsya vsyo bolee privychnoj Slovo algoritm v nashi dni izvestno veroyatno kazhdomu Ono uverenno shagnulo dazhe v razgovornuyu rech i segodnya my neredko vstrechaem v gazetah i slyshim v vystupleniyah politikov vyrazheniya vrode algoritm povedeniya algoritm uspeha ili dazhe algoritm predatelstva Akademik N N Moiseev nazval svoyu knigu Algoritmy razvitiya a izvestnyj vrach N M Amosov Algoritm zdorovya i Algoritmy razuma A eto oznachaet chto slovo zhivyot obogashayas vsyo novymi znacheniyami i smyslovymi ottenkami Opredeleniya algoritmaSvojstva algoritmov Razlichnye opredeleniya algoritma v yavnoj ili neyavnoj forme soderzhat sleduyushij ryad obshih trebovanij Diskretnost algoritm dolzhen predstavlyat process resheniya zadachi kak uporyadochennoe vypolnenie nekotoryh prostyh shagov Pri etom dlya vypolneniya kazhdogo shaga algoritma trebuetsya konechnyj otrezok vremeni to est preobrazovanie ishodnyh dannyh v rezultat osushestvlyaetsya vo vremeni diskretno Determinirovannost opredelyonnost V kazhdyj moment vremeni sleduyushij shag raboty odnoznachno opredelyaetsya sostoyaniem sistemy Takim obrazom algoritm vydayot odin i tot zhe rezultat otvet dlya odnih i teh zhe ishodnyh dannyh V sovremennoj traktovke u raznyh realizacij odnogo i togo zhe algoritma dolzhen byt izomorfnyj graf S drugoj storony sushestvuyut veroyatnostnye algoritmy v kotoryh sleduyushij shag raboty zavisit ot tekushego sostoyaniya sistemy i generiruemogo sluchajnogo chisla Odnako pri vklyuchenii metoda generacii sluchajnyh chisel v spisok ishodnyh dannyh veroyatnostnyj algoritm stanovitsya podvidom obychnogo Ponyatnost algoritm dolzhen vklyuchat tolko te komandy kotorye dostupny ispolnitelyu i vhodyat v ego sistemu komand Zavershaemost konechnost v bolee uzkom ponimanii algoritma kak matematicheskoj funkcii pri pravilno zadannyh nachalnyh dannyh algoritm dolzhen zavershat rabotu i vydavat rezultat za opredelyonnoe chislo shagov Donald Knut nazyvaet proceduru kotoraya udovletvoryaet vsem svojstvam algoritma krome vozmozhno konechnosti metodom vychisleniya angl computational method Odnako dovolno chasto opredelenie algoritma ne vklyuchaet zavershaemost za konechnoe vremya V etom sluchae algoritm metod vychisleniya opredelyaet angl Dlya veroyatnostnyh algoritmov zavershaemost kak pravilo oznachaet chto algoritm vydayot rezultat s veroyatnostyu 1 dlya lyubyh pravilno zadannyh nachalnyh dannyh to est mozhet v nekotoryh sluchayah ne zavershitsya no veroyatnost etogo dolzhna byt ravna 0 Massovost universalnost Algoritm dolzhen byt primenim k raznym naboram nachalnyh dannyh Rezultativnost zavershenie algoritma opredelyonnymi rezultatami Formalnoe opredelenie Raznoobraznye teoreticheskie problemy matematiki i uskorenie razvitiya fiziki i tehniki postavili na povestku dnya tochnoe opredelenie ponyatiya algoritma Pervye popytki utochneniya ponyatiya algoritma i ego issledovaniya osushestvlyali v pervoj polovine XX veka Alan Tyuring Emil Post Zhak Erbran Kurt Gedel A A Markov Alonzo Chyorch Bylo razrabotano neskolko opredelenij ponyatiya algoritma no vposledstvii bylo vyyasneno chto vse oni opredelyayut odno i to zhe ponyatie sm Tezis Chyorcha Tyuringa Rossijskij matematik osnovopolozhnik strukturnoj lingvistiki v Sovetskom Soyuze V A Uspenskij schital chto ponyatie algoritma vpervye poyavilos u Emilya Borelya v 1912 godu v state ob opredelyonnom integrale Tam on napisal o vychisleniyah kotorye mozhno realno osushestvit podcherkivaya pri etom Ya namerenno ostavlyayu v storone bolshuyu ili menshuyu prakticheskuyu deyatelnost sut zdes ta chto kazhdaya iz etih operacij osushestvima v konechnoe vremya pri pomoshi dostovernogo i nedvusmyslennogo metoda Mashina Tyuringa Osnovnaya statya Mashina Tyuringa Shematicheskaya illyustraciya raboty mashiny Tyuringa Osnovnaya ideya lezhashaya v osnove mashiny Tyuringa ochen prosta Mashina Tyuringa eto abstraktnaya mashina avtomat rabotayushaya s lentoj otdelnyh yacheek v kotoryh zapisany simvoly Mashina takzhe imeet golovku dlya zapisi i chteniya simvolov iz yacheek kotoraya mozhet dvigatsya vdol lenty Na kazhdom shage mashina schityvaet simvol iz yachejki na kotoruyu ukazyvaet golovka i na osnove schitannogo simvola i vnutrennego sostoyaniya delaet sleduyushij shag Pri etom mashina mozhet izmenit svoyo sostoyanie zapisat drugoj simvol v yachejku ili peredvinut golovku na odnu yachejku vpravo ili vlevo Na osnove issledovaniya etih mashin byl vydvinut tezis Tyuringa osnovnaya gipoteza algoritmov Nekotoryj algoritm dlya nahozhdeniya znachenij funkcii zadannoj v nekotorom alfavite sushestvuet togda i tolko togda kogda funkciya ischislyaetsya po Tyuringu to est kogda eyo mozhno vychislit na mashine Tyuringa Etot tezis yavlyaetsya aksiomoj postulatom i ne mozhet byt dokazan matematicheskimi metodami poskolku algoritm ne yavlyaetsya tochnym matematicheskim ponyatiem Rekursivnye funkcii Osnovnaya statya Rekursivnaya funkciya S kazhdym algoritmom mozhno sopostavit funkciyu kotoruyu on vychislyaet Odnako voznikaet vopros mozhno li proizvolnoj funkcii sopostavit mashinu Tyuringa a esli net to dlya kakih funkcij sushestvuet algoritm Issledovaniya etih voprosov priveli k sozdaniyu v 1930 h godah teorii rekursivnyh funkcij Klass vychislimyh funkcij byl zapisan v obraz napominayushij postroenie nekotoroj aksiomaticheskoj teorii na baze sistemy aksiom Snachala byli vybrany prostejshie funkcii vychislenie kotoryh ochevidno Zatem byli sformulirovany pravila operatory postroeniya novyh funkcij na osnove uzhe sushestvuyushih Neobhodimyj klass funkcij sostoit iz vseh funkcij kotorye mozhno poluchit iz prostejshih primeneniem operatorov Podobno tezisu Tyuringa v teorii vychislimyh funkcij byla vydvinuta gipoteza kotoraya nazyvaetsya tezis Chyorcha Chislovaya funkciya togda i tolko togda algoritmicheski ischislyaetsya kogda ona chastichno rekursivna Dokazatelstvo togo chto klass vychislimyh funkcij sovpadaet s ischislyaemymi po Tyuringu proishodit v dva shaga snachala dokazyvayut vychislenie prostejshih funkcij na mashine Tyuringa a zatem vychislenie funkcij poluchennyh v rezultate primeneniya operatorov Takim obrazom neformalno algoritm mozhno opredelit kak chetkuyu sistemu instrukcij opredelyayushih diskretnyj determinirovannyj process kotoryj vedyot ot nachalnyh dannyh na vhode k iskomomu rezultatu na vyhode esli on sushestvuet za konechnoe chislo shagov esli iskomogo rezultata ne sushestvuet algoritm ili nikogda ne zavershaet rabotu libo zahodit v tupik Normalnyj algoritm algorifm Markova Osnovnaya statya Normalnyj algoritm Normalnyj algoritm algorifm v avtorskom napisanii Markova eto sistema posledovatelnyh primenenij podstanovok kotorye realizuyut opredelyonnye procedury polucheniya novyh slov iz bazovyh postroennyh iz simvolov nekotorogo alfavita Kak i mashina Tyuringa normalnye algoritmy ne vypolnyayut samih vychislenij oni lish vypolnyayut preobrazovanie slov putyom zameny bukv po zadannym pravilam Normalno vychislimoj nazyvayut funkciyu kotoruyu mozhno realizovat normalnym algoritmom To est algoritmom kotoryj kazhdoe slovo iz mnozhestva dopustimyh dannyh funkcii prevrashaet v eyo nachalnye znacheniya Sozdatel teorii normalnyh algoritmov A A Markov vydvinul gipotezu kotoraya poluchila nazvanie princip normalizacii Markova Dlya nahozhdeniya znachenij funkcii zadannoj v nekotorom alfavite togda i tolko togda sushestvuet nekotoryj algoritm kogda funkciya normalno ischislyaemaya Podobno tezisam Tyuringa i Chercha princip normalizacii Markova ne mozhet byt dokazan matematicheskimi sredstvami Stohasticheskie algoritmy Odnako privedyonnoe vyshe formalnoe opredelenie algoritma v nekotoryh sluchayah mozhet byt slishkom strogim Inogda voznikaet potrebnost v ispolzovanii sluchajnyh velichin Algoritm rabota kotorogo opredelyaetsya ne tolko ishodnymi dannymi no i znacheniyami poluchennymi iz generatora sluchajnyh chisel nazyvayut stohasticheskim ili randomizirovannym ot angl randomized algorithm Stohasticheskie algoritmy chasto byvayut effektivnee determinirovannyh a v otdelnyh sluchayah edinstvennym sposobom reshit zadachu Na praktike vmesto generatora sluchajnyh chisel ispolzuyut generator psevdosluchajnyh chisel Odnako sleduet otlichat stohasticheskie algoritmy i metody kotorye dayut s vysokoj veroyatnostyu pravilnyj rezultat V otlichie ot metoda algoritm dayot korrektnye rezultaty dazhe posle prodolzhitelnoj raboty Nekotorye issledovateli dopuskayut vozmozhnost togo chto stohasticheskij algoritm dast s nekotoroj zaranee izvestnoj veroyatnostyu nepravilnyj rezultat Togda stohasticheskie algoritmy mozhno razdelit na dva tipa algoritmy tipa Las Vegas vsegda dayut korrektnyj rezultat no vremya ih raboty ne opredeleno algoritmy tipa Monte Karlo v otlichie ot predydushih mogut davat nepravilnye rezultaty s izvestnoj veroyatnostyu Drugie formalizacii Dlya nekotoryh zadach nazvannye vyshe formalizacii mogut zatrudnyat poisk reshenij i osushestvlenie issledovanij Dlya preodoleniya prepyatstvij byli razrabotany kak modifikacii klassicheskih shem tak i sozdany novye modeli algoritma v chastnosti mnogolentochnaya i nedeterminirovannaya mashiny Tyuringa registrovaya i RAM mashina prototip sovremennyh kompyuterov i virtualnyh mashin konechnye i kletochnye avtomaty Vidy algoritmovVidy algoritmov kak logiko matematicheskih sredstv otrazhayut ukazannye komponenty chelovecheskoj deyatelnosti i tendencii a sami algoritmy v zavisimosti ot celi nachalnyh uslovij zadachi puti eyo resheniya Sleduet podcherknut principialnuyu raznicu mezhdu algoritmami vychislitelnogo haraktera preobrazuyushimi nekotorye vhodnye dannye v vyhodnye imenno ih formalizaciej yavlyayutsya upomyanutye vyshe mashiny Tyuringa Posta RAM normalnye algoritmy Markova i rekursivnye funkcii i interaktivnymi algoritmami uzhe u Tyuringa vstrechaetsya C mashina ot angl choice vybor ozhidayushaya vneshnego vozdejstviya v otlichie ot klassicheskoj A mashiny gde vse nachalnye dannye zadany do nachala vychisleniya i vyhodnye dannye nedostupny do okonchaniya vychisleniya Poslednie prednaznacheny dlya vzaimodejstviya s nekotorym obektom upravleniya i prizvany obespechit korrektnuyu vydachu upravlyayushih vozdejstvij v zavisimosti ot skladyvayushejsya situacii otrazhaemoj postupayushimi ot obekta upravleniya signalami V nekotoryh sluchayah algoritm upravleniya voobshe ne predusmatrivaet okonchaniya raboty naprimer podderzhivaet beskonechnyj cikl ozhidaniya sobytij na kotorye vydaetsya sootvetstvuyushaya reakciya nesmotrya na eto yavlyayas polnostyu pravilnym Mozhno takzhe vydelit algoritmy Mehanicheskie algoritmy ili inache determinirovannye zhestkie naprimer algoritm raboty mashiny dvigatelya i t p zadayut opredelyonnye dejstviya oboznachaya ih v edinstvennoj i dostovernoj posledovatelnosti obespechivaya tem samym odnoznachnyj trebuemyj ili iskomyj rezultat esli vypolnyayutsya te usloviya processa zadachi dlya kotoryh razrabotan algoritm Gibkie algoritmy naprimer stohasticheskie to est veroyatnostnye i evristicheskie Veroyatnostnyj stohasticheskij algoritm dayot programmu resheniya zadachi neskolkimi putyami ili sposobami privodyashimi k veroyatnomu dostizheniyu rezultata Evristicheskij algoritm ot grecheskogo slova evrika algoritm ispolzuyushij razlichnye razumnye soobrazheniya bez strogih obosnovanij Linejnyj algoritm nabor komand ukazanij vypolnyaemyh posledovatelno vo vremeni drug za drugom Razvetvlyayushijsya algoritm algoritm soderzhashij hotya by odno uslovie v rezultate proverki kotorogo mozhet osushestvlyatsya razdelenie na neskolko alternativnyh vetvej algoritma Ciklicheskij algoritm algoritm predusmatrivayushij mnogokratnoe povtorenie odnogo i togo zhe dejstviya odnih i teh zhe operacij K ciklicheskim algoritmam svoditsya bolshinstvo metodov vychislenij perebora variantov Cikl programmy posledovatelnost komand seriya telo cikla kotoraya mozhet vypolnyatsya mnogokratno Vspomogatelnyj podchinyonnyj algoritm procedura algoritm ranee razrabotannyj i celikom ispolzuemyj pri algoritmizacii konkretnoj zadachi V nekotoryh sluchayah pri nalichii odinakovyh posledovatelnostej ukazanij komand dlya razlichnyh dannyh s celyu sokrasheniya zapisi takzhe vydelyayut vspomogatelnyj algoritm Na vseh etapah podgotovki k algoritmizacii zadachi shiroko ispolzuetsya strukturnoe predstavlenie algoritma Strukturnaya blok shema graf shema algoritma graficheskoe izobrazhenie algoritma v vide shemy svyazannyh mezhdu soboj s pomoshyu strelok linij perehoda blokov graficheskih simvolov kazhdyj iz kotoryh sootvetstvuet odnomu shagu algoritma Vnutri bloka daetsya opisanie sootvetstvuyushego dejstviya Graficheskoe izobrazhenie algoritma shiroko ispolzuetsya pered programmirovaniem zadachi vsledstvie ego naglyadnosti tak kak zritelnoe vospriyatie obychno oblegchaet process napisaniya programmy eyo korrektirovki pri vozmozhnyh oshibkah osmyslivanie processa obrabotki informacii Mozhno vstretit dazhe takoe utverzhdenie Vneshne algoritm predstavlyaet soboj shemu nabor pryamougolnikov i drugih simvolov vnutri kotoryh zapisyvaetsya chto vychislyaetsya chto vvoditsya v mashinu i chto vydaetsya na pechat i drugie sredstva otobrazheniya informacii Numeraciya algoritmovNumeraciya algoritmov igraet vazhnuyu rol v ih issledovanii i analize Poskolku lyuboj algoritm mozhno zadat v vide konechnogo slova predstavit v vide konechnoj posledovatelnosti simvolov nekotorogo alfavita a mnozhestvo vseh konechnyh slov v konechnom alfavite schyotnoe to mnozhestvo vseh algoritmov takzhe schyotnoe Eto oznachaet sushestvovanie vzaimno odnoznachnogo otobrazheniya mezhdu mnozhestvom naturalnyh chisel i mnozhestvom algoritmov to est vozmozhnost prisvoit kazhdomu algoritmu nomer Numeraciya algoritmov yavlyaetsya odnovremenno i numeraciej vseh algoritmicheski ischislyaemyh funkcij prichem lyubaya funkciya mozhet imet beskonechnoe kolichestvo nomerov Sushestvovanie numeracii pozvolyaet rabotat s algoritmami tak zhe kak s chislami Osobenno polezna numeraciya v issledovanii algoritmov rabotayushih s drugimi algoritmami Algoritmicheski nerazreshimye zadachiOsnovnaya statya Algoritmicheski nerazreshimaya zadacha Formalizaciya ponyatiya algoritma pozvolila issledovat sushestvovanie zadach dlya kotoryh ne sushestvuet algoritmov poiska reshenij Vposledstvii byla dokazana nevozmozhnost algoritmicheskogo vychisleniya reshenij ryada zadach chto delaet nevozmozhnym ih reshenie na lyubom vychislitelnom ustrojstve Funkciyu f displaystyle f nazyvayut vychislimoj angl computable esli sushestvuet mashina Tyuringa kotoraya vychislyaet znachenie f displaystyle f dlya vseh elementov mnozhestva opredeleniya funkcii Esli takoj mashiny ne sushestvuet funkciyu f displaystyle f nazyvayut nevychislimoj Funkciya budet schitatsya nevychislimoj dazhe esli sushestvuyut mashiny Tyuringa sposobnye vychislit znachenie dlya podmnozhestva iz vsego mnozhestva vhodnyh dannyh Sluchaj kogda rezultatom vychisleniya funkcii f displaystyle f yavlyaetsya logicheskoe vyrazhenie istina ili lozh ili mnozhestvo 0 1 nazyvayut zadachej kotoraya mozhet byt reshaemoj ili nereshaemoj v zavisimosti ot vychislimosti funkcii f displaystyle f Vazhno tochno ukazyvat dopustimoe mnozhestvo vhodnyh dannyh poskolku zadacha mozhet byt reshaemoj dlya odnogo mnozhestva i nereshaemoj dlya drugogo Odnoj iz pervyh zadach dlya kotoroj byla dokazana nereshaemost yavlyaetsya problema ostanovki Formuliruetsya ona sleduyushim obrazom Imeya opisanie programmy dlya mashiny Tyuringa trebuetsya opredelit zavershit li rabotu programma za konechnoe vremya ili budet rabotat beskonechno poluchiv nekotorye vhodnye dannye Dokazatelstvo nerazreshimosti problemy ostanovki vazhno tem chto k nej mozhno svesti drugie zadachi Naprimer prostuyu problemu ostanovki mozhno svesti k zadache ostanovki na pustoj stroke kogda nuzhno opredelit dlya zadannoj mashiny Tyuringa ostanovitsya li ona buduchi zapushennoj na pustoj stroke dokazav tem samym nerazreshimost poslednej Analiz algoritmovVmeste s rasprostraneniem informacionnyh tehnologij uvelichilsya risk programmnyh sboev Odnim iz sposobov izbezhaniya oshibok v algoritmah i ih realizaciyah sluzhat dokazatelstva korrektnosti sistem matematicheskimi sredstvami Ispolzovanie matematicheskogo apparata dlya analiza algoritmov i ih realizacij nazyvayut formalnymi metodami Formalnye metody predusmatrivayut primenenie formalnyh specifikacij i obychno nabora instrumentov dlya sintaksicheskogo analiza i dokazatelstva svojstv specifikacij Abstragirovanie ot detalej realizacii pozvolyaet ustanovit svojstva sistemy nezavisimo ot eyo realizacii Krome togo tochnost i odnoznachnost matematicheskih utverzhdenij pozvolyaet izbezhat mnogoznachnosti i netochnosti estestvennyh yazykov Po gipoteze Richarda Mejsa izbezhanie oshibok luchshe ustraneniya oshibok Po gipoteze Hoara dokazatelstvo programm reshaet problemu korrektnosti dokumentacii i sovmestimosti Dokazatelstvo korrektnosti programm pozvolyaet vyyavlyat ih svojstva po otnosheniyu ko vsemu diapazonu vhodnyh dannyh Dlya etogo ponyatie korrektnosti bylo razdeleno na dva tipa Chastichnaya korrektnost programma dayot pravilnyj rezultat dlya teh sluchaev kogda ona zavershaetsya Polnaya korrektnost programma zavershaet rabotu i vydayot pravilnyj rezultat dlya vseh elementov iz diapazona vhodnyh dannyh Vo vremya dokazatelstva korrektnosti sravnivayut tekst programmy so specifikaciej zhelaemogo sootnosheniya vhodnyh vyhodnyh dannyh Dlya dokazatelstv tipa Hoara specifikaciya imeet vid utverzhdenij kotorye nazyvayut predusloviyami i postusloviyami V sovokupnosti s samoj programmoj ih eshyo nazyvayut trojkoj Hoara Eti utverzhdeniya zapisyvayut kak P Q S gde P eto predusloviya dolzhnye vypolnyatsya pered zapuskom programmy Q a S postusloviya istinnye posle zaversheniya raboty programmy Formalnye metody byli uspeshno primeneny dlya shirokogo kruga zadach v chastnosti razrabotke elektronnyh shem iskusstvennogo intellekta avtomaticheskih sistem na zheleznoj doroge verifikacii mikroprocessorov specifikacii standartov specifikacii i verifikacii programm Vremya raboty Sm takzhe Klass slozhnosti Grafiki funkcij privedyonnyh v tablice nizhe Rasprostranyonnym kriteriem ocenki algoritmov yavlyaetsya vremya raboty i poryadok rosta prodolzhitelnosti raboty v zavisimosti ot obyoma vhodnyh dannyh Dlya kazhdoj konkretnoj zadachi sostavlyayut nekotoroe chislo kotoroe nazyvayut eyo razmerom Naprimer razmerom zadachi vychisleniya proizvedeniya matric mozhet byt naibolshij razmer matric mnozhitelej a dlya zadach na grafah razmerom mozhet byt kolichestvo reber grafa Vremya kotoroe tratit algoritm kak funkciya ot razmera zadachi n displaystyle n nazyvayut vremennoj slozhnostyu etogo algoritma T n Asimptotiku povedeniya etoj funkcii pri uvelichenii razmera zadachi nazyvayut asimptotichnoj vremennoj slozhnostyu a dlya eyo oboznacheniya ispolzuyut notaciyu O bolshoe Naprimer esli algoritm obrabatyvaet vhodnye dannye razmerom n displaystyle n za vremya cn gde c nekotoraya konstanta to govoryat chto vremennaya slozhnost takogo algoritma O n Asimptoticheskaya slozhnost vazhna tem chto yavlyaetsya harakteristikoj algoritma a ne ego konkretnoj realizacii optimizaciej operacij bez zameny algoritma mozhno izmenit tolko multiplikativnyj koefficient c no ne asimptotiku Kak pravilo imenno asimptoticheskaya slozhnost yavlyaetsya glavnym faktorom kotoryj opredelyaet razmer zadach kotorye algoritm sposoben obrabotat Chasto vo vremya razrabotki algoritma pytayutsya umenshit asimptoticheskuyu vremennuyu slozhnost dlya naihudshih sluchaev Na praktike zhe byvayut sluchai kogda dostatochnym yavlyaetsya algoritm kotoryj obychno rabotaet bystro Grubo govorya analiz srednej asimptoticheskoj vremennoj slozhnosti mozhno razdelit na dva tipa analiticheskij i statisticheskij Analiticheskij metod dayot bolee tochnye rezultaty no slozhen v ispolzovanii na praktike Zato statisticheskij metod pozvolyaet bystree osushestvlyat analiz slozhnyh zadach V sleduyushej tablice privedeny rasprostranyonnye asimptoticheskie slozhnosti s kommentariyami Slozhnost Kommentarij PrimeryO 1 Ustojchivoe vremya raboty ne zavisit ot razmera zadachi Ozhidaemoe vremya poiska v hesh tabliceO log log n Ochen medlennyj rost neobhodimogo vremeni Ozhidaemoe vremya raboty interpoliruyushego poiska n elementovO log n Logarifmicheskij rost udvoenie razmera zadachi uvelichivaet vremya raboty na postoyannuyu velichinu Vychislenie xn Dvoichnyj poisk v massive iz n elementovO n Linejnyj rost udvoenie razmera zadachi udvoit i neobhodimoe vremya Slozhenie vychitanie chisel iz n cifr Linejnyj poisk v massive iz n elementovO n log n Linearitmichnyj rost udvoenie razmera zadachi uvelichit neobhodimoe vremya chut bolee chem vdvoe Sortirovka sliyaniem ili kuchej n elementov nizhnyaya granica sortirovki sopostavleniem n elementovO n Kvadratichnyj rost udvoenie razmera zadachi uvelichivaet neobhodimoe vremya v chetyre raza Elementarnye algoritmy sortirovkiO n Kubichnyj rost udvoenie razmera zadachi uvelichivaet neobhodimoe vremya v vosem raz Obychnoe umnozhenie matricO cn Eksponencialnyj rost uvelichenie razmera zadachi na 1 privodit k c kratnomu uvelicheniyu neobhodimogo vremeni udvoenie razmera zadachi uvelichivaet neobhodimoe vremya v kvadrat Nekotorye zadachi kommivoyazhyora algoritmy poiska polnym pereboromNalichie ishodnyh dannyh i nekotorogo rezultataAlgoritm eto tochno opredelyonnaya instrukciya posledovatelno primenyaya kotoruyu k ishodnym dannym mozhno poluchit reshenie zadachi Dlya kazhdogo algoritma est nekotoroe mnozhestvo obektov dopustimyh v kachestve ishodnyh dannyh Naprimer v algoritme deleniya veshestvennyh chisel delimoe mozhet byt lyubym a delitel ne mozhet byt raven nulyu Algoritm sluzhit kak pravilo dlya resheniya ne odnoj konkretnoj zadachi a nekotorogo klassa zadach Tak algoritm slozheniya primenim k lyuboj pare naturalnyh chisel V etom vyrazhaetsya ego svojstvo massovosti to est vozmozhnosti primenyat mnogokratno odin i tot zhe algoritm dlya lyuboj zadachi odnogo klassa Dlya razrabotki algoritmov i programm ispolzuetsya algoritmizaciya process sistematicheskogo sostavleniya algoritmov dlya resheniya postavlennyh prikladnyh zadach Algoritmizaciya schitaetsya obyazatelnym etapom v processe razrabotki programm i reshenii zadach na EVM Imenno dlya prikladnyh algoritmov i programm principialno vazhny determinirovannost rezultativnost i massovost a takzhe pravilnost rezultatov resheniya postavlennyh zadach Algoritm eto ponyatnoe i tochnoe predpisanie ispolnitelyu sovershit posledovatelnost dejstvij napravlennyh na dostizhenie celi Predstavlenie algoritmovFormy zapisi algoritma slovesnaya ili verbalnaya na estestvennom yazyke na algoritmicheskom yazyke yazyke programmirovaniya ili psevdokode v mashinnom kode kod processora EVM v matematicheskoj notacii sm vyshe predstavlennye varianty shematicheskaya graficheskaya naprimer blok shemy i DRAKON shemy strukturogrammy diagrammy Nassi Shnejdermana Obychno snachala na urovne idei algoritm opisyvaetsya slovami no po mere priblizheniya k realizacii on obretaet vsyo bolee formalnye ochertaniya i formulirovku na yazyke ponyatnom ispolnitelyu naprimer mashinnyj kod Effektivnost algoritmovHotya v opredelenii algoritma trebuetsya lish konechnost chisla shagov trebuemyh dlya dostizheniya rezultata na praktike vypolnenie ogromnogo kolichestvo shagov privodit k dlitelnomu vypolneniyu programm takzhe obychno est drugie ogranicheniya na razmer programmy na dopustimye dejstviya V svyazi s etim vvodyat takie ponyatiya kak slozhnost algoritma vremenna ya po razmeru programmy vychislitelnaya i drugie Dlya kazhdoj zadachi mozhet sushestvovat mnozhestvo algoritmov privodyashih k celi Uvelichenie effektivnosti algoritmov sostavlyaet odnu iz zadach informatiki nachinaya s 1940 h godov v svyazi s etim prostroen ryad bolee effektivnyh v asimptoticheskom smysle algoritmov dlya tradicionnyh zadach naprimer angl algoritm Chudnovskogo dlya vychisleniya chisla p displaystyle pi PrimerAlgoritm Evklida effektivnyj metod vychisleniya naibolshego obshego delitelya NOD Nazvan v chest grecheskogo matematika Evklida odin iz drevnejshih algoritmov kotoryj ispolzuyut do sih por Opisan v Nachalah Evklida primerno 300 let do n e a imenno v knigah VII i X V sedmoj knige opisan algoritm dlya celyh chisel a v desyatoj dlya dlin otrezkov Sushestvuet neskolko variantov algoritma nizhe zapisannyj v psevdokode rekursivnyj variant alg nod a b nach esli b 0 vozvrat a inache vozvrat nod b a mod b kon Illyustraciya vypolneniya algoritma Evklida dlya vychisleniya NOD chisel 1599 i 650 NOD chisel 1599 i 650 Shag 1 1599 650 2 299Shag 2 650 299 2 52Shag 3 299 52 5 39Shag 4 52 39 1 13Shag 5 39 13 3 0Sm takzheMetaalgoritm Aukcion algoritmov Teoriya algoritmovPrimechaniyaALGORI TM arh 30 oktyabrya 2018 A L Semyonov A Anketirovanie M Bolshaya rossijskaya enciklopediya 2005 S 426 Bolshaya rossijskaya enciklopediya v 35 t gl red Yu S Osipov 2004 2017 t 1 ISBN 5 85270 329 X Kleene 1943 in Davis 1965 274 Rosser 1939 in Davis 1965 225 Knut 2006 1 1 Algoritmy Robert Andrew Wilson Frank C Keil The MIT Encyclopedia of the Cognitive Sciences MIT Press 2001 S 11 1106 s ISBN 9780262731447 Arhivirovano 17 noyabrya 2021 goda Igoshin s 317 V A Uspenskij Matematika eto gumanitarnaya nauka rus Troickij variant 2014 28 yanvarya 2 146 S 4 6 Arhivirovano 27 noyabrya 2018 goda Basics The Turing Machine with an interpreter neopr Good Math Bad Math 9 fevralya 2007 Arhivirovano 11 fevralya 2012 goda Igoshin razdel 33 Enciklopediya kibernetiki t 2 c 90 91 Igoshin razdel 34 Probabilistic algorithms should not be mistaken with methods which I refuse to call algorithms which produce a result which has a high probability of being correct It is essential that an algorithm produces correct results discounting human or computer errors even if this happens after a very long time Henri Cohen A Course in Computational Algebraic Number Theory angl Springer Verlag 1996 P 2 ISBN 3 540 55640 0 Thomas H Cormen Charles E Leiserson Ronald L Rives t Clifford Stein Introduction to Algorithms angl 2 e MIT Press 2001 P 531 ISBN 0 262 03293 7 Razdel 12 s 12 22 v Atallah 2010 Dina Goldin Peter Wegner The origins of the Turing Thesis Myth CS 04 14 October 2004 Interactive Computation Is More Powerful Than Non Interactive neopr Arhivirovano 19 noyabrya 2015 goda c2 com M Geri D Dzhonson Vychislitelnye mashiny i trudnoreshaemye zadachi M Mir 1982 C 155 Igoshin razdel 36 Peter Linz An Introduction to Formal Languages and Automata angl 2000 ISBN 0 7637 1422 4 computability and complexity Encyclopedia of computer Science and Technology Facts On File 2009 ISBN 978 0 8160 6382 6 Given any computer program can you determine whether the program will halt end given any input O Regan razdel 4 5 razdel 5 3 6 v Enders 2003 razdel 5 3 7 v Enders 2003 O Regan s 119 A Aho Dzh Hopkroft Dzh Ulman Postroenie i analiz vychislitelnyh algoritmov The Design and Analysis of Computer Algorithms rus M Mir 1979 razdel 11 v Atallah 2010 razdel 1 v Atallah 2010 Knuth D The Art of Computer Programming Volume 2 Seminumerical Algorithms angl 3rd Addison Wesley 1997 ISBN 0201896842 LiteraturaTomas H Kormen Charlz I Lejzerson Ronald L Rivest Klifford Shtajn Algoritmy postroenie i analiz Introduction to Algorithms Third Edition 3 e M 2013 1328 s ISBN 978 5 8459 1794 2 Donald Knut Iskusstvo programmirovaniya The Art of Computer Programming vol 1 Fundamental Algorithms 3 e izd M 2006 T 1 Osnovnye algoritmy S 720 ISBN 0 201 89683 4 Tomas H Kormen Algoritmy vvodnyj kurs Algorithms Unlocked M 2014 208 s ISBN 978 5 8459 1868 0 Igoshin V I Matematicheskaya logika i teoriya algoritmov 2 e izd ster M IC Akademiya 2008 448 s ISBN 5 7695 1363 2 SsylkiV rodstvennyh proektahZnacheniya v VikislovareKnigi v VikiuchebnikeMediafajly na Vikisklade Slovo algoritm proishozhdenie i razvitie V V Shilov Zhurnal Potencial istochnik istoricheskih svedenij Ob algoritme neopr nedostupnaya ssylka istoriya v enciklopedii Krugosvet U etoj stati est neskolko problem pomogite ih ispravit Etu statyu neobhodimo ispravit v sootvetstvii s pravilami Vikipedii ob oformlenii statej Pozhalujsta pomogite uluchshit etu statyu 4 avgusta 2011 Eta statya nuzhdaetsya v pererabotke Pozhalujsta utochnite problemu v state s pomoshyu bolee uzkogo shablona Pozhalujsta uluchshite statyu v sootvetstvii s pravilami napisaniya statej 10 avgusta 2012 Pozhalujsta posle ispravleniya problemy isklyuchite eyo iz spiska parametrov Posle ustraneniya vseh nedostatkov etot shablon mozhet byt udalyon lyubym uchastnikom

NiNa.Az

NiNa.Az - Абсолютно бесплатная система, которая делится для вас информацией и контентом 24 часа в сутки.
Взгляните
Закрыто