。 NとKむしろN = 8とK = 3の周りに、大規模なセットは、環状および非環状グラフを含むことができません。各グラフは、多数の重み付けされたグラフをサンプリングするためのテンプレートとして機能します。列挙グラフ
私の関心は、トポロジモチーフの役割であるので、私はお互いに対称である任意の二つのグラフの重みをサンプリングしたくない、対称は、頂点のない順列はそれを変換1つのグラフ内に存在しないことを意味しますもう一方に直接の後継者または前任者の制限に違反しているため(それらのほとんど)隣接行列とすべてのそれらを排除 -
素朴な解決策は、2 ^(1)N *(N)を考慮するだろう。 n = 8の場合、それはまだ表現するのに十分なビット数であり、uint64_t
の中に各マトリックスを快適に列挙します。
行数と列数を追跡することはもう1つ改善されますが、実際のボトルネックは結果セットにグラフを追加することです。この時点で、すでにセット内にあるグラフに対して対称性をテストする必要があります。 n = 8の場合、挿入操作あたりすでに40,000を超える置換があります。
誰でも私にこれをもっとスマートな方法で行うことができるアルゴリズムを参照できますか?このような包括的なグラフジェネレータを既に実装しているC、C++、Java、Python用のグラフライブラリはありますか?誰かがすでに、すべてのグラフを合理的に「集計」しているリポジトリがありますかnとk?
"The Art of Computer Programming、Volume 4"のようなものです。 – templatetypedef