Учитывая список строк (в частности, names ), существует ли алгоритм обнаружения предметов, которые могут быть легко перепутаны человеком, например.ниже, 3, 4 и 5, скорее всего, будут сбиты с толку, 6 и 7 менее легко, 1 и 2 маловероятны, и 8 не имеет равных.Если поиск наборов затруднителен, пары будут приемлемы.
1. Joe Average
2. Joe Beverage
3. Michael Andersen
4. Michael Anderson
5. Micheal Anderson
6. Steve Cook
7. Steve Look
8. Xena: Warrior Princess
Чтобы усложнить ситуацию, необходимо учитывать положение символов, поскольку человеку легче обнаружить разницу символов в начале слова / строки, чемодин посередине, например.
1. Pink Floyd
2. Bink Floyd
3. Rolling Stones
4. Rolllng Stones
Кроме того, заметить разницу символов в длинной строке труднее, чем в короткой:
1. Florence Griffith-Joyner
2. Florence Grifflth-Joyner
3. J. Lo
4. J. Law
Может быть, есть и другиеаспекты, которые должны быть приняты во внимание, основанные на том, как люди читают, как движется глаз и т. д. и другие вещи, которые могут вызвать ошибочную идентификацию.
Единственный известный мне связанный алгоритм - это Левенштейн, который ассимилирует пары человеканикогда не будет.
Способы упрощения проблемы (что я изначально имел в виду):
- Предположим, экранный шрифт фиксированной ширины
- Сравнение одного символа с однимсимвол
- Предположим, небольшой набор символов с в основном отличающимися символами
Способы усложнения проблемы(чего следует избегать, если размер кода увеличивается):
- Не ограничивайтесь сравнением одного символа, например.сравните маленький RN с маленьким M
- Рассмотрите весь набор Unicode со всеми его гомоглифами