recursion - FP-Growth 算法中的递归
问题描述
我正在尝试在 Java 中实现 FP-Growth(频繁模式挖掘)算法。我已经构建了树,但是在条件 FP 树构建时遇到了困难;我不明白递归函数应该做什么。给定一个频繁项列表(按频率计数递增的顺序)——一个标题和一个树(节点类实例的列表),函数应该采取哪些步骤?
我很难理解上面的这个伪代码。树中的 alpha 和 Betha 节点是什么,生成和构造函数有什么作用?我可以手动进行 FP-Growth,但发现实现非常混乱。如果这有帮助,我可以分享我的 FP-Tree 生成代码。提前致谢。
解决方案
- alpha 是通向此特定前缀树的前缀
- beta 是(要构建的树的)新前缀
- 生成行的含义类似于:将模式 beta 添加到结果集,支持 anItem.support
- 构造函数创建新模式,从中创建新树
构造函数的一个示例(自下而上的方式)将类似于:
function construct(Tree, anItem)
conditional_pattern_base = empty list
in Tree find all nodes with tag = anItem
for each node found:
support = node.support
conditional_pattern = empty list
while node.parent != root_node
conditional_pattern.append(node.parent)
node = node.parent
conditional_pattern_base.append( (conditional_pattern, support))
return conditional_pattern_base
推荐阅读
- multithreading - 使用 vwait 的 Tcl 线程产生随机结果
- javascript - 在不使用 JQueryUI 的情况下限制可拖动的 div
- javascript - 渲染多个(数百甚至数千)Web 组件
- python - 如何根据 matplotlib 中的单元格字符串以彩色网格方式绘制时间序列?
- c# - WinAppDriver Selenium 切换到不同的应用程序 C#
- python - 找到两个连续出现的数字之间的最小值并重复该过程到文件末尾
- jquery - 如何将具有数组的对象传递给 AJAX 上的操作
- r - 如何从更改的数据框中创建查找表?
- python - 在python中写入文件和从文件中读取
- ios - Air SDK 33:最低 iOS 9 但应用程序无法在 iOS 9 设备上下载