求个比较算法的思路...

时间:2021-10-18 09:48:05
有2张表.
表1中存放车辆运行路线的实际路径.
表2中存放路径参数.

比如从武汉到广州.沿途就经过咸宁,赤壁,岳阳.....韶关,英德,清远,广州.
表1里就存放途中经过的每个站.

表2中设定的是一个方向的大致路径.
比如从武汉到广州.就记载:武汉,岳阳,韶关,清远,广州.

但是这并不是说表2一定比表1的内容少..

比如表1中从岳阳-韶关.这条路线就被包括在武汉-广州这个大方向之内.

现在我已知道了表1中每条记录的实际走行路径..需要做的是匹配这条实际路径所对应表2中的方向..

该如何比较匹配?

8 个解决方案

#1


LZ想开发列车时刻表?

#2


引用 1 楼  的回复:
LZ想开发列车时刻表?

不是..如果是列车时刻表..那就没这么复杂了..

#3


想匹配出什么结果呢?比如已经有一个从武汉到广州的实际路径,拿这个路径去表2中匹配,表2中存放的是缺省路径吗?最后要得出的结论是什么呢?是要计算实际路径对缺省路径的符合程度吗?

#4


引用 3 楼  的回复:
想匹配出什么结果呢?比如已经有一个从武汉到广州的实际路径,拿这个路径去表2中匹配,表2中存放的是缺省路径吗?最后要得出的结论是什么呢?是要计算实际路径对缺省路径的符合程度吗?


表2存放的是预设好的方向性的路径..只包含大方向的若干点..

表1是实际行走路径...我需要将表1实际行走路径比较得到它匹配表2的哪个方向...再根据表2预设的参数对表1作出计算处理..

举例来说.
表1中存放2条记录..第一条是武汉-广州:武汉,长沙,衡阳,清远,广州.
第二条记录:武汉-南宁:武汉,长沙,衡阳,永州,南宁

表2中存放的2条方向记录.
第一条记录:武汉-广州:武汉,长沙,清远,广州.
第二条记录:武汉-南宁:武汉,长沙,永州,南宁.

那么我需要把表1中第一条记录匹配到表2中的第一条记录.表1中的第二条记录匹配到表2的第二条记录.

我需要得出的结论就是表1中的记录分别和表2中的那些记录匹配度比较高....选择匹配最高的那条.当然,并不是根据相同的站名越多越好.因为方向和匹配度的正确性相关

#5


这个就要看匹配准则了,比如这样的准则:采用从长到短匹配的方法,先匹配起点和终点,如果只有一条记录,则匹配结束,如果表2中有多条符合的记录,则分别从起点和终点向内缩,得到一子路径,再用这个子路径去和首次匹配胜出的几条路径去匹配,如果仍有多条,则再缩短,直到只有一条为止。
其实匹配的结果不仅和准则有关,也和表2中的数据有关,比如武汉到广州,过衡阳后,表2中到广州有多条路径,而实际的路径过衡阳后走的却是一条新路径,那么最后就会同时匹配出多个结果,而不会收敛到一条,所以最佳的匹配策略取决于表2中数据之间的约束条件

#6


如果单纯看相似程度大小的话,也可以采用节点计分的办法:

首先表1和表2要公用同一张节点表,如武汉、岳阳、长沙、衡阳、韶关、广州、永州、南宁之类,然后为每个节点设置一个权重值W

匹配时,先将节点表中的每个元素权重初始化为0,然后沿着实际路径走,每过一个节点,则该节点的数值设为1,直到终点,为了强调起点和终点,可以为起点和终点设置很大的权重值,大到足以超过任何一条路径的长度,比如设为1000

然后对于表2中的每一条路径,沿着路径从头到尾走一遍,累加各个节点的权重值,得到的结果就是该路径的权重值,当所有路径都走过一遍后,权重最大的路径就是最匹配的路径

也可以采用区间匹配法,比节点匹配法要稍复杂一些

#7


上面所说的权重值应该叫计分值更合理一些

#8


谢谢了...我先尝试下节点路径匹配...

#1


LZ想开发列车时刻表?

#2


引用 1 楼  的回复:
LZ想开发列车时刻表?

不是..如果是列车时刻表..那就没这么复杂了..

#3


想匹配出什么结果呢?比如已经有一个从武汉到广州的实际路径,拿这个路径去表2中匹配,表2中存放的是缺省路径吗?最后要得出的结论是什么呢?是要计算实际路径对缺省路径的符合程度吗?

#4


引用 3 楼  的回复:
想匹配出什么结果呢?比如已经有一个从武汉到广州的实际路径,拿这个路径去表2中匹配,表2中存放的是缺省路径吗?最后要得出的结论是什么呢?是要计算实际路径对缺省路径的符合程度吗?


表2存放的是预设好的方向性的路径..只包含大方向的若干点..

表1是实际行走路径...我需要将表1实际行走路径比较得到它匹配表2的哪个方向...再根据表2预设的参数对表1作出计算处理..

举例来说.
表1中存放2条记录..第一条是武汉-广州:武汉,长沙,衡阳,清远,广州.
第二条记录:武汉-南宁:武汉,长沙,衡阳,永州,南宁

表2中存放的2条方向记录.
第一条记录:武汉-广州:武汉,长沙,清远,广州.
第二条记录:武汉-南宁:武汉,长沙,永州,南宁.

那么我需要把表1中第一条记录匹配到表2中的第一条记录.表1中的第二条记录匹配到表2的第二条记录.

我需要得出的结论就是表1中的记录分别和表2中的那些记录匹配度比较高....选择匹配最高的那条.当然,并不是根据相同的站名越多越好.因为方向和匹配度的正确性相关

#5


这个就要看匹配准则了,比如这样的准则:采用从长到短匹配的方法,先匹配起点和终点,如果只有一条记录,则匹配结束,如果表2中有多条符合的记录,则分别从起点和终点向内缩,得到一子路径,再用这个子路径去和首次匹配胜出的几条路径去匹配,如果仍有多条,则再缩短,直到只有一条为止。
其实匹配的结果不仅和准则有关,也和表2中的数据有关,比如武汉到广州,过衡阳后,表2中到广州有多条路径,而实际的路径过衡阳后走的却是一条新路径,那么最后就会同时匹配出多个结果,而不会收敛到一条,所以最佳的匹配策略取决于表2中数据之间的约束条件

#6


如果单纯看相似程度大小的话,也可以采用节点计分的办法:

首先表1和表2要公用同一张节点表,如武汉、岳阳、长沙、衡阳、韶关、广州、永州、南宁之类,然后为每个节点设置一个权重值W

匹配时,先将节点表中的每个元素权重初始化为0,然后沿着实际路径走,每过一个节点,则该节点的数值设为1,直到终点,为了强调起点和终点,可以为起点和终点设置很大的权重值,大到足以超过任何一条路径的长度,比如设为1000

然后对于表2中的每一条路径,沿着路径从头到尾走一遍,累加各个节点的权重值,得到的结果就是该路径的权重值,当所有路径都走过一遍后,权重最大的路径就是最匹配的路径

也可以采用区间匹配法,比节点匹配法要稍复杂一些

#7


上面所说的权重值应该叫计分值更合理一些

#8


谢谢了...我先尝试下节点路径匹配...