日期:2014-05-20  浏览次数:20934 次

算法求助,轨迹相似度
最近在用Java编程,其中一项遇到了一个有关的算法的问题,像各位大虾求教:

1、在二维坐标上,有一组集合点,依次连起来形成一条轨迹,此时给它约定一个宽度
2、有另一组集合点,要求这两条轨迹相似度
相似度约定:第二条轨迹落 在第一条轨迹约定宽度外的总长度 比 落在第一条约定内的总长度 即用来表示相似度

求大神给一下实现这个算法建议

------解决方案--------------------
抛转引玉
Y=f1(n)x+f2(n);规定宽度W,上下线为Yup=Y+W和Ydown=Y-W;
这样第二条轨迹的那些采样点,根据f1(n)x+f2(n);算出Y,如果Y>Yup或者Y<Ydown,就是在范围外了,
如果是均匀密集的采样,应该就可以用不在范围内采样点的个数/在范围内采样点的个数来算就差不多了吧。
------解决方案--------------------
既然是2D坐标,就以为基准
求取 Dx与Dy,然后计算欧几里德距离不就搞定
当然还可以顺带计算一下角度。
------解决方案--------------------
引用:
规定宽度W,上下线为Yup=Y+W和Ydown=Y-W;
不能直接这样算吧,如果是y=x的直线,宽度为1,那应该是y=x+√2 啊....

好吧那在根据斜率角度计算一下。
------解决方案--------------------
如果第二条规则是一个圆
------解决方案--------------------
引用:
这个,是一个好多线段组成路径,没法单一的表示啊...

线段有起点,终点还有中间一条直线吗....
所以我的思路可以根据Y=f1(n)x+f2(n);  n=1,2,3.....
------解决方案--------------------
我建议你在仔细考虑一下你的问题定义。

相似性,是一个关系。一般来说相似关系应该具有对称性。
你这样定义相似性的话,你能给出证明对称性吗?

我还没有仔细研究你的相似性定义,也没有你的相似性关系不具对称性的数学证明。
但我直觉上,感觉你这样定义的相似性不满足对称性。

把一个不满足对称性的关系定义为相似性的话,是没有意义的。

说人话的话就是,如果A和B按你的定义计算出的相似性(度)为90%,而B和A的相似性算出来为35%,
那么你定义的这个相似性,还有什么意义呢?或许根本就不该叫相似性了。



------解决方案--------------------
引用:
Quote: 引用:

我建议你在仔细考虑一下你的问题定义。

相似性,是一个关系。一般来说相似关系应该具有对称性。
你这样定义相似性的话,你能给出证明对称性吗?

我还没有仔细研究你的相似性定义,也没有你的相似性关系不具对称性的数学证明。
但我直觉上,感觉你这样定义的相似性不满足对称性。

把一个不满足对称性的关系定义为相似性的话,是没有意义的。

说人话的话就是,如果A和B按你的定义计算出的相似性(度)为90%,而B和A的相似性算出来为35%,
那么你定义的这个相似性,还有什么意义呢?或许根本就不该叫相似性了。


非常感谢,这的确是考虑有所欠缺的地方,当时在定义的时候也想到了,但是这个比较直观,就先定义了这样作为相似性


直观的方法,经常会引向歧途。

我建议你,

第一说清除你的应用场景。
很可能有更好的解决方案。

第二说清初你的输入和输入限制。
是有序点,还是无序点,是否封闭图形,在构造曲线的时候,考不考虑交叉等情况。 

想清楚问题,才能定义好问题。定义好问题,才能解决问题。

起手就盲目做的话,恐怕未来得不偿失。