documentation:release:3.5:graph:lattice

# Differences

This shows you the differences between two versions of the page.

 — documentation:release:3.5:graph:lattice [2019/08/13 10:31] (current) Line 1: Line 1: + ====== BigObject Lattice<​Decoration,​ SeqType> ====== + //from application [[..:​graph|graph]]//​\\ + \\ + A Lattice is a poset where join and meet exist for any two elements. It is realized as a directed graph. + + ? Type Parameters: + :: ''​Decoration'':​ additional data associated with each node.  Should be derived from ''​[[..:​graph#​BasicDecoration |BasicDecoration]]''​. + :: ''​SeqType'':​ tag describing the node ordering, should be ''​[[..:​graph#​Sequential |Sequential]]''​ or ''​[[..:​graph#​Nonsequential |Nonsequential]]''​. + ? derived from: + : ''​[[..:​graph:​Graph |Graph]]''​ + ? Specializations:​ + :: ''​Lattice::​BasicLattice'': ​ A ''​[[..:​graph:​Lattice |Lattice]]''​ with a ''​[[..:​graph#​BasicDecoration |BasicDecoration]]'',​ which corresponds to the legacy HasseDiagram type + ===== Properties ===== + + ==== Combinatorics ==== + These properties capture combinatorial information of the object. ​ Combinatorial properties only depend on combinatorial data of the object like, e.g., the face lattice. + ---- + {{anchor:​bottom_node:​}} + ?  **''​BOTTOM_NODE''​** + :: The index of the bottom node + ? Type: + :''​[[..:​common#​Int |Int]]''​ + ? Example: + :: The following prints the bottom node of the face lattice of the 2-simplex (triangle): + :: > print simplex(2)->​HASSE_DIAGRAM->​BOTTOM_NODE;​ + 0 + ​ + + + ---- + {{anchor:​decoration:​}} + ?  **''​DECORATION''​** + :: This is the data associated to each node. The prototype for this is ''​[[..:​graph#​BasicDecoration |BasicDecoration]]'',​ which consists of properties face and rank. + ? Type: + :''​[[..:​common#​NodeMap |NodeMap]]<​[[..:​common#​Directed |Directed]],​Decoration>''​ + ? Example: + :: The following prints this property of the face lattice of the 2-simplex (triangle): + :: > print simplex(2)->​HASSE_DIAGRAM->​DECORATION;​ + ({} 0) + ({0} 1) + ({1} 1) + ({2} 1) + ({1 2} 2) + ({0 2} 2) + ({0 1} 2) + ({0 1 2} 3) + ​ + + + ---- + {{anchor:​dims:​}} + ?  **''​DIMS''​** + :: Kept only for backwards compatibility. Basically encodes the ''​[[..:​graph:​Lattice#​INVERSE_RANK_MAP |INVERSE_RANK_MAP]]''​ in FaceLattice objects prior to 3.0.7 + ? Type: + :''​[[..:​common#​Array |Array]]<​[[..:​common#​Int |Int]]>''​ + + + ---- + {{anchor:​faces:​}} + ?  **''​FACES''​** + :: The face of each node, realized as a NodeMap. This property is kept for two reasons: As a convenient way to access only the face part of the decoration (in this case the property is temporary) and for reasons of backwards compatibility. + ? Type: + :''​[[..:​common#​NodeMap |NodeMap]]<​[[..:​common#​Directed |Directed]],​[[..:​common#​Set |Set]]<​[[..:​common#​Int |Int]]%%>>​%%''​ + ? Example: + :: The following prints the faces of the face lattice of the 2-simplex (triangle): + :: > print simplex(2)->​HASSE_DIAGRAM->​FACES;​ + {} + {0} + {1} + {2} + {1 2} + {0 2} + {0 1} + {0 1 2} + ​ + + + ---- + {{anchor:​inverse_rank_map:​}} + ?  **''​INVERSE_RANK_MAP''​** + :: This property provides an efficient way to enumerate all nodes of a given rank. Internally these are realized differently,​ depending on whether the Lattice is ''​[[..:​graph#​Sequential |Sequential]]''​ or ''​[[..:​graph#​Nonsequential |Nonsequential]]''​. Both provide the same user methods though. + ? Type: + :''​[[..:​graph#​InverseRankMap |InverseRankMap]]<​SeqType>''​ + ? Example: + :: The following prints this property of the face lattice of the 2-simplex (triangle), where the tuples represent the ranges of nodes belonging to a specific rank: + :: > print simplex(2)->​HASSE_DIAGRAM->​INVERSE_RANK_MAP;​ + {(0 (0 0)) (1 (1 3)) (2 (4 6)) (3 (7 7))} + ​ + + + ---- + {{anchor:​top_node:​}} + ?  **''​TOP_NODE''​** + :: The index of the top node + ? Type: + :''​[[..:​common#​Int |Int]]''​ + ? Example: + :: The following prints the top node of the face lattice of the 2-simplex (triangle): + :: > print simplex(2)->​HASSE_DIAGRAM->​TOP_NODE;​ + 7 + ​ + + + ---- + ===== Methods ===== + + ==== Combinatorics ==== + These methods capture combinatorial information of the object. ​ Combinatorial properties only depend on combinatorial data of the object like, e.g., the face lattice. + ---- + {{anchor:​dual_faces:​}} + ?  **''​dual_faces()''​** + :: + ? Returns: + :''​[[..:​common#​Array |Array]]<​[[..:​common#​Set |Set]]<​[[..:​common#​Int |Int]]%%>>​%%''​ + ? Example: + :: The following prints the dual faces of the face lattice of the 2-simplex (triangle): + :: > print simplex(2)->​HASSE_DIAGRAM->​dual_faces();​ + {0 1 2} + {1 2} + {0 2} + {0 1} + {0} + {1} + {2} + {} + ​ + + + ---- + {{anchor:​nodes_of_rank:​}} + ?  **''​nodes_of_rank([[..:​common#​Int |Int]] r)''​** + :: + ? Parameters: + :: ''​[[..:​common#​Int |Int]]''​ ''​r''​ + ? Returns: + :''​[[..:​common#​List |List]]<​[[..:​common#​Int |Int]]>''​ + ? Example: + :: The following prints the nodes of rank 1 of the face lattice of the 2-simplex (triangle): + :: > print simplex(2)->​HASSE_DIAGRAM->​nodes_of_rank(1);​ + {1 2 3} + ​ + + + ---- + {{anchor:​nodes_of_rank_range:​}} + ?  **''​nodes_of_rank_range([[..:​common#​Int |Int]] r1, [[..:​common#​Int |Int]] r2)''​** + :: + ? Parameters: + :: ''​[[..:​common#​Int |Int]]''​ ''​r1''​ + :: ''​[[..:​common#​Int |Int]]''​ ''​r2''​ + ? Returns: + :''​[[..:​common#​List |List]]<​[[..:​common#​Int |Int]]>''​ + ? Example: + :: The following prints the nodes with rank between 1 and 2 of the face lattice of the 2-simplex (triangle): + :: > print simplex(2)->​HASSE_DIAGRAM->​nodes_of_rank_range(1,​2);​ + {1 2 3 4 5 6} + ​ + + + ---- + {{anchor:​rank:​}} + ?  **''​rank()''​** + :: + ? Returns: + :''​[[..:​common#​Int |Int]]''​ + ? Example: + :: The following prints the rank of the top node of the face lattice of the 2-simplex (triangle): + :: > print simplex(2)->​HASSE_DIAGRAM->​rank();​ + 3 + ​ + + + ---- + + ==== Visualization ==== + These methods are for visualization. + ---- + {{anchor:​visual:​}} + ?  **''​VISUAL()''​** + :: Visualize the Lattice. + ? Options: + : + :: ''​[[..:​common#​Int |Int]]''​ ''​seed'':​ random seed value for the node placement + : option list ''​[[..:​graph#​Visual_Lattice_decorations |Visual::​Lattice::​decorations]]''​ + ? Returns: + :''​[[..:​graph:​Visual_Lattice |Visual::​Lattice]]''​ + ? Example: + :: The following visualizes the face lattice of the 2-simplex (triangle) with default settings: + :: > simplex(2)->​HASSE_DIAGRAM->​VISUAL;​ + ​ + ::  The following shows some modified visualization style of the same lattice: + :: > simplex(2)->​HASSE_DIAGRAM->​VISUAL(NodeColor=>"​green",​EdgeThickness=>​2,​EdgeColor=>"​purple"​);​ + ​ + + + ---- + {{anchor:​visual_dual:​}} + ?  **''​VISUAL_DUAL()''​** + :: Visualize the dual Lattice. This only produces meaningful results for lattice where the codimension one nodes generate the lattice under intersection. + ? Options: + : + :: ''​[[..:​common#​Int |Int]]''​ ''​seed'':​ random seed value for the node placement + : option list ''​[[..:​graph#​Visual_Lattice_decorations |Visual::​Lattice::​decorations]]''​ + ? Returns: + :''​[[..:​graph:​Visual_Lattice |Visual::​Lattice]]''​ + ? Example: + :: The following visualizes the dual face lattice of the 2-simplex (triangle) with default settings: + :: > simplex(2)->​HASSE_DIAGRAM->​VISUAL_DUAL;​ + ​ + ::  The following shows some modified visualization style of the same lattice: + :: > simplex(2)->​HASSE_DIAGRAM->​VISUAL_DUAL(NodeColor=>"​green",​EdgeThickness=>​2,​EdgeColor=>"​purple"​);​ + ​ + + + ----
• documentation/release/3.5/graph/lattice.txt