Введение
Выражение функции как композиции двух функций
В инженерии функциональное разложение — это процесс разделения функциональной зависимости на составляющие части таким образом, чтобы исходную функцию можно было восстановить (то есть пересоставить) из этих частей. Этот процесс разложения может быть выполнен для получения понимания идентичности составляющих компонентов, которые могут отражать отдельные физические процессы, представляющие интерес. Кроме того, функциональное разложение может привести к сжатому представлению глобальной функции, что возможно только тогда, когда составляющие процессы обладают определенной степенью модульности (то есть независимостью или отсутствием взаимодействия). Взаимосвязи между компонентами критически важны для функционирования системы в целом. Не все взаимодействия могут быть явными, но их можно вывести посредством повторяющихся анализов, синтеза, валидации и верификации составного поведения.
Мотивация к разложению
Разложение функции на не взаимодействующие компоненты обычно позволяет получить более экономичные представления функции. Интуитивно, это уменьшение размера представления достигается просто потому, что каждая переменная зависит только от подмножества других переменных. Таким образом, переменная зависит только непосредственно от переменной , а не от всего набора переменных. Мы бы сказали, что переменная экранирует переменную от остального мира. Практические примеры этого явления окружают нас. Рассмотрим конкретный случай "движения в северном направлении по шоссе Вест-Сайд". Предположим, что эта переменная может принимать три возможных значения: {"движется медленно", "движется очень медленно", "не движется вообще"}. Теперь допустим, что переменная зависит от двух других переменных: "погода" со значениями {"солнечно", "дождь", "снег"} и "движение на мосту GW" со значениями {"10 миль/час", "5 миль/час", "1 миля/час"}. Суть в том, что хотя существует множество вторичных переменных, влияющих на переменную "погода" (например, область низкого давления над Канадой, взмах крыльев бабочки в Японии и т. д.) и переменную "движение на мосту GW" (например, авария на I-95, президентский кортеж и т. д.), все эти другие вторичные переменные не имеют прямого отношения к движению на шоссе Вест-Сайд. Все, что нам нужно (гипотетически), чтобы предсказать движение на шоссе Вест-Сайд, – это погода и движение на мосту GW, поскольку эти две переменные экранируют движение на шоссе Вест-Сайд от всех других потенциальных воздействий. То есть, все остальные воздействия действуют через них.
Приложения
Практическое применение функционального разложения можно найти в байесовских сетях, структурном моделировании уравнений, линейных системах и системах управления базами данных.
Представление знаний
Процессы, связанные с функциональным разложением, широко распространены в областях представления знаний и машинного обучения. Методы иерархической индукции моделей, такие как минимизация логических схем, деревья решений, грамматический вывод, иерархическое кластерирование и разложение квадродеревьев, являются примерами разложения функций. Обзор других приложений и разложения функций можно найти в , где также представлены методы, основанные на теории информации и теории графов. Многие методы статистического вывода можно рассматривать как реализацию процесса декомпозиции функции в условиях шума, то есть там, где функциональные зависимости ожидаются лишь приблизительно. К таким моделям относятся смеси моделей и недавно получившие широкое распространение методы, известные как "причинные разложения" или байесовские сети.
Теория баз данных
См. Нормализацию баз данных.
Машинное обучение
В практических научных приложениях почти никогда не удается достичь идеального функционального разложения из-за невероятной сложности изучаемых систем. Эта сложность проявляется в наличии "шума", который является лишь обозначением всех нежелательных и неустранимых влияний на наши наблюдения. Однако, хотя идеальное функциональное разложение обычно невозможно, его идея находит отражение в большом количестве статистических методов, предназначенных для работы с системами, подверженными шуму. Если естественная или искусственная система изначально иерархична, то совместное распределение системных переменных должно отражать эту иерархическую структуру. Задача исследователя, стремящегося понять систему, заключается в том, чтобы вывести иерархическую структуру из наблюдений этих переменных. Это лежит в основе иерархического разложения совместного распределения – попытки восстановить часть внутренней иерархической структуры, которая породила это совместное распределение. Например, методы байесовских сетей стремятся разложить совместное распределение по его причинно-следственным линиям, тем самым "рассекая природу по швам". Основная мотивация этих методов заключается в том, что в большинстве систем (естественных или искусственных) относительно небольшое количество компонентов/событий взаимодействуют друг с другом напрямую и равноправно. Чаще наблюдаются области плотных связей (прямых взаимодействий) между небольшими подмножествами компонентов, но лишь слабые связи между этими плотно связанными подмножествами. Таким образом, в физических системах существует понятие "причинной близости", в соответствии с которым переменные естественным образом группируются в небольшие кластеры. Выявление этих кластеров и их использование для представления совместного распределения обеспечивает значительную эффективность хранения (по сравнению с полным совместным распределением), а также позволяет применять мощные алгоритмы вывода.
Архитектура программного обеспечения
Функциональное разложение — это методология проектирования, предназначенная для создания не зависящего от реализации архитектурного описания компьютерной программы. Архитектор программного обеспечения сначала определяет набор функций и типов, реализующих основную задачу обработки в компьютерной программе, затем декомпозирует каждую из них для выявления общих функций и типов, и, наконец, на основе этого формирует модули.
Обработка сигналов
Функциональное разложение используется при анализе многих систем обработки сигналов, таких как LTI-системы. Входной сигнал LTI-системы может быть выражен в виде функции, которую затем можно разложить на линейную комбинацию других функций, называемых компонентными сигналами:
Здесь – компонентные сигналы. Обратите внимание, что – это константы. Такое разложение облегчает анализ, поскольку теперь выход системы можно выразить через компоненты входного сигнала. Если обозначить эффектом системы, то выходной сигнал будет , который можно представить следующим образом:
Иными словами, систему можно рассматривать как действующую отдельно на каждый компонент входного сигнала. Распространенными примерами такого типа разложения являются ряд Фурье и преобразование Фурье.
Система инженерии
Функциональное разложение в системной инженерии – это процесс определения системы в функциональных терминах, а затем выделения функций более низкого уровня и установления связей между ними, исходя из функций системы более высокого уровня. Основная идея заключается в том, чтобы разделить систему таким образом, чтобы каждый блок на блок-схеме можно было описать без использования союзов "и" или "или". Это позволяет каждой части системы выполнять одну, четко определенную функцию. Когда система проектируется на основе таких четких функций, их можно повторно использовать или заменять. Типичным результатом является упрощение и обобщение интерфейсов между блоками. Поскольку интерфейсы обычно становятся простыми, замену одной четкой функции на схожую функцию выполнить легче. Например, если необходимо спроектировать стереосистему, можно функционально разложить ее на динамики, усилитель, магнитофон и переднюю панель. Впоследствии, при создании другой модели, которой потребуется проигрыватель аудио-CD, скорее всего, удастся использовать те же интерфейсы.