Reference
NoncommutativeGraphs.AlgebraShape
— TypeThe structure of a finite dimensional C*-algebra.
- For example,
[1 2; 3 4]
corresponds to S₀ = M₁⊗I₂ ⊕ M₃⊗I₄. - For an n-dimensional non-commutative graph use
[1 n]
for S₀ = Iₙ. - For an n-vertex classical graph use
ones(Integer, n, 2)
for S₀ = diagonals.
NoncommutativeGraphs.S0Graph
— TypeS0Graph(sig::AlgebraShape, S::Subspace{ComplexF64, 2})
S0Graph(g::AbstractGraph)
Represents an S₀-graph as defined in arxiv:1002.2514.
n::Integer
Dimension of Hilbert space A such that S ⊆ L(A)
sig::Array{var"#s12",2} where var"#s12"<:Integer
Structure of C*-algebra S₀
S::Subspaces.Subspace{Complex{Float64},2}
Subspace that defines the graph
S0::Subspaces.Subspace{Complex{Float64},2}
C*-algebra S₀
S1::Subspaces.Subspace{Complex{Float64},2}
Commutant of C*-algebra S₀
D::Array{Float64,2}
Block scaling array D from definition 23 of arxiv:2101.00162
NoncommutativeGraphs.complement
— Methodcomplement(g::S0Graph) -> S0Graph
Returns the complement graph perp(S) + S₀.
NoncommutativeGraphs.create_S0_S1
— Methodcreate_S0_S1(sig::AlgebraShape) -> Tuple{Subspace, Subspace}
Create a C*-algebra and its commutant with the given structure.
NoncommutativeGraphs.dsw
— Methoddsw(g::S0Graph, w::AbstractArray{var"#s13",2} where var"#s13"<:Number; use_diag_optimization, eps, verbose) -> NamedTuple{(:λ, :x, :Z),_A} where _A<:Tuple
Compute weighted θ using theorem 14 of arxiv:2101.00162.
Returns optimal λ, x, and Z values in a named tuple. If use_diag_optimization=true
(the default) then x ⪰ w
and x
is in the commutant of S₀. By theorem 29 of arxiv:2101.00162, θ(g, w) = θ(g, x).
NoncommutativeGraphs.dsw_schur
— Methoddsw_schur(g::S0Graph) -> NamedTuple{(:λ, :w, :Z),Tuple{Convex.AbstractExpr,Convex.AbstractExpr,Convex.AbstractExpr}}
Schur complement form of weighted θ from theorem 14 of arxiv:2101.00162.
Returns λ, w, and Z variables (for Convex.jl) in a named tuple.
See also: dsw_schur2
.
NoncommutativeGraphs.dsw_schur2
— Methoddsw_schur2(g::S0Graph) -> NamedTuple{(:λ, :w, :Z),Tuple{Convex.AbstractExpr,Convex.AbstractExpr,Convex.AbstractExpr}}
Schur complement form of weighted θ from theorem 14 of arxiv:2101.00162, optimized for the case S₀ ≠ ℂI, at the cost of w being constrained to S₁ (the commutant of S₀).
Returns λ, w, and Z variables (for Convex.jl) in a named tuple.
See also: dsw_schur2
.
NoncommutativeGraphs.dsw_via_complement
— Methoddsw_via_complement(g::S0Graph, w::AbstractArray{var"#s17",2} where var"#s17"<:Number; use_diag_optimization, eps, verbose) -> NamedTuple{(:λ, :x, :y, :Z),_A} where _A<:Tuple
Compute weighted θ via the complement graph, using theorem 29 of arxiv:2101.00162.
θ(S, w) = max{ tr(w x) : x ⪰ 0, y = Ψ(x), θ(Sᶜ, y) ≤ 1 }
Returns optimal λ, x, y, and Z in a named tuple.
If w is in the commutant of S₀ then the weights w and y saturate the inequality in theorem 32 of arxiv:2101.00162.
NoncommutativeGraphs.empty_S0Graph
— Methodempty_S0Graph(sig::AlgebraShape) -> S0Graph
Creates an empty S₀-graph (i.e. S=S₀) with S₀ having the given structure.
NoncommutativeGraphs.forget_S0
— Methodforget_S0(g::S0Graph) -> S0Graph
Returns an S₀-graph with S₀=ℂI.
NoncommutativeGraphs.random_S0Graph
— Methodrandom_S0Graph(sig::AlgebraShape) -> S0Graph
Creates a random S₀-graph with S₀ having the given structure.
NoncommutativeGraphs.random_S0_density
— MethodReturns a random density operator in S₀.
NoncommutativeGraphs.random_S0_unitary
— MethodReturns a random unitary in S₀.
NoncommutativeGraphs.random_S1_density
— MethodReturns a random density operator in the commutant of S₀.
NoncommutativeGraphs.random_S1_unitary
— MethodReturns a random unitary in the commutant of S₀.
NoncommutativeGraphs.vertex_graph
— Methodvertex_graph(g::S0Graph) -> S0Graph
Returns the S₀-graph with S=S₀.
NoncommutativeGraphs.Ψ
— MethodΨ(g::S0Graph, w::Union{Convex.Variable, AbstractArray{var"#s13",2} where var"#s13"<:Number}) -> Any
Block scaling superoperator Ψ from definition 23 of arxiv:2101.00162