Python:构建唯一连接图



所以有一个问题:给定两个字典-网络主机列表,我必须构建它们之间可能连接的图(并且限于在这里使用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个客户端),每个服务器只能接受一个传入连接,同一主机上的客户端/服务器之间的连接是不允许的,并且输出应该看起来或多或少是公平分布的(因此不应该出现所有机器X端点与机器Y输入连接的情况)。

当前的python解决方案是~70行,并且有一个节点没有得到足够的测试的恼人问题(所以快速修复当前测试数据集的工作),https://repl.it/BFWD/1

现有的哪些模块可以用来处理这类图问题?我必须在python中实现这个…我找到了NetworkX,但不确定是否适合。

"Practical Graph/Network Analysis Made Simple" -使用NetworkX -是PyCon 2015上一个精彩的演讲:

  • https://www.youtube.com/watch?v=_k4MOh7J7YY

在这里你可以找到7个python笔记本,几乎都是不言自明的例子:

  • https://github.com/ericmjl/Network-Analysis-Made-Simple

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

这里的前30分钟也很有趣:

  • https://www.youtube.com/watch?v=6Lauxn9oTt4
  • https://github.com/sarguido/networkx-tutorial

NetworkX是一个非常好的解决方案,它允许您更轻松地处理网络图以及绘制它们。但是要绘制图形,还需要安装matplotlib。看看NetworkX绘图文档和他们的绘图教程

最新更新