有一群14
人。我们希望设置一个会议日程安排,以便所有14
人每周以3
(以及一组2
)小组聚在一起。
但是,我不希望同一组中的任何两个人不止一次。
例如,如果我有一组c(A,B,C)
,我不希望后续组为c(A,B,D)
,因为元素A
和B
是相同的。
输出应该是一个列表,列表中的每个元素代表给定的一周。然后在每个列表元素(星期)内应该有四个三人组和一组两个人的列表,每个人只出现一次,并且在几周内没有两个人出现在同一组中。
此问题有许多可能的解决方案集。在所有组合用尽之前我们可以见多少周?如何在R
?
答案 0 :(得分:1)
elements <- c('A','B','C','D','E','F','G','H','I','J','K','L','M','N')
allcomb <- t(combn(elements, 3)) #Returns 364 different combinations
可以过滤具有2个相似字母的那些。但是,答案会根据您开始比较的子组而变化。我是按顺序进行的。(从A,B,C
开始)
for (a in 1:28){
l <- vector("list", nrow(allcomb))
for (b in 1:nrow(allcomb)){
l[[b]] <- sum(allcomb[a,] %in% allcomb[b,])!=2
}
allcomb <- allcomb[unlist(l),]
}
经过反复试验后得到28分。
> allcomb
[,1] [,2] [,3]
[1,] "A" "B" "C"
[2,] "A" "D" "E"
[3,] "A" "F" "G"
[4,] "A" "H" "I"
[5,] "A" "J" "K"
[6,] "A" "L" "M"
[7,] "B" "D" "F"
[8,] "B" "E" "G"
[9,] "B" "H" "J"
[10,] "B" "I" "K"
[11,] "B" "L" "N"
[12,] "C" "D" "G"
[13,] "C" "E" "F"
[14,] "C" "H" "K"
[15,] "C" "I" "J"
[16,] "C" "M" "N"
[17,] "D" "H" "L"
[18,] "D" "I" "M"
[19,] "D" "J" "N"
[20,] "E" "H" "M"
[21,] "E" "I" "L"
[22,] "E" "K" "N"
[23,] "F" "H" "N"
[24,] "F" "J" "L"
[25,] "F" "K" "M"
[26,] "G" "I" "N"
[27,] "G" "J" "M"
[28,] "G" "K" "L"
答案 1 :(得分:0)
这是一个下限:
平均每个人预计会遇到(4 * 3 + 1 * 2)/ 5 =每周2.8人
每个人需要遇到13个人。
13 / 2.8 = 4.64周。 所以答案应该是5周。