// nearest Basis to stored Value
        public override void Evaluate(IClassicalState state)
        {
            int count = ReferenceBasis.CountElements;

            double stateValue = state.Value;
            double[] distances = new double[count];

            // CALCULAR DISTANCIAS
            double basisElementValue;
            for (int i = 0; i < count; i++)
            {
                basisElementValue = ReferenceBasis.getState(i).Value;
                distances[i] = System.Math.Abs(stateValue - basisElementValue);
            }

            // ELEJIR LA POSICION DE LA MENOR
            double result = double.PositiveInfinity;
            int resultPos = -1;
            double value;
            for (int j = 0; j < count; j++)
            {
                value = distances[j];
                if (value < result)
                {
                    result = value;
                    resultPos = j;
                }
            }

            // DEVOLVER LA POSICION DEL LA MENOR DISTANCIA
            MeasuredElement = resultPos;
        }
        public override void Evaluate(IClassicalState state)
        {
            IClassicalStateDebugger debuggerData = state.generateClassicalDebugger();
            IClassicalStateDebugger debuggerElement = ReferenceBasis.getState(ReferenceElement).generateClassicalDebugger();

            debuggerData.setValue(debuggerElement.getValue());
        }
 public override void Evaluate(IClassicalState state)
 {
     if (EffectiveDelayTicks != 0)
     {
         long startWait = System.DateTime.UtcNow.Ticks;
         while (System.DateTime.UtcNow.Ticks - startWait < EffectiveDelayTicks)
         {
             System.Windows.Forms.Application.DoEvents();
         }
     }
 }
 public override void Evaluate(IClassicalState state)
 {
     if (EffectiveNoiseFactor != 0)
     {
         IClassicalStateDebugger debugger = state.generateClassicalDebugger();
         double value = debugger.getValue();
         double size = FactoryRandom.GetSingleNormalized() / EffectiveNoiseFactor;
         double random = FactoryRandom.GetSingleDoubleIntervalByCenter(value, size / 2);
         debugger.setValue(random);
     }
 }
예제 #5
0
 public ClStateDebugger(IClassicalState state)
     : base()
 {
     if (state is AbstractClassicalState)
     {
         _abstractState = (AbstractClassicalState)state;
     }
     else
     {
         throw new ExceptionClassicalState();
     };
 }
        public AbstractClassicalData(int numLevels, int size, bool initialize)
            : base()
        {
            IClassicalState[] states = new IClassicalState[size];
            for (int index=0;index<size;index++)
            {
                states[index] = FactoryClassicalState.generateState(numLevels);
            }
            _internalCollection = FactoryClassicalState.generateStateCollection(states);

            if (initialize) { Initialize(); }
        }
        public IClassicalState[] ExportAsArray()
        {
            int count = countObjects();
            IClassicalState[] result = new IClassicalState[count];

            for (int i = 0; i < count; i++)
            {
                result[i] = (IClassicalState)getObject(i);
            }

            return result;
        }
 protected virtual void PropagateOnClassicalReceive(IStation station, IClassicalState state)
 {
     _counterReceivedClassical++;
     if (OnClassicalReceive != null)
     { OnClassicalReceive(this, state); };
 }
        private void GENE_SlaveProcessBasisData(IProtocolAgent agent, IClassicalState state)
        {
            int receivedPos = Slave.counterReceivedClassical - 1;
                BB84Log("GENE: STEP 2: ", receivedPos, " | Slave State Receive: ", state.generateClassicalDebugger().ShortDebug);

                IClassicalBit classicalBit = FactoryClassicalData.generateBit(false);
                classicalBit.AssociateState(state);
                bool decode = FactoryClassicalData.decodeBitByUsualBasis(classicalBit);
                BB84Log("GENE: STEP 2: ", receivedPos, " | Slave conversion into Bit: ", decode.ToString());

                // get element
                bool usedBasis = (bool)GENE_slaveUsedBasisCollection[receivedPos];
                //bool decodedBit = (bool)GENE_slaveDecodedBitCollection[receivedPos];

                bool coincidence = (usedBasis == decode);
                if (coincidence)
                { BB84Log("GENE: STEP 2:              =========> Slave found coincidence in Basis at POS: ", receivedPos); }

                // store 'coincidence' pos
                GENE_slaveCoincidences.Add(coincidence);
        }
예제 #10
0
        private void GENE_MasterProcessCoincidencesData(IProtocolAgent agent, IClassicalState state)
        {
            // no hace falta comparar con las bases usadas o datos usadas
                // en este caso solo se transmite si el la estación cliente detecto coincidencia

                int receivedPos = Master.counterReceivedClassical - 1;
                BB84Log("GENE: STEP 3: ", receivedPos, " | Master State Receive: ", state.generateClassicalDebugger().ShortDebug);

                IClassicalBit classicalBit = FactoryClassicalData.generateBit(false);
                classicalBit.AssociateState(state);
                bool decode = FactoryClassicalData.decodeBitByUsualBasis(classicalBit);
                BB84Log("GENE: STEP 3: ", receivedPos, " | Master conversion into Bit: ", decode.ToString());

                if (decode)
                { BB84Log("GENE: STEP 3:              =========> Master found coincidence in Basis at POS: ", receivedPos); }

                GENE_masterCoincidences.Add(decode);
        }
예제 #11
0
        private void GENE_EavesdropperProcessCoincidencesData(IProtocolAgent agent, IClassicalState state)
        {
            int receivedPos = Eavesdropper.counterReceivedClassical - 1;
                BB84Log("GENE: STEP 3: ", receivedPos, " | Eavesdropper State Receive: ", state.generateClassicalDebugger().ShortDebug);

                IClassicalBit classicalBit = FactoryClassicalData.generateBit(false);
                classicalBit.AssociateState(state);
                bool decode = FactoryClassicalData.decodeBitByUsualBasis(classicalBit);
                BB84Log("GENE: STEP 3: ", receivedPos, " | Eavesdropper conversion into Bit: ", decode.ToString());

                if (decode)
                { BB84Log("GENE: STEP 3:              =========> Eavesdropper found in Basis coincidence at POS: ", receivedPos); }

                GENE_eavesdropperCoincidences.Add(decode);
        }
예제 #12
0
        private void GENE_EavesdropperProcessBasisData(IProtocolAgent agent, IClassicalState state)
        {
            //int receivedPos = Eavesdropper.counterReceivedClassical - 1;
                //BB84Log(receivedPos, " | Eavesdropper State Receive: ", state.generateClassicalDebugger().ShortDebug);

                //IClassicalBit classicalBit = FactoryClassicalData.generateBit(false);
                //classicalBit.AssociateState(state);
                //bool decode = FactoryClassicalData.decodeBitByBasis(classicalBit, FactoryRandom.GetSingleBinary());
                //BB84Log(receivedPos, " | Eavesdropper conversion into Bit: ", decode.ToString());

                //// get element
                //bool usedBasis = (bool)GENE_eavesdropperUsedBasisCollection[receivedPos];
                ////bool decodedBit = (bool)GENE_eavesdropperDecodedBitCollection[receivedPos];

                //bool coincidence = (usedBasis == decode);
                //if (coincidence)
                //{ BB84Log("             =========> Eavesdropper found coincidence at POS: ", receivedPos); }

                //// store 'coincidence' pos
                //GENE_eavesdropperCoincidences.Add(coincidence);
        }
예제 #13
0
        private void CHEC_SlaveProcessCheckValues(IProtocolAgent agent, IClassicalState state)
        {
            int receivedPos = Slave.counterReceivedClassical - 1;
                BB84Log("CHEC: STEP 2: ", receivedPos, " | Slave State Receive: ", state.generateClassicalDebugger().ShortDebug);

                IClassicalBit classicalBit = FactoryClassicalData.generateBit(false);
                classicalBit.AssociateState(state);
                bool decode = FactoryClassicalData.decodeBitByUsualBasis(classicalBit);
                BB84Log("CHEC: STEP 2: ", receivedPos, " | Slave conversion into Bit: ", decode.ToString());

                //// get index
                int index = (int)CHEC_slaveComparisonIndexes[receivedPos];
                BB84Log("CHEC: STEP 2: ", receivedPos, " | Slave stores for checking check POS ", index, " with VALUE ", decode);

                CHEC_slaveComparisonValuesReceived.Add(decode);
        }
예제 #14
0
 public void AssociateState(IClassicalState state)
 {
     InternalCollection.setObject(state, 0);
 }
 public void Send(IClassicalState state)
 {
     Station.ClassicalTransmitSynchronous(state);
 }
예제 #16
0
 public ClBasicState(IClassicalState state)
     : this(state.generateClassicalDebugger().getNumLevels(), state.Value)
 {
 }
 public static IClassicalState generateState(IClassicalState state)
 {
     IClassicalState result = generateState(state.generateClassicalDebugger().getNumLevels());
     result.Value = state.Value;
     return result;
 }
예제 #18
0
 // EVENTS
 public void transmitClassical(IProtocolAgent agent, IClassicalState state)
 {
     TesterLog("CLASSICAL TRANSMISSION " + agent.AgentName);
     TesterLog(state.generateClassicalDebugger().FullDebug);
 }
예제 #19
0
 public void receiveClassical(IProtocolAgent agent, IClassicalState state)
 {
     TesterLog("CLASSICAL RECEPTION " + agent.AgentName);
     TesterLog(state.generateClassicalDebugger().FullDebug);
 }
예제 #20
0
        private void CHEC_SlaveProcessCheckPositions(IProtocolAgent agent, IClassicalState state)
        {
            int receivedPos = Slave.counterReceivedClassical - 1;
                BB84Log("CHEC: STEP 1: ", receivedPos, " | Slave State Received: ", state.generateClassicalDebugger().ShortDebug);

                IClassicalBit classicalBit = FactoryClassicalData.generateBit(false);
                classicalBit.AssociateState(state);
                bool decode = FactoryClassicalData.decodeBitByUsualBasis(classicalBit);
                BB84Log("CHEC: STEP 1: ", receivedPos, " | Slave conversion into Bit: ", decode.ToString());

                // store and 'decodedBit'
                CHEC_slaveComparisonSelected.Add(decode);
                if (decode) //seletected
                {
                    CHEC_slaveComparisonIndexes.Add(receivedPos);
                }
        }
 protected virtual void PropagateOnClassicalTransmit(IStation station, IClassicalState state)
 {
     _counterTransmitedClassical++;
     if (OnClassicalTransmit != null)
     { OnClassicalTransmit(this, state); };
 }
예제 #22
0
 protected override void PropagateOnClassicalReceive(IStation station, IClassicalState state)
 {
     IClassicalBit tempBit = FactoryClassicalData.generateBit(false);
     tempBit.AssociateState(state);
     ReceivedData.Add(FactoryClassicalData.decodeBitByUsualBasis(tempBit));
     base.PropagateOnClassicalReceive(station,state);
 }
 public abstract void Evaluate(IClassicalState state);