Python:构建独特的连接图

时间:2015-09-03 14:09:24

标签: python graph

所以存在一个问题:给定两个dicts - 网络主机列表,我必须构建一个可能的连接图(这里仅限于使用Python +外部模块),受到一些规则的限制。

clients = { 
        "mach1": ["a1cli1", "a1cli2", "a1cli3", "a1cli4"],
        "mach2": ["a2cli1", "a2cli2", "a2cli3", "a2cli4"],
        "mach3": ["a3cli1", "a3cli2", "a3cli3", "a3cli4"],
        "mach4": ["a4cli1", "a4cli2", "a4cli3", "a4cli4"],
        "mach5": ["a5cli1", "a5cli2", "a5cli3", "a5cli4"]
    }

servers = {
        "mach1": ["1serv1", "1serv2"],
        "mach2": ["2serv1", "2serv2"],
        "mach3": ["3serv1", "3serv2"],
        "mach4": ["4serv1", "4serv2"],
        "mach5": ["5serv1", "5serv2"]
}

每个客户端可以形成与多个服务器的连接(到N个服务器/ N个客户端),每个服务器只能接收1个传入连接,不允许同一主机上的客户端/服务器之间的连接,输出看起来应该或多或少公平分配(因此,当所有机器X端点都与机器Y输入连接时,不应存在任何情况。)

当前的python解决方案是大约70行,并且其中一个节点没有获得足够的测试(因此对当前测试数据集进行快速处理)存在恼人的问题,https://repl.it/BFWD/1

可以使用哪些现有模块来处理此类图形问题?我必须在python中实现它..发现有关NetworkX但不确定它是否适合。

2 个答案:

答案 0 :(得分:1)

“实用图形/网络分析变得简单” - 使用NetworkX - 在PyCon 2015上的精彩演示:

在这里你可以找到7个ipython笔记本,几乎有自我解释的例子:

绝对是我找到的最好的介绍。

这里的前30分钟也非常有趣:

答案 1 :(得分:0)

NetworkX是一个非常好的解决方案,它允许您更轻松地处理网络图形以及绘制它们。但要绘制图形,您还需要安装matplotlib。请查看NetworkX Drawing Documentation及其Drawing Tutorial