|
|
Line 1: |
Line 1: |
| '''Functional decomposition''' refers broadly to the process of resolving a [[Function (mathematics)|functional]] relationship into its constituent parts in such a way that the original function can be reconstructed (i.e., recomposed) from those parts by [[function composition]]. 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 of the global function, a task which is feasible only when the constituent processes possess a certain level of ''modularity'' (i.e., independence or non-interaction). Interactions between the components are critical to the function of the collection. All interactions may not be observable, but possibly deduced through repetitive perception, synthesis, validation and verification of composite behavior. | | I'm Molly and I live in Como. <br>I'm interested in Integrated International Studies, Jewelry making and Arabic art. I like to travel and reading fantasy.<br><br>Also visit my site; [http://xn--80apagcdp.kiev.ua/index.php/component/k2/item/35-onkologiya How To Get Free Fifa 15 Coins] |
| | |
| == Basic mathematical definition ==
| |
| [[Image:Chow-liu.png|thumb|400 px|An example of a sparsely connected dependency structure. Direction of causal flow is upward.]]For a multivariate function <math>y = f(x_1,x_2,\dots,x_n)</math>, functional decomposition generally refers to a process of identifying a set of functions <math>\{g_1, g_2, \dots g_m\}</math> such that
| |
| | |
| :<math>f(x_1,x_2,\dots,x_n) = \phi(g_1(x_1,x_2,\dots,x_n), g_2(x_1,x_2,\dots,x_n), \dots g_m(x_1,x_2,\dots,x_n))</math>
| |
| | |
| where <math>\phi</math> is some other function. Thus, we would say that the function <math>f</math> is decomposed into functions <math>\{g_1, g_2, \dots g_m\}</math>. This process is intrinsically hierarchical in the sense that we can (and often do) seek to further decompose the functions <math>g_i</math> into a collection of constituent functions <math>\{h_1, h_2, \dots h_p\} </math>such that
| |
| | |
| :<math>g_i(x_1,x_2,\dots,x_n) = \gamma(h_1(x_1,x_2,\dots,x_n), h_2(x_1,x_2,\dots,x_n), \dots h_p(x_1,x_2,\dots,x_n))</math>
| |
| | |
| where <math>\gamma</math> 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, for example, if we can obtain a decomposition of <math>x_1 = f(x_2,x_3,\dots,x_6)</math> into a hierarchical composition of functions <math>\{g_1, g_2, g_3\}</math> such that <math>x_1 = g_1(x_2)</math>, <math>x_2 = g_2(x_3,x_4,x_5)</math>, <math>x_5 = g_3(x_6)</math>, as shown in the figure at right, this would probably be considered a highly valuable decomposition.
| |
| | |
| ===Example: Arithmetic===
| |
| A basic example of functional decomposition is expressing the four binary arithmetic operations of addition, subtraction, multiplication, and division in terms of the two binary operations of addition <math>a + b</math> and multiplication <math>a \times b,</math> and the two unary operations of additive inversion <math>-a</math> and multiplicative inversion <math>1/a.</math> Subtraction can then be realized as the composition of addition and additive inversion, <math>a - b = a + (-b),</math> and division can be realized as the composition of multiplication and multiplicative inverse, <math>a \div b = a \times (1/b).</math> This simplifies the analysis of subtraction and division, and also makes it easier to axiomatize these operations in the notion of a [[Field (mathematics)|field]], as there are only two binary and two unary operations, rather than four binary operations.
| |
| | |
| ===Example: Decomposition of continuous functions===
| |
| {{Empty section|date=January 2011}}
| |
| | |
| ==Motivation for 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 quaternary (i.e., 4-ary) variables, representing the full function <math>x_1=f(x_2,x_3,\dots,x_6)</math> requires storing <math>4^5=1024</math> values, the value of the function for each element in the [[Cartesian product]] <math>\{x_2,x_3,\dots,x_6\}</math>, i.e., each of the 1024 possible combinations for <math>\{x_2,x_3,\dots,x_6\}</math>. However, if the decomposition into <math>\{g_1, g_2, g_3\}</math> given above is possible, then <math>g_1 = g_1(x_2)</math> requires storing 4 values, <math>g_2 = g_2(x_3,x_4,x_5)</math> requires storing <math>4^3=64</math> values, and <math>g_3 = g_3(x_6)</math> again requires storing just 4 values. So in virtue of the decomposition, we need store only <math>4+64+4=72</math> values rather than 1024 values, a dramatic savings.
| |
| | |
| [[Image:West-side-highway traffic.png|thumb|400 px|Causal influences on West Side Highway traffic. Weather and GW Bridge traffic ''screen off'' other influences.]]Intuitively, this reduction in representation size is achieved simply because each variable depends only on a subset of the other variables. Thus, variable <math>x_1</math> only depends directly on variable <math>x_2</math>, rather than depending on the ''entire set'' of variables. We would say that variable <math>x_2</math> ''screens off'' variable <math>x_1</math> from the rest of the world. Practical examples of this phenomenon surround us, as discussed in the "Philosophical Considerations" below, but let's just consider the particular case of "northbound traffic on the [[West Side Highway]]." Let us assume this variable (<math>{x_1}</math>) takes on three possible values of {"moving slow", "moving deadly slow", "not moving at all"}. Now let's say variable <math>{x_1}</math> depends on two other variables, "weather" with values of {"sun", "rain", "snow"}, and "[[GW Bridge]] traffic" with values {"10mph", "5mph", "1mph"}. The point here is that while there are certainly many secondary variables that affect the weather variable (e.g., low pressure system over Canada, [[Butterfly Effect|butterfly flapping]] in Japan, etc.) and the Bridge traffic variable (e.g., an accident on [[Interstate 95 in New York|I-95]], presidential motorcade, etc.) all these other secondary variables are not directly relevant to the West Side Highway traffic. All we need (hypothetically) in order to predict the West Side Highway traffic is the weather and the GW Bridge traffic, because these two variables ''screen off'' West Side Highway traffic from all other potential influences. That is, all other influences act ''through'' them.
| |
| | |
| Outside of purely mathematical considerations, perhaps the greatest value of functional decomposition is the insight it provides into the structure of the world. When a functional decomposition can be achieved, this provides ontological information about what structures actually exist in the world, and how they can be predicted and manipulated. For example, in the illustration above, if it is learned that <math>{x_1}</math> depends directly only on <math>{x_2}</math>, this means that for purposes of prediction of <math>{x_1}</math>, it suffices to know only <math>{x_2}</math>. Moreover, interventions to influence <math>{x_1}</math> can be taken directly on <math>{x_2}</math>, and nothing additional can be gained by intervening on variables <math>\{x_3,x_4,x_5\}</math>, since these only act through <math>{x_2}</math> in any case.
| |
| | |
| ==Philosophical considerations==
| |
| The philosophical antecedents and ramifications of functional decomposition are quite broad, as functional decomposition in one guise or another underlies all of modern science. Here we review just a few of these philosophical considerations.
| |
| | |
| ===Reductionist tradition===
| |
| One of the major distinctions that is often drawn between [[Eastern philosophy]] and [[Western Philosophy]] is that the Eastern philosophers tended to espouse ideas favoring [[holism]] while the Western thinkers tended to espouse ideas favoring [[reductionism]]. While this distinction between East and West — like other such philosophical distinctions that have been drawn (e.g., [[Philosophical realism|realism]] vs. [[anti-realism]]) — almost certainly simplifies matters too much, there is still a kernel of truth to be had. Some examples of the Eastern holistic spirit:
| |
| | |
| * "Open your mouth, increase your activities, start making distinctions between things, and you'll toil forever without hope." <small>— The [[Tao Te Ching]] of [[Lao Tzu]] (Brian Browne Walker, translator)</small>
| |
| * "It's a hard job for [people] to see the meaning of the fact that everything, including ourselves, depends on everything else and has no permanent self-existence." <small>— [[Majjhima Nikaya]] (Anne Bankroft, translator)</small>
| |
| *"A name is imposed on what is thought to be a thing or a state and this divides it from other things and other states. But when you pursue what lies behind the name, you find a greater and greater subtlety that has no divisions..." <small>— [[Visuddhi Magga]] (Anne Bankroft, translator)</small>
| |
| | |
| The Western tradition, from its origins among the [[Greek philosophers]], preferred a position in which drawing correct distinctions, divisions, and contrasts was considered the very pinnacle of insight. In the [[Aristotelianism|Aristotelian]]/[[Porphyry (philosopher)|Porphyrian]] worldview, to be able to distinguish (via strict proof) which qualities of a thing represent its [[essence]] vs. [[Property (philosophy)|property]] vs. [[accident (philosophy)|accident]] vs. [[Intensional definition|definition]], and by virtue of this formal description to segregate that entity into its proper place in the taxonomy of nature — this was to achieve the very height of wisdom.
| |
| | |
| ===Characteristics of hierarchy and modularity===
| |
| In natural or artificial systems that require components to be integrated in some fashion, but where the number of components exceeds what could reasonably be fully interconnected (due to exponential growth in number of connections), one often finds that some degree of hierarchicality must be employed in the solution. The general advantages of sparse hierarchical systems over densely-connected systems—and quantitative estimates of these advantage—are presented by {{Harvtxt|Resnikoff|1989}}. In prosaic terms, a hierarchy is "a collection of elements that combine lawfully into complex wholes which depend for their properties upon those of their constituent parts," and wherein novelty is "fundamentally combinatorial, iterative, and transparent" {{Harv|McGinn|1994}}.
| |
| | |
| An important notion that always arises in connection with hierarchies is modularity, which is effectively implied by the sparseness of connections in hierarchical topologies. In physical systems, a module is generally a set of interacting components that relates to the external world via a very limited interface, thus concealing most aspects of its internal structure. As a result, modifications that are made to the internals of a module (to improve efficiency for example) do not necessarily create a ripple effect through the rest of the system {{Harv|Fodor|1983}}. This feature makes the effective use of modularity a centerpiece of all good software and hardware engineering, notably object oriented programming {{Harv|Budd|2002}}. Other examples of the use of hierarchy in the manufacture of artifacts, including computer software ({{Harvnb|Tonge|1969}},{{Harvnb|Simon|1973}}), are too obvious to bear mention.
| |
| | |
| ===Inevitability of hierarchy and modularity===
| |
| There are many compelling arguments regarding the prevalence and necessity of hierarchy/modularity in nature {{Harv|Koestler|1973}}. {{Harvtxt|Simon|1996}} points out that among evolving systems, only those that can manage to obtain and then reuse stable subassemblies (modules) are likely to be able to search through the fitness landscape with a reasonably quick pace; thus, Simon submits that "among possible complex forms, hierarchies are the ones that have the time to evolve." This line of thinking has led to the even stronger claim that although "we do not know what forms of life have evolved on other planets in the universe, ... we can safely assume that 'wherever there is life, it must be hierarchically organized'" {{Harv|Koestler|1967}}. This would be a fortunate state of affairs since the existence of simple and isolable subsystems is thought to be a precondition for successful science {{Harv|Fodor|1983}}. In any case, experience certainly seems to indicate that much of the world possesses hierarchical structure.
| |
| | |
| It has been proposed that perception itself is a process of hierarchical decomposition {{Harv|Leyton|1992}}, and that phenomena which are not essentially hierarchical in nature may not even be "theoretically intelligible" to the human mind ({{Harvnb|McGinn|1994}},{{Harvnb|Simon|1996}}). In Simon's words,
| |
| | |
| {{quotation|The fact then that many complex systems have a nearly decomposable, hierarchic structure is a major facilitating factor enabling us to understand, describe, and even "see" such systems and their parts. Or perhaps the proposition should be put the other way round. If there are important systems in the world that are complex without being hierarchic, they may to a considerable extent escape our observation and understanding. Analysis of their behavior would involve such detailed knowledge and calculations of the interactions of their elementary parts that it would be beyond our capacities of memory or computation.}}
| |
| | |
| ==Applications==
| |
| Practical applications of functional decomposition are found in [[Bayesian networks]], [[structural equation modeling]], [[linear systems]], and [[database systems]].
| |
| | |
| ===Knowledge representation===
| |
| Processes related to functional decomposition are prevalent throughout the fields of [[knowledge representation]] and [[machine learning]]. Hierarchical model induction techniques such as [[Logic circuit minimization]], [[decision trees]], [[decision rules]], [[grammatical inference]], [[hierarchical clustering]], and [[quadtree decomposition]] are all examples of function decomposition. A review of other applications and function decomposition can be found in {{Harvtxt|Zupan|Bohanec|Bratko|Demšar|1997}}, which also presents methods based on [[information theory]] and [[graph theory]].
| |
| | |
| Many statistical inference methods can be thought of as implementing a function decomposition process in the presence of noise; that is, where functional dependencies are only expected to hold ''approximately''. Among such models are [[mixture models]] and the recently popular methods referred to as "causal decompositions" or [[Bayesian networks]].
| |
| | |
| {{Expand section|date=August 2007}}
| |
| | |
| ===Database theory===
| |
| See [[database normalization]].
| |
| {{Expand section|date=March 2007}}
| |
| | |
| ===Machine learning===
| |
| In practical scientific applications, it is almost never possible to achieve perfect functional decomposition because of the incredible complexity of the systems under study. This complexity is manifested in the presence of "noise," which is just a designation for all the unwanted and untraceable influences on our observations.
| |
| | |
| However, while perfect functional decomposition is usually impossible, the spirit lives on in a large number of statistical methods that are equipped to deal with noisy systems. When a natural or artificial system is intrinsically hierarchical, the [[joint distribution]] on system variables should provide evidence of this hierarchical structure. The task of an observer who seeks to understand the system is then to infer the hierarchical structure from observations of these variables. This is the notion behind the hierarchical decomposition of a joint distribution, the attempt to recover something of the intrinsic hierarchical structure which generated that joint distribution.
| |
| | |
| As an example, [[Bayesian network]] methods attempt to decompose a joint distribution along its causal fault lines, thus "cutting nature at its seams". The essential motivation behind these methods is again that within most systems (natural or artificial), relatively few components/events interact with one another directly on equal footing {{Harv|Simon|1963}}. Rather, one observes pockets of dense connections (direct interactions) among small subsets of components, but only loose connections between these densely connected subsets. There is thus a notion of "causal proximity" in physical systems under which variables naturally precipitate into small clusters. Identifying these clusters and using them to represent the joint provides the basis for great efficiency of storage (relative to the full joint distribution) as well as for potent inference algorithms.
| |
| {{Expand section|date=August 2007}}
| |
| | |
| ===Computer programming and software engineering===
| |
| {{main|Decomposition (computer science)}}
| |
| For most of the same reasons already stipulated, functional decomposition has a prominent role in [[computer programming]], where a major goal is to ''modularize'' processes to the greatest extent possible. For example, a library management system may be broken up into an inventory module, a patron information module, and a fee assessment module. In the early decades of computer programming, this was manifested as the "art of subroutining," as it was called by some prominent practitioners.
| |
| | |
| {{Expand section|date=August 2007}}
| |
| | |
| ===Signal processing===
| |
| Functional decomposition is used in the analysis of many [[signal processing]] systems, such as [[LTI system theory|LTI systems]]. The input signal to an LTI system can be expressed as a function, <math>f(t)</math>. Then <math>f(t)</math> can be decomposed into a linear combination of other functions, called component signals:
| |
| ::<math> f(t) = a_1 \cdot g_1(t) + a_2 \cdot g_2(t) + a_3 \cdot g_3(t) + \dots + a_n \cdot g_n(t) </math>
| |
| Here, <math> \{g_1(t), g_2(t), g_3(t), \dots , g_n(t)\} </math> are the component signals. Note that <math> \{a_1, a_2, a_3, \dots , a_n\} </math> 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 <math>T\{\}</math> represent the effect of the system, then the output signal is <math>T\{f(t)\}</math>, which can be expressed as:
| |
| ::<math> T\{f(t)\} = T\{ a_1 \cdot g_1(t) + a_2 \cdot g_2(t) + a_3 \cdot g_3(t) + \dots + a_n \cdot g_n(t)\}</math>
| |
| ::<math> = a_1 \cdot T\{g_1(t)\} + a_2 \cdot T\{g_2(t)\} + a_3 \cdot T\{g_3(t)\} + \dots + a_n \cdot T\{g_n(t)\}</math>
| |
| 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]].
| |
| | |
| ===Systems engineering ===
| |
| Functional decomposition in systems engineering refers to the process of defining a system in functional terms, then defining lower-level functions and sequencing relationships from these higher level systems functions.<ref>[http://www.dau.mil/pubscats/Pages/sys_eng_fund.aspx ''Systems Engineering Fundamentals.''], Defense Acquisition University Press, Fort Belvoir, VA, January 2001, p45</ref> The basic idea is to try to divide a system in such a way that each block of a [[Functional flow block diagram|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 [[role|function]]. When a system is designed as 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 [[boombox|stereo]] system. One might functionally decompose this into [[loudspeaker|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.
| |
| | |
| ==See also==
| |
| *[[Bayesian networks]]
| |
| *[[Database normalization]]
| |
| *[[Function composition]]
| |
| *[[Inductive inference]]
| |
| *[[Knowledge representation]]
| |
| | |
| ==References==
| |
| | |
| {{reflist}}
| |
| <div class="references-small" style="-moz-column-count:2; column-count:2;">
| |
| | |
| * {{Citation
| |
| | last =Budd
| |
| | first =Timothy A.
| |
| | author2-link =
| |
| | title =An Introduction to Object-Oriented Programming
| |
| | place=Boston
| |
| | publisher =Addison Wesley
| |
| | year =2002}}
| |
| | |
| * {{Citation
| |
| | last =Fodor
| |
| | first =Jerry
| |
| | author-link = Jerry Fodor
| |
| | title =The Modularity of Mind
| |
| | place=Cambridge, MA
| |
| | publisher =MIT Press
| |
| | year =1983}}
| |
| | |
| * {{Citation
| |
| | last =Koestler
| |
| | first =Arthur
| |
| | author-link =
| |
| | title =The Ghost in the Machine
| |
| | place=New York
| |
| | publisher =Macmillan
| |
| | year =1967}}
| |
| | |
| * {{Citation
| |
| | first =Athur
| |
| | last =Koestler
| |
| | author-link =
| |
| | editor-last =Gray
| |
| | editor-first =William
| |
| | editor2-last =Rizzo
| |
| | editor2-first =Nicholas D.
| |
| | contribution =The tree and the candle
| |
| | contribution-url =
| |
| | title =Unity Through Diversity: A Festschrift for Ludwig von Bertalanffy
| |
| | year =1973
| |
| | pages =287–314
| |
| | place =New York
| |
| | publisher =Gordon and Breach
| |
| | url =
| |
| | doi =
| |
| | id = }}
| |
| | |
| * {{Citation
| |
| | last =Leyton
| |
| | first =Michael
| |
| | author-link =
| |
| | title =Symmetry, Causality, Mind
| |
| | place=Cambridge, MA
| |
| | publisher =MIT Press
| |
| | year =1992}}
| |
| | |
| *{{Citation
| |
| | last =McGinn
| |
| | first =Colin
| |
| | author-link =
| |
| | last2 =
| |
| | first2 =
| |
| | author2-link =
| |
| | title = The Problem of Philosophy
| |
| | journal = Philosophical Studies
| |
| | volume = 76
| |
| | issue = 2–3
| |
| | pages = 133–156
| |
| | year =1994
| |
| | url =
| |
| | doi =10.1007/BF00989821
| |
| | id = }}
| |
| | |
| * {{Citation
| |
| | last =Resnikoff
| |
| | first =Howard L.
| |
| | author2-link =
| |
| | title =The Illusion of Reality
| |
| | place=New York
| |
| | publisher =Springer
| |
| | year =1989}}
| |
| | |
| *{{Citation |ref=harv |last1=Simon |first1=Herbert A. |year=1963 |chapter=Causal Ordering and Identifiability |editor=Ando, Albert & Fisher, Franklin M. & Simon, Herbert A. |title=Essays on the Structure of Social Science Models |publisher=MIT Press |place=[[Cambridge, MA]] |pages=5–31}}.
| |
| | |
| *{{Citation |ref=harv | last1=Simon| first1=Herbert A.| year=1973 | chapter=The organization of complex systems |editor=Pattee, Howard H. |title=Hierarchy Theory: The Challenge of Complex Systems |publisher=George Braziller |place=[[New York]] |pages=3–27}}.
| |
| | |
| *{{Citation |ref=harv | last1=Simon| first1=Herbert A. |year=1996 |chapter=The architecture of complexity: Hierarchic systems |title=The sciences of the artificial |publisher=MIT Press |place=[[Cambridge, MA]] |pages=183–216}}.
| |
| | |
| *{{Citation |ref=harv |last1=Tonge |first1=Fred M.|year=1969 |chapter=Hierarchical aspects of computer languages |editor=Whyte, Lancelot Law & Wilson, Albert G. & Wilson, Donna |title=Hierarchical Structures |publisher=American Elsevier |place=[[New York]] |pages=233–251}}.
| |
| | |
| * {{Citation
| |
| | last=Zupan
| |
| | first=Blaž
| |
| | last2=Bohanec
| |
| | first2=Marko
| |
| | last3=Bratko
| |
| | first3=Ivan
| |
| | last4=Demšar
| |
| | first4=Janez
| |
| | year=1997
| |
| | contribution=Machine learning by function decomposition
| |
| | contribution-url=http://citeseer.ist.psu.edu/zupan97machine.html
| |
| | title=Proc. 14th International Conference on Machine Learning
| |
| | publisher=Morgan Kaufmann
| |
| | pages=421–429
| |
| }}
| |
| </div>
| |
| | |
| {{DEFAULTSORT:Functional Decomposition}}
| |
| [[Category:Engineering]]
| |
| [[Category:Functions and mappings]]
| |
| [[Category:Philosophy of mathematics]]
| |
| [[Category:Philosophy of physics]]
| |