I am doing a research on networks which consist of polygons with different number of sides. I am trying to find all rings (or cycles) in a network. As an example, consider the following graph: graph = Graph[ { 1 <-> 2, 2 <-> 3, 3 <-> 4, 4 <-> 5, 5 <-> 6, 1 <-> 6, 3 <-> 7, 7 <-> 8, 8 <-> 9, 9 <-> 10, 10 <-> 11, 11 <-> 3, 4 <-> 12, 12 <-> 13, 13 <-> 11 }, VertexLabels -> "Name" ] ![enter image description here][1] `{1,2,3,4,5,6}, {3,4,11,12,13},{3,7,8,9,10,11}` are rings and we can extract them by using [Teake's answer][2]: cycles = FindFundamentalCycles[graph]; rings = Sort @* VertexList @* Graph /@ cycles ![enter image description here][3] But now consider the following graph: grapht = Graph[ { 1 <-> 2, 1 <-> 3, 2 <-> 4, 4 <-> 5, 5 <-> 6, 4 <-> 6, 6 <-> 7, 3 <-> 5, 3 <-> 9, 5 <-> 8, 8 <-> 9 }, VertexLabels -> "Name"]; ![enter image description here][4] Rings (cycles) are: cyclest = FindFundamentalCycles[grapht]; HighlightGraph[grapht, #] & /@ cyclest ![enter image description here][5] But I need to get `{4,5,6}` as a ring not `{1,2,3,4,5,6}` since there is an edge in the latter. Is there any way to customize `FindFundamentalCycles` function? ---- [W Community crosspost](http://community.wolfram.com/groups/-/m/t/228654?p_p_auth=xf2WGW0E) [1]: https://i.sstatic.net/tJvz6.png [2]: http://mathematica.stackexchange.com/a/61328/12594 [3]: https://i.sstatic.net/ySNib.png [4]: https://i.sstatic.net/NcORI.png [5]: https://i.sstatic.net/kiPSi.png