计算所有二元关系

2021-02-19 20:22

集合\$X\$上的二元关系只是一个子集\$S\子集q X\乘以X\$;换句话说,一个关系是一对\$(X,y)\$的集合,这样\$X\$和\$y\$都在\$X\$中。不同关系的数量随着集合

解答动态

  • 条件

    • 二进制关系数--+-------------------------------------+---------------------------0

      • {自反,反传递}

        • 13

          • {自反,反译}03{}5123{反译}39 4{反译}9214{自反,非自反}04{对称,反对称}14{传递,反译}874{自反,对称,传递}154{对称,传递的}524{反对称的,反传递的}317例子1对于\$n=3\$,有\$39\$反传递关系,如下图所示。(严格地说,插图显示的是未标记的关系。)
            有\$1\$空关系。那里\$6\$关系只包含一个吗一对。在那里\$3+3+6+3\$关系是由两个成对的。在那里\$6+6+2\$关系是由三个成对的。在那里是由四对组成的\$3\$关系。例如
            *,您可以将这些条件作为一个列表,如[假,假,真,假,假,真],每个位置都指向特定的条件。另一个例子是,你可以拿一组字符串作为另一个例子,你可以拿一组字符串像{quot;,quot;}。
            ;APL(Dyalog扩展)、99 bytes r←/0 0 0 0?R←{quo;过渡性quo;过渡性quo;反对称?)?}\?-?↑°?¨,???2*??1} 在线试用!
            将条件作为字符串,使用缩写作为如下:
            r:reflexiveR:irreflexives:symmetricS:antisymetrics:transivet:anti-transitive 例如,自反+对称+传递被指定为“rst”,而“no condition”被指定为“
            它是如何工作的 ?每个rRsStT采用一个邻接矩阵并确定条件满足?自反:对角线全为一←∧/0 0??非自反:对角线全为零←∧/0 0?~?对称:转置等于自←?≡??反对称:自和转置中的每个位置不能同时为一←~1??∧??传递:自包含←~0 0???;:。。。?1}?取0为特例,始终返回1,???2*??生成0..2^n-1?-?↑°?¨?将其转换为n×n二进制矩阵(?,'''''''')?将始终返回1的默认函数添加到条件列表{…}\?取条件和矩阵的外积。。。(??)??求值条件函数并将其应用于矩阵+/∧??计算满足所有条件的矩阵

            • (节点.js),215 bytes (n)(m),其中n是BigInt,m是描述启用哪些约束的位掩码,使用以下组合:
              IRREFLEXIVE=1 reflexive=2 antisymetric=4 symmetric=8 anti transitive=16 transitive=32 n=gt;{g=(c,x=n)=g(c,x):1;h=(x,y)=gt;amp;1n);对于(t=0,k=1nlt;n*n;k--;)t+=![x=gt;g(y=>;h(x,y)

              • h(y,x)^q),0,x=gt;g(z=>;h(x,y)

                • h(y,z)

                  • h(x,z)^q)),0].一些((c,j)=gt;j1)?C: C=C));return t} 在线试用!
                    页注:
                    获取一个更快的版本,用amp;。使用BigInts比较慢,而且稍长一些,但是允许此代码在任何n in中工作理论。格式化和commented n=gt;{//helper函数来测试c(x)对于[0]中的所有x是否为真。。n-1]g=(c,x=n)=>x?c(--x)gt;中是否为*not*!(kgt;x+n*ylt;gt;h(x,x)^q,0,//反对称(q=0)/对称(q=1)x=gt;h(x,y)

                    • h(y,x)^q),0,//反传递(q=0)/传递(q=1)x=gt;g(z=>;h(x,y)

                      • h(y,z)

                        • h(x,z)^q)),0].有些((c,j)=gt;amp;//。。。测试失败了!g((q=j&1)?C:C=C));return t}

                          • Python 3,319 bytes 期望被称为f(n,m),其中m是需要条件的位掩码,顺序与问题相同。
                            r=lambda x:x和r(x[1:]+[x[:1]+a表示r中的a(x[1:])]或[[]]f=lambda n,C:(lambda z:n==0或sum(1表示map中的a(set,r([(x,y)表示z中的x表示z中的y)),如果不是(lambda g,h,i:(g<;=a)+(a-g==a)*2+(h==a)*4+(a-h==a)*8+(i

                            • a==a)*16+(a-i==a)*32)(设置(zip(z,z)),{(q,b)在a}中表示(b,q),{(d,c)在a中表示(l,c)在a中表示(l,c)如果l==b})&;c^c))(范围(n)) 联机试用!第2页

                              • End

                              免责声明:

                              本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。