Пытаясь понять LSH через пример кода Python

Краткий код Python для изучения я здесь

Вопрос A @ line 8

я не очень понимаю синтаксическое значение для "res = res << 1" для цели "get_signature"

Вопрос B @ строка 49 (решено мной через другой Q & A)

"xor = r1 ^ r2" на самом деле не имеет никакого смысла для меня, что автор позже попытался "(d-nna (vor))" вычислить "hash_sim" - (см. строку 50)

Вопрос C @ про hash_sim в целом

этот вопрос больше связан с пониманием LSH, что делает переменная "d" (строка 38) в примере кода ----, который позже используется для вычисления hash_sim в строке 50

Вопрос D @ строки 20 и 24 - синатекс для "&"

проблема не только в понимании синтаксиса "num = num & (num-1)", но и в неуверенности в том, что функция "nnz" выполняет в контексте hash_s Similarlity. этот вопрос может относиться к моему вопросу (-b-), когда автор применяет "xor" в "nnz", и снова уравнение для "xor" (вопрос b) выглядит странным для меня.

п.с.

и мое понимание Python и LSH находятся на начальном уровне, и я как бы вхожу в цикл для решения этой проблемы. спасибо, что нашли время, чтобы пройти через мою путаницу, а также коды

1 ответ

Решение

А. Это сдвиг влево: https://docs.python.org/2/reference/expressions.html Он сдвигает биты влево.

б. Обратите внимание, что ^ это не "в силу", а "побитовый XOR" в Python.

с. Как говорится в комментарии: он определяет "количество бит на подпись" как 2**101024

д. Строки вычисляют побитовое И num а также num + 1, Назначение функции задокументировано в комментарии выше: "# get number of '1's in binary"

Другие вопросы по тегам