如何解决如果中心节点代表共享对象,如何创建网络?
我想创建一个具有两种类型节点的网络:所有者和共享对象。 这是一个玩具示例,假设 3 个孩子:汤姆、山姆和玛丽分享 3 个馅饼。
姓名 | 馅饼 | 分享 |
---|---|---|
汤姆 | 巧克力 | 0.5 |
汤姆 | 苹果 | 0.1 |
汤姆 | 梨 | 0.4 |
山姆 | 巧克力 | 0.3 |
山姆 | 苹果 | 0.8 |
山姆 | 梨 | 0.4 |
玛丽 | 巧克力 | 0.2 |
玛丽 | 苹果 | 0.1 |
玛丽 | 梨 | 0.2 |
我想使用 Python 中的 Network X 库来创建所需的输出:
边的大小由每个孩子拥有的馅饼份额加权。
解决方法
这称为二分网络,您可以像创建常规网络一样创建它。
import networkx as nx
G = nx.DiGraph()
G.add_node('Tom')
G.add_node('Sam')
G.add_node('Mary')
G.add_node('Chocolate')
G.add_node('Apple')
G.add_node('Pear')
G.add_edge('Tom','Chocolate',weight=0.5)
G.add_edge('Tom','Apple',weight=0.1)
...
您绘制了方向链接,所以我使用了 DiGraph
,但如果您不关心方向,那么您可以使用常规的 Graph
。它是二分的这一事实仅意味着您可以将整个网络分成两组不共享任何边的节点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。