public QuantumStabilizerAlgorithm(IQuantumStatedItem item, double strength = 1.0, bool importState = true)
        {
            Contract.Requires(item != null);
            Contract.Requires(strength > 0.0);

            this.item = new ItemStabilizer(item);
            this.strength = strength;

            if (importState) ImportState();
        }
Beispiel #2
0
 public ItemStabilizer(IQuantumStatedItem item)
 {
     Contract.Requires(item != null);
     this.item = item;
 }
 private static void Restore(IQuantumStatedItem[] items, List<QuantumState> prevItems)
 {
     for (int idx = 0; idx < items.Length; idx++) items[idx].State = prevItems[idx];
 }
 private static void Tunneling(IQuantumStatedItem[] items, double strength)
 {
     double s2 = strength / 2.0;
     foreach (var item in items)
     {
         double noise = (RandomGenerator.Random.NextDouble() * strength) - s2;
         item.State += noise;
     }
 }
 private static void Save(List<QuantumState> prevItems, IQuantumStatedItem[] items)
 {
     for (int idx = 0; idx < items.Length; idx++) prevItems[idx] = items[idx].State;
 }