Safemotion Lib
Loading...
Searching...
No Matches
Classes | Functions
graph Namespace Reference

Classes

class  Graph
 

Functions

 get_hop_distance (num_node, edge, max_hop=1)
 
 normalize_digraph (A)
 
 normalize_undigraph (A)
 

Function Documentation

◆ get_hop_distance()

graph.get_hop_distance ( num_node,
edge,
max_hop = 1 )

Definition at line 130 of file graph.py.

130def get_hop_distance(num_node, edge, max_hop=1):
131 A = np.zeros((num_node, num_node))
132 for i, j in edge:
133 A[j, i] = 1
134 A[i, j] = 1
135
136 # compute hop steps
137 hop_dis = np.zeros((num_node, num_node)) + np.inf
138 transfer_mat = [np.linalg.matrix_power(A, d) for d in range(max_hop + 1)]
139 arrive_mat = (np.stack(transfer_mat) > 0)
140 for d in range(max_hop, -1, -1):
141 hop_dis[arrive_mat[d]] = d
142 return hop_dis
143
144

◆ normalize_digraph()

graph.normalize_digraph ( A)

Definition at line 145 of file graph.py.

145def normalize_digraph(A):
146 Dl = np.sum(A, 0)
147 num_node = A.shape[0]
148 Dn = np.zeros((num_node, num_node))
149 for i in range(num_node):
150 if Dl[i] > 0:
151 Dn[i, i] = Dl[i]**(-1)
152 AD = np.dot(A, Dn)
153 return AD
154
155

◆ normalize_undigraph()

graph.normalize_undigraph ( A)

Definition at line 156 of file graph.py.

156def normalize_undigraph(A):
157 Dl = np.sum(A, 0)
158 num_node = A.shape[0]
159 Dn = np.zeros((num_node, num_node))
160 for i in range(num_node):
161 if Dl[i] > 0:
162 Dn[i, i] = Dl[i]**(-0.5)
163 DAD = np.dot(np.dot(Dn, A), Dn)
164 return DAD