Vertices
Vertices are extreme points of the local polytope. They correspond to deterministic strategies. The vertex representation of a convex polytope can be computed via the Polyhedra.jl interface.
Polyhedra.vrep
— Functionvrep(scenario::Scenario; vertices_kwargs...) :: XPORTA.Polyhedron
Constructs a Polyhedron
using the vertex representation. See Polyhedra.jl for more details. The vertices_kwargs
keyword arguments are passed through to the vertices
function for each Scenario
.
This function differs from the Polyhedra.jl implementation in that it returns a Polyhedron
type rather than a V-Representation
. This is done to reduce the number of steps required to construct a polyhedron.
Vertex Enumeration
The vertices of each local polytope can be enumerated for the specified Bell Scenario
.
BellScenario.LocalPolytope.vertices
— Functionvertices( scenario :: BlackBox;
rep = "normalized" :: String
) :: Vector{Vector{Int64}}
Generates the Local Polytope vertices for a BlackBox scenario. Valid represenations are:
*rep == "normalized"
or rep == "generalized"
.
vertices( scenario :: LocalSignaling;
rep = "normalized" :: String
rank_d_only = false :: Bool
) :: Vector{Vector{Int64}}
Generates the deterministic strategies for the local polytope of LocalSignaling
scenarios. The rank_d_only
keyword arg specifies whether to exclude vertices which use fewer dits of communication and thus have a matrix rank less than d.
The vertices computed in this method are vectorized directly from a strategy matrix by column-majorization. These vertices are distinct from those produced by older LocalPolytope.vertices()
methods which are row-majorized.
vertices( scenario :: BipartiteNonSignaling,
rep="non-signaling" :: String
) :: Vector{Vector{Int64}}
Enumerates the LocalPolytope vertices for the BipartiteNonSignaling
scenario. Valid representations for the vertices include:
"non-signaling"
,"normalized"
,"generalized"
A DomainError
is thrown if a valid representation is not specified.
Vertex Counting
Count the number of local polytope vertices for the specified Bell Scenario
.
BellScenario.LocalPolytope.num_vertices
— Functionnum_vertices( scenario :: BlackBox ) :: Int64
For $n$ outputs and $m$ inputs the number of vertices $|\mathcal{V}|$ are counted:
\[|\mathbf{V}| = n^m\]
num_vertices( scenario :: LocalSignaling;
rank_d_only = false :: Bool
) :: Int64
If rank_d_only = true
, then only strategies using d
-dits are counted. For $X$ inputs and $Y$ outputs the number of vertices $|\mathcal{V}|$ are counted:
\[|\mathbf{V}| = \sum_{c=1}^d \left\{X \atop c \right\}\binom{Y}{c}c!\]
num_vertices( scenario :: BipartiteNonSignaling ) :: Int64
For two non-signaling black-boxes with $X$ and $Y$ inputs and $A$ and $B$ outputs respectively, the number of vertices $|\mathcal{V}|$ are counted:
\[|\mathbf{V}| = A^X B^Y\]
Vertex Dimension
Get the dimension of specified vertex representation.
BellScenario.LocalPolytope.vertex_dims
— FunctionFor the given Scenario
, returns the length of the vertex in the representation specified by rep
. A DomainError
is thrown if the rep
is invalid.
vertex_dims(scenario :: Union{BlackBox,LocalSignaling}, rep :: String) :: Int64
Valid values of rep
are "normalized"
and "generalized"
.
vertex_dims( scenario:: BipartiteNonSignaling, rep :: String ) :: Int64
Valid values for rep
include:
- "non-signaling"
- "normalized"
- "generalized"