Mysql 两个整数的汉明距离

Mysql 两个整数的汉明距离,mysql,algorithm,math,computer-science,proof,Mysql,Algorithm,Math,Computer Science,Proof,这里是mysql模式和查询 查询似乎有效,只返回行 汉明距离小于7位的 似乎以下属性适用: bit_count(a ^ b ) >= abs(bit_count(a) - bit_count(b)) 一些例子 bit_count a 1111 4 b 0000 0 a^b 1111 4 a 1010 2 b 0110 2 a^b 1100 2

这里是mysql模式和查询

查询似乎有效,只返回行 汉明距离小于7位的

似乎以下属性适用:

bit_count(a ^ b ) >= abs(bit_count(a) - bit_count(b))
一些例子

                bit_count
a     1111       4
b     0000       0
a^b   1111       4

a     1010       2
b     0110       2
a^b   1100       2

a     1001       2    
b     1001       2
a^b   0000       0
上述不平等是真的吗

如果是,有人能提供证据吗

我这样问是因为如果上述不平等是真的
我使用的索引有助于减少查询时间,这是一个证明,它可能更简单,但也不太糟糕

对于位字符串长度的归纳,基本情况是空字符串,不等式显然成立

归纳步骤是在a和B前面加一点(或附加,没有任何区别)

  • 如果我们将0前置到两者,则popcnts不会改变,因此不等式仍然成立
  • 如果我们将0前置到其中一个,而将1前置到另一个,那么它们的XOR将多设置一个位,因此LHS将上升1。在RHS中,其中一个POPCNT上升(不管哪一个,绝对差是可交换的),因此RHS将上升1(与LHS相同,没有问题)或下降1(仍然很好,RHS允许小于LHS,但这就是为什么它不相等)
  • 如果我们将1前置到两者,它们的XOR不会改变,因此LHS保持不变。在RHS中,两个POPCNT都增加1,它们相互抵消,因此RHS也保持不变

因此,这个不等式适用于任何长度的位字符串。

这里有一个证明,它可能做得更简单,但也不太糟糕

对于位字符串长度的归纳,基本情况是空字符串,不等式显然成立

归纳步骤是在a和B前面加一点(或附加,没有任何区别)

  • 如果我们将0前置到两者,则popcnts不会改变,因此不等式仍然成立
  • 如果我们将0前置到其中一个,而将1前置到另一个,那么它们的XOR将多设置一个位,因此LHS将上升1。在RHS中,其中一个POPCNT上升(不管哪一个,绝对差是可交换的),因此RHS将上升1(与LHS相同,没有问题)或下降1(仍然很好,RHS允许小于LHS,但这就是为什么它不相等)
  • 如果我们将1前置到两者,它们的XOR不会改变,因此LHS保持不变。在RHS中,两个POPCNT都增加1,它们相互抵消,因此RHS也保持不变

因此,这个不等式适用于任何长度的位字符串。

它是真的(通过SMT求解确定),没有证据是真的(通过SMT求解确定),没有证据是非常好的解释非常好的解释