Vue d’ensemble
L'algorithme Total Neighbors calcule le nombre total de voisins distincts de deux nœuds comme mesure de leur similarité.
Cet algorithme prend en compte tout le voisinage des deux nœuds, offrant une vue plus complète de leur similarité par rapport aux algorithmes qui se concentrent uniquement sur les voisins communs. Il est calculé à l'aide de la formule suivante :
où N(x) et N(y) sont les ensembles de nœuds adjacents aux nœuds x et y respectivement.
Plus il y a de voisins totaux, plus la similarité entre les nœuds est grande, tandis qu'un nombre de 0 indique aucune similarité entre deux nœuds.
Dans cet exemple, TN(D,E) = |N(D) ∪ N(E)| = |{B, C, E, F} ∪ {B, D, F}| = |{B, C, D, E, F}| = 5.
Considérations
- L'algorithme Total Neighbors ignore la direction des arêtes mais les calcule comme des arêtes non dirigées.
Syntaxe
- Commande :
algo(topological_link_prediction)
- Paramètres :
Nom |
Type |
Spec |
Défaut |
Optionnel |
Description |
---|---|---|---|---|---|
ids / uuids | []_id / []_uuid |
/ | / | Non | ID/UUID du premier ensemble de nœuds à calculer ; chaque nœud dans ids /uuids sera apparié avec chaque nœud dans ids2 /uuids2 |
ids2 / uuids2 | []_id / []_uuid |
/ | / | Non | ID/UUID du deuxième ensemble de nœuds à calculer ; chaque nœud dans ids /uuids sera apparié avec chaque nœud dans ids2 /uuids2 |
type | string | Total_Neighbors |
Adamic_Adar |
Non | Type de similarité ; pour Total Neighbors, laissez-le en Total_Neighbors |
limit | int | >=-1 | -1 |
Oui | Nombre de résultats à retourner, -1 pour retourner tous les résultats |
Exemple
Le graphe exemple est comme suit :
File Writeback
Spec | Contenu |
---|---|
filename | node1 ,node2 ,num |
algo(topological_link_prediction).params({
uuids: [3],
uuids2: [1,5,7],
type: 'Total_Neighbors'
}).write({
file:{
filename: 'tn'
}
})
Résultats : Fichier tn
C,A,3.000000
C,E,3.000000
C,G,3.000000
Direct Return
Alias Ordinal | Type | Description |
Colonnes |
---|---|---|---|
0 | []perNodePair | Paire de nœuds et sa similarité | node1 , node2 , num |
algo(topological_link_prediction).params({
ids: 'C',
ids2: ['A','C','E','G'],
type: 'Total_Neighbors'
}) as tn
return tn
Résultats : tn
node1 | node2 | num |
---|---|---|
3 | 1 | 3 |
3 | 5 | 3 |
3 | 7 | 3 |
Stream Return
Alias Ordinal | Type | Description |
Colonnes |
---|---|---|---|
0 | []perNodePair | Paire de nœuds et sa similarité | node1 , node2 , num |
find().nodes() as n
with collect(n._id) as nID
algo(topological_link_prediction).params({
ids: 'C',
ids2: nID,
type: 'Total_Neighbors'
}).stream() as tn
where tn.num >= 4
return tn
Résultats : tn
node1 | node2 | num |
---|---|---|
3 | 2 | 6 |
3 | 4 | 5 |
3 | 6 | 5 |