This section describes the Adamic Adar algorithm in the Neo4j Graph Data Science library.

Adamic Adar is a measure used to compute the closeness of nodes based on their shared neighbors.

This algorithm is in the alpha tier. For more information on algorithm tiers, see Algorithms.

## 1. History and explanation

The Adamic Adar algorithm was introduced in 2003 by Lada Adamic and Eytan Adar to predict links in a social network. It is computed using the following formula:

where `N(u)` is the set of nodes adjacent to `u`.

A value of 0 indicates that two nodes are not close, while higher values indicate nodes are closer.

The library contains a function to calculate closeness between two nodes.

## 2. Syntax

The following will run the algorithm and return the result:
``````RETURN gds.alpha.linkprediction.adamicAdar(node1:Node, node2:Node, {
relationshipQuery:String,
direction:String
})``````
Table 1. Parameters
Name Type Default Optional Description

`node1`

Node

null

no

A node

`node2`

Node

null

no

Another node

`relationshipQuery`

String

null

yes

The relationship type used to compute similarity between `node1` and `node2`

`direction`

String

BOTH

yes

The direction of relationship type used to compute similarity between `node1` and `node2`

The following will create a sample graph:
``````CREATE
(zhen:Person {name: 'Zhen'}),
(praveena:Person {name: 'Praveena'}),
(michael:Person {name: 'Michael'}),
(arya:Person {name: 'Arya'}),
(karin:Person {name: 'Karin'}),

(zhen)-[:FRIENDS]->(arya),
(zhen)-[:FRIENDS]->(praveena),
(praveena)-[:WORKS_WITH]->(karin),
(praveena)-[:FRIENDS]->(michael),
(michael)-[:WORKS_WITH]->(karin),
(arya)-[:FRIENDS]->(karin)``````
The following will return the Adamic Adar score for Michael and Karin:
``````MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
Table 2. Results
`score`

0.9102392266268373

We can also compute the score of a pair of nodes based on a specific relationship type.

The following will return the Adamic Adar score for Michael and Karin based only on the `FRIENDS` relationships:
``````MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
`score`