- numpy - networkx - matplotlib import numpy as np import networkx as nx

Message passing with linear algebra: a demo.

Imagine we have a chain graph that looks like this:

    O --> 1 --> 2 --> 3

In NetworkX this graph would look like the following:

    G = nx.Graph()
    nodes = list(range(4))
    G.add_edges_from(zip(nodes[0:-1], nodes[1:]))
    print(G.edges())

This chain graph has the following adjacency matrix:

    adj_mat = np.eye(4, k=1)
    print(f"A: {adj_mat}")

And imagine that we have a message that lives on the graph:

    message = np.array([1.0, 0.0, 0.0, 0.0])
    print(f"message: {message}")

Try out message passing below by doing any one of the following steps:

    message @ adj_mat

    message @ adj_mat @ adj_mat

    message @ adj_mat @ adj_mat @ adj_mat