QNLP  v1.0
QNLP.encoding.simple.SimpleEncoder Class Reference
Inheritance diagram for QNLP.encoding.simple.SimpleEncoder:
Inheritance graph
Collaboration diagram for QNLP.encoding.simple.SimpleEncoder:
Collaboration graph

Public Member Functions

def __init__ (self, num_nouns, num_verbs)
 
def encode (self, bin_val, data)
 
def decode (self, bin_val, data)
 
def encode (self, bin_val)
 
def decode (self, bin_val)
 

Data Fields

 num_nouns
 
 num_verbs
 
 enc_mapping_nouns
 
 enc_mapping_verbs
 
 dec_mapping_nouns
 
 dec_mapping_verbs
 

Private Member Functions

def _gen_encoding_vals (self, num_items)
 

Detailed Description

This cyclic encoder is the simplest (and currently the only used) encoding scheme to ensure 
equal Hamming distances between items separated by n indices. Not very efficient in use of qubits,
but simple enough to implement.

Definition at line 3 of file simple.py.

Constructor & Destructor Documentation

◆ __init__()

def QNLP.encoding.simple.SimpleEncoder.__init__ (   self,
  num_nouns,
  num_verbs 
)

Definition at line 10 of file simple.py.

10  def __init__(self, num_nouns, num_verbs):
11  assert(num_nouns%2 == 0)
12  assert(num_verbs%2 == 0)
13  self.num_nouns = num_nouns
14  self.num_verbs = num_verbs
15  self.enc_mapping_nouns = self._gen_encoding_vals(num_nouns)
16  self.enc_mapping_verbs = self._gen_encoding_vals(num_verbs)
17  self.dec_mapping_nouns = { v:k for (k,v) in self.enc_mapping_nouns.items() }
18  self.dec_mapping_verbs = { v:k for (k,v) in self.enc_mapping_verbs.items() }
19 

Member Function Documentation

◆ _gen_encoding_vals()

def QNLP.encoding.simple.SimpleEncoder._gen_encoding_vals (   self,
  num_items 
)
private

Definition at line 20 of file simple.py.

20  def _gen_encoding_vals(self, num_items):
21  ""
22  num_shifts = num_items//2
23  vals = [0]*num_items
24  for i in range(1, num_shifts+1):
25  vals[i] = vals[i-1] + (0b1 << (i-1))
26  for i in range(1, num_shifts):
27  vals[i + num_shifts ] = vals[i + num_shifts -1] - (0b1 << (i-1))
28  val_dict = { k:v for (k,v) in zip(range(len(vals)), vals)}
29  return val_dict
30 

◆ decode() [1/2]

def QNLP.encoding.encoder_base.EncoderBase.decode (   self,
  bin_val 
)
inherited

Reimplemented in QNLP.encoding.obrien.OBrienEncoder.

Definition at line 13 of file encoder_base.py.

13  def decode(self, bin_val):
14  pass

◆ decode() [2/2]

def QNLP.encoding.simple.SimpleEncoder.decode (   self,
  bin_val,
  data 
)

Definition at line 44 of file simple.py.

44  def decode(self, bin_val, data):
45  val_offset = bin_val
46  if data == "nouns":
47  dec_mapping = self.dec_mapping_nouns
48  elif data == "verbs":
49  dec_mapping = self.dec_mapping_verbs
50  else:
51  raise Exception("Unknown data set: {}".format(data))
52  if val_offset not in self.dec_mapping:
53  raise(ValueError("Decoding index value not within expected range. Value={}".format(val_offset)))
54  return dec_mapping[val_offset]

References QNLP.encoding.obrien.OBrienEncoder.dec_mapping, QNLP.encoding.simple.SimpleEncoder.dec_mapping_nouns, and QNLP.encoding.simple.SimpleEncoder.dec_mapping_verbs.

◆ encode() [1/2]

def QNLP.encoding.encoder_base.EncoderBase.encode (   self,
  bin_val 
)
inherited

Reimplemented in QNLP.encoding.obrien.OBrienEncoder.

Definition at line 9 of file encoder_base.py.

9  def encode(self, bin_val):
10  pass
11 

◆ encode() [2/2]

def QNLP.encoding.simple.SimpleEncoder.encode (   self,
  bin_val,
  data 
)

Definition at line 31 of file simple.py.

31  def encode(self, bin_val, data):
32  val_offset = bin_val
33  if data == "nouns":
34  enc_mapping = self.enc_mapping_nouns
35  elif data == "verbs":
36  enc_mapping = self.enc_mapping_verbs
37  else:
38  raise Exception("Unknown data set: {}".format(data))
39 
40  if val_offset not in enc_mapping:
41  raise(ValueError("Encoding index value not within expected range. Value={}".format(val_offset)))
42  return enc_mapping[val_offset]
43 

References QNLP.encoding.simple.SimpleEncoder.enc_mapping_nouns, and QNLP.encoding.simple.SimpleEncoder.enc_mapping_verbs.

Field Documentation

◆ dec_mapping_nouns

QNLP.encoding.simple.SimpleEncoder.dec_mapping_nouns

Definition at line 17 of file simple.py.

Referenced by QNLP.encoding.simple.SimpleEncoder.decode().

◆ dec_mapping_verbs

QNLP.encoding.simple.SimpleEncoder.dec_mapping_verbs

Definition at line 18 of file simple.py.

Referenced by QNLP.encoding.simple.SimpleEncoder.decode().

◆ enc_mapping_nouns

QNLP.encoding.simple.SimpleEncoder.enc_mapping_nouns

Definition at line 15 of file simple.py.

Referenced by QNLP.encoding.simple.SimpleEncoder.encode().

◆ enc_mapping_verbs

QNLP.encoding.simple.SimpleEncoder.enc_mapping_verbs

Definition at line 16 of file simple.py.

Referenced by QNLP.encoding.simple.SimpleEncoder.encode().

◆ num_nouns

QNLP.encoding.simple.SimpleEncoder.num_nouns

Definition at line 13 of file simple.py.

◆ num_verbs

QNLP.encoding.simple.SimpleEncoder.num_verbs

Definition at line 14 of file simple.py.


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