2016-12-28 5 views
0

いくつかのプロパティがすべてに適用されるかどうかを確認するために、与えられた数の頂点を持つ3つの正規のグラフを生成します。プロパティのチェックは簡単ですが、まずグラフを効率的に生成する必要があります。pythonで頂点の数を指定した3つの通常のグラフをすべて生成する方法

誰か助けてくださいこれらのグラフを(隣接行列として)生成するか、そのようなグラフを含むファイルを私に教えてください。頂点の数が24未満

バイナリとしてのpythonにSCDファイルを読み込み、それがreadscd.cファイルで行われているのと同じ方法でデータを変換することが可能であるあなたに

+0

https://github.com/mwaskom/seaborn – mVChr

+0

私は問題をあまり説明しないかもしれません。私は何かを視覚化したくありません。私の質問はグラフ理論です。私は、与えられた数の頂点に対して可能な3つの通常のグラフすべてのための隣接行列を生成したい。 –

+0

http://www.mathe2.uni-bayreuth.de/markus/reggraphs.html – Ante

答えて

0

をありがとうございます。次に例を示します。

import numpy 

def convert(filename, n, k=3): 
    num_edges = n*k/2 
    f = open(filename, "r") 
    values = numpy.fromfile(f, dtype=numpy.uint8) 
    read_values = 0 
    code = [] 
    while read_values < len(values): 
     # dekomp(file,code) 
     samebits = values.item(read_values) 
     read_values += 1 
     readbits = num_edges - samebits 
     code = code[:samebits] + list(values[read_values:read_values+readbits]) 
     read_values += readbits 
     # codetonlist(code,l) 
     graph = numpy.zeros((n, n), dtype=numpy.uint8) 
     v = 0 
     count = [0] * n 
     for w in code: 
      w -= 1 # We are indexing from 0 
      while(count[v] == k): 
       v += 1 
      # edge (v, w) 
      graph.itemset((v, w), 1) 
      graph.itemset((w, v), 1) 
      count[v] += 1 
      count[w] += 1 
     yield graph 

if __name__ == '__main__': 
    import sys 
    filename = sys.argv[1] 
    nk = filename.split('.')[0].split('_') 
    for g in convert(filename, int(nk[0]), int(nk[1])): 
     print g 

ファイル18_3_3.scdは数秒で処理されます。印刷に数分かかりました。

+0

ありがとうございました –

+0

@aliasgharGorzinよろしくお願いします。今私はグラフ生成に関するいくつかの事を知っています:-) – Ante

+0

これは多くの助けとなりました。 18頂点以下の立方体グラフのパラメータを調べました。 –

関連する問題