En matemáticas, la descomposición funcional es el proceso de resolver una relación funcional en sus partes constituyentes de tal manera que la función original pueda reconstruirse (es decir, recomponerse) a partir de esas partes mediante la composición de la función .
Este proceso de descomposición puede llevarse a cabo para comprender mejor la identidad de los componentes constituyentes que pueden reflejar procesos físicos individuales de interés. También la descomposición funcional puede resultar en una representación comprimida de la función global, una tarea que es factible sólo cuando los procesos constituyentes poseen un cierto nivel de modularidad (es decir, independencia o no interacción).
Las interacciones [ aclarar ] entre los componentes son críticas para la función de la colección. Todas las interacciones pueden no ser observables [ aclarar ] , pero posiblemente deducidas a través de la percepción repetitiva [ aclarar ] , síntesis, validación y verificación de la conducta compuesta.
Definición matemática básica
Para una función multivariante , la descomposición funcional generalmente se refiere a un proceso de identificación de un conjunto de funciones tal que
dónde es alguna otra función. [ aclaración necesaria ] Por lo tanto, diríamos que la función se descompone en funciones . Este proceso es intrínsecamente jerárquico en el sentido de que podemos (y a menudo lo hacemos) buscar descomponer aún más las funciones en una colección de funciones constituyentes tal que
dónde es alguna otra función. Las descomposiciones de este tipo son interesantes e importantes por una amplia variedad de razones. En general, las descomposiciones funcionales valen la pena cuando existe cierta "escasez" en la estructura de dependencia; es decir, cuando se encuentra que las funciones constituyentes dependen de conjuntos de variables aproximadamente disjuntos . Así, por ejemplo, si podemos obtener una descomposición de en una composición jerárquica de funciones tal que , , , como se muestra en la figura de la derecha, esto probablemente se consideraría una descomposición muy valiosa.
Ejemplo: aritmética
Un ejemplo básico de descomposición funcional es expresar las cuatro operaciones aritméticas binarias de suma, resta, multiplicación y división en términos de las dos operaciones binarias de suma. y multiplicacion y las dos operaciones unarias de inversión aditiva e inversión multiplicativa La resta se puede realizar como la composición de la suma y la inversión aditiva, y la división se puede realizar como la composición de la multiplicación y el inverso multiplicativo, Esto simplifica el análisis de resta y división, y también facilita axiomatizar estas operaciones en la noción de campo , ya que solo hay dos operaciones binarias y dos unarias, en lugar de cuatro operaciones binarias.
Ampliando estas operaciones primitivas, existe una rica literatura sobre el tema de la descomposición polinomial .
Ejemplo: descomposición de funciones continuas
Motivación para la descomposición
En cuanto a por qué la descomposición es valiosa, la razón es doble. En primer lugar, la descomposición de una función en componentes que no interactúan generalmente permite representaciones más económicas de la función. Por ejemplo, en un conjunto de variables cuaternarias (es decir, 4-arias), que representan la función completa requiere almacenamiento valores, el valor de la función para cada elemento en el producto cartesiano , es decir, cada una de las 1024 combinaciones posibles para . Sin embargo, si la descomposición en dado arriba es posible, entonces requiere almacenar 4 valores, requiere almacenamiento valores, y nuevamente requiere almacenar solo 4 valores. Entonces, en virtud de la descomposición, solo necesitamos almacenar valores en lugar de 1024 valores, un ahorro espectacular.
De manera intuitiva, esta reducción en el tamaño de la representación se logra simplemente porque cada variable depende solo de un subconjunto de las otras variables. Por lo tanto, variable solo depende directamente de la variable , en lugar de depender de todo el conjunto de variables. Diríamos que variable pantallas apagadas variabledel resto del mundo. Nos rodean ejemplos prácticos de este fenómeno, como se analiza en las "Consideraciones filosóficas" a continuación, pero consideremos el caso particular del "tráfico en dirección norte en la autopista West Side ". Supongamos que esta variable () toma tres valores posibles de {"moviéndose lento", "moviéndose mortalmente lento", "sin moverse en absoluto"}. Ahora digamos variabledepende de otras dos variables, "clima" con valores de {"sol", "lluvia", "nieve"} y " tráfico del puente GW " con valores {"10 mph", "5 mph", "1 mph"}. El punto aquí es que si bien hay muchas variables secundarias que afectan la variable meteorológica (por ejemplo, sistema de baja presión sobre Canadá, aleteo de mariposas en Japón, etc.) y la variable de tráfico del Puente (por ejemplo, un accidente en la I-95 , presidencial caravana, etc.) todas estas otras variables secundarias no son directamente relevantes para el tráfico de West Side Highway. Toda la necesidad que (hipotéticamente) con el fin de predecir el tráfico de la carretera del lado oeste es el tiempo y el tráfico del puente GW, debido a que estas dos variables pantalla de tráfico del lado oeste de la carretera de todas las otras influencias potenciales. Es decir, todas las demás influencias actúan a través de ellas.
Fuera de las consideraciones puramente matemáticas, quizás el mayor valor de la descomposición funcional es la comprensión que proporciona de la estructura del mundo. Cuando se puede lograr una descomposición funcional, esto proporciona información ontológica sobre qué estructuras existen realmente en el mundo y cómo se pueden predecir y manipular. Por ejemplo, en la ilustración anterior, si se aprende que depende directamente solo de , esto significa que a los efectos de la predicción de , basta con saber solo . Además, las intervenciones para influir se puede tomar directamente en , y no se puede ganar nada adicional interviniendo en variables , ya que estos solo actúan a través de En todo caso.
Consideraciones filosóficas
Los antecedentes filosóficos y las ramificaciones de la descomposición funcional son bastante amplios, ya que la descomposición funcional de una forma u otra subyace a toda la ciencia moderna. Aquí revisamos solo algunas de estas consideraciones filosóficas.
Tradición reduccionista
Una de las principales distinciones que se hace a menudo entre la filosofía oriental y la filosofía occidental es que los filósofos orientales tendían a abrazar ideas que favorecían el holismo, mientras que los pensadores occidentales tendían a abrazar ideas que favorecían el reduccionismo . Esta distinción entre Oriente y Occidente es similar a otras distinciones filosóficas (como el realismo frente al antirrealismo ). Algunos ejemplos del espíritu holístico oriental:
- "Abre la boca, aumenta tus actividades, empieza a hacer distinciones entre las cosas y te esforzarás por siempre sin esperanza". - El Tao Te Ching de Lao Tzu (Brian Browne Walker, traductor)
- "Es un trabajo difícil para [la gente] ver el significado del hecho de que todo, incluyéndonos a nosotros mismos, depende de todo lo demás y no tiene una autoexistencia permanente". - Majjhima Nikaya (Anne Bankroft, traductora)
- "Un nombre se impone a lo que se piensa que es una cosa o un estado y esto lo divide de otras cosas y otros estados. Pero cuando se persigue lo que hay detrás del nombre, se encuentra una sutileza cada vez mayor que no tiene divisiones ... . " - Visuddhi Magga (Anne Bankroft, traductora)
La tradición occidental, desde sus orígenes entre los filósofos griegos , prefirió una posición en la que trazar distinciones, divisiones y contrastes correctos se consideraba el pináculo mismo de la intuición. En la cosmovisión aristotélica / porfiriana , poder distinguir (a través de una prueba estricta) qué cualidades de una cosa representan su esencia versus propiedad versus accidente versus definición , y en virtud de esta descripción formal segregar esa entidad en su lugar apropiado en la taxonomía de la naturaleza, esto fue para alcanzar el colmo de la sabiduría.
Características de jerarquía y modularidad
En sistemas naturales o artificiales que requieren que los componentes se integren de alguna manera, pero donde el número de componentes excede lo que razonablemente podría estar completamente interconectado (debido al crecimiento cuadrado en el número de conexiones (= n sobre dos o = n * (n - 1) / 2)), a menudo se encuentra que se debe emplear cierto grado de jerarquización en la solución. Resnikoff (1989) presenta las ventajas generales de los sistemas jerárquicos dispersos sobre los sistemas densamente conectados, y las estimaciones cuantitativas de estas ventajas . En términos prosaicos, una jerarquía es "una colección de elementos que se combinan legalmente en conjuntos complejos que dependen para sus propiedades de las de sus partes constituyentes", y donde la novedad es "fundamentalmente combinatoria, iterativa y transparente" ( McGinn 1994 ).
Una noción importante que siempre surge en relación con las jerarquías es la modularidad, que está implícita efectivamente en la escasez de conexiones en las topologías jerárquicas. En los sistemas físicos, un módulo es generalmente un conjunto de componentes interactivos que se relacionan con el mundo externo a través de una interfaz muy limitada, ocultando así la mayoría de los aspectos de su estructura interna. Como resultado, las modificaciones que se realizan en las partes internas de un módulo (para mejorar la eficiencia, por ejemplo) no crean necesariamente un efecto dominó en el resto del sistema ( Fodor 1983 ). Esta característica hace que el uso efectivo de la modularidad sea una pieza central de toda buena ingeniería de software y hardware.
Inevitabilidad de la jerarquía y la modularidad
Hay muchos argumentos convincentes con respecto a la prevalencia y la necesidad de la jerarquía / modularidad en la naturaleza ( Koestler 1973 ). Simon (1996) señala que entre los sistemas en evolución, solo aquellos que pueden lograr obtener y luego reutilizar subconjuntos (módulos) estables probablemente sean capaces de buscar en el panorama de la aptitud con un ritmo razonablemente rápido; así, Simon sostiene que "entre las posibles formas complejas, las jerarquías son las que tienen tiempo para evolucionar". Esta línea de pensamiento ha llevado a la afirmación aún más fuerte de que, aunque "no sabemos qué formas de vida han evolucionado en otros planetas del universo, ... podemos asumir con seguridad que 'dondequiera que haya vida, debe estar organizada jerárquicamente' '. '"( Koestler 1967 ). Esta sería una situación afortunada, ya que se cree que la existencia de subsistemas simples y aislables es una condición previa para el éxito de la ciencia ( Fodor 1983 ). En cualquier caso, la experiencia ciertamente parece indicar que gran parte del mundo posee una estructura jerárquica.
Se ha propuesto que la percepción en sí misma es un proceso de descomposición jerárquica ( Leyton 1992 ), y que los fenómenos que no son de naturaleza esencialmente jerárquica pueden ni siquiera ser "teóricamente inteligibles" para la mente humana ( McGinn 1994 , Simon 1996 ). En palabras de Simon,
El hecho de que muchos sistemas complejos tengan una estructura jerárquica casi descomponible es un factor facilitador importante que nos permite comprender, describir e incluso "ver" tales sistemas y sus partes. O quizás la proposición debería expresarse al revés. Si hay sistemas importantes en el mundo que son complejos sin ser jerárquicos, pueden escapar en gran medida a nuestra observación y comprensión. El análisis de su comportamiento implicaría un conocimiento y cálculos tan detallados de las interacciones de sus partes elementales que estaría más allá de nuestras capacidades de memoria o de cálculo.
Aplicaciones
Las aplicaciones prácticas de la descomposición funcional se encuentran en redes bayesianas , modelado de ecuaciones estructurales , sistemas lineales y sistemas de bases de datos .
Representación del conocimiento
Los procesos relacionados con la descomposición funcional prevalecen en todos los campos de la representación del conocimiento y el aprendizaje automático . Las técnicas de inducción de modelos jerárquicos, como la minimización de circuitos lógicos , los árboles de decisión , la inferencia gramatical , la agrupación jerárquica y la descomposición de cuatro árboles son ejemplos de descomposición de funciones. Se puede encontrar una revisión de otras aplicaciones y descomposición de funciones en Zupan et al. (1997) , que también presenta métodos basados en la teoría de la información y la teoría de grafos .
Se puede pensar que muchos métodos de inferencia estadística implementan un proceso de descomposición de funciones en presencia de ruido; es decir, donde solo se espera que las dependencias funcionales se mantengan aproximadamente . Entre estos modelos se encuentran los modelos de mezcla y los métodos recientemente populares denominados "descomposiciones causales" o redes bayesianas .
Teoría de la base de datos
Ver normalización de la base de datos .
Aprendizaje automático
En aplicaciones científicas prácticas, casi nunca es posible lograr una descomposición funcional perfecta debido a la increíble complejidad de los sistemas en estudio. Esta complejidad se manifiesta en la presencia de "ruido", que es solo una designación de todas las influencias no deseadas e imposibles de rastrear en nuestras observaciones.
Sin embargo, aunque la descomposición funcional perfecta suele ser imposible, el espíritu sigue vivo en una gran cantidad de métodos estadísticos que están equipados para hacer frente a sistemas ruidosos. Cuando un sistema natural o artificial es intrínsecamente jerárquico, la distribución conjunta de las variables del sistema debe proporcionar evidencia de esta estructura jerárquica. La tarea de un observador que busca comprender el sistema es entonces inferir la estructura jerárquica a partir de las observaciones de estas variables. Esta es la noción detrás de la descomposición jerárquica de una distribución conjunta, el intento de recuperar algo de la estructura jerárquica intrínseca que generó esa distribución conjunta.
Como ejemplo, los métodos de red bayesiana intentan descomponer una distribución conjunta a lo largo de sus líneas de falla causales, "cortando la naturaleza en sus costuras". La motivación esencial detrás de estos métodos es nuevamente que dentro de la mayoría de los sistemas (naturales o artificiales), relativamente pocos componentes / eventos interactúan entre sí directamente en pie de igualdad ( Simon 1963 ). Más bien, se observan focos de conexiones densas (interacciones directas) entre pequeños subconjuntos de componentes, pero solo conexiones sueltas entre estos subconjuntos densamente conectados. Por tanto, existe una noción de "proximidad causal" en los sistemas físicos bajo la cual las variables se precipitan naturalmente en pequeños grupos. La identificación de estos grupos y su uso para representar la articulación proporciona la base para una gran eficiencia de almacenamiento (en relación con la distribución conjunta completa), así como para potentes algoritmos de inferencia.
Arquitectura de software
La descomposición funcional es un método de diseño que intenta producir una descripción arquitectónica sin implementación de un programa de computadora. En lugar de conjeturar Objetos y agregarles métodos ( OOP ), con cada Objeto con la intención de capturar algún servicio del programa, el arquitecto de software primero establece una serie de funciones y tipos que logran el principal problema de procesamiento del programa de computadora, descompone cada uno para revela funciones y tipos comunes, y finalmente deriva módulos de esta actividad.
Por ejemplo, el diseño del editor Emacs puede pensarse inicialmente en términos de funciones:
Y una posible descomposición de funciones de f :
Esto lleva a uno al módulo, servicio u objeto plausible de un intérprete (que contiene la función fromExpr ). Se puede decir que la descomposición de funciones proporciona información sobre la reutilización, por ejemplo, si durante el transcurso del análisis, dos funciones producen el mismo tipo, es probable que una función común / preocupación transversal resida en ambas. Por el contrario, en OOP , es una práctica común conjeturar Módulos antes de considerar tal descomposición. Podría decirse que esto da como resultado una refactorización costosa más adelante. FD mitiga ese riesgo hasta cierto punto. Además, podría decirse que lo que distingue a FD de otros métodos de diseño es que proporciona un medio conciso de alto nivel de discurso arquitectónico que es de extremo a extremo, que revela fallas en los requisitos anteriores y expone de manera beneficiosa más decisiones de diseño por adelantado. Y, por último, se sabe que FD prioriza el desarrollo. Podría decirse que si el DF es correcto, las partes del programa más reutilizables y determinadas por los costos se identifican mucho antes en el ciclo de desarrollo.
Procesamiento de la señal
La descomposición funcional se utiliza en el análisis de muchos sistemas de procesamiento de señales , como los sistemas LTI . La señal de entrada a un sistema LTI se puede expresar como una función,. Luego se puede descomponer en una combinación lineal de otras funciones, llamadas señales componentes:
Aquí, son las señales de los componentes. Tenga en cuenta queson constantes. Esta descomposición ayuda en el análisis, porque ahora la salida del sistema se puede expresar en términos de los componentes de la entrada. Si dejamos representar el efecto del sistema, entonces la señal de salida es , que se puede expresar como:
En otras palabras, se puede considerar que el sistema actúa por separado sobre cada uno de los componentes de la señal de entrada. Los ejemplos comúnmente utilizados de este tipo de descomposición son la serie de Fourier y la transformada de Fourier .
Ingeniería de Sistemas
La descomposición funcional en la ingeniería de sistemas se refiere al proceso de definir un sistema en términos funcionales, luego definir funciones de nivel inferior y secuenciar las relaciones de estas funciones de sistemas de nivel superior. [1] La idea básica es intentar dividir un sistema de tal manera que cada bloque de un diagrama de bloques pueda describirse sin un "y" o "o" en la descripción.
Este ejercicio obliga a cada parte del sistema a tener una función pura . Cuando un sistema está diseñado como funciones puras, se pueden reutilizar o reemplazar. Un efecto secundario habitual es que las interfaces entre bloques se vuelven simples y genéricas. Dado que las interfaces generalmente se vuelven simples, es más fácil reemplazar una función pura con una función similar relacionada.
Por ejemplo, digamos que se necesita hacer un sistema estéreo . Uno podría descomponerlo funcionalmente en altavoces , amplificador , una platina de casete y un panel frontal. Más tarde, cuando un modelo diferente necesite un CD de audio , probablemente pueda adaptarse a las mismas interfaces.
Ver también
- Redes bayesianas
- Zurra
- Normalización de la base de datos
- Composición de funciones
- Inferencia inductiva
- Representación del conocimiento
Notas
- ^ Fundamentos de la ingeniería de sistemas. , Defense Acquisition University Press, Fort Belvoir, VA, enero de 2001, p45
Referencias
- Fodor, Jerry (1983), La modularidad de la mente , Cambridge, Massachusetts: MIT Press
- Koestler, Arthur (1967), El fantasma de la máquina , Nueva York: Macmillan
- Koestler, Athur (1973), "El árbol y la vela", en Gray, William; Rizzo, Nicholas D. (eds.), Unity Through Diversity: A Festschrift for Ludwig von Bertalanffy , Nueva York: Gordon and Breach, págs. 287–314
- Leyton, Michael (1992), Simetría, Causalidad, Mente , Cambridge, Massachusetts: MIT Press
- McGinn, Colin (1994), "El problema de la filosofía", Estudios filosóficos , 76 (2-3): 133-156, doi : 10.1007 / BF00989821
- Resnikoff, Howard L. (1989), The Illusion of Reality , Nueva York: Springer
- Simon, Herbert A. (1963), "Ordenación causal e identificabilidad", en Ando, Albert; Fisher, Franklin M .; Simon, Herbert A. (eds.), Ensayos sobre la estructura de los modelos de ciencias sociales , Cambridge , Massachusetts: MIT Press, págs. 5-31.
- Simon, Herbert A. (1973), "La organización de sistemas complejos", en Pattee, Howard H. (ed.), Teoría de la jerarquía: El desafío de los sistemas complejos , Nueva York : George Braziller, págs. 3-27.
- Simon, Herbert A. (1996), "La arquitectura de la complejidad: sistemas jerárquicos", Las ciencias de lo artificial , Cambridge , Massachusetts: MIT Press, págs. 183–216.
- Tonge, Fred M. (1969), "Aspectos jerárquicos de los lenguajes informáticos", en Whyte, Lancelot Law; Wilson, Albert G .; Wilson, Donna (eds.), Estructuras jerárquicas , Nueva York : American Elsevier, págs. 233-251.
- Zupan, Blaž; Bohanec, Marko; Bratko, Ivan; Demšar, Janez (1997), "Aprendizaje automático por descomposición de funciones" , Proc. 14ª Conferencia Internacional sobre Aprendizaje Automático , Morgan Kaufmann, págs. 421–429