Я пытаюсь найти подходящий алгоритм, который соответствует 3 атрибутам, и я не могу придумать эффективного решения. Вот psuedocode для моего алгоритмаКак эффективно сопоставлять несколько значений
Алгоритм выполняет следующие действия:
- Проверьте, есть ли совпадение по первым критериям.
- Если есть совпадение по первым критериям, я попытаюсь сузить совпадение по другим критериям 2 .
- Если нет совпадений по первым критериям, попробуйте сделать совпадение по второму критерию.
- Если есть совпадение по второму критерию , я попытаюсь сузить совпадение по последним критериям .
- Etc ...
Похоже, этот алгоритм просто повторяется, а если добавить еще одно значение для сопоставления, то этот алгоритм становится очень большой реальный быстро.
//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 если объединить результаты, то я не буду получать наиболее сузили результаты можно. Я бы получил большой результирующий набор, который содержит как близкие, так и узкие совпадения. Этот алгоритм пытается получить самое близкое совпадение. – user2158382
, если в списке были значения, подтверждающие критерий X, добавление нового значения в список может привести к аннулированию критерия X? –