(num_node, edge, max_hop=1)
| 129 | |
| 130 | |
| 131 | def get_hop_distance(num_node, edge, max_hop=1): |
| 132 | A = np.zeros((num_node, num_node)) |
| 133 | for i, j in edge: |
| 134 | A[j, i] = 1 |
| 135 | A[i, j] = 1 |
| 136 | |
| 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 | |
| 145 | def normalize_digraph(A): |