已知R={<1,5>,<2,2>,<2,3>,<2,5>,<3,3>,<3,1>,<4,5>},求s(R),r(R),并用warshell算法求t(R)
时间: 2023-08-21 17:06:30 浏览: 54
根据关系R的定义,s(R)表示R中所有元素的第一个分量的集合,r(R)表示R中所有元素的第二个分量的集合。因此,可以得到:
s(R) = {1, 2, 3, 4}
r(R) = {1, 2, 3, 5}
为了求出t(R),可以使用Warshall算法。具体步骤如下:
1. 初始化一个n x n的矩阵T,其中n为关系R中元素的最大分量值加1,即T为4 x 4的矩阵。对于R中的每个元素<i,j>,将T[i][j]设为1,其他位置设为0。
2. 对于矩阵T的每个元素T[i][j],以k作为中间点,如果T[i][j]为1或者T[i][k]为1且T[k][j]为1,则将T[i][j]设为1。
3. 重复步骤2直到矩阵T不再变化为止。
根据上述步骤,可以得到矩阵T如下:
```
0 0 0 0
1 1 1 1
0 1 1 0
0 0 0 1
```
因此,可以得到关系R的传递闭包为:
t(R) = {<1,5>,<2,2>,<2,3>,<2,5>,<3,1>,<3,3>,<4,5>,<2,1>,<3,2>,<3,5>,<4,2>,<4,3>,<4,1>}
注意,传递闭包不包含原关系R中的元素。
相关问题
已知A={1,2,3},A上的二元关 R={<1,1>, <1,3>, <2,1>, <3,2>},则r(R)=什么,s(R)=什么,t(R)等于什么
在集合A中,有3个元素,因此A上的二元关系R最多有9个序对,根据题目给出的R,我们可以列出如下的关系矩阵:
```
| 1 2 3
---|------
1 | 1 0 1
2 | 1 0 0
3 | 0 1 0
```
其中,矩阵中的1表示对应的元素之间存在关系,0表示不存在关系。
根据关系矩阵,我们可以计算出R的各个性质:
- r(R):R是自反的,因为所有元素都与自己存在关系,所以r(R)=A={1,2,3};
- s(R):R不是对称的,因为(3,2)∈R而(2,3)∉R,所以s(R)={2,3};
- t(R):R不是传递的,因为虽然(1,3)∈R且(3,2)∈R,但(1,2)∉R,所以t(R)={1,3}。
1.单选题:假设已导入正则表达式模块 re,已知: s = '<html><head>This is head.</head><body>This is body.</body></html>' 和 pattern = r'<html><head>(.+)</head><body>(.+)</body></html>' 那么表达式 re.findall(pattern, s) 的值为( ) A.[('This is head.', 'This is body.')] B.['This is head.', 'This is body.'] C.('This is head.', 'This is body.') D.['This is head.']
单选题答案:A. [('This is head.', 'This is body.')]
re.findall(pattern, s) 的作用是在字符串 s 中查找所有匹配正则表达式 pattern 的子串,并返回一个列表。在这个例子中,pattern 匹配整个字符串 s,因为字符串 s 恰好是一个符合 pattern 正则表达式的字符串。正则表达式 pattern 包含两个用圆括号括起来的子表达式 (.+),它们分别匹配 head 和 body 标签中的内容。由于在 pattern 中使用了两个子表达式,因此 re.findall(pattern, s) 返回一个包含两个元素的列表。每个元素都是一个元组,包含两个子串,分别是 head 标签和 body 标签中的内容。因此,表达式 re.findall(pattern, s) 的值为 [('This is head.', 'This is body.')]。