uzhdag / pathpy

An OpenSource python package for the analysis of time series data on networks using higher-order and multi-order graphical models.
http://www.pathpy.net
GNU Affero General Public License v3.0
49 stars 17 forks source link

Random walks on weighted networks #52

Open user1246638 opened 5 years ago

user1246638 commented 5 years ago

Example

import pathpy as pp
import numpy as np

nwk = pp.algorithms.random_graphs.erdoes_renyi_gnm(10,20)
for edge in nwk_w1.edges:
    nwk.edges[edge]["weight"] = np.random.random()
pp.algorithms.random_walk.generate_walk(nwk)

The problem is that the probabilities are not weighted, because weights are not normalized. The thing is that in an udirected network they cannot be normalized, for example, take graph A-B-C because A and C have only one link, weights have to be 1 on both AB and BC edges. But then weights around B are not normalized.

user1246638 commented 5 years ago

line 5 in my example code should be for edge in nwk.edges:

The workaround that I tried is to create a directed network, and then normalize for each node its outgoing edges. This also fails because of numeric issues: weights sum to 1.00000000000002 or 0.99999999998.