示例#1
0
文件: Qubit.cs 项目: TCGV/QuantumSim
 private static void UpdateCache(Qstate old, Qstate @new)
 {
     foreach (var bit in cache[old])
     {
         bit.SetState(@new);
     }
     cache.Remove(old);
 }
示例#2
0
文件: Qubit.cs 项目: TCGV/QuantumSim
        public static void Combine(Qubit q1, Qubit q2)
        {
            var s1 = q1.S;
            var s2 = q2.S;

            if (s1 != s2)
            {
                var s = Qstate.Combine(s1, s2);
                UpdateCache(s1, s);
                UpdateCache(s2, s);
            }
        }
示例#3
0
文件: Qstate.cs 项目: TCGV/QuantumSim
        public static Qstate Combine(Qstate s1, Qstate s2)
        {
            var s = new Qstate();

            s.v      = AlgebraUtility.TensorProduct(s1.v, s2.v);
            s.posMap = s2.posMap;
            var offset = s2.posMap.Count;

            foreach (var pair in s1.posMap)
            {
                s.posMap.Add(pair.Key, pair.Value + offset);
            }
            return(s);
        }
示例#4
0
文件: Qubit.cs 项目: TCGV/QuantumSim
 private void SetState(Qstate s)
 {
     S = s;
     AddToCache();
 }