存储networkx生成的图的方法参考networkx手册:
https://networkx.github.io/documentation/stable/reference/readwrite/index.html
Adjacency List经过适当处理可以转换成metis可识别的格式。

先看graph的Adjacency List

import networkx as nx
import metis
import numpy as np
import matplotlib.pyplot as plt#用random_graphs.barabasi_albert_graph(n, m)方法生成一个含有n个节点、每次加入m条边的BA无标度网络
BA = nx.random_graphs.barabasi_albert_graph(20, 1)
pos = nx.spring_layout(BA)  # 图形的布局样式,这里是中心放射状
nx.draw(BA, pos, with_labels=True, node_size=30, node_color='red')
plt.show()

for line in nx.generate_adjlist(BA):print(line)

0 1 2 4 18
1 3 5
2
3
4
5 6 7 8 9 10 13 14 15 17
6
7 11 12 19
8
9
10
11
12 16
13
14
15
16
17
18
19

#BA.nodes
#BA.edges
#nx.number_of_nodes(BA) #20
#nx.number_of_edges(BA) #19
nx.write_adjlist(BA,"BA.adjlist")

Adjacency List将每条边只记一次,而metis的输入格式要求将每条边记录两次;Adjacency List的每一行第一个数表示该顶点,而metis默认行数为顶点;Adjacency List的顶点编号从0开始,metis的顶点编号从1开始。

node_num = nx.number_of_nodes(BA)
f=open('file','w')
for i in range(node_num):it = nx.neighbors(BA, i)li = list()while 1:try:li.append(next(it)+1)
#         print(li)except StopIteration:breakf.write(str(li)+'\n\r') #换行windows \r\n linux \n mac \rprint(li)

[2, 3, 5, 19]
[1, 4, 6]
[1]
[2]
[1]
[2, 7, 8, 9, 10, 11, 14, 15, 16, 18]
[6]
[6, 12, 13, 20]
[6]
[6]
[6]
[8]
[8, 17]
[6]
[6]
[6]
[13]
[6]
[1]
[8]

在生成的file文件中将中括号和逗号去掉,然后在第一行添加节点数和边数,保存即可。

最后metis可用的格式长这样:

方法比较笨,欢迎补充~

networkx_to_metis相关推荐

最新文章

  1. CentOS中vsftp安装与配置
  2. 没事抽空学——常用界面组件属性
  3. 小心使用IOCP完成端口
  4. 1004. Counting Leaves (30)
  5. 智能一代云平台(十):Jboss远程访问流程总结
  6. (转)Locale 详解
  7. matlab 流水灯,Matlab生成stm32代码
  8. How to support Specular-Glossiness in Three.js
  9. 笨方法刷博客_C实现
  10. 了解DPDK——内核NIC接口
  11. Android使用串口打印机打印图片方法
  12. AWS认证解决方案架构师证书有效期是多久?aws认证架构师考什么?
  13. MACBOOK 连接不上wifi的解决办法
  14. 【plang 1.4.6】Plang高级编程语言(发布)
  15. 邮件群发怎么一次发给几百个人?哪个邮箱群发效果好呢
  16. 确保软件开发生命周期(SDLC)的安全
  17. [原创]获取还原某音弹幕(web版)
  18. 永远相信美好的事情即将发生。
  19. SMSS打开界面闪退的解决方案
  20. 关于u盘插入电脑在我的电脑中不显示盘符无法正常使用,但是在右下角图标有显示的问题。

热门文章

  1. 如何在线翻译整篇PDF论文?
  2. 高通项目端口每次跳出要求安装驱动解决方法
  3. C++ Primer Plus 6th代码阅读笔记
  4. vue组件库介绍以及组件库Element UI 的使用
  5. 渗透靶场——HackMyVM:BlackWidow
  6. 安装cnpm淘宝镜像过程报错
  7. 推荐一个好用的 所见即所得的 markdown 编辑器 Mark Text
  8. freemaker 前端web教程
  9. LaTeX 注释快捷键
  10. freeRTOS — 软件定时器的使用