/**
* 生成集合的所有子集(本算法中没有把空集作为子集返回,如果需要,请自行添加)
* 本算法采用递归实现
* @param sourceSet
* @param result
*/
public void buildSubSet(List<String> sourceSet, List<List<String>> result) {
//仅有一个元素时,递归终止。此时非空子集仅为其自身,所以直接添加到result中
if (sourceSet.size() == 1) {
List<String> set = new ArrayList<String>();
set.add(sourceSet.get(0));
result.add(set);
} else if (sourceSet.size() > 1) {
//当有n个元素时,递归求出前n-1个子集,在于result中
buildSubSet(sourceSet.subList(0, sourceSet.size() - 1), result);
int size = result.size(); //求出此时result的长度,用于后面的追加第n个元素时计数
//把第n个元素加入到集合中
List<String> single = new ArrayList<String>();
single.add(sourceSet.get(sourceSet.size() - 1));
result.add(single);
//在保留前面的n-1子集的情况下,把第n个元素分别加到前n个子集中,并把新的集加入到result中;
//为保留原有n-1的子集,所以需要先对其进行复制
List<String> clone;
for (int i = 0; i < size; i++) {
clone = new ArrayList<String>();
for (String str : result.get(i)) {
clone.add(str);
}
clone.add(sourceSet.get(sourceSet.size() - 1));
result.add(clone);
}
}
}
分享到:
相关推荐
Apriori算法的核心思想是基于“频繁项集”的封闭性:如果一个项集是频繁的,那么它的所有非空子集也必须是频繁的。这个性质允许我们通过迭代的方式逐步降低项集的大小,直到找到所有的频繁项集。以下是Apriori算法的...
该算法基于一个重要的原则:一个频繁项集的所有非空子集也必须是频繁的。这一特性极大地减少了搜索空间,从而提高了算法效率。 在Java实现中,算法设计涉及到多个类的创建和定义。例如,Item类用于表示单个数据项,...
3. **Apriori性质**:这是算法的核心原则,指出如果一个项集是频繁的,那么它的所有非空子集也必须是频繁的。这允许算法在早期阶段排除不可能成为频繁项集的候选集,减少计算量。 4. **生成候选集**:通过连接频繁项...
关联规则通常表示为:“如果项集X发生,那么项集Y也倾向于发生”,其中Y是X的非空子集。关联规则的强度由两个度量决定:支持度和支持度基础上的置信度。置信度是X和Y同时出现的概率,计算公式为:`置信度 = 支持度(X...
2. 生成候选集:根据Apriori性质(如果一个项集是频繁的,那么它的所有非空子集也必须是频繁的)生成更大长度的候选集。 3. 计算支持度:对每个候选集计算其在数据集中出现的频率,即支持度。 4. 确定频繁集:如果候...
关联规则通常表示为“如果X发生,那么Y也会发生”,其中X和Y是频繁项集,且Y是X的非空子集。规则的可信度(置信度)是规则发生的频率除以X发生的频率。 在Java代码中,`Apriori.java`文件可能会包含以下关键组件: ...
在Java编程中,实现洗牌发牌的过程涉及到数组的操作、随机数生成以及列表的管理。这里我们将深入探讨如何使用Java来创建一个简单的扑克牌洗牌和发牌系统。 首先,我们需要定义扑克牌的结构。在这个例子中,我们使用...
将另一个非空子序列剩余的部分复制到result中。 - **复杂度分析:**时间复杂度为O(n),空间复杂度为O(n)。 #### 八皇后问题 八皇后问题是经典的回溯算法应用示例。目标是在8×8的棋盘上放置八个皇后,使得任意两...
6. 树是一种分层的数据结构,它包含一个根节点以及0个或多个非空子树,这些子树被统称为原始树的子节点。在C++中,树结构可以使用节点指针来创建。 7. 图是一种由节点(称为顶点)和连接顶点的边组成的非线性数据...
- **最长公共子序列(LCS)**:找出两个序列的最长非空子序列,不考虑子序列的相对位置。 - **斐波那契数列**:通过前两项之和得到下一项,经典的动态规划实例。 6. **贪心算法**: - **Prim算法**:最小生成树...