3

我正在尝试解决一个编程问题,我需要实现以下算法(大致):

有几个节点,即A,B,C等。

每个节点中可以有多个项目,即 a、b、c、x、y、z 等。例如,

A [a, b, c, x, y, z]

B [a, b, c]

C [x, y, z]

可以有无限数量的节点和项目,节点中可以有任意数量的项目(但相同的项目不会再次重复)。

我要做的是我必须根据节点内的公共项目在节点之间创建层次结构。所以,在上面的例子中,A 应该比 B 和 C 具有更高的层次结构。或者换句话说,A 是 master,B 和 C 是 slave。

所以,我在想如果我可以根据公共项目从节点制作一棵树,那么对我来说会更容易。但我不知道使用哪种算法。有人知道哪个适合我的情况吗?构建树不是强制性的,如果有其他方法可以实现相同的事情,那就没问题了。谢谢。

4

2 回答 2

0

我改编了 Ming-Syan Chen、Jong Soo Park 和 Philip S. Yu 的论文“Data Mining for Path Traversal Patterns in a Web Environment”提出的算法。本文可 在此处获得。虽然这里的算法直接没有解决我的问题,但是我在算法中做了一点调整,使它适合我的问题情况。现在它工作正常,我得到了我需要的结果。

我要感谢大家花时间阅读我的问题和提出的解决方案。

于 2013-11-02T19:55:44.517 回答
0

尝试使用AVL 树

请注意,AVL 树的最坏情况可能看起来像这样您可以在此处阅读有关最坏情况的更多信息。

最重要的是,给定两个“节点”,是否存在比较它们并确定哪个更高的逻辑?如果没有,那么需要先构建!

一旦您知道如何比较,就可以使用 AVL 树来构建和维护“层次结构”。

于 2013-11-01T20:04:47.397 回答