Functional decomposition
From Wikipedia, the free encyclopedia
Functional decomposition refers broadly to the process of reducing a functional relationship into constituent parts in such a way that the original function can be reconstructed (i.e., recomposed) from those parts. In general, this process of decomposition is undertaken either for the purpose of gaining insight into the identity of the constituent components (which may reflect individual physical processes of interest, for example), or for the purpose of obtaining a compressed representation the global function, which is feasible when the constiuent processes possess a level of modularity, or non-interaction.
Contents |
[edit] Basic mathematical definition
For a multivariate function , functional decomposition generally refers to a process of identifying a set of functions
such that
where φ is some other function. Thus, we would say that the function f is decomposed into functions . This process is intrinsically hierachical in the sense that we can (and often do) seek to further decompose the functions gi into a collection of constituent functions
such that
where γ is some other function. Decompositions of this kind are interesting and important for a wide variety of reasons. In general, functional decompositions are worthwhile when there is a certain "sparseness" in the dependency structure; that is, when constituent functions are found to depend on approximately disjoint sets of variables. Thus, if we can find a decomposition of into a set of functions {g1,g2,g3} where, for example, g1 = g1(x1,x2), g2 = g2(x3,x4,x5), g3 = g3(x6), this would probably be considered a highly valuable decomposition.
As to why the decomposition is valuable, the reason is twofold. Firstly, decomposition of a function into non-interacting components generally permits more economical representations of the function. For example, on a set of six quaternary (i.e., 4-ary) variables , representing the full function
requires storing 46 = 4096 values, the value of the function for each element in the Cartesian product
(i.e., each of the 4096 possible combinations for
. However, if the decomposition into {g1,g2,g3} given above is possible, then g1 = g1(x1,x2) requires storing 42 = 16values, g2 = g2(x3,x4,x5) requires storing 43 = 64values, and g3 = g3(x6) requires storing just 4 values.
Outside of purely mathematical considerations, perhaps the
[edit] Philosophical considerations
[edit] In database theory
[edit] In signal processing
Functional decomposition is used in the analysis of many signal-processing systems, such as LTI systems. The input signal to an LTI system can be expressed as a function, f(t). Then f(t) can be decomposed into a linear combination of other functions, called component signals:
Here, are the component signals. Note that
are constants. This decomposition aids in analysis, because now the output of the system can be expressed in terms of the components of the input. If we let T{} represent the effect of the system, then the output signal is T{f(t)}, which can be expressed as:
In other words, the system can be seen as acting separately on each of the components of the input signal. Commonly used examples of this type of decomposition are the Fourier series and the Fourier transform.
[edit] In systems engineering
Functional decomposition of engineering systems is a method for analyzing engineered systems. The basic idea is to try to divide a system in such a way that each block of the block diagram can be described without an "and" or "or" in the description.
This exercise forces each part of the system to have a pure function. When a system is composed of pure functions, they can be reused, or replaced. A usual side effect is that the interfaces between blocks become simple and generic. Since the interfaces usually become simple, it is easier to replace a pure function with a related, similar function.
For example, say that one needs to make a stereo system. One might functionally decompose this into speakers, amplifier, a tape deck and a front panel. Later, when a different model needs an audio CD, it can probably fit the same interfaces.
This process is powerful when applied to software engineering.