ランダム正則グラフを作る

  • ランダム正則グラフの隣接行列の作成方法がWikipediaにある(こちら)
  • 次数rの正則グラフが、頂点数nだとする
  • 今、N=nr個のアイテムをn個のバケツにr個ずつ入れる
  • N個のアイテムを2個ずつのペアにする
  • このようにすると、頂点数Nのr正則グラフができるが、このr正則グラフは特別な正則グラフで、すべての頂点は次数rのクリークに帰属することになる(バケツがクリークに対応する)
  • これを頂点数nのグラフにするべく、同一バケツのr個のアイテムを1つのノードとみなす
  • これにより、すべてのバケツからr個の手が伸びた状態となり、これがランダムr正則グラフ
  • ただし、この方法だと、自己ノードへの辺(ループ)ができたり、ノード間に複数のエッジが引かれたりするので、そのような場合を避けたい場合には、できたグラフを判定し、不適切な場合は作り直すことになる