Pebble Game (Rigidity)

[edit]

In the study of combinatoric rigidity the pebble game algorithm was developed as an efficient way of determining whether a given graph is rigid. The algorithm was originally devised for study of rigidity percolation in two dimensions[1] and has remained one of the main tools utilized in this field. The pebble game algorithm not only determines whether a given graph is rigid but also identifies rigid, floppy and over constrained regions. It is important to note that the type of rigidity assessed by this algorithm is combinatoric or generic rigidity which follows from the Geiringer-Laman theorem.

The (k, l) Pebble Game: general explanation

[edit]
Execution of the (2,3) pebble game. Small gray circles are free pebbles. When a pebble is spent to cover a bond it is shown in red and on top of the bond being covered. Highlighted in yellow are the results of successful pebble searches. The red solid bonds are considered directed toward the end opposite to the covering pebble, such is the convention in ref [2].

There are many variants of the pebble game algorithm, each constructed for a different physical context. The original pebble game[1] was proposed for graphs embedded in the two-dimensional flat plane, without any fixed or grounded elements. This pebble game can be referred to as the (2,3) pebble game.

The Pebble Game [3] takes in as input an undirected graph G and assigns k pebbles to each vertex. Each edge is then checked one at a time. For an edge if the number of pebbles on and totals then one of the pebbles is used to cover the edge. This edge is now directed. In Jacobs and Hendrickson's original work this direction was as follows: if the pebble was taken from vertex then the edge was directed away from , similarly for the other vertex. If pebbles are not found on the vertices and then a pebble search is performed on each vertex. The pebble search consist of finding a directed path from the given vertex to a free pebble(one not currently covering an edge). This is done by means of a depth-first search on the directed graph and is optimized by keeping memory of the vertices encountered in failed searches. If a pebble is found it is "brought to" the given vertex and the directed path is reversed. This process repeats until the number of pebbles on and totals . If this is achieved the edge is covered as before if not the edge is not covered and is instead marked as redundant. This process is repeated for each edge. The order in which the edges are checked is arbitrary. The Pebble Game then gives as output a graph that is in general partially covered, un-covered edges are the redundant edges, and some vertices having free pebbles which were not spent in the covering of edges.

Interpretation of the output of the (2,3) Pebble Game

[edit]

A number of properties of the generic realizations of the graph can be read off of the output of the (2,3) pebble game.


Rigidity: A graph will be rigid in the plane if and only if the output contains only 3 free pebbles.

Mechanisms: The number of linearly independent isometries, motions that do not change the length of any edge, is given by the number of free pebbles. Mechanisms(also called floppy modes) exclude the three rigid motions, two translations one rotation, therefore the number of free pebbles minus three gives the number of mechanisms.

Self Stresses: The number of redundant edges,( un-covered edges) equals the number of linearly independent self stresses, which is to say assignments of tensions on the edges that satisfy in force balance on each vertex.

It is worth noting that the orientation of the covered portion of the graph allows for the determination of these properties, rigidity, mechanisms and self-stress, for sub-graphs. This is exploited in the identification of rigid clusters.

Pseudocode

[edit]

A basic implementation of the pebble game algorithm would be as follows.

function  Check_Edge((u,v),pebble_index)  is
	
     Pebbles_Found :=  0
     fail_region={}

     for 1 ≤ i ≤ 2  do
          found,pebble_index,fail_region:= Find_Pebble(u, pebble_index,fail_region)
	  if found then
	       Pebbles_Found:= Pebbles_Found+1

	       found,pebble_index,fail_region:= Find_Pebble(v, pebble_index,fail_region)
	       if found then
	            Pebbles_Found := Pebbles_Found+1
     repeat

	if Pebbles_Found=4 then
		pebble_index :=Cover_Edge((u,v),pebble_index)
	
return pebble_index

function Pebble_Game(G) is:

     initialize pebble_index

     for (u,v) in G do:
          pebble_index=Check_Edge((u,v),pebble_index)
     repeat

return G,pebble_index


Where the Find_Pebble function does the pebble searches and the pebble index is an array like structure that encodes the placement of the pebbles, weather they are free or, if used to cover a bond, which bond they are covering. The fail_region is the set of all vertices found during failed pebble searches. This information is crucial for optimization.[1]

Identifying rigid clusters.

[edit]

The output of the pebble game algorithm is often used to identify rigid clusters, which is to say maximal rigid subgraphs. In the (2,3) pebble game, to determine if two edges are rigid with respect to each other three pebbles are fixed on the vertices incident on one edge. Then, a fourth pebble is called to one of the vertices of the second edge, if the pebble cannot be found then the edges are mutually rigid, otherwise they are mutually floppy. A maximal set of edges where all of them are mutually rigid is identified as a rigid cluster.

In actuality it is not true that every edge pair has to be checked in order to identify all rigid clusters. The algorithm is made more efficient by utilizing the fact that all edges traversed during a failed pebble search are mutually rigid.

Variants

[edit]

The pebble game has been adapted to graphs obtained from a physical scenarios distinct from free standing on the flat two dimensional plane. Some examples:

See also

[edit]

References

[edit]
  1. ^ a b c Jacobs, Donald J.; Hendrickson, Bruce (1997-11-01). "An Algorithm for Two-Dimensional Rigidity Percolation: The Pebble Game". Journal of Computational Physics. 137 (2): 346–365. doi:10.1006/jcph.1997.5809. ISSN 0021-9991.
  2. ^ Jacobs, Donald J.; Hendrickson, Bruce (1997-11-01). "An Algorithm for Two-Dimensional Rigidity Percolation: The Pebble Game". Journal of Computational Physics. 137 (2): 346–365. doi:10.1006/jcph.1997.5809. ISSN 0021-9991.
  3. ^ Lee, Audrey; Streinu, Ileana (2008-04-28). "Pebble game algorithms and sparse graphs". Discrete Mathematics. 308 (8): 1425–1437. doi:10.1016/j.disc.2007.07.104.
  4. ^ Sljoka, Adnan; Shai, Offer; Whiteley, Walter (2011-01-01). "Checking Mobility and Decomposition of Linkages via Pebble Game Algorithm". ASMEDC: 493–502. doi:10.1115/DETC2011-48340. ISBN 978-0-7918-5483-9. ((cite journal)): Cite journal requires |journal= (help)
  5. ^ Lester, Daniel; Li, Ruru (2018-09-15). "The frictional pebble game: An algorithm for rigidity percolation in saturated frictional assemblies". Journal of Computational Physics. 369: 225–236. doi:10.1016/j.jcp.2018.05.016. ISSN 0021-9991.
  6. ^ Jacobs, D. J. (1998-08-07). "Generic rigidity in three-dimensional bond-bending networks". Journal of Physics A: Mathematical and General. 31 (31): 6653–6668. doi:10.1088/0305-4470/31/31/012. ISSN 0305-4470.
  7. ^ E. Ross, Geometric and Combinatorial Rigidity of Periodic Frameworks as Graphs on The Torus. PhD thesis, 05 2011. https://elissaross.ca/Ross Phd thesis.pdf.