浏览代码

Reverse order of tuples in GraphState.act_circuit

Seems vaguely sensible. Haven't tested because I'm on a plane.
master
Pete Shadbolt 8 年前
父节点
当前提交
56e65b6c7f
共有 5 个文件被更改,包括 14 次插入14 次删除
  1. +3
    -3
      abp/graphstate.py
  2. +2
    -2
      doc/index.rst
  3. +5
    -5
      tests/mock.py
  4. +2
    -2
      tests/test_graphstate.py
  5. +2
    -2
      tests/test_mercedes.py

+ 3
- 3
abp/graphstate.py 查看文件

@@ -99,14 +99,14 @@ class GraphState(object):
def act_circuit(self, circuit):
""" Run many gates in one call.

:param circuit: An iterable containing tuples of the form ``(node, operation)``. If ``operation`` is a name for a local operation (e.g. ``6``, ``hadamard``) then that operation is performed on ``node``. If ``operation`` is ``cz`` then a CZ is performed on the two nodes in ``node``.
:param circuit: An iterable containing tuples of the form ``(operation, node)``. If ``operation`` is a name for a local operation (e.g. ``6``, ``hadamard``) then that operation is performed on ``node``. If ``operation`` is ``cz`` then a CZ is performed on the two nodes in ``node``.

Example (makes a Bell pair)::

>>> g.act_circuit([(0, "hadamard"), (1, "hadamard"), ((0, 1), "cz")])
>>> g.act_circuit([("hadamard", 0), ("hadamard", 1), ("cz", (0, 1))])

"""
for node, operation in circuit:
for operation, node in circuit:
if operation == "cz":
self.act_cz(*node)
else:


+ 2
- 2
doc/index.rst 查看文件

@@ -166,8 +166,8 @@ This ought to pop open a browser window at ``http://localhost:5001/``. You can r

>>> from abp import GraphState, VizClient
>>> g = GraphState(10)
>>> g.act_circuit([(i, "hadamard") for i in range(10)])
>>> g.act_circuit([((i, i+1), "cz") for i in range(9)])
>>> g.act_circuit([("hadamard", i) for i in range(10)])
>>> g.act_circuit([("cz", (i, i+1)) for i in range(9)])
>>> v = VizClient()
>>> v.update(g)



+ 5
- 5
tests/mock.py 查看文件

@@ -42,7 +42,7 @@ class AndersWrapper(graphsim.GraphRegister):
return self.to_json() == other.to_json()

def act_circuit(self, circuit):
for node, operation in circuit:
for operation, node in circuit:
if operation == "cz":
self.act_cz(*node)
else:
@@ -106,8 +106,8 @@ def named_node_graph():
""" A graph with named nodes"""
edges = (0, 1), (1, 2), (2, 0), (0, 3), (100, 200), (200, "named")
g = ABPWrapper([0, 1, 2, 3, 100, 200, "named"])
g.act_circuit((i, "hadamard") for i in g.node)
g.act_circuit((edge, "cz") for edge in edges)
g.act_circuit(("hadamard", i) for i in g.node)
g.act_circuit(("cz", edge) for edge in edges)
return g


@@ -115,8 +115,8 @@ def simple_graph():
""" A simple graph to test with"""
edges = (0, 1), (1, 2), (2, 0), (0, 3), (100, 200)
g = ABPWrapper([0, 1, 2, 3, 100, 200])
g.act_circuit((i, "hadamard") for i in g.node)
g.act_circuit((edge, "cz") for edge in edges)
g.act_circuit(("hadamard", i) for i in g.node)
g.act_circuit(("cz", edge) for edge in edges)
return g




+ 2
- 2
tests/test_graphstate.py 查看文件

@@ -94,8 +94,8 @@ def test_local_complementation():
""" Test that local complementation works okay """
pairs = (0, 1), (0, 3), (1, 3), (1, 2),
psi = GraphState(range(4), vop="hadamard")
psi.act_circuit([(i, "hadamard") for i in psi.node])
psi.act_circuit([(pair, "cz") for pair in pairs])
psi.act_circuit([("hadamard", i) for i in psi.node])
psi.act_circuit([("cz", pair) for pair in pairs])
old_edges = psi.edgelist()
old_state = psi.to_state_vector()
psi.local_complementation(1)


+ 2
- 2
tests/test_mercedes.py 查看文件

@@ -4,8 +4,8 @@ from mock import simple_graph

def linear_cluster(n):
g = GraphState(range(n), vop="hadamard")
g.act_circuit([(i, "hadamard") for i in range(n)])
g.act_circuit([((i, i+1), "cz") for i in range(n-1)])
g.act_circuit([("hadamard", i) for i in range(n)])
g.act_circuit([("cz", (i, i+1)) for i in range(n-1)])
return g




正在加载...
取消
保存