https://scrapbox.io/Example0911/ARC124_B_XOR_Matching_2
xor
2024/6/3 9:40:00
xor・rotate_right・rotate_leftで、ベクトル化された微分可能な述語論理が構成できる気がするんだ……。
述語論理の述語と個体を{0,1}
のベクトルであるところのビット列で表現したい。
正規表現の微分が定義できるんだから、述語論理の微分ぐらいイケるやろ。
XOR = (x,y) => Math.max(x,y) - Math.min(x,y)
この定義からは更に回転している臭いがむんむんにしている。
図で見ると、位相の移動を感じる。
こうしてやると、更に回転っぽくなる。原点を中心に回っている感じがする。
XOR = (x, y) => (1-Math.cos(Math.PI * x - (Math.PI * y))) / 2
xorをcosとsinで定義できた。
xやyが1.0より大きい値にはみ出したときにもxorっぽく振る舞うのが嬉しい。
ビット列のコサイン類似度 = popcount(xor(a,b)) / ((popcount(a)**0.5)*(popcount(b)**0.5))