【发布时间】:2014-04-16 03:24:01
【问题描述】:
我正在尝试提出一个匹配 3 个属性的匹配算法,但我想不出一个有效的解决方案。这是我的算法的伪代码
该算法执行以下操作:
- 检查第一个条件是否匹配。
- 如果第一个条件匹配,我会尝试根据其他 2 个条件缩小匹配范围 标准。
- 如果第一个条件不匹配,则尝试 根据第二个条件进行匹配。
- 如果在 第二个标准,然后我尝试根据 最后一个标准。
- 等等……
这个算法似乎只是在重复自己,如果我添加另一个值来匹配,那么这个算法会很快变得非常大。
//try to match on criteria 1
if results exist for match on criteria 1 {
//try to match on criteria 1 & 2
if results exist for match on criteria 1 & 2 {
//try to match on criteria 3
if result exist for match on criteria 1,2,3 {
return results for match on 1,2,3
}
else
return results for match on 1,2
}
else
return results for match on 1
}
//try to match on criteria 2
else if results exist for match on criteria 2 {
//try to match on criteria 2 & 3
if result exist for match on criteria 2,3 {
return results for match on 2,3
}
else
return results for match on 2
}
//try to match on criteria 3
else if results exist for match on criteria 3 {
return results for match on 3
}
else {
no match
}
有没有更好的方法来做到这一点?好像
【问题讨论】:
-
@MitchWheat 如果我合并结果,那么我将无法获得尽可能缩小的结果。我会得到一个包含紧密匹配和窄匹配的大型结果集。该算法试图获得最接近的匹配。
-
如果列表具有验证条件 X 的值,是否向列表中添加新值会使条件 X 无效?
标签: algorithm search pattern-matching computer-science