瀏覽代碼

Printing stabilizers

master
Pete Shadbolt 8 年之前
父節點
當前提交
dbd60f695b
共有 3 個文件被更改,包括 37 次插入7 次删除
  1. +1
    -0
      .gitignore
  2. +21
    -7
      abp.py
  3. +15
    -0
      tests/test_stabilizer.py

+ 1
- 0
.gitignore 查看文件

@@ -1,5 +1,6 @@
# Project-specific
ab/
anders_briegel

# Byte-compiled / optimized / DLL files
__pycache__/


+ 21
- 7
abp.py 查看文件

@@ -1,14 +1,26 @@
from clifford import *

"""
Porting Anders and Briegel to Python
"""
Porting Anders and Briegel to Python
"""

stab_rep = {None: "-", 0: "X", 1: "Y", 2: "Z"}

class Stabilizer(object):

def __init__(self, graph):
self.paulis = [[None for i in range(graph.nqubits)]
for j in range(graph.nqubits)]

def __str__(self):
return "\n".join(" ".join(stab_rep[x] for x in row) for row in self.paulis)


class Vertex(object):

def __init__(self, index):
self.index = index
self.vertex_operator = lco_h;
self.vertex_operator = lco_h
self.neighbors = set()

def edgelist(self):
@@ -21,6 +33,7 @@ class Vertex(object):
class GraphRegister(object):

def __init__(self, n):
self.nqubits = n
self.vertices = [Vertex(i) for i in xrange(n)]

def add_edge(self, v1, v2):
@@ -38,12 +51,13 @@ class GraphRegister(object):
self.add_edge(v1, v2)

def edgelist(self):
return map(tuple, frozenset(frozenset((v.index, n))
for v in self.vertices
for n in v.neighbors))
return map(tuple, frozenset(frozenset((v.index, n))
for v in self.vertices
for n in v.neighbors))

def __str__(self, ):
return "\n".join(str(v) for v in self.vertices if len(v.neighbors) > 0)
return "\n".join(str(v) for v in self.vertices
if len(v.neighbors) > 0)

if __name__ == '__main__':
g = GraphRegister(10)


+ 15
- 0
tests/test_stabilizer.py 查看文件

@@ -0,0 +1,15 @@
from nose import with_setup
import abp

def setup():
global g
g = abp.GraphRegister(10)
g.add_edge(0,1)
g.add_edge(1,2)
g.add_edge(2,0)

@with_setup(setup)
def test_adding():
s = abp.Stabilizer(g)
print s


Loading…
取消
儲存