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::IntegerDimension of Hilbert space A such that S ⊆ L(A)
sig::Array{var"#s12",2} where var"#s12"<:IntegerStructure 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) -> S0GraphCreates 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) -> S0GraphCreates 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