2015-11-08 80 views
4

我目前正在研究一个项目,我需要量化算法之间的(不)相似度 - 也就是说,我有几十个算法用于相同的目的,我想量化哪些与其他人最接近(即更相似),哪些确实是“新颖的”。算法的距离度量

我的Google-Fu和我的SO-JUTSU都让我失望了,所以如果有人能说明这一点,我将不胜感激。这样的指标是否存在?

+0

Google-Fu和SO-Jitsu哈哈。如果我们只能根据他们对双关语的使用情况来提问。 – 2015-11-08 01:02:45

+0

是否对运行时间和内存复杂度等绝对度量初步进行了分类,表明类似的算法出现在附近? – usr2564301

+1

在遗传程序设计中,存在着由小突变发展而来的程序的概念 - 并且通常在有小突变的概念的地方存在距离的概念,所以研究遗传程序的一些研究可能是值得的虽然这是关于*程序*而不是*算法*)。见https://en.wikipedia.org/wiki/Genetic_programming –

回答

2

作为相似度的一种度量方法,您可以创建一些智能构造的数据集,然后在所有这些数据集上运行每个算法。然后,您将获得与每个算法相关的运行时维向量,然后您可以拍摄任何旧距离。我会想象像余弦距离这样的东西会是一个很好的初步猜测,因为如果你的数据集大小不一,你可能会按照它们的比例来分类你的算法。除了运行时,您还可以监视最大内存使用情况或任何其他您可以想到的测量内容。

+0

谢谢。正如我在另一条评论中提到的那样,我打算使用运行时和内存复杂度作为证据的第二线,以验证根据算法之间的距离(无论可能如何)进行的任何推理。 –