Wolfram Research

Function Repository Resource:

MultispacePlot3D

Source Notebook

Plot multispace in 3D

Contributed by: Nikolay Murzin

ResourceFunction["MultispacePlot3D"][mwf]

returns a visualisation of multispace for multiway function mwf.

ResourceFunction["MultispacePlot3D"][mwf,prop]

returns the property prop involved in computing visualisation of multispace.

Details and Options

Property prop may be one of following:
"RawGraphs" return a list of 2D graphs without computing a 3D embedding
"Association" an association returned by an underlying algorithm
"Graph" GraphPlot3D of a multispace
"View" Graphics3D with convenient controls (default)
Options may include any option for GraphPlot3D or the resource functions MultiPerspectiveEmbedding and MultiPerspectiveEmbeddingViewer. ResourceFunction["MultispacePlot3D"] also accepts the following options:
"ObjectType" "State" "State" or "Event" multispace
"InfiniteDistanceIncrement" 1 additional distance between disconnected vertices
"DistanceMatrixWeights" Automatic vector of coefficients to multiply each distance matrix with
Method "MPSE" algorithm to use (only one is currently supported)

Examples

Basic Examples

Return raw graphs of a multiway system:

In[1]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwaySystem"][{"A" -> "AB", "B" -> "A"}, {"A"}, 6, ##] &, "RawGraphs"]
Out[1]=

Return an association with results of an embedding algorithm:

In[2]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwaySystem"][{"A" -> "AB", "B" -> "A"}, {"A"}, 6, ##] &, "Association"]
Out[2]=

Return 3D graphics for a resulting graph:

In[3]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwayTuringMachine"][{1507, 2506, 3506}, {{1, 1, 0}, {0, 1, 0, 1}}, 4, ##] &, "Graph"]
Out[3]=

Add multiperspective controls to view the resulting graph:

In[4]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwayTuringMachine"][{1507, 2506, 3506}, {{1, 1, 0}, {0, 1, 0, 1}}, 4, ##] &, "View"]
Out[4]=

Options

ObjectType

Plot multispace of a Turing machine for events :

In[5]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwayTuringMachine"][{1507, 2506, 3506}, {{1, 1, 0}, {0, 1, 0, 1}}, 4, ##] &, "RawGraphs", "ObjectType" -> "Event"]
Out[5]=

Or in 3D:

In[6]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwayTuringMachine"][{1507, 2506, 3506}, {{1, 1, 0}, {0, 1, 0, 1}}, 4, ##] &, "ObjectType" -> "Event"]
Out[6]=

InfiniteDistanceIncrement

Increase distance between branchially disconnected states:

In[7]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwaySystem"][{"A" -> "AB", "B" -> "A"}, {"A"}, 6, ##] &, "Graph", "InfiniteDistanceIncrement" -> 100]
Out[7]=

DistanceMatrixWeights

Weights are constant multipliers of distances after normalization; they go in order {time, space, branchial space}:

In[8]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwaySystem"][{"A" -> "AB", "B" -> "A"}, {"A"}, 6, ##] &, "Graph", "DistanceMatrixWeights" -> {1, 1, 2}]
Out[8]=

Scope

Options can be passed to the underlying algorithm:

In[9]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwaySystem"][{"A" -> "AB", "B" -> "A"}, {"A"}, 6, ##] &, "Association", "TrainingProgressReporting" -> "Verbose"]
Out[9]=

Or to the resulting Graphics3D object:

In[10]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwaySystem"][{"A" -> "AB", "B" -> "A"}, {"A"}, 6, ##] &, "Graph", ImageSize -> Large]
Out[10]=

Resource History

Related Resources

License Information