给定一个包含10个元素的集合A,如何使用嵌套的if语句找到等价关系的数量?
首先,我们可以考虑设置12,3,...,10用于我们的目的。它也会这样做。
我们可以创建一个大小为10×10的数组,以便我们获得1,2,3,...,10的所有2元素组合。注意,方阵的对角线包含{a,a}对于{1,2,3 ...,10}中的所有a。因此,2对功率:对角线的上半部分+对角线给出对称关系的计数。
如何在编程中使用if else条件来计算等价关系的总数?我试图实际使用上半部分或下半部分之一。这会减少程序的时间复杂度,但由于我还没有完成,我不能再评论了。
最坏情况算法可能是制作2D数组并使用if-else检查是否满足对称和传递。但那将是使用O(n²)。我正在努力获得更好的算法。
答案 0 :(得分:2)
集合上的等价关系和集合的分区之间存在双射。计算等价关系的数量与计算分区数量相同。包含n
元素的集合的分区数为Bell Number B_n。
有一个递归关系公式,不需要嵌套if/then/else
。请更新您的问题,以明确您正在尝试实现的目标以及您对解决方案的限制。