# Change Nickname

Current Nickname:

• Ultipa Graph V4

Standalone

The MAC address of the server you want to deploy.

Cancel
Apply
 ID Product Status Cores Applied Validity Period(days) Effective Date Excpired Date Mac Address Apply Comment Review Comment
Close
Profile
• Full Name:
• Phone:
• Company:
• Company Email:
• Country:
• Language:
Apply

You have no license application record.

Apply
Certificate Issued at Valid until Serial No. File
Serial No. Valid until

Not having one? Apply now! >>>

Product Created On ID Amount (USD) Invoice
Product Created On ID Amount (USD) Invoice

No Invoice

# Harmonic Centrality

✓ File Writeback ✓ Property Writeback ✓ Direct Return ✓ Stream Return ✕ Stats

## Overview

Harmonic Centrality is a variant of Closeness Centrality. The average shortest distance measurement proposed by harmonic centrality is compatible with infinite values which would occur in disconnected graph. Harmonic centrality was first proposed by M. Marchiori and V. Latora in 2000, and then by A. Dekker and Y. Rochat in 2005 and 2009:

Harmonic centrality takes on values between 0 to 1, nodes with higher scores have shorter distances to all other nodes.

## Concepts

### Shortest Distance

The shortest distance of two nodes is the number of edges contained in the shortest path between them. Please refer to Closeness Centrality for more details.

### Harmonic Mean

Harmonic mean is the inverse of the arithmetic mean of the inverses of the variables. The formula for calculating the arithmetic mean A and the harmonic mean H is as follows:

A classic application of harmonic mean is to calculate the average speed when traveling back and forth at different speeds. Suppose there is a round trip, the forward and backward speeds are 30 km/h and 10 km/h respectively. What is the average speed for the entire trip?

The arithmetic mean A = (30+10)/2 = 20 km/h does not seem reasonable in this case. Since the backward journey takes three times as long as the forward, during most time of the entire trip the speed stays at 10 km/h, so we expect the average speed to be closer to 10 km/h.

Assuming that one-way distance is 1, then the average speed that takes travel time into consideration is 2/(1/30+1/10) = 15 km/h, and this is the harmonic mean, it is adjusted by the time spent during each journey.

### Harmonic Centrality

Harmonic centrality score of a node defined by this algorithm is the inverse of the harmonic mean of the shortest distances from the node to all other nodes. The formula is:

where x is the target node, y is any node in the graph other than x, k-1 is the number of y, d(x,y) is the shortest distance between x and y, d(x,y) = +∞ when x and y are not reachable to each other, in this case 1/d(x,y) = 0.

The harmonic centrality of node a in the above graph is (1 + 1/2 + 1/+∞ + 1/+∞) / 4 = 0.375, and the harmonic centrality of node d is (1/+∞ + 1/+∞ + 1/+∞ + 1) / 4 = 0.25.

Harmonic Centrality algorithm consumes considerable computing resources. For a graph with V nodes, it is recommended to perform (uniform) sampling when V > 10,000, and the suggested number of samples is the base-10 logarithm of the number of nodes (log(V)).

For each execution of the algorithm, sampling is performed only once, centrality score of each node is computed based on the shortest distance between the node and all sample nodes.

## Considerations

• The harmonic centrality score of isolated nodes is 0.

## Syntax

• Command: algo(harmonic_centrality)
• Parameters:
Name
Type
Spec
Default
Optional
Description
ids / uuids []_id / []_uuid / / Yes ID/UUID of the nodes to calculate, calculate for all nodes if not set
direction string in, out / Yes Direction of all edges in each shortest path, in for incoming direction, out for outgoing direction
sample_size int -1, -2, [1, V] -1 Yes Number of samples to compute centrality scores; -1 means to sample log(V) nodes; -2 means not to perform sampling; a number within [1, V] means to sample the set number of nodes; sample_size is only valid when ids (uuids) is ignored or when it specifies all nodes
limit int ≥-1 -1 Yes Number of results to return, -1 to return all results
order string asc, desc / Yes Sort nodes by the centrality score

## Examples

The example graph is as follows:

### File Writeback

Spec Content
filename _id,centrality
algo(harmonic_centrality).params().write({
file:{
filename: 'centrality'
}
})

Results: File centrality

LH,0
LG,0.142857
LF,0.142857
LE,0.357143
LD,0.357143
LC,0.428571
LB,0.428571
LA,0.571429

### Property Writeback

Spec Content Write to Data Type
property centrality Node property float
algo(harmonic_centrality).params().write({
db:{
property: 'hc'
}
})

Results: Centrality score for each node is written to a new property named hc

### Direct Return

Alias Ordinal Type
Description
Columns
0 []perNode Node and its centrality _uuid, centrality
algo(harmonic_centrality).params({
direction: 'out',
order: 'desc',
limit: 3
}) as hc
return hc

Results: hc

_uuid centrality
1 0.35714301
4 0.33333299
3 0.28571400

### Stream Return

Alias Ordinal Type
Description
Columns
0 []perNode Node and its centrality _uuid, centrality
algo(harmonic_centrality).params({
direction: 'in'
}).stream() as hc
where hc.centrality == 0
return hc

Results: hc

_uuid centrality
8 0.0000000
6 0.0000000
4 0.0000000