Перенос цепочки
sergey shishkin- Способы построения и использования абстракций;
- Использование внутренних абстракций для аналогий (использование алгоритма в другой ситуации среды);
- Абстрактный перенос на внутренних абстракциях
- Способ использования внутренних абстракций для расширения набора базовых действий
Рассмотрение процесса формирования и использования цепочек в предыдущих главах было сосредоточено на последовательном развитии и обеспечении алгоритмами поведения описательной полноты для требуемых реакций в разнообразных ситуациях среды.
В ходе формирования признаков для разнообразных ситуаций среды и разделения памяти на области были выделены узлы памяти, являющиеся внутренними абстракциями. Внутренние абстракции позволяют использовать синтезированные алгоритмы поведения в "сходных" ситуациях. И это демонстрирует нам первые образцы абстрактного переноса алгоритма. Основной этого способа синтеза алгоритма для новой объектной базы является выделение признаков, обеспечивающих применимость алгоритма к ситуации среды.
Первоначально применение алгоритма поведения на основе детектированных признаков ориентировалось на выработку реакции на конкретную ситуацию среды. Но с развитием системы детекторов и с появлением группировки макро-признаков появилась возможность выполнять попытки исполнения алгоритма поведения для ситуации не в точности совпадающей с исходной, а только "похожей", то есть тождественной по некоторому подмножеству активированных признаков. Эти общие признаки закрепленные цепочкой для исполнения полезных алгоритмов поведения становятся первыми предвестниками алгоритма нового типа — универсального алгоритма, в котором условия исполнения опираются не на полное указание участвующих во взаимодействии объектов, а на частичное закрепление условия указанием признаковых объектов ("маркеров"). А если наличие этих признаковых объектов встречается в разных ситуациях и конструкциях среды, но при любом окружении обеспечивается Повторимость алгоритма, то получаем новую универсальную специализацию алгоритма.
Универсальный алгоритм — это алгоритм, задающий в условиях и в результатах своего исполнения не полную конструкцию и параметры взаимодействующих объектов, а лишь часть конструкции и те параметры, которые обеспечивают Осуществимость, Обусловленность и Повторимость этого алгоритма.
Определение универсального алгоритма мало дополняет исходное определение алгоритма, в котором нигде не было требования, что вся конструкция и все параметры объектов должны быть указаны в формуле алгоритма. Но введение этого термина подчеркивает, что в пространстве возможно существование таких универсальных алгоритмов. А для алгоритмов поведения, основывающихся на признаках, этот тип алгоритма является основным. Универсальные алгоритмы работают в состоянии неопределенности, ведь вся ситуация ими не контролируется, и их существование в пространстве раскрывает нам еще одну важную сторону признака Однородность.
Важно
Однородность и алгоритм, то есть одинаковость ("алгоритмичность") ситуации, может основываться на частичном совпадении конструкции, параметров и объектов и в то же время не зависеть от части конструкции, части параметров, и конкретных классов некоторых взаимодействующих объектов.
Такое свойство пространства делает возможным перенос универсального алгоритма, изначально синтезированного для одной объектной области, в другую ситуацию и его исполнение там с другими параметрами и конструкциями объектов. Способом такого переноса для алгоритмов поведения является использование некоторой базы, которая как раз и обеспечивают частичное, а не полное описание ситуации исполнения алгоритма.
База (базовый интерфейс) — это набор интерфейсных алгоритмов для алгоритмического блока, которые формируют и ограничивают способы использования этого блока во внешних алгоритмах. Наличие конкретной базы в любом алгоритмическом блоке делает возможным использование этого блока в универсальном алгоритме, опирающимся на эту базу.
Реализация базы (реализация интерфейса) — это алгоритмический блок, содержащий в своём интерфейсе указываемый базовый интерфейс.
В определении базы используется термин "опирается" в новом расширенном значении: указывается на применении опоры алгоритма на другой алгоритм. Необходимо закрепить это второе значение.
Опорный алгоритм алгоритма (или алгоритмическая опора алгоритма) - это некоторый дополнительный алгоритм и множество его опорных объектов, которые являются частью опоры и основного алгоритма, при этом взаимодействие с этими объектами обеспечивает исполнение основного алгоритма при исполнении дополнительного алгоритма. Использование опорных алгоритмов — это основа осуществления синтеза группировкой.
Возвращаясь к рассмотрению базы и реализации, обратимся к примеру в поведении. Для алгоритмов поведения базу для переноса конкретного алгоритма, исполняющегося в локали с участием эвольвера (в качестве алгоритмического блока), формируют выделяемые этим эвольвером признаки и активируемые им действия. При этом важно, что в исполнении детекторов и акторов взаимодействие происходит только с частью объектов среды, характеризующих текущую ситуацию.
Универсальный алгоритм может быть представлен примерами:
- Шаблонная функция
template<typename t> t Do()
; - Функция сортировки, по отношению к конкретным сортируемым объектам и сравниваемым ключам;
- Сложение по отношению к конкретным объектам, подсчет которых ведется.
База может быть представлена примерами:
- алгоритмы сравнения элементов и изменения позиций для алгоритма сортировки;
- круглая форма для алгоритмов качения предмета по поверхности;
- PostScript — язык описания страниц, используемый в настольных издательских системах.
Реализация базы может быть представлена примерами:
- сравнение чисел и прямая адресация массива и обмен с локальной переменной — для сортировки массива чисел;
- сопоставление по росту и перемещение детей по спортивной площадке для построения в шеренгу по росту;
- круглая форма бревна для алгоритма "тащить корабль волоком";
- принтер реализующий PostScript.
Опорный алгоритм алгоритма может быть представлен примерами использования:
- вызов подфункции для исполнения основной функции;
- процесс замешивания цемента в процедуре строительства дома;
- варка яиц для приготовления салата.