РЕДАКТИРОВАТЬ: Это мой первоначальный ответ, который мы будем называть Случай 1, где нет приоритет для клавиш
Вы не можете сделать это какотсортировано целое число, потому что это одномерное и ваши данные многомерны.Таким образом, «близость» в этом смысле не может быть установлена на линии.
Ваш пример показывает птицу, рыбу и соду для всех 3 линий.Ключи зафиксированы и известны?Если это не так, то ваш первый шаг - хешировать ключи строки, чтобы установить строки с одинаковыми ключами.
Для значений рассмотрите это как уловку подобия субботнего вечера бедняка.Хеш-значения, любые две строки, которые совпадают в этом хэше, являются точным совпадением и представляют одно и то же «пятно», нулевое расстояние.
Если N - количество пар ключ / значение:
Ближайшая неточная «близость» будет означать совпадение N-1 из N значений.Таким образом, вы генерируете еще N хэшей, каждый из которых пропускает одно из значений.Любые две строки, которые совпадают в этих хешах, имеют N-1 из N общих значений.
Следующая ближайшая неточная "близость" будет означать совпадение N-2 из N значений.Таким образом, вы генерируете более N хешей (я не могу понять двоичный файл так поздно), на этот раз каждый хеш пропускает комбинацию из двух значений.Любые две строки, совпадающие в этих хэшах, имеют общие значения N-2 из N.
Таким образом, вы можете видеть, куда это идет.В логическом крайнем случае вы получите 2 ^ N хешей, не очень вкусных, но я предполагаю, что вы не пойдете так далеко, потому что вы достигнете точки, где слишком мало совпадающих значений будет считаться «далеко», чтобы стоить рассматривать.
РЕДАКТИРОВАТЬ: Чтобы увидеть, как мы не можем избежать размерности, рассмотрим только два ключа со значениями 1-9.Разместите все возможные значения на графике.Мы видим, что {1,1} близко к {2,2}, но также что {5,6} близко к {6,7}.Итак, мы получаем мозговой штурм, мы говорим, ага!Я вычислю расстояние каждой точки от начала координат, используя теорему Пифагора!Это упростит обнаружение {1,1} и {2,2}.Но тогда две точки {1,10} и {10,1} получат одно и то же число, даже если они настолько далеко друг от друга, насколько они могут быть на графике.Итак, мы говорим, хорошо, мне нужно добавить угол для каждого.Две точки на одинаковом расстоянии различаются по их углу, две точки под одним и тем же углом различаются по их расстоянию.Но, конечно, теперь мы построили их в двух измерениях.
РЕДАКТИРОВАТЬ: Случай 2 будет, когда есть приоритет для клавиш, когда ключ 1 является более значимым, чем ключ2, что более важно, чем клавиша 3, и т. Д. В этом случае, если допустимые значения были AZ, вы бы соединили значения вместе, как если бы они были цифрами, чтобы получить сортируемое значение.ABC очень близко к ABD, но очень далеко от BBD.