一类树哈希方法

一类树哈希方法

\(s(x)\) 表示子树 \(x\) 的哈希值(对 \(2^{64}\) 取模),则:

\[s(x)=1+\sum _{v\in son_x} f(s(v)) \]

其中 \(f\) 是整数到整数的映射,可以使用 Xor Shift,可以在 Xor Shift 异或一个固定的随机值,64 位下安全的 Xor Shift 如下:

ull mix=mt19937_64(chrono::steady_clock::now().time_since_epoch().count())();
struct xor_shift {
	ull operator()(ull x) const {
		x^=mix;
		x^=(x<<13);
		x^=(x>>7);
		return x^(x<<17);
	}
};
posted @ 2025-11-07 07:19  dengchengyu  阅读(3)  评论(0)    收藏  举报