Пытаясь понять 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**10
→ 1024
д. Строки вычисляют побитовое И num
а также num + 1
, Назначение функции задокументировано в комментарии выше:
"# get number of '1's in binary"