Articulo de referencia

Ley distributiva generalizada

La ley distributiva generalizada (GDL) es una generalización de la propiedad distributiva que da lugar a un algoritmo general de paso de mensajes . [ 1 ] Es una síntesis del tra...

La ley distributiva generalizada (GDL) es una generalización de la propiedad distributiva que da lugar a un algoritmo general de paso de mensajes . [ 1 ] Es una síntesis del trabajo de numerosos autores en las comunidades de teoría de la información , comunicaciones digitales , procesamiento de señales , estadística e inteligencia artificial . La ley y el algoritmo fueron presentados en un semitutorial de Srinivas M. Aji y Robert J. McEliece con el mismo título. [ 1 ]

Introducción

"La ley distributiva en matemáticas es la ley que relaciona las operaciones de multiplicación y suma, expresada simbólicamente,a(b+do)=ab+ado{\displaystyle a*(b+c)=a*b+a*c}; es decir, el factor monomioa{\displaystyle a}se distribuye, o se aplica por separado, a cada término del factor binomialb+do{\displaystyle b+c}, dando como resultado el productoab+ado{\displaystyle a*b+a*c}" – Britannica. [ 2 ]

Como se puede observar en la definición, la aplicación de la ley distributiva a una expresión aritmética reduce el número de operaciones en ella. En el ejemplo anterior, el número total de operaciones se redujo de tres (dos multiplicaciones y una suma enab+ado{\displaystyle a*b+a*c}) a dos (una multiplicación y una suma ena(b+do){\displaystyle a*(b+c)}La generalización de la ley distributiva conduce a una gran familia de algoritmos rápidos . Esto incluye la FFT y el algoritmo de Viterbi .

Esto se explica de forma más formal en el siguiente ejemplo:

α(a,b)=dmiFdo,d,miAF(a,do,b)gramo(a,d,mi){\displaystyle \alpha (a,\,b){\stackrel {\mathrm {def} }{=}}\displaystyle \sum \limits _ {c,d,e\in A}f(a,\,c,\,b)\,g(a,\,d,\,e)}dóndeF(){\displaystyle f(\cdot )}ygramo(){\displaystyle g(\cdot )}son funciones de valor real,a,b,do,d,miA{\displaystyle a,b,c,d,e\in A}y|A|=q{\displaystyle |A|=q}(decir)

Aquí estamos "marginalizando" las variables independientes (do{\displaystyle c},d{\displaystyle d}, ymi{\displaystyle e}) para obtener el resultado. Cuando calculamos la complejidad computacional, podemos ver que para cadaq2{\displaystyle q^{2}}pares de(a,b){\displaystyle (a,b)}, hayq3{\displaystyle q^{3}}términos debido al triplete(do,d,mi){\displaystyle (c,d,e)}que necesita participar en la evaluación deα(a,b){\displaystyle \alpha (a,\,b)}donde cada paso tiene una suma y una multiplicación. Por lo tanto, el número total de cálculos necesarios es2q2q3=2q5{\displaystyle 2\cdot q^{2}\cdot q^{3}=2q^{5}}Por lo tanto, la complejidad asintótica de la función anterior esO(norte5){\displaystyle O(n^{5})}.

Si aplicamos la ley distributiva al lado derecho de la ecuación, obtenemos lo siguiente:

α(a,b)=dmiFdoAF(a,do,b)d,miAgramo(a,d,mi){\displaystyle \alpha (a,\,b){\stackrel {\mathrm {def} }{=}}\displaystyle \sum \limits _{c\in A}f(a,\,c,\,b)\cdot \sum _{d,\,e\in A}g(a,\,d,\,e)}

Esto implica queα(a,b){\displaystyle \alpha (a,\,b)}puede describirse como un productoα1(a,b)α2(a){\displaystyle \alpha _{1}(a,\,b)\cdot \alpha _{2}(a)}dóndeα1(a,b)=dmiFdoAF(a,do,b){\displaystyle \alpha _{1}(a,b){\stackrel {\mathrm {def} }{=}}\displaystyle \sum \limits _{c\in A}f(a,\,c,\,b)}yα2(a)=dmiFd,miAgramo(a,d,mi){\displaystyle \alpha _{2}(a){\stackrel {\mathrm {def} }{=}}\displaystyle \sum \limits _{d,\,e\in A}g(a,\,d,\,e)}

Ahora, cuando calculamos la complejidad computacional, podemos ver que hayq3{\displaystyle q^{3}}adiciones enα1(a,b){\displaystyle \alpha _{1}(a,\,b)}yα2(a){\displaystyle \alpha _{2}(a)}cada uno y hayq2{\displaystyle q^{2}}multiplicaciones cuando estamos usando el productoα1(a,b)α2(a){\displaystyle \alpha _{1}(a,\,b)\cdot \alpha _{2}(a)}evaluarα(a,b){\displaystyle \alpha (a,\,b)}Por lo tanto, el número total de cálculos necesarios esq3+q3+q2=2q3+q2{\displaystyle q^{3}+q^{3}+q^{2}=2q^{3}+q^{2}}. Por lo tanto, la complejidad asintótica del cálculoα(a,b){\displaystyle \alpha (a,b)}se reduce aO(norte3){\displaystyle O(n^{3})}deO(norte5){\displaystyle O(n^{5})}Esto demuestra, mediante un ejemplo, que la aplicación de la ley distributiva reduce la complejidad computacional, lo cual es una de las buenas características de un "algoritmo rápido".

Historia

Algunos de los problemas que se resolvieron utilizando la ley distributiva se pueden agrupar de la siguiente manera:

  1. Algoritmos de decodificación: Gallager utilizó un algoritmo similar a GDL para decodificar códigos de paridad de baja densidad. Basándose en el trabajo de Gallager, Tanner introdujo el grafo de Tanner y lo expresó mediante el método de paso de mensajes. El grafo de Tanner también ayudó a explicar el algoritmo de Viterbi . Forney observó que la decodificación de máxima verosimilitud de códigos convolucionales de Viterbi también utilizaba algoritmos de generalidad similar a GDL.
  2. Algoritmo de avance-retroceso : El algoritmo de avance-retroceso ayudó como algoritmo para rastrear los estados en la cadena de Markov . Y este también fue utilizado por el algoritmo de generalidad GDL.
  3. Inteligencia artificial : La noción de árboles de unión se ha utilizado para resolver muchos problemas en IA. Asimismo, el concepto de eliminación de cubos ha utilizado muchos de estos conceptos.

El problema del MPF

La marginalización de una función producto (MPF, por sus siglas en inglés) es un problema computacional general que, como caso particular, incluye muchos problemas clásicos, como el cálculo de la transformada discreta de Hadamard , la decodificación de máxima verosimilitud de un código lineal sobre un canal sin memoria y la multiplicación de cadenas de matrices . La potencia del GDL reside en que se aplica a situaciones en las que se generalizan las sumas y las multiplicaciones.

Un semianillo conmutativo es un buen marco para explicar este comportamiento. Se define sobre un conjuntoK{\displaystyle K}con operadores "+{\displaystyle +}" y ".{\displaystyle .}" dónde(K,+){\displaystyle (K,\,+)}y(K,.){\displaystyle (K,\,.)}son monoides conmutativos y se cumple la ley distributiva.

Dejarpag1,,pagnorte{\displaystyle p_{1},\ldots ,p_{n}}sean variables tales quepag1A1,,pagnorteAnorte{\displaystyle p_{1}\in A_{1},\ldots ,p_{n}\in A_{n}}dóndeA{\displaystyle A}es un conjunto finito y|Ai|=qi{\displaystyle |A_{i}|=q_{i}}. Aquíi=1,,norte{\displaystyle i=1,\ldots ,n}. SiS={i1,,ir}{\displaystyle S=\{i_{1},\ldots ,i_{r}\}}yS{1,,norte}{\displaystyle S\,\subset \{1,\ldots ,n\}}, dejar AS=Ai1××Air{\displaystyle A_{S}=A_{i_{1}}\times \cdots \times A_{i_{r}}},pagS=(pagi1,,pagir){\displaystyle p_{S}=(p_{i_{1}},\ldots ,p_{i_{r}})}, qS=|AS|{\displaystyle q_{S}=|A_{S}|}, A=A1××Anorte{\displaystyle \mathbf {A} =A_{1}\times \cdots \times A_{n}}, y pag={pag1,,pagnorte}{\displaystyle \mathbf {p} =\{p_{1},\ldots ,p_{n}\}}

DejarS={Sj}j=1METRO{\displaystyle S=\{S_{j}\}_{j=1}^{M}}dóndeSj{1,...,norte}{\displaystyle S_{j}\subset \{1,...\,,n\}}. Supongamos que una función se define comoαi:ASiR{\displaystyle \alpha _{i}:A_{S_{i}}\rightarrow R}, dóndeR{\displaystyle R}es un semianillo conmutativo . Además,pagSi{\displaystyle p_{S_{i}}}se denominan los dominios locales yαi{\displaystyle \alpha _{i}}como los núcleos locales .

Ahora el kernel globalβ:AR{\displaystyle \beta :\mathbf {A} \rightarrow R} se define como:β(pag1,...,pagnorte)=i=1METROα(pagSi){\displaystyle \beta (p_{1},...\,,p_{n})=\prod _{i=1}^{M}\alpha (p_{S_{i}})}

Definición del problema MPF : Para uno o más índicesi=1,...,METRO{\displaystyle i=1,...\,,M}, calcular una tabla de los valores deSi{\displaystyle S_{i}}- marginación del núcleo globalβ{\displaystyle \beta }, que es la funciónβi:ASiR{\displaystyle \beta _{i}:A_{S_{i}}\rightarrow R}definido comoβi(pagSi)=pagSidoASidoβ(pag){\displaystyle \beta _{i}(p_{S_{i}})\,=\displaystyle \sum \limits _{p_{S_{i}^{c}}\in A_{S_{i}^{c}}}\beta (p)}

AquíSido{\displaystyle S_{i}^{c}}es el complemento deSi{\displaystyle S_{i}}con respecto a{1,...,norte}{\displaystyle \mathbf {\{} 1,...\,,n\}}y elβi(pagSi){\displaystyle \beta _{i}(p_{S_{i}})}se llama elith{\displaystyle i^{th}}función objetivo , o la función objetivo enSi{\displaystyle S_{i}}. Se puede observar que el cálculo de laith{\displaystyle i^{th}}La función objetivo de la manera obvia necesitaMETROq1q2q3qnorte{\displaystyle Mq_{1}q_{2}q_{3}\cdots q_{n}}operaciones. Esto se debe a que hayq1q2qnorte{\displaystyle q_{1}q_{2}\cdots q_{n}}adiciones y(METRO1)q1q2...qnorte{\displaystyle (M-1)q_{1}q_{2}...q_{n}}multiplicaciones necesarias en el cálculo de laiel{\displaystyle i^{\text{th}}}función objetivo. El algoritmo GDL, que se explica en la siguiente sección, puede reducir esta complejidad computacional.

El siguiente es un ejemplo del problema MPF.

Dejarpag1,pag2,pag3,pag4,{\displaystyle p_{1},\,p_{2},\,p_{3},\,p_{4},}ypag5{\displaystyle p_{5}}sean variables tales quepag1A1,pag2A2,pag3A3,pag4A4,{\displaystyle p_{1}\in A_{1},p_{2}\in A_{2},p_{3}\in A_{3},p_{4}\in A_{4},}ypag5A5{\displaystyle p_{5}\in A_{5}}. AquíMETRO=4{\displaystyle M=4}yS={{1,2,5},{2,4},{1,4},{2}}{\displaystyle S=\{\{1,2,5\},\{2,4\},\{1,4\},\{2\}\}}Las funciones dadas que utilizan estas variables son:F(pag1,pag2,pag5){\displaystyle f(p_{1},p_{2},p_{5})}ygramo(pag2,pag4){\displaystyle g(p_{2},p_{4})}y necesitamos calcularα(pag1,pag4){\displaystyle \alpha (p_{1},\,p_{4})}yβ(pag2){\displaystyle \beta (p_{2})}definido como:

α(pag1,pag4)=pag2A2,pag3A3,pag5A5F(pag1,pag2,pag5)gramo(pag2,pag4){\displaystyle \alpha (p_{1},\,p_{4})=\displaystyle \sum \limits _{p_{2}\in A_{2},\,p_{3}\in A_{3},\,p_{5}\in A_{5}}f(p_{1},\,p_{2},\,p_{5})\cdot g(p_{2},\,p_{4})}
β(pag2)=pag1A1,pag3A3,pag4A4,pag5A5F(pag1,pag2,pag5)gramo(pag2,pag4){\displaystyle \beta (p_{2})=\sum \limits _{p_{1}\in A_{1},\,p_{3}\in A_{3},\,p_{4}\in A_{4},\,p_{5}\in A_{5}}f(p_{1},\,p_{2},\,p_{5})\cdot g(p_{2},\,p_{4})}

Aquí, los dominios locales y los núcleos locales se definen de la siguiente manera:

dóndeα(pag1,pag4){\displaystyle \alpha (p_{1},p_{4})}es el3rd{\displaystyle 3^{rd}}función objetivo yβ(pag2){\displaystyle \beta (p_{2})}es el4th{\displaystyle 4^{th}}función objetivo.

Consideremos otro ejemplo dondepag1,pag2,pag3,pag4,r1,r2,r3,r4{0,1}{\displaystyle p_{1},p_{2},p_{3},p_{4},r_{1},r_{2},r_{3},r_{4}\in \{0,1\}}yF(r1,r2,r3,r4){\displaystyle f(r_{1},r_{2},r_{3},r_{4})}es una función de valor real. Ahora, consideraremos el problema MPF donde el semianillo conmutativo se define como el conjunto de números reales con suma y multiplicación ordinarias y los dominios locales y los núcleos locales se definen de la siguiente manera:

Ahora bien, dado que el núcleo global se define como el producto de los núcleos locales, es

F(pag1,pag2,pag3,pag4,r1,r2,r3,r4)=F(pag1,pag2,pag3,pag4)(1)pag1r1+pag2r2+pag3r3+pag4r4{\displaystyle F(p_{1},p_{2},p_{3},p_{4},r_{1},r_{2},r_{3},r_{4})=f(p_{1},p_{2},p_{3},p_{4})\cdot (-1)^{p_{1}r_{1}+p_{2}r_{2}+p_{3}r_{3}+p_{4}r_{4}}}

y la función objetivo en el dominio localpag1,pag2,pag3,pag4{\displaystyle p_{1},p_{2},p_{3},p_{4}}es

F(pag1,pag2,pag3,pag4)=r1,r2,r3,r4F(r1,r2,r3,r4)(1)pag1r1+pag2r2+pag3r3+pag4r4.{\displaystyle F(p_{1},p_{2},p_{3},p_{4})=\displaystyle \sum \limits _{r_{1},r_{2},r_{3},r_{4}}f(r_{1},r_{2},r_{3},r_{4})\cdot (-1)^{p_{1}r_{1}+p_{2}r_{2}+p_{3}r_{3}+p_{4}r_{4}}.}

Esta es la transformada de Hadamard de la funciónF(){\displaystyle f(\cdot )}Por lo tanto, podemos ver que el cálculo de la transformada de Hadamard es un caso especial del problema MPF. Se pueden mostrar más ejemplos para demostrar que el problema MPF constituye casos especiales de muchos problemas clásicos, como se explicó anteriormente, cuyos detalles se pueden encontrar en [ 1 ].

GDL: un algoritmo para resolver el problema MPF

Si se puede encontrar una relación entre los elementos de un conjunto dadoS{\displaystyle S}, entonces se puede resolver el problema MPF basándose en la noción de propagación de creencias , que es un uso especial de la técnica de "paso de mensajes". La relación requerida es que el conjunto dado de dominios locales se puede organizar en un árbol de unión . En otras palabras, creamos un árbol de teoría de grafos con los elementos deS{\displaystyle S}como los vértices del árbolT{\displaystyle T}, de tal manera que para cualesquiera dos vértices arbitrarios digamosvi{\displaystyle v_{i}}yvj{\displaystyle v_{j}}dóndeij{\displaystyle i\neq j}y existe una arista entre estos dos vértices, entonces la intersección de las etiquetas correspondientes, a saber:SiSj{\displaystyle S_{i}\cap S_{j}}, es un subconjunto de la etiqueta en cada vértice en el camino único desdevi{\displaystyle v_{i}}avj{\displaystyle v_{j}}.

Por ejemplo,

Ejemplo 1: Consideremos los siguientes nueve dominios locales:

  1. {pag2}{\displaystyle \{p_{2}\}}
  2. {pag3,pag2}{\displaystyle \{p_{3},p_{2}\}}
  3. {pag2,pag1}{\displaystyle \{p_{2},p_{1}\}}
  4. {pag3,pag4}{\displaystyle \{p_{3},p_{4}\}}
  5. {pag3}{\displaystyle \{p_{3}\}}
  6. {pag1,pag4}{\displaystyle \{p_{1},p_{4}\}}
  7. {pag1}{\displaystyle \{p_{1}\}}
  8. {pag4}{\displaystyle \{p_{4}\}}
  9. {pag2,pag4}{\displaystyle \{p_{2},p_{4}\}}

Para el conjunto de dominios locales dado anteriormente, se pueden organizar en un árbol de unión como se muestra a continuación:

Un ejemplo de una unión de árboles
Un ejemplo de una unión de árboles

De manera similar, si se da otro conjunto como el siguiente

Ejemplo 2: Consideremos los siguientes cuatro dominios locales:

  1. {pag1,pag2}{\displaystyle \{p_{1},p_{2}\}}
  2. {pag2,pag3}{\displaystyle \{p_{2},p_{3}\}}
  3. {pag3,pag4}{\displaystyle \{p_{3},p_{4}\}}
  4. {pag1,pag4}{\displaystyle \{p_{1},p_{4}\}}

Entonces, construir el árbol solo con estos dominios locales no es posible, ya que este conjunto de valores no tiene dominios comunes que puedan ubicarse entre dos valores cualesquiera del conjunto anterior. Sin embargo, si se agregan los dos dominios ficticios como se muestra a continuación, organizar el conjunto actualizado en un árbol de unión sería posible y, además, sencillo.

5.{pag1,pag2{\displaystyle \{p_{1},p_{2}},pag4}{\displaystyle p_{4}\}} 6.{pag2,pag3{\displaystyle \{p_{2},p_{3}},pag4}{\displaystyle p_{4}\}}

De manera similar, para este conjunto de dominios, el árbol de unión se ve como se muestra a continuación:

Otro ejemplo de árbol de unión
Otro ejemplo de árbol de unión

Algoritmo de ley distributiva generalizada (GDL)

Entrada: Un conjunto de dominios locales. Salida: Para el conjunto de dominios dado, se calcula el número mínimo posible de operaciones que se requieren para resolver el problema. Entonces, sivi{\displaystyle v_{i}}yvj{\displaystyle v_{j}}están conectados por una arista en el árbol de unión, luego un mensaje devi{\displaystyle v_{i}}avj{\displaystyle v_{j}}es un conjunto/tabla de valores dados por una función:μi,j{\displaystyle \mu _{i,j}}:ASiSjR{\displaystyle A_{S_{i}\cap S_{j}}\rightarrow R}. Para empezar con todas las funciones, es decir, para todas las combinaciones dei{\displaystyle i}yj{\displaystyle j}en el árbol dado,μi,j{\displaystyle \mu _{i,j}}se define como idéntico1{\displaystyle 1}y cuando se actualiza un mensaje en particular, sigue la ecuación que se muestra a continuación.

μi,j(pagSiSj){\displaystyle \mu _{i,j}(p_{S_{i}\cap S_{j}})}=pagSiSjASiSjαi(pagSi)vkadjvi,kjμk,j(pagSkSi)(1){\displaystyle \sum _{p_{S_{i}\setminus S_{j}}\in A_{S_{i}\setminus S_{j}}}\alpha _{i}(p_{S_{i}})\prod _{{v_{k}\operatorname {adj} v_{i}},{k\neq j}}\mu _{k,j}(p_{S_{k}\cap S_{i}})(1)}

dóndevkadjvi{\displaystyle v_{k}\operatorname {adj} v_{i}}significa quevk{\displaystyle v_{k}}es un vértice adyacente avi{\displaystyle v_{i}}en el árbol.

De manera similar, cada vértice tiene un estado que se define como una tabla que contiene los valores de la función.σi:ASiR{\displaystyle \sigma _{i}:A_{S_{i}}\rightarrow R}, Al igual que los mensajes se inicializan en 1 de forma idéntica, el estado devi{\displaystyle v_{i}}se define como núcleo localα(pagSi){\displaystyle \alpha (p_{S_{i}})}pero siempre queσi{\displaystyle \sigma _{i}}Una vez actualizada, sigue la siguiente ecuación:

σ(pagSi)=αi(pagSi)vkadjviμk,j(pagSkSi)(2).{\displaystyle \sigma (p_{S_{i}})=\alpha _{i}(p_{S_{i}})\prod _{v_{k}\operatorname {adj} v_{i}}\mu _{k,j}(p_{S_{k}\cap S_{i}})(2).}

Funcionamiento básico del algoritmo

Dado el conjunto de dominios locales como entrada, determinamos si podemos crear un árbol de unión, ya sea utilizando el conjunto directamente o agregando primero dominios ficticios al conjunto y luego creando el árbol de unión. Si la construcción de la unión no es posible, el algoritmo indica que no hay forma de reducir el número de pasos para calcular el problema de la ecuación dada. Sin embargo, una vez que tenemos el árbol de unión, el algoritmo deberá programar mensajes y calcular estados. Al hacer esto, podemos saber dónde se pueden reducir los pasos, lo cual se analizará más adelante.

Planificación del paso de mensajes y del cálculo del estado.

Hay dos casos especiales de los que vamos a hablar aquí, a saber, el problema de un solo vértice, en el que la función objetivo se calcula en un solo vértice.v0{\displaystyle v_{0}} y el segundo es el Problema de Todos los Vértices, donde el objetivo es calcular la función objetivo en todos los vértices.

Comencemos con el problema de un solo vértice ; GDL comenzará dirigiendo cada arista hacia el vértice objetivo.v0{\displaystyle v_{0}}Aquí, los mensajes se envían únicamente en la dirección hacia el vértice de destino. Tenga en cuenta que todos los mensajes dirigidos se envían solo una vez. Los mensajes se inician desde los nodos hoja (donde el grado es 1) y se dirigen hacia el vértice de destino.v0{\displaystyle v_{0}}El mensaje viaja desde las hojas a sus padres y luego de allí a los padres de estos y así sucesivamente hasta que llega al vértice objetivo.v0{\displaystyle v_{0}}. El vértice objetivov0{\displaystyle v_{0}}Calculará su estado solo cuando reciba todos los mensajes de todos sus vecinos. Una vez que tengamos el estado, habremos obtenido la respuesta y, por lo tanto, el algoritmo finalizará.

Por ejemplo, consideremos un árbol de unión construido a partir del conjunto de dominios locales dados anteriormente, es decir, el conjunto del ejemplo 1. Ahora, la tabla de programación para estos dominios es (donde el vértice objetivo espag2{\displaystyle p_{2}}).

Mensaje de ronda o cálculo de estado{\displaystyle {\text{Round Message or State Computation}}}1.μ8,4(pag4)=α8(pag4){\displaystyle 1.\mu _{8,4}(p_{4})=\alpha _{8}(p_{4})}2.μ8,4(pag4)=Σpag2α9(pag2,pag4){\displaystyle 2.\mu _{8,4}(p_{4})=\Sigma _{p_{2}}\alpha _{9}(p_{2},p_{4})}3.μ5,2(pag3)=α5(pag3){\displaystyle 3.\mu _{5,2}(p_{3})=\alpha _{5}(p_{3})}4.μ6,3(pag1)=Σpag4α6(pag1,pag4){\displaystyle 4.\mu _{6,3}(p_{1})=\Sigma _{p_{4}}\alpha _{6}(p_{1},p_{4})}5.μ7,3(pag1)=α7(pag1){\displaystyle 5.\mu _{7,3}(p_{1})=\alpha _{7}(p_{1})}6.μ4,2(pag3)=Σpag4α4(pag3,pag4).μ8,4(pag4).μ9,4(pag4){\displaystyle 6.\mu _{4,2}(p_{3})=\Sigma _{p_{4}}\alpha _{4}(p_{3},p_{4}).\mu _{8,4}(p_{4}).\mu _{9,4}(p_{4})}7.μ3,1(pag2)=Σpag1α3(pag2,pag1).μ6,3(pag1).μ7,3(pag1){\displaystyle 7.\mu _{3,1}(p_{2})=\Sigma _{p_{1}}\alpha _{3}(p_{2},p_{1}).\mu _{6,3}(p_{1}).\mu _{7,3}(p_{1})}8.μ2,1(pag2)=Σpag3α2(pag3,pag2).μ4,2(pag3).μ5,2(pag3){\displaystyle 8.\mu _{2,1}(p_{2})=\Sigma _{p_{3}}\alpha _{2}(p_{3},p_{2}).\mu _{4,2}(p_{3}).\mu _{5,2}(p_{3})}9.σ1(pag2)=α1(pag2).μ2,1(pag2).μ3,1(pag2){\displaystyle 9.\sigma _{1}(p_{2})=\alpha _{1}(p_{2}).\mu _{2,1}(p_{2}).\mu _{3,1}(p_{2})}

Por lo tanto, la complejidad para GDL de un solo vértice se puede mostrar como

Σvd(v)|AS(v)|{\displaystyle \Sigma _{v}d(v)|A_{S_{(v)}}|} operaciones aritméticas Donde (Nota: La explicación de la ecuación anterior se explica más adelante en el artículo) S(v){\displaystyle S(v)}es la etiqueta dev{\displaystyle v}. d(v){\displaystyle d(v)}es el grado dev{\displaystyle v}(es decir, número de vértices adyacentes a v).

Para resolver el problema de todos los vértices , podemos programar GDL de varias maneras. Una de ellas es la implementación paralela, donde en cada ronda se actualiza cada estado y se calcula y transmite cada mensaje simultáneamente. En este tipo de implementación, los estados y los mensajes se estabilizan tras un número de rondas que, como máximo, es igual al diámetro del árbol. En este punto, todos los estados de los vértices coincidirán con la función objetivo deseada.

Otra forma de programar GDL para este problema es la implementación en serie, que es similar al problema de un solo vértice, excepto que no detenemos el algoritmo hasta que todos los vértices de un conjunto requerido hayan recibido todos los mensajes de todos sus vecinos y hayan calculado su estado. Por lo tanto, el número de operaciones aritméticas que requiere esta implementación es como máximoΣvVd(v)|AS(v)|{\displaystyle \Sigma _{v\in V}d(v)|A_{S_{(v)}}|}operaciones aritméticas.

Construcción de un árbol de unión

La clave para construir un árbol de unión reside en el grafo del dominio local.GRAMOLD{\displaystyle G_{LD}}, que es un grafo completo ponderado conMETRO{\displaystyle M}vérticesv1,v2,v3,,vMETRO{\displaystyle v_{1},v_{2},v_{3},\ldots ,v_{M}}es decir, uno para cada dominio local, con el peso de la arista. mii,j:vivj{\displaystyle e_{i,j}:v_{i}\leftrightarrow v_{j}}definido por ωi,j=|SiSj|{\displaystyle \omega _{i,j}=|S_{i}\cap S_{j}|}. siincógnitakSiSj{\displaystyle x_{k}\in S_{i}\cap S_{j}}, entonces decimosincógnitak{\displaystyle x_{k}}está contenido enmii,j{\displaystyle e_{i,j}}. Denotado porωmetroaincógnita{\displaystyle \omega _{max}}(el peso de un árbol de expansión de peso máximo deGRAMOLD{\displaystyle G_{LD}}), que se define por

ω=Σi=1METRO|Si|norte{\displaystyle \omega ^{*}=\Sigma _{i=1}^{M}|S_{i}|-n}

donde n es el número de elementos en ese conjunto. Para mayor claridad y detalles, consulte estos enlaces: [ 3 ] [ 4 ]

Teorema de programación

DejarT{\displaystyle 'T'}ser un árbol de unión con conjunto de vérticesV{\displaystyle 'V'}y conjunto de bordesmi{\displaystyle 'E'}En este algoritmo, los mensajes se envían en ambas direcciones en cualquier arista, por lo que podemos decir/considerar el conjunto de aristas E como un conjunto de pares ordenados de vértices. Por ejemplo, de la Figura 1mi{\displaystyle 'E'}se puede definir de la siguiente manera

mi={(1,2),(2,1),(1,3),(3,1),(4,2),(2,4),(5,2),(2,5),(6,3),(3,6),(7,3),(3,7),(8,4),(4,8),(9,4),(4,9)}{\displaystyle E=\{(1,2),(2,1),(1,3),(3,1),(4,2),(2,4),(5,2),(2,5),(6,3),(3,6),(7,3),(3,7),(8,4),(4,8),(9,4),(4,9)\}}

NOTA:mi{\displaystyle E}Lo anterior te muestra todas las direcciones posibles que puede seguir un mensaje en el árbol.

El cronograma para el GDL se define como una secuencia finita de subconjuntos demi{\displaystyle E}. Que generalmente se representa por mi={\displaystyle {\mathcal {E}}=}{mi1,mi2,mi3,,minorte{\displaystyle E_{1},E_{2},E_{3},\ldots ,E_{N}}}, Dóndeminorte{\displaystyle E_{N}}es el conjunto de mensajes actualizados durante elnorteth{\displaystyle N^{th}}ronda de ejecución del algoritmo.

Habiendo definido/visto algunas notaciones, veremos lo que dice el teorema, cuando se nos da un cronograma.mi={mi1,mi2,mi3,,minorte}{\displaystyle {\mathcal {E}}=\{E_{1},E_{2},E_{3},\ldots ,E_{N}\}}, el enrejado de mensajes correspondiente como un grafo dirigido finito con conjunto de vértices de V×{0,1,2,3,,norte}{\displaystyle V\times \{0,1,2,3,\ldots ,N\}}, en el que un elemento típico se denota porvi(t){\displaystyle v_{i}(t)}para t{0,1,2,3,,norte}{\displaystyle t\in \{0,1,2,3,\ldots ,N\}}, Luego, después de completar el paso del mensaje, estado en el vérticevj{\displaystyle v_{j}}será eljel{\displaystyle j^{\text{th}}}objetivo definido en

σ(pagSi)=αi(pagSi)vkadjviμk,j(pagSkSi){\displaystyle \sigma (p_{S_{i}})=\alpha _{i}(p_{S_{i}})\prod _{v_{k}\operatorname {adj} v_{i}}\mu _{k,j}(p_{S_{k}\cap S_{i}})}

y si existe un camino desdevi(0){\displaystyle v_{i}(0)}avj(norte){\displaystyle v_{j}(N)}

Complejidad computacional

Aquí intentamos explicar la complejidad de resolver el problema MPF en términos del número de operaciones matemáticas necesarias para el cálculo. Es decir, comparamos el número de operaciones necesarias al calcularlo utilizando el método normal (aquí por método normal nos referimos a métodos que no utilizan paso de mensajes ni árboles de unión; en resumen, métodos que no utilizan los conceptos de GDL) y el número de operaciones utilizando la ley distributiva generalizada.

Ejemplo: Consideremos el caso más simple en el que necesitamos calcular la siguiente expresión.ab+ado{\displaystyle ab+ac}.

Para evaluar esta expresión de forma ingenua se requieren dos multiplicaciones y una suma. La expresión, cuando se expresa utilizando la ley distributiva, se puede escribir comoa(b+do){\displaystyle a(b+c)}Una optimización sencilla que reduce el número de operaciones a una suma y una multiplicación.

De forma similar al ejemplo explicado anteriormente, expresaremos las ecuaciones en diferentes formas para realizar la menor cantidad de operaciones posible aplicando el GDL.

Como se explicó en las secciones anteriores, resolvemos el problema utilizando el concepto de árboles de unión. La optimización obtenida mediante el uso de estos árboles es comparable a la obtenida al resolver un problema de semigrupos en árboles. Por ejemplo, para encontrar el mínimo de un grupo de números, podemos observar que si tenemos un árbol y todos los elementos están en la base del árbol, podemos comparar el mínimo de dos elementos en paralelo y el mínimo resultante se escribirá en el nodo padre. Cuando este proceso se propaga hacia arriba en el árbol, el mínimo del grupo de elementos se encontrará en la raíz.

A continuación se muestra la complejidad para resolver el árbol de unión mediante paso de mensajes.

Reescribimos la fórmula utilizada anteriormente de la siguiente forma. Esta es la ecuación para un mensaje que se enviará del vértice v al vértice w.

μv,w(pagvw)=pagvwAS(v)S(w)αv(pagv)adjvvμ,v(pagv){\displaystyle \mu _{v,w}(p_{v\cap w})=\sum _{p_{v\setminus w}\in A_{S(v)\setminus S(w)}}\alpha _{v}(p_{v})\prod _{uadjv_{u\neq v}}\mu _{u,v}(p_{u\cap v})} ----ecuación del mensaje

De manera similar, reescribimos la ecuación para calcular el estado del vértice v de la siguiente manera:

σv(pagv)=αv(pagv)adjvμv,w(pagvw){\displaystyle \sigma _{v}(p_{v})=\alpha _{v}(p_{v})\prod _{u\operatorname {adj} v}\mu _{v,w}(p_{v\cap w})}

Primero analizaremos el problema de un solo vértice y asumiremos que el vértice objetivo esv0{\displaystyle v_{0}}y por lo tanto tenemos una ventaja dev{\displaystyle v}av0{\displaystyle v_{0}}Supongamos que tenemos una arista(v,w){\displaystyle (v,w)}Calculamos el mensaje usando la ecuación del mensaje. Para calcularpagv{\displaystyle p_{u\cap v}}requiere

qvw1{\displaystyle q_{v\setminus w}-1}

adiciones y

qvw(d(v)1){\displaystyle q_{v\setminus w}(d(v)-1)}

multiplicaciones.

(Nosotros representamos a la|AS(v) S(w)|{\displaystyle |A_{S(v)\ S(w)}|}comoqvw{\displaystyle q_{v\setminus w}}.)

Pero habrá muchas posibilidades paraincógnitavw{\displaystyle x_{v\cap w}}por eso qvw=dmiF|AS(v)S(w)|{\displaystyle q_{v\cap w}{\stackrel {\mathrm {def} }{=}}|A_{S(v)\cap S(w)}|}posibilidades parapagvw{\displaystyle p_{v\cap w}}Por lo tanto, todo el mensaje necesitará

(qvw)(qvw1)=qvqvw{\displaystyle (q_{v\cap w})(q_{v\setminus w}-1)=q_{v}-q_{v\cap w}}

adiciones y

(qvw)qvw.(d(v)1)=(d(v)1)qv{\displaystyle (q_{v\cap w})q_{v\setminus w}.(d(v)-1)=(d(v)-1)q_{v}}

multiplicaciones

El número total de operaciones aritméticas necesarias para enviar un mensaje haciav0{\displaystyle v_{0}}a lo largo de los bordes del árbol estará

vv0(qvqvw){\displaystyle \sum _{v\neq v0}(q_{v}-q_{v\cap w})}

adiciones y

vv0(d(v)1)qv{\displaystyle \sum _{v\neq v0}(d(v)-1)q_{v}}

multiplicaciones.

Una vez que se han transmitido todos los mensajes, el algoritmo finaliza con el cálculo del estado env0{\displaystyle v_{0}}El cálculo del estado requiered(v0)q0{\displaystyle d(v_{0})q_{0}}más multiplicaciones.

Por lo tanto, el número de cálculos necesarios para calcular el estado se indica a continuación.

vv0(qvqvw){\displaystyle \sum _{v\neq v_{0}}(q_{v}-q_{v\cap w})}

adiciones y

vv0(d(v)1)qv+d(v0)qv0{\displaystyle \sum _{v\neq v_{0}}(d(v)-1)q_{v}+d(v_{0})q_{v_{0}}}

multiplicaciones

Por lo tanto, el gran total del número de cálculos es

χ(T)=vVd(v)qvmimiqmi{\displaystyle \chi (T)=\sum _{v\in V}d(v)q_{v}-\sum _{e\in E}q_{e}}----(1){\displaystyle (1)}

dóndemi=(v,w){\displaystyle e=(v,w)}es una arista y su tamaño está definido porqvw{\displaystyle q_{v\cap w}}

La fórmula anterior nos da el límite superior.

Si definimos la complejidad del bordemi=(v,w){\displaystyle e=(v,w)}como

χ(mi)=qv+qwqvw{\displaystyle \chi (e)=q_{v}+q_{w}-q_{v\cap w}}

Por lo tanto,(1){\displaystyle (1)}se puede escribir como

χ(T)=mimiχ(mi){\displaystyle \chi (T)=\sum _{e\in E}\chi (e)}

Ahora calculamos la complejidad de las aristas para el problema definido en la Figura 1 de la siguiente manera:

χ(1,2)=q2+q2q3q2{\displaystyle \chi (1,2)=q_{2}+q_{2}q_{3}-q_{2}}
χ(2,4)=q3q4+q2q3q3{\displaystyle \chi (2,4)=q_{3}q_{4}+q_{2}q_{3}-q_{3}}
χ(2,5)=q3+q2q3q3{\displaystyle \chi (2,5)=q_{3}+q_{2}q_{3}-q_{3}}
χ(4,8)=q4+q3q4q4{\displaystyle \chi (4,8)=q_{4}+q_{3}q_{4}-q_{4}}
χ(4,9)=q2q4+q3q4q4{\displaystyle \chi (4,9)=q_{2}q_{4}+q_{3}q_{4}-q_{4}}
χ(1,3)=q2+q2q1q2{\displaystyle \chi (1,3)=q_{2}+q_{2}q_{1}-q_{2}}
χ(3,7)=q1+q1q2q1{\displaystyle \chi (3,7)=q_{1}+q_{1}q_{2}-q_{1}}
χ(3,6)=q1q4+q1q2q1{\displaystyle \chi (3,6)=q_{1}q_{4}+q_{1}q_{2}-q_{1}}

La complejidad total será3q2q3+3q3q4+3q1q2+q2q4+q1q4q1q3q4{\displaystyle 3q_{2}q_{3}+3q_{3}q_{4}+3q_{1}q_{2}+q_{2}q_{4}+q_{1}q_{4}-q_{1}-q_{3}-q_{4}}lo cual es considerablemente bajo en comparación con el método directo. (Aquí, por método directo nos referimos a los métodos que no utilizan el paso de mensajes. El tiempo empleado con el método directo será equivalente al tiempo necesario para calcular el mensaje en cada nodo y el estado de cada uno de ellos).

Ahora consideramos el problema de todos los vértices, donde el mensaje deberá enviarse en ambas direcciones y el estado deberá calcularse en ambos vértices. Esto tomaríaO(vd(v)d(v)qv){\displaystyle O(\sum _{v}d(v)d(v)q_{v})}pero mediante el preprocesamiento podemos reducir el número de multiplicaciones a3(d2){\displaystyle 3(d-2)}. Aquíd{\displaystyle d}es el grado del vértice. Ejemplo: Si hay un conjunto(a1,,ad){\displaystyle (a_{1},\ldots ,a_{d})}cond{\displaystyle d}números. Es posible calcular todos los productos d ded1{\displaystyle d-1}delai{\displaystyle a_{i}}con como máximo3(d2){\displaystyle 3(d-2)}multiplicaciones en lugar de lo obviod(d2){\displaystyle d(d-2)}Lo hacemos precalculando las cantidades.b1=a1,b2=b1a2=a1a2,bd1=bd2ad1=a1a2ad1{\displaystyle b_{1}=a_{1},b_{2}=b_{1}\cdot a_{2}=a_{1}\cdot a_{2},b_{d-1}=b_{d-2}\cdot a_{d-1}=a_{1}a_{2}\cdots a_{d-1}}ydod=ad,dod1=ad1dod=ad1ad,,do2=a2do3=a2a3ad{\displaystyle c_{d}=a_{d},c_{d-1}=a_{d-1}c_{d}=a_{d-1}\cdot a_{d},\ldots ,c_{2}=a_{2}\cdot c_{3}=a_{2}a_{3}\cdots a_{d}}esto toma2(d2){\displaystyle 2(d-2)}multiplicaciones. Entonces simetroj{\displaystyle m_{j}}denota el producto de todosai{\displaystyle a_{i}}exceptoaj{\displaystyle a_{j}}tenemosmetro1=do2,metro2=b1do3{\displaystyle m_{1}=c_{2},m_{2}=b_{1}\cdot c_{3}}y así sucesivamente necesitará otrod2{\displaystyle d-2}multiplicaciones que dan como resultado el total3(d2){\displaystyle 3(d-2)}.

No hay mucho que podamos hacer en lo que respecta a la construcción del árbol de unión, excepto que podemos tener muchos árboles de expansión de peso máximo y debemos elegir el árbol de expansión con el menorχ(T){\displaystyle \chi (T)}y a veces esto puede significar agregar un dominio local para reducir la complejidad del árbol de unión.

Podría parecer que GDL solo es correcto cuando los dominios locales pueden expresarse como un árbol de unión. Sin embargo, incluso en casos con ciclos y varias iteraciones, los mensajes serán aproximadamente iguales a la función objetivo. Los experimentos realizados con el algoritmo de Gallager-Tanner-Wiberg para códigos de verificación de paridad de baja densidad respaldaron esta afirmación.

Referencias

  1. 1 2 3 Aji, SM; McEliece, RJ (marzo de 2000). "La ley distributiva generalizada" (PDF) . IEEE Transactions on Information Theory . 46 (2): 325– 343. Bibcode : 2000ITIT...46..325A . doi : 10.1109/18.825794 .
  2. "derecho distributivo" . Encyclopædia Britannica. Encyclopædia Britannica Online . Encyclopædia Britannica Inc. Consultado el 1 de mayo de 2012 .
  3. "Copia archivada" (PDF) . Archivado del original (PDF) el 19 de marzo de 2015. Recuperado el 19 de marzo de 2015 .{{cite web}}: CS1 maint: copia archivada como título ( enlace ) Los algoritmos del árbol de unión
  4. http://www-anw.cs.umass.edu/~cs691t/SS02/lectures/week7.PDF Archivado el 26/05/2012 en Wayback Machine El algoritmo del árbol de unión