1, 2, 4, 8 — когда не про степень двойки
Когда показываешь последовательность: 1, 2, 4, 8
почти все говорят: «Ну понятно, степень двойки».
И да. Но это только половина ответа!
Потому что на практике это не столько про количество сложенных двоек, сколько способ думать про вес решений.
Когда мы ищем документы или дубликаты, мир почти никогда не бинарный.
Это не «совпало / не совпало».
Потому что по одному запросу может вернуться сразу несколько похожих документов — и с ними нужно что-то делать.
Например, мы ищем документ по номеру.
И получаем:
– документ, удостоверяющий личность
– совпадает номер
– совпадает страна
Но дальше начинаются нюансы.
Это может быть:
– паспорт гражданина Российской Федерации
– а может быть паспорт моряка
Формально оба — документы, удостоверяющие личность. Но это разные типы документов. И обрабатывать их как один и тот же кейс — ошибка.
А теперь другая ситуация.
Номер совпал, но:
– в одном случае его ввели как паспорт РФ
– в другом — как загранпаспорт
– в третьем — как еще какой-то тип документа (например страховой номер)
Это может быть:
– ошибка ввода
– копипаст
– пересечение номеров
– или реально один и тот же документ, заведенный несколько раз в «неправильные дырки»!
И это совершенно разные кейсы, которые дальше должны идти по разным алгоритмам обработки. И тут появляется подход называемый битовыми флагами и читаемой суммой.
Каждое число — отдельный признак. Каждый признак можно сложить с другим. И результат никогда не будет двусмысленным.
Например (для поиска дубликатов по номеру документа):
1 — мы нашли совпадение внутри одной страны и одного документа
2 — совпадение внутри страны, но между разными документами одного вида
4 — совпадение между странами по документу
8 — совпали ключевые персональные данные с несколькими баллами по Левенштейну.
В итоге мы получаем не «да / нет», а:
— совпадение на 6 баллов
— или на 9
— или на 15
И сразу понятно — почему именно столько!
Еще одно удобство, можно в запросе откинуть вариант или варианты от определенного уровня, например: дубликаты пользователей с весом не более 6!
А вы "такое" использовали на практике?
PS Если не догадались - я тут чуток с поиском развлекаюсь. Вам еще про алгоритмы рассказывать или это "базовый минимум", который всем ясен/понятен?
Post #754
661
- 🔥 9
- 👍 7
- ❤ 1