用于生成具有与组中的其他集相交的正好1个元素的集合的算法

时间:2015-04-27 03:48:03

标签: python c algorithm set

有一种名为Maekawa的算法,用于向特定请求集发送消息(http://courses.cs.vt.edu/cs5204/fall99/Supplemental/ProblemSet8.html

我感兴趣的是生成值为K = 3的请求集的算法(集合中的3个元素),N = 7(7个这样的集合)

每一组与其他组相交时,应该产生一个"一个"共同的价值。如何通过算法生成

1 个答案:

答案 0 :(得分:3)

这些结构是在设计理论中研究的,它是组合学的一部分。你可能可以使用暴力搜索,但这不会让你走得太远。

集合的集合,使得任意两个集合的交集都具有对linear space的双重性,其中每两个点确定唯一的行。生成线性空间的最简单方法是使用有限域而不是坐标的实数来概括坐标几何。例如,Fano plane是具有2个元素的场上的投影平面。您可以让这些点对应于长度为3的7个非零二进制向量,其中这些行对应于三元组,其总和为(1,1,1),其中每个坐标都添加了mod 2.还有其他描述,例如{{i ,i + 1,i + 3}}其中i的范围从0到6,每个元素都是mod mod 7.投影平面是投影平面的双重,具有相同数量的点和线,所以这已经是a的对偶线性空间,每对线在一个点相交。法诺飞机可能就是你想要的那些参数。

在整数上的仿射平面,质子p比投影平面更容易描述。这些点是整数mod p的元素对。线可以描述为ax + by = c的解,其中所有算术都是mod p,a和b不能都是0.当p = 3时,有9个点和12个线。通过每个点,有4条线,每条斜率之一:0,1,2和垂直。您想要的结构是双重结构,因此集合对应于平面中的点,元素对应于包含这些点的线条。这给出了一个具有12个元素和9组大小为4的结构。

在游戏Set中,你尝试在整数mod 3中识别仿射4空间中的线,但不是在尽可能多的单词中。这是一个线性空间,每个点有81个点和40个线,因此对于具有1080个元素的结构和由40个点组成的81个子集是双重的,因此每对子集在一个元素中相交。