Pythonのdictionaryの形で次のように指定すると、グラフが描けます。
g1=Graph({'P':['Q','S','T'],'Q':['R','S','T'],'R':['S'],'S':['T']})
show(g1)
これはうまい具合に横向きになったし、なによりも頂点がアルファベット順ですがいつも必ずしもそうではありません。
ただし、隣接行列の形は常に一緒です。
g1.adjacency_matrix()
[0 1 0 1 1]
[1 0 1 1 1]
[0 1 0 1 0]
[1 1 1 0 1]
[1 1 0 1 0]
たぶん人間には一番わかり易い頂点のリストと辺のリストを組み合わせた指定の仕方をしてみます。
V=['P','Q','R','S','T']
E=[['P','Q'],['Q','R'],['R','S'],['S','T'],['T','P'],['P','S'],['Q','T'],['Q','S']]
g2=Graph([V,E])
show(g2)
g2.adjacency_matrix()
[0 1 0 1 1]
[1 0 1 1 1]
[0 1 0 1 0]
[1 1 1 0 1]
[1 1 0 1 0]
行列の形が同じになりましたが、これは偶然かもしれない。
カノニカルラベルに振りなおしてみます。
(g1.canonical_label()).adjacency_matrix()
[0 0 0 1 1]
[0 0 1 1 1]
[0 1 0 1 1]
[1 1 1 0 1]
[1 1 1 1 0]
今度は行列の形は違いますが、同じもののはずです。
g3=Graph( (g1.canonical_label()).adjacency_matrix())
show(g3)
g1.is_isomorphic(g3)
True
g2.is_isomorphic(g3)
True
ほらね。