包含N个元素的集合有多少种不同的二元关系?如何计算?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了包含N个元素的集合有多少种不同的二元关系?如何计算?相关的知识,希望对你有一定的参考价值。
A上二元关系的定义是其笛卡尔A*A子集A*A中,有元素N²个,所以其子集有 2^(N²) 个,所以二元关系有 2^(N²) 个。
两元素按一定次序组成的二元组:<x,y>,x第一元素,y第二元素,次序不可改变。由于关系是在集合上定义的,是有序对的集合,同时关系的许多运算也都是集合的运算,所以在学习关系时要始终注意与集合的紧密联系,从集合的性质、特点去把握和认识关系。
扩展资料:
注意事项:
偏序存在A<B,A<C,则B与C之间无法比较大小的现象。而对应的全序则必须是形如A<B<C的形式。即全序要求每个元素之间都能比较大小,偏序不要求。
离散数学中,一个关系R的闭包,是加上最小数目的有序偶而形成的具有自反性,对称性或传递性的新的有序偶集,此集就是关系R的闭包。
参考资料来源:百度百科-二元关系
参考技术A A上二元关系的定义是:其笛卡尔A×A子集A×A中,有元素N²个,所以其子集有 2^(N²) 个
所以二元关系有 2^(N²) 个本回答被提问者采纳 参考技术B
N中取2的组合数:看图
参考技术C N中取2的组合数:等于:组合数 = N! / ([ 2! (N-2)! ]
如N=3, 组合数=3
N=10 组合数=10!/ 2 /8!=45
若团队里有十人,得处理45种二元关系!
leetcode62
使用排列组合计算公式来计算,注意使用long long型数据保证计算不会溢出。
class Solution { public: int M, N; int X = 0; //从根到叶子有多少个分支,就表示有多少种路径 //解空间是一个包含{0,1}的集合,总共有(m-1)+(n-1)个元素。 void BackTrack(int x, int y) { if (x == M &&y == N) { //到达叶子节点 X++; return; } if (x < M) { BackTrack(x + 1, y); } if (y < N) { BackTrack(x, y + 1); } } long long FA(long long a) //定义阶乘函数FA { long long x = 1;//定义变量b for (int i = 1; i <= a; i++)//计算阶乘 x *= i; return x;//返回值得到b=a! } long long FA(long long a, long long b) //定义阶乘函数FA { //long long b = 1;//定义变量b long long x = 1; for (int i = b; i <= a; i++)//计算阶乘 x *= i; return x;//返回值得到b=a! } int uniquePaths(int m, int n) { //M = m - 1; //N = n - 1; //BackTrack(0, 0); //return X; //单纯计算数量,可以不用递归,只需要计算选择数即可 /*double res = 1; for (int i = 1; i <= n - 1; i++) res *= ((double)(m + i - 1) / (double)i); return (int)round(res);*/ long long a = FA(m - 1 + n - 1, max(m, n)); long long b = FA(min(m, n) - 1); return (int)(a / b); } };
以上是关于包含N个元素的集合有多少种不同的二元关系?如何计算?的主要内容,如果未能解决你的问题,请参考以下文章