精华内容
下载资源
问答
  • 用矩阵求自反闭包。容易理解,轻松学习,交流经验。
  • 离散数学-关系,集合,求自反闭包,对称闭包,传递闭包 离散数学-关系,集合,求自反闭包,对称闭包,传递闭包 离散数学-关系,集合,求自反闭包,对称闭包,传递闭包 离散数学-关系,集合,求自反闭包,对称闭包...
  • 一、关系闭包 、 二、自反闭包 、 三、对称闭包 、 四、传递闭包 、





    一、关系闭包



    包含给定的元素 , 并且 具有指定性质最小的 集合 , 称为关系的闭包 ; 这个指定的性质就是关系 R R R

    自反闭包 r ( R ) : 包含 R R R 关系 , 向 R R R 关系中 , 添加有序对 , 变成 自反 的 最小的二元关系

    对称闭包 s ( R ) : 包含 R R R 关系 , 向 R R R 关系中 , 添加有序对 , 变成 对称 的 最小的二元关系

    传递闭包 t ( R ) : 包含 R R R 关系 , 向 R R R 关系中 , 添加有序对 , 变成传递 的 最小的二元关系


    定义中有三个重要要素 :

    • 包含给定元素
    • 具有指定性质
    • 最小的二元关系




    二、自反闭包



    自反闭包 r ( R ) : 包含 R R R 关系 , 向 R R R 关系中 , 添加有序对 , 变成 自反 的 最小的二元关系

    R ⊆ r ( R ) R \subseteq r(R) Rr(R)

    r ( R ) r(R) r(R) 是自反的

    ∀ S ( ( R ⊆ S ∧ S 自 反 ) → r ( R ) ⊆ S ) \forall S ( ( R \subseteq S\land S 自反 ) \to r(R) \subseteq S) S((RSS)r(R)S)


    关系 R R R 的关系图 G ( R ) G(R) G(R) :

    在这里插入图片描述

    R R R 的自反闭包 G ( r ( R ) ) G(r ( R )) G(r(R)) 关系图 : R R R 的基础上 , 添加有些有序对 , 使 r ( R ) r(R) r(R) 变成 自反 的 最小的二元关系 , 自反的条件是所有的顶点都有环 , 这里为四个顶点都添加环 ;

    在这里插入图片描述





    三、对称闭包



    自反闭包 r ( R ) : 包含 R R R 关系 , 向 R R R 关系中 , 添加有序对 , 变成 对称 的 最小的二元关系

    R ⊆ s ( R ) R \subseteq s(R) Rs(R)

    s ( R ) s(R) s(R) 是对称的

    ∀ S ( ( R ⊆ S ∧ S 对 称 ) → r ( R ) ⊆ S ) \forall S ( ( R \subseteq S\land S 对称 ) \to r(R) \subseteq S) S((RSS)r(R)S)


    关系 R R R 的关系图 G ( R ) G(R) G(R) :

    在这里插入图片描述

    R R R 的对称闭包 G ( s ( R ) ) G(s ( R )) G(s(R)) 关系图 : R R R 的基础上 , 添加有些有序对 , 使 s ( R ) s(R) s(R) 变成 对称 的 最小的二元关系 , 对称的条件是 任意两个顶点之间有 0 / 2 0/2 0/2 条有向边 , 0 0 0 条边的不管 , 有 1 1 1 条边的在添加一条反向有向边 ;

    在这里插入图片描述





    四、传递闭包



    自反闭包 r ( R ) : 包含 R R R 关系 , 向 R R R 关系中 , 添加有序对 , 变成 传递 的 最小的二元关系

    R ⊆ t ( R ) R \subseteq t(R) Rt(R)

    t ( R ) t(R) t(R) 是对称的

    ∀ S ( ( R ⊆ S ∧ S 传 递 ) → r ( R ) ⊆ S ) \forall S ( ( R \subseteq S\land S 传递 ) \to r(R) \subseteq S) S((RSS)r(R)S)


    关系 R R R 的关系图 G ( R ) G(R) G(R) :

    在这里插入图片描述

    R R R 的对称闭包 G ( t ( R ) ) G(t ( R )) G(t(R)) 关系图 : R R R 的基础上 , 添加有些有序对 , 使 t ( R ) t(R) t(R) 变成 传递 的 最小的二元关系 , 传递的条件是 ① 前提 a → b , b → c a\to b, b \to c ab,bc 成立 , a → c a \to c ac 存在 , 或 ② 前提不成立 , 前提不成立的情况下不管默认就是传递的 , 如果前提成立 , 则必修添加对应的第三条边 ;

    在这里插入图片描述

    展开全文
  • 离散题目16——自反闭包

    千次阅读 2017-04-04 20:50:53
    1二维矩阵+自反闭包定义 什么是自反闭包 —— 百度百科sdut题目链接离散题目16 Time Limit: 1000MS Memory Limit: 65536KBProblem Description 给出集合A,以及集合A上的关系R,求关系R的自反闭包。Input 首先输入...

    think:
    1二维矩阵+自反闭包定义
    什么是自反闭包 —— 百度百科

    sdut题目链接

    离散题目16
    Time Limit: 1000MS Memory Limit: 65536KB

    Problem Description
    给出集合A,以及集合A上的关系R,求关系R的自反闭包。

    Input
    首先输入t,表示有t组数据.
    每组数据第一行输入n,表示A中有n个数据,接下来一行输入n个数,(4 <= n < 100, 0 < Ai < 100)
    第二行输入m,代表R中有m对关系(0 < m < 100)
    接下来m行每行输入x,y代表< x,y >这对关系.(从小到大给出关系,如果x相同,按y排列)

    Output
    输出题目要求的关系集合,每行输出一对关系,输出顺序按照中的x大小非递减排列,假如x相等按照y大小非递减排列.
    每组数据末尾额外输出一行空行。

    Example Input
    1
    5
    1 2 3 4 5
    6
    1 1
    1 2
    2 3
    3 3
    4 5
    5 1

    Example Output
    1 1
    1 2
    2 2
    2 3
    3 3
    4 4
    4 5
    5 1
    5 5

    Hint

    Author
    Johsnows

    以下为Presentation Error代码——每组数据输出后应再输出一行空行

    #include <bits/stdc++.h>
    
    using namespace std;
    
    int main()
    {
        int T, n, m, t, x, y, ans[104][104];
        scanf("%d", &T);
        while(T--)
        {
            set<int> s;
            memset(ans, 0, sizeof(ans));
            scanf("%d", &n);
            while(n--)
            {
                scanf("%d", &t);
                s.insert(t);
            }
            scanf("%d", &m);
            while(m--)
            {
                scanf("%d %d", &x, &y);
                if(s.count(x) && s.count(y))
                {
                    ans[x][y] = 1;
                    ans[x][x] = 1;
                    ans[y][y] = 1;
                }
            }
            for(int i = 1; i <= 100; i++)
            {
                for(int j = 1; j <= 100; j++)
                {
                    if(ans[i][j] == 1)
                        printf("%d %d\n", i, j);
                }
            }
        }
        return 0;
    }
    
    
    /***************************************************
    User name: 
    Result: Presentation Error
    Take time: 12ms
    Take Memory: 196KB
    Submit time: 2017-04-04 20:38:25
    ****************************************************/

    以下为Accepted代码

    #include <bits/stdc++.h>
    
    using namespace std;
    
    int main()
    {
        int T, n, m, t, x, y, ans[104][104];
        scanf("%d", &T);
        while(T--)
        {
            set<int> s;
            memset(ans, 0, sizeof(ans));
            scanf("%d", &n);
            while(n--)
            {
                scanf("%d", &t);
                s.insert(t);
            }
            scanf("%d", &m);
            while(m--)
            {
                scanf("%d %d", &x, &y);
                if(s.count(x) && s.count(y))
                {
                    ans[x][y] = 1;
                    ans[x][x] = 1;
                    ans[y][y] = 1;
                }
            }
            for(int i = 1; i <= 100; i++)
            {
                for(int j = 1; j <= 100; j++)
                {
                    if(ans[i][j] == 1)
                        printf("%d %d\n", i, j);
                }
            }
            printf("\n");
        }
        return 0;
    }
    
    
    /***************************************************
    User name: 
    Result: Accepted
    Take time: 12ms
    Take Memory: 196KB
    Submit time: 2017-04-04 20:39:33
    ****************************************************/
    展开全文
  • 若集合A={ 1, 2, 3 },A上的关系R={ (1,2) },请问R的自反闭包的包含 (3 , 3) 吗?
  • 自反闭包 传递闭包Let’s take the following scenario: You have a ParentView with two child views, ChildView1 and ChildView2. On ChildView1, you have a button that should trigger an action in ChildView2...

    自反闭包 传递闭包

    Let’s take the following scenario: You have a ParentView with two child views, ChildView1 and ChildView2. On ChildView1, you have a button that should trigger an action in ChildView2.

    让我们采取以下情形:您有一个带两个子视图的ParentViewChildView1ChildView2 。 在ChildView1 ,您具有一个按钮,该按钮应触发ChildView2的操作。

    Now on that button tap, we want to change the text on that text field to something more appropriate. Let’s start by defining a typealias for our closure. If you don’t know what a closure is, it’s basically a method. You can read more about closures in the documentation.

    现在点击该按钮,我们想将该文本字段上的文本更改为更合适的文本。 让我们开始为闭包定义一个类型别名。 如果您不知道闭包是什么,那么它基本上就是一种方法。 您可以在文档中阅读有关闭包的更多信息。

    Let’s add the following typealias above our ParentView declaration:

    让我们在ParentView声明上方添加以下类型ParentView

    typealias OnClickHandler = (() -> Void)

    So it becomes:

    这样就变成了:

    typealias OnClickHandler = (() -> Void)
    struct ParentView: View {
    ...
    }

    And initialise it as an @State property in our ParentView:

    并将其初始化为我们的ParentView@State属性:

    struct ParentView: View {
    @State var onClick: OnClickHandler = { }
    ...}

    The idea here is that this onClick defined in the ParentView is our single source of truth. We don’t want another closure initialized somewhere along the call stack. We want this one passed to both our ChildViews.

    这里的想法是,这onClick中定义的ParentView是我们的单一数据源。 我们不希望在调用堆栈的某处初始化另一个闭包。 我们希望将此传递给两个ChildViews。

    In ChildView2, where our button is, we add it as an @Binding, as it’s already initialized in our ParentView and ChildView2 at this point only manipulates it. Then we add it as the action to our button:

    ChildView2 ,我们的按钮位于其中,我们将其添加为@Binding ,因为它已经在ParentViewChildView2进行了初始化,此时只能对其进行操作。 然后,将其作为操作添加到按钮中:

    You’ll notice that we deleted the old closure in which we would print our message and just passed ours as a parameter. This is not mandatory, but it’s shorter and cleaner.

    您会注意到,我们删除了旧的闭包,在该闭包中将打印消息,并将其作为参数传递给我们。 这不是强制性的,但更短,更干净。

    At this point, your ParentView is notifying you that you’re missing your onClick parameter when you’re initializing ChildView2, so let’s just add that:

    此时,您的ParentView会通知您在初始化ChildView2时缺少onClick参数,所以我们只需添加一下:

    You’ll notice we passed $onClick to ChildView2, as we defined our property as an @Binding, so we use $to pass the binding and not a value.

    您会注意到我们通过了$onClick ChildView2 ,因为我们将属性定义为@Binding ,所以我们使用$来传递绑定而不是值。

    We’re now going to do the same thing to our ChildView1 — add a binding property — but this time we’re also going to write the function that gets called when the button is tapped, and we’re going to assign that function to our passed closure:

    现在,我们将对ChildView1执行相同的ChildView1 -添加一个绑定属性-但这次我们还将编写在点击按钮时调用的函数,并将该函数分配给我们通过的关闭:

    The magic here is calling onAppear on the Text element. This means that when that field appears (think of viewDidAppear in UIKit), we are going to run the following code block. In that code block, we assign a function to our onClick closure that modifies the value of our string.

    这里的魔法呼唤onAppear 在Text元素上。 这意味着当该字段出现时(考虑UIKit中的viewDidAppear ),我们将运行以下代码块。 在该代码块中,我们为onClick闭包分配了一个函数,该函数可修改字符串的值。

    If you want to be fancy or your method is larger, you can even extract the whole code block into a different method and assign that to onClick:

    如果您想花哨或您的方法更大,您甚至可以将整个代码块提取到另一个方法中,并将其分配给onClick

    Now, through the magic of SwiftUI and Combine, you managed to link two views that have no knowledge of each other. Congratulations!

    现在,借助SwiftUI和Combine的魔力,您成功地链接了彼此不了解的两个视图。 恭喜你!

    奖金 (Bonus)

    “What if I want to do this with a view and UIViewRepresentable where I don’t have onAppear?”

    “如果我想有一个观点和UIViewRepresentable在那里我没有做到这一点onAppear ?”

    That’s a great question, Alex!

    这是一个很好的问题,Alex!

    In this case, we will use the function:

    在这种情况下,我们将使用以下函数:

    You can see that I’ve sent it to a background thread. This is because the compiler will notify us at runtime that “Modifying state during view update, this will cause undefined behavior.”

    您可以看到我已将其发送到后台线程。 这是因为编译器将在运行时通知我们“在视图更新期间修改状态,这将导致未定义的行为。”

    This is Apple’s way of saying that we’re updating a state while the view is being redrawn.

    这是Apple的一种说法,即在重绘视图时我们正在更新状态。

    And that’s it. The full code is available on GitHub. Happy coding!

    就是这样。 完整代码可在GitHub上获得 。 编码愉快!

    翻译自: https://medium.com/better-programming/passing-closures-between-swiftui-sibling-views-and-uiviewrepresentables-1f81a6cf5be6

    自反闭包 传递闭包

    展开全文
  • 目录想说的话自反闭包对称闭包传递闭包练习题 想说的话 完全不废话,谁都能懂 φ(>ω<*) 只关注如何求关系闭包,不讲原理,因为懒(不是) 方便起见,就以下图为例。关系为 R={⟨1,1⟩,⟨1,2⟩,⟨3,1⟩}R=\...

    想说的话

    完全不废话,谁都能懂 φ(>ω<*)

    只关注如何求关系闭包,不讲原理,因为懒(不是)

    方便起见,就以下图为例。关系为
    R = { ⟨ 1 , 1 ⟩ , ⟨ 1 , 2 ⟩ , ⟨ 3 , 1 ⟩ } R=\lbrace\langle1,1\rangle,\langle1,2\rangle,\langle3,1\rangle\rbrace R={1,1,1,2,3,1}

    在这里插入图片描述

    自反闭包

    将没有环的结点加上环。

    例题中结点 1 1 1有环,结点 2 , 3 2,3 2,3无环,因此将结点 2 , 3 2,3 2,3加上环即可。
    在这里插入图片描述

    对称闭包

    将只有一条边相连的两个结点之间加上一条相反的边。

    结点 1 , 2 1,2 1,2之间和结点 1 , 3 1,3 1,3之间只有一条边相连,因此各加上一条相反的边即可。

    在这里插入图片描述

    传递闭包

    就像抄近道一样,将通过两条及以上的边相连的结点连起来。

    结点 2 , 3 2,3 2,3 3 → 1 → 2 3\to1\to2 312的路径相连,因此只要加上路径 3 → 2 3\to2 32 即可。
    在这里插入图片描述
    注意一种特殊情况:若存在 1 → 2 → 1 1\to2\to1 121的情况,需要连接 1 → 1 1\to1 11 ,即将结点 1 1 1连环。

    练习题

    分别求出以下三个关系中的自反闭包、对称闭包和传递闭包。

    关系一:
    在这里插入图片描述

    设关系二: R = { ⟨ a , a ⟩ , ⟨ b , b ⟩ , ⟨ b , c ⟩ , ⟨ c , b ⟩ } R=\lbrace\langle a,a\rangle,\langle b,b\rangle,\langle b,c\rangle,\langle c,b\rangle\rbrace R={a,a,b,b,b,c,c,b}

    关系三:
    在这里插入图片描述

    答案:

    关系一:
    r ( R ) = { ⟨ 1 , 1 ⟩ , ⟨ 2 , 2 ⟩ , ⟨ 3 , 3 ⟩ , ⟨ 1 , 2 ⟩ , ⟨ 2 , 1 ⟩ , ⟨ 2 , 3 ⟩ , ⟨ 3 , 1 ⟩ } r(R)=\lbrace\langle 1,1\rangle,\langle 2,2\rangle,\langle 3,3\rangle,\langle 1,2\rangle,\langle 2,1\rangle,\langle 2,3\rangle,\langle 3,1\rangle\rbrace r(R)={1,1,2,2,3,3,1,2,2,1,2,3,3,1}
    s ( R ) = { ⟨ 1 , 1 ⟩ , ⟨ 2 , 2 ⟩ , ⟨ 1 , 2 ⟩ , ⟨ 2 , 1 ⟩ , ⟨ 2 , 3 ⟩ , ⟨ 3 , 2 ⟩ , ⟨ 1 , 3 ⟩ , ⟨ 3 , 1 ⟩ } s(R)=\lbrace\langle 1,1\rangle,\langle 2,2\rangle,\langle 1,2\rangle,\langle 2,1\rangle,\langle 2,3\rangle,\langle 3,2\rangle,\langle 1,3\rangle,\langle 3,1\rangle\rbrace s(R)={1,1,2,2,1,2,2,1,2,3,3,2,1,3,3,1}
    t ( R ) = { ⟨ 1 , 1 ⟩ , ⟨ 2 , 2 ⟩ , ⟨ 1 , 2 ⟩ , ⟨ 2 , 1 ⟩ , ⟨ 2 , 3 ⟩ , ⟨ 3 , 2 ⟩ , ⟨ 1 , 3 ⟩ , ⟨ 3 , 1 ⟩ } t(R)=\lbrace\langle 1,1\rangle,\langle 2,2\rangle,\langle 1,2\rangle,\langle 2,1\rangle,\langle 2,3\rangle,\langle 3,2\rangle,\langle 1,3\rangle,\langle 3,1\rangle\rbrace t(R)={1,1,2,2,1,2,2,1,2,3,3,2,1,3,3,1}
    关系二:
    r ( R ) = { ⟨ a , a ⟩ , ⟨ b , b ⟩ , ⟨ b , c ⟩ , ⟨ c , b ⟩ , ⟨ c , c ⟩ } r(R)=\lbrace\langle a,a\rangle,\langle b,b\rangle,\langle b,c\rangle,\langle c,b\rangle,\langle c,c\rangle\rbrace r(R)={a,a,b,b,b,c,c,b,c,c}
    s ( R ) = { ⟨ a , a ⟩ , ⟨ b , b ⟩ , ⟨ b , c ⟩ , ⟨ c , b ⟩ } s(R)=\lbrace\langle a,a\rangle,\langle b,b\rangle,\langle b,c\rangle,\langle c,b\rangle\rbrace s(R)={a,a,b,b,b,c,c,b}
    t ( R ) = { ⟨ a , a ⟩ , ⟨ b , b ⟩ , ⟨ b , c ⟩ , ⟨ c , b ⟩ } t(R)=\lbrace\langle a,a\rangle,\langle b,b\rangle,\langle b,c\rangle,\langle c,b\rangle\rbrace t(R)={a,a,b,b,b,c,c,b}
    关系三:
    r ( R ) = { ⟨ a , a ⟩ , ⟨ b , b ⟩ , ⟨ c , c ⟩ , ⟨ a , b ⟩ } r(R)=\lbrace\langle a,a\rangle,\langle b,b\rangle,\langle c,c\rangle,\langle a,b\rangle\rbrace r(R)={a,a,b,b,c,c,a,b}
    s ( R ) = { ⟨ a , a ⟩ , ⟨ a , b ⟩ , ⟨ b , a ⟩ } s(R)=\lbrace\langle a,a\rangle,\langle a,b\rangle,\langle b,a\rangle\rbrace s(R)={a,a,a,b,b,a}
    t ( R ) = { ⟨ a , a ⟩ , ⟨ a , b ⟩ } t(R)=\lbrace\langle a,a\rangle,\langle a,b\rangle\rbrace t(R)={a,a,a,b}

    有任何错误欢迎指出(〃‘▽’〃)

    展开全文
  • 离散数学编程之用C++编写的求自反闭包程序,注意一下输入格式。
  • 离散题目16 ...Problem Description给出集合A,以及集合A上的关系R,求关系R的自反闭包。 Input首先输入t,表示有t组数据. 每组数据第一行输入n,表示A中有n个数据,接下来一行输入n个数,(4 , 0 ) 第二
  • 离散题目16 求自反闭包

    千次阅读 2017-05-24 16:20:52
    Problem Description给出集合A,以及集合A上的关系R,求关系R的自反闭包。Input首先输入t,表示有t组数据. 每组数据第一行输入n,表示A中有n个数据,接下来一行输入n个数,(4 , 0 )第二行输入m,代表R中有m对关系(0 )接下来...
  • 离散题目16--求自反闭包

    千次阅读 2017-05-24 08:32:11
    离散题目16 Time Limit: 1000MS ...给出集合A,以及集合A上的关系R,求关系R的自反闭包。 Input 首先输入t,表示有t组数据. 每组数据第一行输入n,表示A中有n个数据,接下来一行输入n个数,(4 第二行输
  • 文章目录介绍代码用户输入反关系对称关系传递关系自反闭包函数及其类型主函数打包好的程序以及源码 介绍 我们现在有一个需求,具体需求内容如下 (1) 判断关系R是否为反关系。键盘输入R的关系序偶,程序输出...
  • 我用面向对象写的 自己改一下#includetemplatevoid Warshall( T *a , int m , int n ){int i = 0,j = 0;for( i = 0 ; i < n ; i++ ){for( j = 0 ; j < m ; j++ ){if( a[j][i] == 1 ){int k = 0;...
  • 学会用C语音编写自反闭包,对称闭包,传递闭包,加深对关系运算的理解。
  • 我们把关系R的闭包称作R‘,反,(对称)(传递)闭包就是能满足该反(对称或传递)性质的关系R的最小扩充。...r(R):自反闭包 r:reflexive  s(R):对称闭包 s:symmetry t(R):传递闭包 t:transfer ...
  • C语言实现三种闭包算法,能够实现传递,自反,对称闭包
  • 反对称传递闭包

    2021-05-20 16:22:41
    自反闭包还是一个关系,这个关系包括了上面两个关系,而且还有添加一些关系,即每个集合元素都和自己有关系,即: 对称闭包,同样,除了原始的两个关系,还包括这两个关系的对称关系,即如果(a,b)
  • 集合论—关系的自反、对称和传递闭包

    万次阅读 多人点赞 2019-06-21 21:52:33
    关系的自反、对称和传递闭包定义 设R\text{R}R是非空集合AAA上的关系,R\text{R}R的自反(对称、传递)闭包是AAA上的关系R′\text{R}&#x27;R′,且R′\text{R}&#x27;R′满足以下条件: R′\text{R}&#...
  • 离散数学 闭包运算 传递闭包 自反闭包 对称闭包 warshell算法 普通算法 有界面 java编程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,622
精华内容 7,848
关键字:

自反闭包