Чем способ отличается от алгоритма

В чем разница между алгоритмом и методом

Как вы различаете алгоритм и метод? Почему мы называем метод Ньютона или Форд-Faulkerson алгоритмов метода? Каковы свойства хорошего алгоритма и что определяет метод как алгоритм?

11 ответов

алгоритмы завершаются конечным числом шагов.

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

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

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

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

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

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

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

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

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

короче говоря, алгоритм-это шаги, с помощью которых мы делаем что-то вроде включения лампочки:

1) Прогулка к переключателю 2) Флип Переключатель 3) Поток Электронов 4) свет, генерируемый

методы-это то, где мы фактически кодируем действия внутри класса.

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

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

в информатике алгоритм по-прежнему является пошаговым способом решения проблемы-an реализация-агностический комплекс шагов. Метод обычно ссылается на фрагмент кода, связанный с классом или объектом, который выполняет некоторую задачу — он может потенциально реализовать многие алгоритмы.

Ну, для любителей этимологии

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

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

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

Что касается метода Форда-Фолкерсона, CLRS называет его методом, а не алгоритмом, потому что «он охватывает несколько реализаций с различным временем выполнения»[pp 651. 2-й выпуск]

Источник

В чем разница между алгоритмом и методом

Как вы различаете алгоритм и метод? Почему мы не называем метод Ньютона или алгоритмы метода Форда-Фолкерсона? Каковы свойства хорошего алгоритма и что квалифицирует метод как алгоритм?

Что касается метода Форда-Фолкерсона, CLRS называет его скорее методом, чем алгоритмом, потому что “он включает в себя несколько реализаций с различным временем выполнения” [pp. 651. 2nd editon]

Алгоритмы заканчиваются на конечном числе шагов.

Процедура, которая имеет все характеристики алгоритма, за исключением того, что она может не иметь конечности, может быть названа вычислительным методом. Первоначально Евклид представил не только алгоритм для наибольшего общего делителя чисел, но и очень похожую геометрическую конструкцию для “наибольшей общей меры” длин двух сегментов линии; это вычислительный метод, который не заканчивается, если заданные длины несоизмеримы. – D.Knuth, TAOCP vol 1, Основные понятия: Алгоритмы

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

Существует нет технической разницы между термином “метод”, как в “методе Ньютона” и “алгоритме”.

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

На мой взгляд, метод является более общей концепцией, чем алгоритм, и может быть более или менее чем-либо, например. запись данных в файл. Почти все, что должно произойти из-за события или какого-то логического выражения. Кроме того, значение слов “метод” и “алгоритм” может варьироваться в зависимости от того, в каком контексте они используются. Они могут использоваться для описания того же самого.

В общем программировании говорят, что алгоритмы – это шаги, с помощью которых выполняется задача. Согласно Wikipedia,

алгоритм представляет собой конечную последовательность инструкций, явную пошаговую процедуру для решения проблемы, часто используемую для вычисления и обработки данных. Это формально эффективный метод, в котором список четко определенных инструкций для выполнения задачи будет при заданном начальном состоянии проходить через четко определенную последовательность последовательных состояний, в конечном итоге заканчивая конечным состоянием. Переход от одного состояния к другому не обязательно детерминирован; некоторые алгоритмы, известные как вероятностные алгоритмы, включают случайность. Ответ №5

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

Читайте также:  Способы приобретения знаний организациями

В контексте, в котором вы указываете (метод Ньютона и т.д.), нет существенного различия между алгоритмом и методом. Оба они устанавливают пошаговые инструкции для решения проблемы. В статье Википедии о методе Ньютона говорится: “Алгоритм является первым в классе методов Домахолдера, которому удалось воспользоваться методом Галлея”. Граница в лучшем случае размыта.

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

Хорошо, для любителей этимологии

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

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

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

Источник

Метод способ и алгоритм. Чем отличаются эти понятия.

Уважаемый Виктор Евгеньевич.
Насчет алгоритма Вам ответили. Метод и способ остались.
Пришлось решать эту диллему, когда диссер защищал. В названии было Разработка метода.. . как способа.. .
Прошло без проблем, хотя к названию чуток цеплялись.
Метод, по иерархии, существенно выше, чем способ. Метод — это, в первую очередь, путь научных исследований. Как ни странно, но это и способ достижения цели. Другими словами, метод — это систематизированная совокупность «телодвижений», который, в свою очередь, может быть источником разных способов.
Например, нужно добыть образцы грунта с Эвереста. Можно использовать такие способы, как лестницу соорудить, можно бригаду альпинистов заслать, можно вертолет запустить. Их много способов. А можно разработать новый метод перемещения образцов грунта (вообще — безотносительно) , и использовать его как способ их взятия с Эвереста.

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

пара цитат из википедии:
Ме́тод — систематизированная совокупность шагов, действий, которые необходимо предпринять, чтобы решить определённую задачу или достичь определённой цели.
Способ — совокупность и порядок действий, используемых для решения какой-либо задачи.

Метод в математике — синоним способа, алгоритма решения задачи, достижения цели

Вывод: эти слова синонимы.

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

Способ — это уже не видовое, а родовое понятие. Иными словами, когда тебе указывают путь, которым ты можешь добраться к цели. И ты по этому пути идешь, а уж на какие ты там кочки по дороге наступаешь — это не очень важно, главное, что ты идешь в строго указанном направлении.
Допустим, тебе говорят: Вот клавиатура. Если нажимать на кнопочки, то на экране появятся буквы, похожие на те, что изображены здесь. И теперь-ка набери мне слово «ОБОРОНОСПОСОБНОСТЬ», а я тебе покажу, в чем ты ошибаешься.

А метод — это уже общее от способа. Это когда тебе указывают цель, а пути к ней ты выбираешь сам.
Допустим, тебе говорят: Вот тебе диссертация, которую нужно напечатать. Я не знаю, как это делать, но вот тебе и компьютер, с помощью которого можно это сделать. Понятия не имею как, но через неделю должно быть готово.

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

А дальше, за «методом», уже идет научный поиск. Это отдельная песня.

Источник

Что такое алгоритм?! Часть первая

Терзаем вместе основной кирпичик программиста — Алгоритм.

Проблема

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

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

Почему конкретный прием был успешен в задаче-образце? Будет ли он успешен в твоём проекте? Какие признаки проекта дают понять, что использование приёма уместно?

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

Для компактного и полезного набора объяснений нужно:

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

Если обобщить, то нужны алгоритмы для написания и развития алгоритмов.

Задуманная серия статей не претендует на полное решение указанной проблемы. Предпринимается небесспорная попытка сделать первый шаг на пути к этому решению. Этот шаг состоит в выделении структуры и свойств главного кирпичика программиста — Алгоритма.

Читайте также:  Способ подготовки газового конденсата

Задача

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

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

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

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

Сразу возникает масса вопросов к этому определению:

  • Что такое правило?
  • Как, кому и для кого это правило можно задать?
  • Что есть объединение совокупностью?
  • Каким образом правила соотносятся с задачей?
  • Что формирует класс задачи?
  • Определяется ли способ формирования совокупности правилами и задачами?
  • .

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

  • Какова структура набора?
  • Какие есть варианты действий и исполнителей?
  • Существуют ли минимально возможное действие, минимальный набор необходимых действий?
  • Каким образом действия встроены в исполнителя?
  • Какие есть способы создания копии исполнителя (например, если исполнитель — человек)?
  • Как действия зависят друг от друга в упорядоченном выполнении?
  • Что есть задача кроме того, что она выполняется последовательностью действий?
  • Как задача соотносится с исполнителем и с действиями?
  • Возможно ли использовать решение задачи в качестве действия?
  • Какие возможны варианты указания порядка действий?
  • Если воспроизведение патефоном записи звуков леса является алгоритмом, то какова структура этой задачи?
  • Если репликация ДНК является алгоритмом, то каков её исполнитель?
  • Если исполнителем является Машина Тьюринга, то как с её использованием решить механическую задачу, например, воспроизведение звука?

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

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

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

Раньше алгоритм создавали в виде блок схем и полуавтоматически компилировали в машинные коды. Сейчас я избавлен от необходимости быть художником и компилятором для написания программы. Текст моей функции — это запись алгоритма в текстовом виде — его текстовая блок-схема. Здесь можно вспомнить Scratch, где используется визуальное создание блок-схемы алгоритма без написания текста. Способ записи алгоритма сейчас не так важен.

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

Если «действие = алгоритм», то определение можно попробовать переписать рекурсивно «алгоритм — это приводящая к решению задачи последовательность использования существующих алгоритмов». Рекурсивные определение не самое простое, что можно записать в словаре обычного человека. Но для программиста и математика эта форма знакома. Мы умеем с ней работать, и это даёт нам преимущество в рассмотрении разных задач, разбиваемых на подобные себе подзадачи. Так давайте воспользуемся этим преимуществом.

Чтобы разрешить рекурсию нам необходимо найти:

  • терминальное условие выхода из рекурсии — минимальное неделимое «действие» (атомарный алгоритм), которое можно использовать в разработке алгоритма;
  • способ перехода от текущего уровня рекурсии (набора «действий») к следующему уровню (алгоритму).

Действие

Для начала рассмотрим «действие» и попробуем найти причину, обеспечивающую возможность использования существующего «действия» для создания нового алгоритма.

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

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

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

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

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

В рамках примера процесса «Земля-Яблоко» можно отметить у «действия» следующие признаки:

  • наличие процесса изменения (расстояния и параметров движения объектов);
  • наличие объектов, взаимодействие которых вызывает такие изменения;
  • наличие локальности процесса, то есть существование значения расстояния между объектами, с превышением которого их взаимодействие перестает вызывать процесс изменения, что делает невозможным использование «действия» (Земля и гипотетическое яблоко, находящееся вне солнечной системы).

Рассмотрим с этими признаками разные области и процессы, выделяя в них примеры «действий» и контролируя особенности указанных признаков в описании структуры «действия».

Физические процессы

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

Отдельно от этих простых взаимодействий двух объектов стоят многокомпонентные процессы, например, ядерные реакции (по структуре «действия» близки к химическим процессам, рассматриваемым далее). Сложны и процессы описываемые суммарным взаимодействием большого числа элементов, например, «идеальный газ». Пока отложим их рассмотрение и сосредоточимся на самых простых примерах.

Читайте также:  Все способы обновления себя

Химические процессы

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

Математические процессы

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

В ситуации с математиком можно выделить много объектов, но с точки зрения «действия» («сложение математиком двух целых чисел»), объекта всего три: это объект «математик», объект «первое число» и объект «второе число». В отличие от всех рассмотренных ранее объектов числа являются обозначениями, то есть виртуальными объектами. И их преобразование в алгоритме более сложно устроено нежели изменение расстояния и параметров движения объектов, как это было для «химических» действий. Подробности такого преобразования — это тема отдельной увлекательной статьи. А в рамках текущей рассмотрим древнего математика, который складывает числа, используя кучки камешков (рим. ‘calculi’), и более «современного» математика, использующего абак. Абстракции таких способов вычисления суммы не так далеко отошли от физических и химических процессов, поэтому структура процессов их «действий» полностью описывается изменениями расстояний и связей.

Интересно, что на примере древнего математика становится понятен смысл слова «сложить», которое отсылает нас к действию «класть» и к фразе «положить вместе».

Сложение и древний математик

Для математика, оперирующего камешками, сумма это «действие» со следующими характеристиками.

  • это сам «математик» (он взаимодействует со слагаемыми);
  • лежащая отдельно кучка №1, содержащая и связывающая вместе камешки (подобно химическим связям), и обозначающая первое слагаемое;
  • лежащая отдельно кучка камешков №2, обозначающая второе слагаемое.

  • «математик» подходит к кучкам (физически изменяет расстояние между кучками и собой) и начинает с ними взаимодействие;
  • «математик» объединяет две кучки (физически изменяет расстояние между двумя кучками или переносит все камешки одной кучки в другую, возможно, используя «действие» «Перенос по-одному» камешку)

  • сформированная кучка камешков, обозначающая результат (сумму);
  • «математик», отошедший от кучки результата и переставший на неё воздействовать.

Сложение и математик-абакист

У математика с абаком ситуация сложнее. Кучки разделены по значению на разрядные борозды.

Можно рассмотреть самый простой абак с двумя разрядами-бороздами. Пусть он будет десятичный. Тогда один камешек на борозде десятков соответствует десяти камешкам на борозде единиц. И 10 — это максимальное количество камешков на борозде единиц. По сравнению с действием первого математика меняется представление слагаемых. И в арсенале математика уже необходимы нескольких готовых «действий».

  • «Перенос по-одному» из борозды в борозду одинакового уровня (действие, позаимствованное у первого математика);
  • «Перенос в десятки», которое необходимо выполнять, если борозда единиц полностью заполняется, тогда из неё убираются все камешки кроме одного, который переносится в борозду десятков.

  • это сам «математик» (он взаимодействует со слагаемыми);
  • группа камешков №1, лежащих и удерживаемых двумя бороздами (единиц и десятков), и обозначающих первое слагаемое;
  • группа камешков №2, лежащих и удерживаемых двумя бороздами (единиц и десятков), и обозначающих второе слагаемое;

  • «математик» подходит к группам борозд (физически изменяет расстояние между ними и собой) и начинает с ними взаимодействие;
  • «математик» объединяет камешки из двух борозд единиц (физически изменяет расстояние между камешками, разрушает связи со старой бороздой и создает связи с новой) с использованием действий «Перенос по-одному» и «Перенос в десятки»;
  • «математик» объединяет камешки из двух борозд десятков с использованием действия «Перенос по-одному»

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

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

Сложение и машина Тьюринга

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

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

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

Выводы

Соберём всё, что мы отметили рассматривая разные примеры «действия»:

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

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

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

Спасибо Вам за внимание.

Отзывы

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

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

Источник

Оцените статью
Разные способы