QNLP  v1.0
QNLP.proc.HammingDistance.HammingDistanceExpITheta Class Reference
Inheritance diagram for QNLP.proc.HammingDistance.HammingDistanceExpITheta:
Inheritance graph
Collaboration diagram for QNLP.proc.HammingDistance.HammingDistanceExpITheta:
Collaboration graph

Public Member Functions

def __init__ (self, num_bits, simulator)
 
def encode_hamming (self, reg_mem, reg_aux, pattern)
 
def hamming_aux_overwrite (self, reg_mem, reg_aux)
 
def calc (self, reg_mem, reg_aux, pattern)
 
def calc (self)
 

Data Fields

 num_bits
 
 sim
 

Private Member Functions

def _step1 (self, reg_mem, reg_aux, pattern)
 
def _step2 (self, reg_mem, reg_aux)
 
def _step3 (self, reg_mem, reg_aux)
 
def _step4 (self, reg_mem, reg_aux)
 
def _step5 (self, reg_aux)
 

Detailed Description

Default approach taken by Trugenberger, and others to encode
Hamming distance into the state phase. Results can be skewed
by high degeneracy in encoded patterns.

Definition at line 33 of file HammingDistance.py.

Constructor & Destructor Documentation

◆ __init__()

def QNLP.proc.HammingDistance.HammingDistanceExpITheta.__init__ (   self,
  num_bits,
  simulator 
)

Reimplemented from QNLP.proc.HammingDistance.HammingDistance.

Definition at line 39 of file HammingDistance.py.

39  def __init__(self, num_bits, simulator):
40  super().__init__(num_bits, simulator)
41 

Member Function Documentation

◆ _step1()

def QNLP.proc.HammingDistance.HammingDistanceExpITheta._step1 (   self,
  reg_mem,
  reg_aux,
  pattern 
)
private

Definition at line 42 of file HammingDistance.py.

42  def _step1(self, reg_mem, reg_aux, pattern):
43  self.sim.encodeToRegister(pattern, reg_aux[0:-2], len(reg_mem))
44 

References QNLP.proc.HammingDistance.HammingDistance.sim.

Referenced by QNLP.proc.HammingDistance.HammingDistanceExpITheta.encode_hamming().

Here is the caller graph for this function:

◆ _step2()

def QNLP.proc.HammingDistance.HammingDistanceExpITheta._step2 (   self,
  reg_mem,
  reg_aux 
)
private

Definition at line 45 of file HammingDistance.py.

45  def _step2(self, reg_mem, reg_aux):
46  for i in range(len(reg_aux)-2):
47  self.sim.applyGateCX(reg_aux[i], reg_mem[i])
48  self.sim.applyGateX(reg_mem[i])
49 

References QNLP.proc.HammingDistance.HammingDistance.sim.

Referenced by QNLP.proc.HammingDistance.HammingDistanceExpITheta.encode_hamming().

Here is the caller graph for this function:

◆ _step3()

def QNLP.proc.HammingDistance.HammingDistanceExpITheta._step3 (   self,
  reg_mem,
  reg_aux 
)
private

Definition at line 50 of file HammingDistance.py.

50  def _step3(self, reg_mem, reg_aux):
51  theta = np.pi / (2.0 * len(reg_mem))
52 
53  UMat = self._UMatrix(theta)
54  CUMatPowMin2 = self._UMatrixPowMin2(theta)
55 
56  for j in range(len(reg_mem)):
57  self.sim.applyGateU(UMat, reg_mem[j], "U")
58  for i in range(len(reg_mem)):
59  self.sim.applyGateCU(CUMatPowMin2, reg_aux[-2], reg_mem[i], "U")
60 

References QNLP.proc.HammingDistance.HammingDistance._UMatrix(), QNLP.proc.HammingDistance.HammingDistance._UMatrixPowMin2(), and QNLP.proc.HammingDistance.HammingDistance.sim.

Referenced by QNLP.proc.HammingDistance.HammingDistanceExpITheta.encode_hamming().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _step4()

def QNLP.proc.HammingDistance.HammingDistanceExpITheta._step4 (   self,
  reg_mem,
  reg_aux 
)
private

Definition at line 61 of file HammingDistance.py.

61  def _step4(self, reg_mem, reg_aux):
62  for i in range(len(reg_aux)-2):
63  self.sim.applyGateX(reg_mem[i])
64  self.sim.applyGateCX(reg_aux[i], reg_mem[i])
65 

References QNLP.proc.HammingDistance.HammingDistance.sim.

Referenced by QNLP.proc.HammingDistance.HammingDistanceExpITheta.encode_hamming().

Here is the caller graph for this function:

◆ _step5()

def QNLP.proc.HammingDistance.HammingDistanceExpITheta._step5 (   self,
  reg_aux 
)
private

Definition at line 66 of file HammingDistance.py.

66  def _step5(self, reg_aux):
67  self.sim.collapseToBasisZ(reg_aux[-2], False)
68 

References QNLP.proc.HammingDistance.HammingDistance.sim.

Referenced by QNLP.proc.HammingDistance.HammingDistanceExpITheta.encode_hamming().

Here is the caller graph for this function:

◆ calc() [1/2]

def QNLP.proc.HammingDistance.HammingDistance.calc (   self)
inherited

Definition at line 30 of file HammingDistance.py.

30  def calc(self):
31  pass
32 

◆ calc() [2/2]

def QNLP.proc.HammingDistance.HammingDistanceExpITheta.calc (   self,
  reg_mem,
  reg_aux,
  pattern 
)

Definition at line 85 of file HammingDistance.py.

85  def calc(self, reg_mem, reg_aux, pattern):
86  self.encode_hamming(reg_mem, reg_aux, pattern)
87 

References QNLP.proc.HammingDistance.HammingDistanceExpITheta.encode_hamming().

Here is the call graph for this function:

◆ encode_hamming()

def QNLP.proc.HammingDistance.HammingDistanceExpITheta.encode_hamming (   self,
  reg_mem,
  reg_aux,
  pattern 
)

Definition at line 69 of file HammingDistance.py.

69  def encode_hamming(self, reg_mem, reg_aux, pattern):
70  self.sim.applyGateH(reg_aux[-2])
71  self._step1(reg_mem, reg_aux, pattern)
72  self._step2(reg_mem, reg_aux)
73  self._step3(reg_mem, reg_aux)
74  self._step4(reg_mem, reg_aux)
75  self.sim.applyGateH(reg_aux[-2])
76  self._step5(reg_aux)
77 

References QNLP.proc.HammingDistance.HammingDistanceExpITheta._step1(), QNLP.proc.HammingDistance.HammingDistanceExpITheta._step2(), QNLP.proc.HammingDistance.HammingDistanceExpITheta._step3(), QNLP.proc.HammingDistance.HammingDistanceExpITheta._step4(), QNLP.proc.HammingDistance.HammingDistanceExpITheta._step5(), and QNLP.proc.HammingDistance.HammingDistance.sim.

Referenced by QNLP.proc.HammingDistance.HammingDistanceExpITheta.calc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hamming_aux_overwrite()

def QNLP.proc.HammingDistance.HammingDistanceExpITheta.hamming_aux_overwrite (   self,
  reg_mem,
  reg_aux 
)

Definition at line 78 of file HammingDistance.py.

78  def hamming_aux_overwrite(self, reg_mem, reg_aux):
79  for i in range(len(reg_mem)):
80  self.sim.applyGateX(reg_aux[i])
81  self.sim.applyGateCCX(reg_mem[i], reg_aux[i], reg_aux[-1])
82  self.sim.applyGateX(reg_aux[i])
83  self.sim.applyGateCSwap(reg_mem[i], reg_aux[i], reg_aux[-1])
84 

References QNLP.proc.HammingDistance.HammingDistance.sim.

Field Documentation

◆ num_bits

QNLP.proc.HammingDistance.HammingDistance.num_bits
inherited

◆ sim


The documentation for this class was generated from the following file: