Основные способы синтеза
sergey shishkinВ работе при рассмотрении прикладных областей алгоритмической модели выделяются и детально описываются различные примеры синтеза. Хочется уже здесь отметить, что при всём разнообразии разобранных примеров, они все являются реализацией или одного способа, или совокупности основных способов синтеза, представленных в следующем списке:
- Случайный поиск алгоритма - проверка наличия взаимодействия между существующими на текущий момент времени объектами в существующих на текущий момент локальных областях, характеризуемых различными динамическими параметрами объектов с изменяющимся во времени множеством классов эквивалентности объектов.
- Группировка алгоритмов - объединение множества ранее независимых или иначе объединённых алгоритмов в единую структуру нового макро-алгоритма;
- Эволюция алгоритма - изменение макро-алгоритма независимым дополнением или изменением его малой специализированной части (например, работника) без изменения остальных частей макро-алгоритма;
- Трансляция алгоритма - формирование алгоритма исполнением алгоритмов, принадлежащих некоторой системе трансляции, комплементарно сопоставляющей объекты и их параметры для двух алгоритмических систем (например, прикладной области модели и пространства модели).
- Абстрактный перенос алгоритма - перенос универсального алгоритма, работающего с одними классами объектов и некоторыми реализациями под-алгоритмов, в новую ситуацию для исполнения с участием других классов объектов и других реализаций под-алгоритмов, возможный в силу сходства конструкций этих объектов и совпадения базовых интерфейсов под-алгоритмов;
- Интерполяция алгоритма - построение модели для некоторого обучающего набора образцов процессов и объектов, для того чтобы в пространстве построенной модели применить интерполяционные алгоритмы выявления и описания закономерностей (алгоритмичности) присущих каждому образцу и на этой основе выполнить синтез универсального алгоритма, исполнимого на каждом экземпляре обучающего набора, а в силу выявленной алгоритмичности переносимого и на иные экземпляры подобных процессов и объектов вне обучающего набора.
Указанные способы синтеза не являются полностью независимыми. Почти каждый последующий способ опирается на предыдущие, но при этом содержит в себе специализирующую особенность, благодаря которой увеличивает эффективность развития по сравнению со способами, послужившими ему опорой. Есть основания полагать, что этот список способов в перспективе развития пространства открыт к дополнению, но на текущий момент для формализации всех найденных примеров синтеза алгоритмов оказывается достаточно применения этой группы.
Отметим особый случай для синтеза и опишем его следующим термином.
Метод синтеза — это способ синтеза, осуществляемый исполнением "порождающего" алгоритма, уже существующего в пространстве.
Формальное определение методов синтеза — одна из задач, решение которой необходимо для достижения поставленной в работе цели.
В пространстве для процессов, в которых происходят изменения экземпляров алгоритма, можно указать значимые результаты в отношении этого экземпляра и их влияние на множество алгоритмов в целом:
- создание экземпляра нового алгоритма (добавление элемента в множество),
- разрушение последнего экземпляра алгоритма (удаление элемента из множества).
При изменении в существующем экземпляре алгоритма неизбежно разрушается экземпляр этого алгоритма, но на основе получившихся измененных объектов есть вероятность появления нового алгоритма. Таким образом изменения экземпляра алгоритма могут быть синтезирующими.
Здесь предваряя приведенное в следующей главе, формальное определение важных типов опорных объектов алгоритма, стоит указать на признак этих объектов, который является одним из основополагающих для возможности само-развития в алгоритмическом пространстве. Этот признак закрепляет возможность в пространстве отсутствия изменения опорного объекта при исполнении алгоритма. На основе этого признака опорные объекты алгоритма делятся на два класса:
- материал алгоритма — это опорные объекты алгоритма, изменяющиеся в ходе его исполнения;
- работники алгоритма — это опорные объекты, не изменяющиеся при исполнении алгоритма.
Здесь в выделении классов объектов по некоторому признаку используется один из универсальных способов, обеспечивающих развитие алгоритмического пространства. Этот способ — специализация. И его применение встречается на всех этапах развития пространства, рассмотренных в работе.
Специализация (в широком смысле) - разделение процессов пространства по некоторому признаку на несколько классов и упрощение за счёт этого структуры процессов внутри каждого выделенного класса с повышением в нём вероятности развития.
В классе алгоритмов, использующих работников, есть возможность появления особого вида синтезирующего изменения экземпляра алгоритма (наиболее характерного для эволюционного синтеза), в ходе которого изменением работников синтезируется алгоритм, тождественный исходному.
Тождественные алгоритмы - несколько алгоритмов, опирающихся на одинаковый набор материалов, и выполняющих одинаковое изменение этих материалов при своём исполнении, но отличающихся опорным набором работников.
Синтез тождественного алгоритма путем изменения работников в его экземпляре является одним из эффективных приёмов, используемых для развития пространства, поэтому введем для этого процесса отдельный термин.
Рефакторинг — изменение работника алгоритма, синтезирующее тождественный алгоритм.
Из множества примеров развития в прикладных областях алгоритмической модели видно, что успешность синтеза повышается при предварительном выполнении универсального рефакторинга алгоритма: введения специализации и организации. Для этого в макро-алгоритме производится разделение по функциональному назначению под-алгоритмов с обязательным введением организующей функции (транспорта, управления...).
Описанные функциональные разделения в алгоритме становятся доступны, благодаря возможности в алгоритмическом пространстве выполнить специализацию. Именно на основе специализации в пространстве с использованием различных признаков возможно получение специализаций алгоритма, которые служат основой его эволюции.
Специализация алгоритма - обособление в алгоритме под-алгоритма на основе некоторого разделяющего функционального признака, выполняемое закреплением исполнения за ограниченным подмножеством опорных объектов с малой зависимостью от остальных процессов, которое уменьшает требования к универсальности этого под-алгоритма и повышает вероятность отдельного его развития.
Организация алгоритма - специализированный под-алгоритм макро-алгоритма, обеспечивающий тождественность макро-алгоритма при специализации и развитии его других под-алгоритмов.
С использованием последнего термина можно уточнить, что сохранение основного функционала алгоритма при эволюционном синтезе — это в большинстве случаев сохранение его организации.
Требуется
Анализ полноты системы динамики и преобразований необходимой для само-развития в элементарном состоянии пространства.
Анализ целесообразности рефакторинга, на основе специализации и организации
Случайный поиск алгоритма может быть представлен примерами:
- метод проб и ошибок подбором компонентов;
- смешивание различных веществ в химической лаборатории;
- перестановка строк кода неопытным программистом;
- мутация кодирующей последовательности.
- ? процессы "зарождения жизни" в мировом океане.
Группировка алгоритмов может быть представлена примерами:
- выработка последовательности химических реакций;
- цикл Кальвина;
- последовательность движений для завязывания узла;
- последовательность действий для сборки мебели;
- метод проб и ошибок удалением компонентов;
- вызов подпроцедуры из основной процедуры;
- эндосимбиоз цианобактерий в клетку водорослей.
Эволюция алгоритма может быть представлена примерами:
- наращивание функционала редактора фотографий;
- эволюция вида (на основе скрещивания кодирующих последовательностей — кроссинговер);
- обучение ученика в школе;
- развитие промышленности;
- изобретение рецепта хлеба;
- развитие государства (без переворотов).
Трансляция алгоритма моделью может быть представлена примерами:
- трансляция алгоритма сложения чисел на операции с линейкой (числовой осью);
- трансляция решений геометрических задач между системами евклидовой геометрии, аналитической геометрии и средой практических проблем человека, например, архитектора;
- изоморфизмы линейных пространств в алгебре;
- трансляция одинаковых объектов практической деятельности человека на множество целых чисел (символических строк) и алгоритмов сложения, умножения и других расчетов производимых в числовом виде, на абаке и в предметной прикладной области;
- трансляция между закономерными изменениями параметров движения материальных объектов и расчетными формулами (алгоритмами) динамики (раздела физики);
- трансляция как отображение между параметрами материальной среды и множеством вещественных чисел;
- трансляция как функция (в математическом смысле) - отображение между двумя множествами элементов.
Абстрактный перенос алгоритма может быть представлен примерами (с использованием сигнальных объектов):
- подсчёт карточек вместо книг в библиотеке;
- сортировка фамилий по значению роста в таблице вместо выстраивания учеников по росту в шеренге;
- специализация сигнала опасности в группе соплеменников на основе сигнальных элементов убегания;
- использованием с разными данными шаблонного метода (STL) быстрой сортировки.
Интерполяция алгоритма может быть представлена примерами:
- аппроксимация функции по заданному набору данных;
- обучение классифицирующей искусственной нейронной сети на заданной наборе данных;
- обучение поведению запоминанием удачной последовательности признаков и действий
Специализация может быть представлена примерами разделения:
- процессов, изучаемых разделами физики, например статикой и динамикой;
- подходов программирования на функциональный, императивный, декларативный;
- процессов, изучаемых разделами химии (органической и неорганической);
- математики на анализ, алгебру, геометрию и другие направления;
- переменных в коде программы на константные и модифицируемые;
- профессиональных специальностей на гуманитарные и технические.
Тождественные алгоритмы могут быть представлены примерами:
- алгоритмы сортировки;
- подогревание воды на огне и в микроволновке;
- обнаружение объекта('мама') братом и сестрой;
- решение геометрической задачи равенства фигур с использованием координатной системы и с опорой на аксиомы
Специализация алгоритма может быть представлена примерами (обособление с отдельной эволюцией):
- врач анестезиолог по отношению ко врачу общей практики (в услугах организаций здравоохранения);
- клетки печени по отношению к стволовой клетке (в организме);
- сегмент кода в памяти по отношению к свободной странице памяти (в работе ЭВМ);
- сорт яблок Апорт по отношению к дикому виду (в сельском хозяйстве).
Организация алгоритма может быть представлена примерами:
- живая клетка с био-структурами и записями алгоритмов функционирования в ДНК;
- государство со сводом законов и государственных структур, описывающих и обеспечивающих взаимодействие граждан;
- остов программного продукта и набор алгоритмов, обеспечивающих взаимодействие компонентов;
- конвейерное производство в части обеспечения движения изделия между этапами сборки;
- реализация универсального интерфейса принтера для новой модели в программах распечатывающих документы.