def perm_to_matrix(perms):
# perms[i] = j, P[i,j] = 1: means the i-th element before sorting is at the j-th position after sorting
P = np.eye(len(perms), dtype=int)[perms]
return P
def matrix_to_perm(P):
# perms[i] = j, P[i,j] = 1: means the i-th element before sorting is at the j-th position after sorting
perms = [np.where(row == 1)[0][0] for row in P]
return perms
perm_i_to_j = np.random.permutation(num_nodes)
P = perm_to_matrix(perm_i_to_j)
causal_matrix = P.T @ adj_matrix @ P
# Equivalent to
# perm_j_to_i = matrix_to_perm(P.T)
# causal_matrix = adj_matrix[perm_j_to_i, :][:, perm_j_to_i]
排列矩阵生成DAG
于 2025-03-29 18:31:24 首次发布