func GenerateUndirected(g Graph) []Graph {
	graphs := []Graph{g}
	maxRank := g.Len()
	for i := 0; i < maxRank; i++ {
		for j := i; j < maxRank; j++ {
			l := len(graphs)
			for k := 0; k < l; k++ {
				g2 := graphs[k].Copy()
				g2.AddUndirected(uint(i), uint(j))
				graphs = append(graphs, g2)
			}
		}
	}
	return graphs
}
// GenerateUndirected generates all possible undirected graphs of a
// maximum rank starting with a given empty graph.
GenerateUndirected generates all possible undirected graphs of a
maximum rank starting with a given empty graph.
// GenerateUndirected generates all possible undirected graphs of a // maximum rank starting with a given empty graph .
func GenerateUndirected(g Graph) []Graph {
	graphs := []Graph{g}
	maxRank := g.Len()
	for i := 0; i < maxRank; i++ {
		for j := i; j < maxRank; j++ {
			l := len(graphs)
			for k := 0; k < l; k++ {
				g2 := graphs[k].Copy()
				g2.AddUndirected(uint(i), uint(j))
				graphs = append(graphs, g2)
			}
		}
	}
	return graphs
}
func GenerateUndirected ( g Graph ) [ ] Graph { graphs := [ ] Graph { g } maxRank := g . Len ( ) for i := 0 ; i < maxRank ; i ++ { for j := i ; j < maxRank ; j ++ { l := len ( graphs ) for k := 0 ; k < l ; k ++ { g2 := graphs [ k ] . Copy ( ) g2 . AddUndirected ( uint ( i ) , uint ( j ) ) graphs = append ( graphs , g2 ) } } } return graphs }
GenerateUndirected generates all possible undirected graphs of a
maximum rank starting with a given empty graph.
GenerateUndirected generates all possible undirected graphs of a maximum rank starting with a given empty graph .