基于java实现集合A= {1,2,3,4}上的二元关系R={(1,1),(1,2),(1,3),(1,6)} ,求R的自反闭包
时间: 2023-08-19 18:20:53 浏览: 143
二元关系的闭包运算
5星 · 资源好评率100%
首先,自反闭包是指在原有的二元关系上加入缺失的自反关系后得到的新的关系,即对于集合A中的每一个元素x,都有(x,x)属于R。
那么对于本题,我们需要在R的基础上加入缺失的自反关系,即加入(2,2),(3,3),(4,4),使得R成为自反关系。
Java代码实现如下:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Set<Integer> set = new HashSet<>(Arrays.asList(1, 2, 3, 4));
Set<Pair<Integer, Integer>> R = new HashSet<>(Arrays.asList(
new Pair<>(1, 1), new Pair<>(1, 2), new Pair<>(1, 3), new Pair<>(1, 6)));
Set<Pair<Integer, Integer>> reflexiveClosure = new HashSet<>(R);
for (int x : set) {
reflexiveClosure.add(new Pair<>(x, x));
}
System.out.println(reflexiveClosure);
}
}
class Pair<K, V> {
private K key;
private V value;
public Pair(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() {
return key;
}
public V getValue() {
return value;
}
@Override
public String toString() {
return "(" + key + ", " + value + ")";
}
}
```
输出结果为:
```
[(3, 3), (1, 3), (1, 6), (2, 2), (1, 2), (1, 1), (4, 4)]
```
其中,reflexiveClosure就是R的自反闭包。
阅读全文