一棵树中的兄弟姐妹之间的亲密关系如何?

时间:2011-05-02 02:46:52

标签: java algorithm data-structures graph tree

E.g。人们可能想说“鲸鱼”是动物的“孩子”,但“鲸鱼”更像“海豚”而不是“狗”。在这种情况下,“鲸鱼”,“海豚”,“狗”都是动物的孩子,但“鲸鱼”和“海豚”显然有关系。

我对简单定义更多子类(例如“海洋动物”,“陆地动物”)并不感兴趣,上面的例子只是为了说明...假设我们无法“定义”我们的方式问题

是否只是简单地定义一个加权的部分非循环图,知道该图的某个子集实际上是一棵树(不一定是跨越)?

编辑:许多人要求进一步澄清。我将使用相同的示例,但可能会详细介绍

假设我们有以下类别:

    Animals, Place, Object.
    The following sub categories: [land animals, sea animals], [country, state],
 [heavy object, light object]
    And we have the following entries: Whale, Dolphin, Dog, Cat, Hawaii, Japan,
 London, Stone, Rock, Leaf, Car.

    I have an isLike(entry x) function that I can call on any of the entries.

    for example say whale.isLike(dolphin) = 0.7, whale.isLike(dog) = 0.2 and
a table like the following one stores all the values for the isLike() function

            Whale dolphin dog cat hawaii japan london stone
    whale   1     0.7     0.2 0.2  0.01   0.01  0.01   0.008
    dolphin 0.7   1       0.2 0.2  0.01   0.01  0.01   0.008
    dog      etc
    cat      etc
    hawaii    etc 
    japan    etc
    london   etc
    stone    etc

表示此数据的最佳方式是什么?

我最关心的是如何保持层次信息(树)以及isLike()(加权图)中的关系信息

所以只是询问标准的事情是使用有向图(对于树)+加权无向图(对于关系)类型的结构?这是标准还是有更标准的方式?

3 个答案:

答案 0 :(得分:1)

您可能希望使用加权的无向边来表示图中的贴近度。但是,目前尚不清楚你想在这里完成什么。根据您要完成的任务,您可能希望将关系与分类层次结构分开。

答案 1 :(得分:1)

有多种方法可以定义树中节点之间的距离。您可以使用父母,兄弟姐妹,叔叔等。要了解更多信息,请查看Red-Black Trees

您对定义的规定没有意义。我们可以定义距离的唯一方法是向树添加一些结构信息,以便我们知道如何安排节点。这就是“子类”在等级关系中的作用。这些链接基本上只是“边缘”,与任何tree can be transformed into a graph一样。

如果您的节点只是标签,则它们是nominal pieces数据。您无法计算任何比率或间隔,因此任何距离度量都必须等于所需节点的链接数。

如果树中的节点对应于数据结构(例如,Animals),那么我们可以假设每个结构都具有共享属性。 (例如:眼睛颜色,体重,身高,isFurry等)这些属性可能具有区间或比例尺度的范围和范围,在这种情况下,我们可以计算有意义的距离。

要表示此处对象之间的距离,您可以意识到您实际所做的是在一组变量中定义坐标空间(x =眼睛颜色,y =重量,z =高度,isFurry = q)。因此,每个单独的节点实际上是由公共属性集定义的坐标空间中的向量。因此,您可以计算欧几里德距离,Mahabolis距离,曼哈顿距离,余弦相似度或您想要的任何其他距离度量。

答案 2 :(得分:0)

我认为你要做的是hierarchical clustering,而你所拥有的就是距离矩阵。