weili2011000329的个人博客分享 http://blog.sciencenet.cn/u/weili2011000329

博文

二分图程序

已有 2945 次阅读 2012-10-13 20:22 |系统分类:科研笔记| 程序

import networkx as nx
import matplotlib.pyplot as plt

B=nx.Graph()
#添加一个项目101,它有3个参与者:201,202,203
B.add_edge(101,201)
B.add_edge(101,202)
B.add_edge(101,203)
#添加一个项目102,它有2个参与者:203,202,2034
B.add_edge(102,203)
B.add_edge(102,204)

cd=nx.algorithms.bipartite.basic.color(B)#得到节点的颜色字典:{101: 1, 102: 1, 201: 0, 202: 0, 203: 0, 204: 0},项目节点被赋予颜色值1,参与者节点的颜色值是0
nx.draw(B,pos,with_labels=False,node_size=50,node_color=cd.values())
 
#检测是不是二分图
#a=nx.is_bipartite(B)
#print a
 
NSet = nx.bipartite.basic.sets(B)   #将二分图中的两类节点分别提取出来
Act = nx.project(B,NSet[0])     #向项目节点投影
Actor = nx.project(B,NSet[1])  #向参与者节点投影
print Act.edges()  #输出 [(101, 102)]
print Actor.edges()   #输出 [(201, 202), (201, 203), (202, 203), (203, 204)]
 
pos=nx.spring_layout(B)   #定义一个布局,此处采用了spring布局方式
plt.show()
-------------------------------
NSet = nx.bipartite.basic.sets(B)这里与闫小勇老师的有所不同。他的原文代码NSet = nx.bipartite_sets(B) 这行,在我的python2.6下运行有错误。
 


https://wap.sciencenet.cn/blog-790631-622235.html


收藏 IP: 61.157.97.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-6 22:23

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部