【发布时间】:2011-05-02 02:46:51
【问题描述】:
例如有人可能想说“鲸鱼”是动物的“孩子”,但“鲸鱼”更像“海豚”而不是“狗”。在这种情况下,“鲸鱼”、“海豚”、“狗”都是动物的孩子,但“鲸鱼”和“海豚”显然有关系。
我对简单地定义更多的子类(例如“海洋动物”、“陆地动物”)不感兴趣,上面的例子只是为了说明......假设我们不能“定义”我们的出路问题。
人们是否只是简单地定义一个加权的部分无环图,知道该图的某些子集实际上是一棵树(不一定跨越)?
编辑:许多人要求进一步澄清。我将使用相同的示例,但可能会更详细
假设我们有以下类别:
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()(加权图)中保留层次信息(树)以及关系信息
所以只是询问标准的做法是否是使用有向图(对于树)+加权无向图(对于关系)类型的结构?是这个标准还是有更标准的方式?
【问题讨论】:
-
我不清楚你到底想表达什么以及为什么。有无数种方法可以比较动物。一些关系可以用数字表示(如游泳速度),其他关系可以用图表更好地表示。你的输入数据是什么?还有,你到底想达到什么目的?
标签: java algorithm data-structures graph tree