def get_heat_matrix(adj_matrix: np.ndarray, t: float=5.0) -> np.ndarray:
    num_nodes = adj_matrix.shape[0]
    A_tilde = (adj_matrix + np.eye(num_nodes))
    D_tilde = np.diag((1 / np.sqrt(A_tilde.sum(axis=1))))
    H = ((D_tilde @ A_tilde) @ D_tilde)
    return expm(((- t) * (np.eye(num_nodes) - H)))
def get_heat_matrix(adj_matrix: np.ndarray, t: float=5.0) -> np.ndarray:
    num_nodes = adj_matrix.shape[0]
    A_tilde = (adj_matrix + np.eye(num_nodes))
    D_tilde = np.diag((1 / np.sqrt(A_tilde.sum(axis=1))))
    H = ((D_tilde @ A_tilde) @ D_tilde)
    return expm(((- t) * (np.eye(num_nodes) - H)))