Владимир Паронджанов писал(а):
Я склонен согласиться с определением алгоритма, которое дал Николай Николаевич Непейвода в «Новой философской энциклопедии». См. здесь:
viewtopic.php?p=87780#p87780Было бы интересно узнать Ваше мнение об этом определении.
Привожу цитату по указанной ссылке:
Цитата:
Алгоритм — точное предписание, задающее потенциально осуществимый (см. Абстрация потенциальной осуществимости) вычислительный процесс (процесс исполнения алгоритма), ведущий от исходных данных, которые могут варьировать, к конечному результату.
Овладение общим методом точно поставленной задачи по сути дела означает знание алгоритма. Так, умение складывать два числа означает владение алгоритмом сложения чисел (напр. сложение столбиком, котором учат в школе).
Необходимо различать алгоритм и алгоритмическое предписание, имеющее внешнюю форму алгоритма, но включающее не до конца определенные шаги.
Так, для перевода текста с одного естественного языка на другой нельзя дать алгоритм, поскольку придется апеллировать к таким неточным понятим как смысл и контекст. При попытке же применения точного алгоритма получается то, что в более откровенной форме выдают машинные переводчики и в более мягкой, но от того не менее вредной — профессиональные переводчики в тот момент, когда выходят за рамки полностью освоенных ими понятий и действий.
======
Источник: Непейвода Н.Н. Алгоритм // Новая философская энциклопедия: В 4-х т. / Ин-т философии РАН. / Под. ред Степина В.С., Гусейнова А.А. и др. — М.: Мысль, 2010. — Том 1. — 744с. — С. 76. — ISBN 978-2-244-01116-6
То, что далее излагается - это личная точка зрения, ориентированная на личные потребности.
Могут быть и другие мнения.
Цитата:
Алгоритм — точное предписание, задающее потенциально осуществимый (см. Абстрация потенциальной осуществимости) вычислительный процесс (процесс исполнения алгоритма), ведущий от исходных данных, которые могут варьировать, к конечному результату.
1) Данное определение - это явное определение вычислительного алгоритма (который задает вычислительный процесс).
Классики классической теории алгоритмов указывают, что термин "вычислительный процесс" нужно понимать предельно широко, типа:
дискретный процесс преобразования знаковых комплексов.
Или, в более современных представлениях:
дискретный процесс обработки символьной информации
(в частности, цифровой информации - в численной интерпретации).
Однако, лучше было бы подобрать логически более точное обобщенное определение
с явным использование точных обобщенных терминов).
Фактически это будет обобщенное определение алгоритма обработки информации
(в некоторой знаковой форме).
Кроме того, для невычислительных, нематематических, неинформационных и, в частности, для технических приложений
необходимо иметь свои определения алгоритмов, связанные с существом предписанных процессов.
Например:
перемещения, манипулирования, обработки материальных объектов и потоков.
Например:
школьное правило (алгоритм) безопасного перехода улицы (без светофора).
И, кроме того, необходимы обобщенные определения алгоритмов,
обобщающие алгоритмы с информационными и материальными процессами.
2) В этом плане я предпочитаю, для начала, определение школьного типа - из школьной информатики
(не потому, что школьной, а потому, что команда академика Ершова А.П. - классиков отечественной школьной информатики использовала обработку, обобщение и адаптацию определений классиков классической теории алгоритмов).
Ориентировочно (точно не помню):
Алгоритм - это точное и понятное предписание исполнителю выполнить
последовательность действий, направленных на достижение заданной цели (или решение поставленной задачи).
При этом:
Во-первых, это обобщенное (нейтральное) определение - последовательность действий (любой природы).
Во-вторых, это неявное определение последовательного алгоритма (задает последовательность действий), и в наше время необходимы обобщения допускающие параллельные процессы, например:
выполнить комплекс действий (последовательной или параллельной структуры).
В-третьих, первое определение "задающее вычислительный процесс" формально допускает
и последовательные и параллельные вычислительные процессы,
но, скорее всего, в этом случае параллельные процессы не предполагаются.
3) Выражение:
Алгоритм — точное предписание, задающее потенциально осуществимый (см. Абстракция потенциальной осуществимости) вычислительный процесс ... .
Несколько неожиданно выражение:
"потенциально осуществимый (см. Абстракция потенциальной осуществимости) вычислительный процесс".
Обычно абстракция (понятие) потенциальной осуществимости применяется в обход понятия актуальной бесконечности.
Строго говоря, козе понятно, что процесс, заданный алгоритмом, является потенциально осуществимым.
Но насколько это актуально указывать в определении алгоритма?
Надо думать. Но, как говорится, хозяин - барин (если надо, то надо).
4) Уточнения типа "точное" предписание", "точное и строгое" предписание, "строгое и понятное" предписание можно выносить в список общих свойств алгоритма (и их определений):
-- определение алгоритма будет короче и стандартнее;
-- а эти признаки все равно необходимо специально оговаривать по смыслу их применения.
Цитата:
Овладение общим методом точно поставленной задачи по сути дела означает знание алгоритма.
Так, умение складывать два числа означает владение алгоритмом сложения чисел (напр. сложение столбиком, котором учат в школе).
В принципе все так.
Но есть один ехидный вопрос.
Где тот алгоритм сложения двух (десятичных, надо понимать) чисел - сложения столбиком,
которому учат в школе?
Как и в средние века, в школе учат складывать (а также вычитать, умножать и делить) не по алгоритмам,
а по численным протоколам выполнения алгоритмов - записям всех промежуточных результатов
столбиком или уголком.
Хотя, строго говоря, дети интуитивно "овладевают алгоритмов сложения", но предъявить его не могут.
Правда, судя по интернету, учителя начальных классов уже пытаются перейти на алгоритмическое обучение арифметике
(по-видимому в инициативном порядке).
Цитата:
Необходимо различать алгоритм и алгоритмическое предписание, имеющее внешнюю форму алгоритма, но включающее не до конца определенные шаги.
......................................
Алгоритм - это предписание определенного вида:
это определенный вид (подкласс) рода (класса) предписаний.
То есть алгоритм - это алгоритмическое предписание.
Поэтому "различать алгоритм и алгоритмическое предписание" - это логически невозможно.
Но здесь таким образом затронут
очень важный вопрос.
Первичное классическое представление алгоритма:
алгоритм - это строгое, точное, четкое и т.п. предписание.
И есть другие свойства алгоритма - дискретность, определенность, результативность, массовость и т.п.
Но
понятие алгоритма эволюционирует - обобщаются все его классические свойства.
В частности:
в развитие нечетким множествам и нечеткой логики уже рассматриваются
нечеткие алгоритмы (по характеру и даже по составу действий) - это нечеткие (алгоритмические) предписания.
Более того, уже актуально введение в оборот понятия непрерывного алгоритма
(оно фактически используется в теории автоматического управления и регулирования) и т.п.
В частности:
школьное правило перехода улицы - это
нечеткий алгоритм, нечеткое предписание
(посмотреть налево, если
близко идут машины, то ждать
пока пройдут, перейти половину улицы, посмотреть направо, ...).
Но детишки вполне управляются с таким алгоритмом - человеческий фактор (это не робот).
Аналогично, по-видимому, существуют нечеткие медицинские алгоритмы (нечеткие медицинские предписания),
но медики успешно по ним работают - человеческий фактор.
Но медикам нужны в основном, конечно, вполне четкие алгоритмы (четкие предписания).