关系的性质(自反,反自反,对称,反对称,传递)

自反

若∀a∈A,必有<a,a>∈R,则称R是自反的,(关系矩阵对角线都为1)。

 例:A={1,2,3},R={<1,1,>,<2,2>,<3,3>

反自反

若∀a∈A,必有<a,a>∉R,则称R是反自反的 

例:A={1,2,3},R={<1,2,>,<1,3>,<2,1,>,<2,3>,<3,1>,<3,2>} 

对称

若<a,b>∈R,必有<b,a>∈R,则称R是对称的,(关系矩阵rij=rji,即为对称矩阵)

例: A={1,2,3},R={<1,2>,<2,1>,<1,1>,<2,2>} R={<1,3>,<3,1,>,<2,3>,<3,2>}

反对称

若<a,b>∈R,且a≠b,则<b,a>∉R,则称R是反对称的(关系矩阵rij和rji不能同时为1,即关于对角线对称的元素不能同时为1)

 例: A={1,2,3},R={<1,2>,<1,3>} R={<1,2>,<2,3>,<3,1>}

传递

若<a,b>∈R、<b,c>∈R,必有<a,c>∈R,则称R是传递的

例: A={1,2,3},R={<1,2>,<2,3>,<1,3>} 

试题 

给定A:{1,2,3,4},考虑A上的关系R,若R={<1,3>,<1,4>,<2,3>,<2,4>,<3,4>,<4,4>},则R是( )

A:自反的

B:对称的

C:传递的

D:反自反的

【答案】C

设集合A={a,b,c,d},现有A上的二元关系R={<a,b>,<b,c>,<c,b>,<b,a>},则A是( )

A:自反的

B:对称的

C:反对称的

D:传递的 

【答案】B

下列关于整数集合上的整除关系描述不正确的是( )

A:自反的

B:对称的

C:反对称的

D:传递的 

【答案】B,自反的、反对称的(2能整除4,4不能整除2)、传递的(2能整除4,4能整除8,2一定能整除8)

设R={<1,3>,<1,4>,<2,3>,<3,1>,<3,4>,<4,2>}是A={1,2,3,4}上的关系,说明R是否具有自反、反自反、对称、反对称性质。 

【答案】<1,1>,<2,2,>,<3,3>,<4,4>都∉R,所以R是反自反的,不是自反的

<1,4>∈R,<4,1>∉R,所以R不是对称的

<1,3>∈R,<3,1>∈R,所以R不是反对称的

  • 10
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是 C++ 代码实现判定任意二元关系自反性、对称性、传递性、反自反性和反对性: ```cpp #include <iostream> #include <vector> using namespace std; // 判断关系矩阵是否为自反矩阵 bool isReflexive(vector<vector<int>>& matrix) { int n = matrix.size(); for (int i = 0; i < n; i++) { if (matrix[i][i] == 0) { return false; } } return true; } // 判断关系矩阵是否为对称矩阵 bool isSymmetric(vector<vector<int>>& matrix) { int n = matrix.size(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (matrix[i][j] != matrix[j][i]) { return false; } } } return true; } // 判断关系矩阵是否为传递矩阵 bool isTransitive(vector<vector<int>>& matrix) { int n = matrix.size(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (matrix[i][j] == 1) { for (int k = 0; k < n; k++) { if (matrix[j][k] == 1 && matrix[i][k] != 1) { return false; } } } } } return true; } // 判断关系矩阵是否为反自反矩阵 bool isAntiReflexive(vector<vector<int>>& matrix) { int n = matrix.size(); for (int i = 0; i < n; i++) { if (matrix[i][i] == 1) { return false; } } return true; } // 判断关系矩阵是否为反对矩阵 bool isAntiSymmetric(vector<vector<int>>& matrix) { int n = matrix.size(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (matrix[i][j] == 1 && matrix[j][i] == 1 && i != j) { return false; } } } return true; } int main() { int n; // 矩阵维数 cin >> n; vector<vector<int>> matrix(n, vector<int>(n)); // 输入关系矩阵 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> matrix[i][j]; } } // 判断各种性质 if (isReflexive(matrix)) { cout << "是自反矩阵" << endl; } else { cout << "不是自反矩阵" << endl; } if (isSymmetric(matrix)) { cout << "是对称矩阵" << endl; } else { cout << "不是对称矩阵" << endl; } if (isTransitive(matrix)) { cout << "是传递矩阵" << endl; } else { cout << "不是传递矩阵" << endl; } if (isAntiReflexive(matrix)) { cout << "是反自反矩阵" << endl; } else { cout << "不是反自反矩阵" << endl; } if (isAntiSymmetric(matrix)) { cout << "是反对矩阵" << endl; } else { cout << "不是反对矩阵" << endl; } return 0; } ``` 其中,关系矩阵的输入方式为:先输入矩阵维数,再输入 $n^2$ 个元素构成的矩阵。如下所示: ``` 4 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 ``` 以上代码可以判断任意 $n$ 维关系矩阵的自反性、对称性、传递性、反自反性和反对性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值