Algoritmo de triadas equilibradas

El algoritmo de triadas equilibradas es un método especial de algoritmo de componentes conectados desarrollado en el entorno de trabajo de Neo4j. Este es un algoritmo de gran funcionalidad para evaluar el equilibrio estructural de un grafo. 

A continuación descubriremos un poco más sobre los fundamentos de este algoritmo, sus principales casos de uso y un ejemplo práctico para conocer a profundidad sus potencialidades. 

¿Qué es el algoritmo de triadas equilibradas?

Este algoritmo se basa en la teoría del equilibrio propuesta por Fritz Heider en el año 1958. Esta teoría que ha causado gran impacto en la psicología moderna ha aportado elementos sustanciales para entender el equilibrio estructural de un grafo. 

A diferencia de algoritmos similares, este permite la incorporación de relaciones positivas y negativas. La teoría del equilibrio de Heider ayuda a entender las diferencias entre interacciones positivas o negativas. Dentro de esta teoría tenemos que ciertas estructuras entre individuos y objetos se perciben como equilibradas mientras otras no lo son. 

Las triadas balanceadas entonces, es un algoritmo que cuenta con un número equilibrado y desequilibrado dentro de la composición de un nodo o vértice. Se realiza dentro del algoritmo el cálculo matemático simple de signos de sumatoria y resta para diferenciar su peso. Con una formula de matemática simple podemos conocer el equilibrio de los datos que vamos a evaluar. Se realiza con una formula similar a la que presentamos a continuación. 

+ + + = Equilibrado – + – = Equilibrado – + + = No equilibrado – – – = No equilibrado

Casos de uso 

El algoritmo de tríadas equilibradas es normalmente utilizado para estudiar el equilibrio estructural de las redes que conforman un ecosistema natural, en especial, el reino animal. Adicionalmente se ha implementado para evaluar la dinámica en procesos de equilibrio estructural de una red de un sistema social. 

Pero su aplicación a nivel tecnológico es increible. En el área de negocios y mercadeo podemos estudiar el equilibrio de las relaciones entre consumidores y productos específicos de una marca. Esto permite comprender si la marca esta proporcionando suficiente bienestar al consumidor y actuar en consecuencia de mantener positivo el balance de preferencia. 

Ejemplo del algoritmo de triadas equilibradas

Para este ejemplo, construiremos un grafo similar al de la imagen que presentamos a continuación en lenguaje cypher en el entorno de desarrollo del algoritmo en Neo4j.

MERGE (a:Person {name:'Anna'})
MERGE (b:Person {name:'Dolores'})
MERGE (c:Person {name:'Matt'})
MERGE (d:Person {name:'Larry'})
MERGE (e:Person {name:'Stefan'})
MERGE (f:Person {name:'Sophia'})
MERGE (g:Person {name:'Robin'})
MERGE (a)-[:TYPE {weight:1.0}]->(b)
MERGE (a)-[:TYPE {weight:-1.0}]->(c)
MERGE (a)-[:TYPE {weight:1.0}]->(d)
MERGE (a)-[:TYPE {weight:-1.0}]->(e)
MERGE (a)-[:TYPE {weight:1.0}]->(f)
MERGE (a)-[:TYPE {weight:-1.0}]->(g)
MERGE (b)-[:TYPE {weight:-1.0}]->(c)
MERGE (c)-[:TYPE {weight:1.0}]->(d)
MERGE (d)-[:TYPE {weight:-1.0}]->(e)
MERGE (e)-[:TYPE {weight:1.0}]->(f)
MERGE (f)-[:TYPE {weight:-1.0}]->(g)
MERGE (g)-[:TYPE {weight:1.0}]->(b);

Posteriormente ejecutamos el algoritmo contando el número de nodos o vértices balanceados o des-balanceados.

call algo.balancedTriads.stream('Person','TYPE',{weightProperty:'weight'})
YIELD nodeId, balanced, unbalanced
RETURN algo.asNode(nodeId).name as person,balanced,unbalanced
ORDER BY balanced + unbalanced DESC
LIMIT 10

Se vuelven a contar el número de triadas y se ejecuta el calculo del algoritmo para obtener los resultados

CALL algo.balancedTriads('Person', 'TYPE', {weightProperty:'weight'})
YIELD loadMillis, computeMillis, writeMillis, nodeCount, balancedTriadCount, unbalancedTriadCount

Resultados:

nodeIdbalancedunbalanced
Anna33
Matt11
Larry11
Stefan11
Sophia11
Dolores11

Podemos observar que el grafo desarrollado presenta un equilibrio general en cada uno de los nodos que lo compone.

Esperamos que esta información sea de utilidad para comprender a detalle las aplicabilidad de este tipo de algoritmo.

Visita más de Grapheverywhere para descubrir todo lo que necesitas de los algoritmos de componentes conectados.

 

Share This