关于算法:矩阵最小广播数

def get_num(arr):

    def f(related_nodes):
        g = set()
        remain = []
        for index_g in related_nodes:
            if index_g[0] == index_g[1]:
                continue
            cur_set =set(index_g)
            if not g:
                g = cur_set
            elif g and g&cur_set:
                g = g|cur_set
            else:
                remain.append(index_g)
        return g, remain

    groups, remain_nodes = [], set(range(len(arr)))
    remain = np.argwhere(arr==1).tolist()
    while remain:
        g, remain = f(remain)
        groups.append(g)
        remain_nodes -= g
#     print(groups, remain_nodes)
    return len(groups) + len(remain_nodes)

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理