CISD 計算中外空間電子組態的快速哈希算法

CISD 計算中,外空間最多只能有兩個電子存在,所有可能的組合是

  • alpha 0, beta 0
  • alpha 1, beta 0
  • alpha 1, beta 1
  • alpha 2, beta 0
  • alpha 0, beta 1
  • alpha 0, beta 2

我們只需要記錄電子在哪個軌道上,而無需將外空間完整記錄爲兩個 0/1 序列。這就需要四個整數去保存電子存在的位置:[a1, b1, a2, b2]。實際體系的軌道數總是有限的,那麼我們可以將這四個數用 16 位去表示,四個數拼接爲 64 位,用這樣一個 64 位無符號整數作爲這四個數整體的哈希。

算法實現如下:

std::uint64_t Hash(unsigned a1, unsigned b1, unsigned a2 = 0, unsigned b2 = 0)
{
    std::uint64_t hash_val = 0;
    hash_val |= a1;
    hash_val <<= 16;
    hash_val |= a2;
    hash_val <<= 16;
    hash_val |= b1;
    hash_val <<= 16;
    hash_val |= b2;
    return hash_val;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章