Frechet distance距离计算原理及python实现
创始人
2024-01-31 09:53:56

Frechet distance概念

在这里插入图片描述

弗雷彻距离(Frechet distance)定义了一种考虑位置和点的次序的计算两条曲线相似度的方法,常用于时间序列相似度度量和轨迹序列相似度度量。该指标的算法可用the walking dog problem来描述:想象一个人用牵引带遛狗的同时,穿过一条有限弯曲的路径,而狗则穿过一条单独的有限弯曲路径。每个人都可以改变自己的速度来放松牵引带,但都不能向后移动。则两条路径之间的Fréchet距离是牵引带的最短长度,足以让两条弯路从头到尾穿过各自的路径。
严格的数学定义为:
曲线A,B为度量空间S内的两条曲线,即A:[0,1]→SA:[0,1]\rightarrow SA:[0,1]→S,B:[0,1]→SB:[0,1]\rightarrow SB:[0,1]→S。α\alphaα和β\betaβ是单位区间的两个重采样函数,α:[0,1]→[0,1]\alpha:[0,1]\rightarrow [0,1]α:[0,1]→[0,1]。弗雷彻距离为:F(A,B)=inf⁡α,βmax⁡t∈[0,1](d(A(α(t)),B(β(t))))F(A,B)=\inf_{\alpha,\beta}\max_{t\in[0,1]}(d(A(\alpha(t)),B(\beta(t)))) F(A,B)=α,βinf​t∈[0,1]max​(d(A(α(t)),B(β(t))))
通俗的数学定义可以简化为:
在这里插入图片描述

代码实现

基于动态规划,求两条轨迹的弗雷彻距离,具体的,将轨迹A和B每步分为三类可能的路径状态,1)A和B都向前移动一步;2)A停留原地,B向前移动一步;3)A向前移动一步,B停留原地;

import numpy as np
from scipy.spatial import distance
from scipy.spatial import minkowski_distance
from scipy.spatial.distance import euclidean
import seaborn as sns
def Frechet_distance(exp_data,num_data):"""cal fs by dynamic programming:param exp_data: array_like, (M,N) shape represents (data points, dimensions):param num_data: array_like, (M,N) shape represents (data points, dimensions)# e.g. P = [[2,1] , [3,1], [4,2], [5,1]]# Q = [[2,0] , [3,0], [4,0]]:return:"""P=exp_dataQ=num_datap_length = len(P)q_length = len(Q)distance_matrix = np.ones((p_length, q_length)) * -1# fill the first value with the distance between# the first two points in P and Qdistance_matrix[0, 0] = euclidean(P[0], Q[0])# load the first column and first row with distances (memorize)for i in range(1, p_length):distance_matrix[i, 0] = max(distance_matrix[i - 1, 0], euclidean(P[i], Q[0]))for j in range(1, q_length):distance_matrix[0, j] = max(distance_matrix[0, j - 1], euclidean(P[0], Q[j]))for i in range(1, p_length):for j in range(1, q_length):distance_matrix[i, j] = max(min(distance_matrix[i - 1, j], distance_matrix[i, j - 1], distance_matrix[i - 1, j - 1]),euclidean(P[i], Q[j]))# distance_matrix[p_length - 1, q_length - 1]sns.heatmap(distance_matrix, annot=True)return distance_matrix[p_length-1,q_length-1] # 最后一步即为弗雷彻距离

在这里插入图片描述

参考资料

[1] Thomas Eiter and Heikki Mannila. Computing discrete Frechet distance. Technical report, 1994. http://www.kr.tuwien.ac.at/staff/eiter/et-archive/cdtr9464.pdf http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.90.937&rep=rep1&type=pdf
[2] similarity_measures python package
[3] https://en.wikipedia.org/wiki/Fr%C3%A9chet_distance
[4] 通俗的数学描述及动态规划求解

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
呼伦贝尔大草原在哪 呼伦贝尔天... 世界四大草原分别是:呼伦贝尔草原、那拉提草原、潘帕斯草原、锡林郭勒草原。其中内蒙古的呼伦贝尔大草原,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
重阳节是几月几日 24个传统节... 农历 节日1. 正月初一春节2. 二月初二祭社神:二月二既是龙抬头节也是土地公 诞辰,“土地 诞”也...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...