Skip to content

tucoopy.power.johnston

Johnston power index.

The Johnston index refines Banzhaf criticality by splitting each winning coalition's contribution equally among its critical players.

johnston_index

johnston_index(game)

Compute the Johnston power index for a complete simple game.

In a simple game (\(v(S) \in \{0,1\}\)), a player \(i\) is critical in a winning coalition \(S\) if removing \(i\) makes the coalition losing:

\[ C(S) = \{ i \in S \mid v(S) = 1 \text{ and } v(S \setminus \{i\}) = 0 \}. \]

The Johnston index assigns to each critical player an equal share of the coalition's criticality. That is, each winning coalition \(S\) contributes:

\[ \frac{1}{|C(S)|} \]

to each \(i \in C(S)\).

The resulting vector is then normalized to sum to 1.

Parameters:

Name Type Description Default
game Game

A complete simple game.

required

Returns:

Type Description
list[float]

Johnston index for each player (length n_players), normalized to sum to 1.

Raises:

Type Description
InvalidGameError

If the game is not a complete simple game (checked by :func:require_complete_simple_game).

NotSupportedError

If n_players exceeds the supported limit for completeness checks.

Notes
  • The Johnston index refines the idea of criticality used in the (unnormalized) Banzhaf index.
  • In the Banzhaf index, each critical occurrence contributes equally (1). In the Johnston index, the contribution of a coalition is divided equally among its critical players.
  • This index captures how often a player is decisive and how many other players share that decisiveness.

Examples:

>>> ji = johnston_index(g)
>>> sum(ji)
1.0