# Common Neighbors

This section describes the Common Neighbors algorithm in the Neo4j Graph Data Science library.

Common neighbors captures the idea that two strangers who have a friend in common are more likely to be introduced than those who don’t have any friends in common.

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

## 1. History and explanation

It is computed using the following formula:

where `N(x)` is the set of nodes adjacent to node `x`, and `N(y)` is the set of nodes adjacent to node `y`.

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.commonNeighbors(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`

## 3. Common Neighbors algorithm sample

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 number of common neighbors for Michael and Karin:
``````MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
Table 2. Results
`score`

1.0

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

The following will return the number of common neighbors for Michael and Karin based only on the `FRIENDS` relationships:
``````MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
RETURN gds.alpha.linkprediction.commonNeighbors(p1, p2, {relationshipQuery: "FRIENDS"}) AS score``````
Table 3. Results
`score`

0.0