I'm trying to find out how many circuits exist in a graph $G$, given its adjacency matrix.Yet, the only thing I know is how to find out if there is a circuit in a graph $G(X,U)$ given a list of out-neighbours for each vertex.  To do that, you just delete every vertex with no out-neighbours, and update the adjacency lists for the remaining vertices. If repeating this operation deletes all the vertices, the graph had no circuit; otherwise, it has a circuit.For example,\begin{array}{|l|cr|}x & \Gamma^+(x)\\\hlinea & b,c,d\\b & d,e\\c & d,f \\e & d,h \\f & g,i \\g & h, e \\h & \emptyset\\i & g,h \\\end{array} Whenever  $\Gamma^+(x)$ is empty, we can delete $x$.\begin{array}{|l|cr|}x & \Gamma^+(x)\\\hlinea & b,c,d\\b & d,e\\c & d,f \\e & d,\not h \\f & g,i \\g & \not h, e \\\not h & \not\emptyset\\i & g,\not h \\\end{array} Therefore, a circuit exists in $G$.Yet, it only tells me if there is a circuit in my graph. How may I find all circuits?for instance with: $$\begin{bmatrix}   0 & a & b & c & d & e & f & g & h & i \\   a & 0 & 1 & 1 & 1 & 0 & 0 & 0 & 0 & 0 \\   b & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 \\   c & 0 & 0 & 0 & 1 & 0 & 1 & 0 & 0 & 0 \\   d & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\   e & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 & 0 \\   f & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 \\   g & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 0 \\   h & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\   i & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 \\\end{bmatrix}$$What algorithm should I use to find all the circuits of this graph? Even a hint would be appreciated.
Finding all circuits in a graph
algorithms;graph theory