首页 > 编程知识 正文

迪杰斯特拉算法python实现,python卷积神经网络代码

时间:2023-05-04 01:23:43 阅读:42520 作者:3252

首先,感谢以下参考资料及其作者。

图论与网络流程_图书检索(duxiu.com) )。

优化方法及其MATLAB实现(duxiu.com) )。

Python networkx实现网络流_Ugly Gardon-CSDN博客

与网络流匹配(yuyanwz.cn ) ) ) ) ) ) ) )。

networkx通过最小费用的最大流程实现数据可视化_engineoid博客-CSDN博客

开始正文如下。

生活中人们常常利用有向图对交通网络、通信网络、输电网络、油气管道网络、互联网、社交网络等各种网络模型进行建模。 这些网络的共同特征是,有向图,有出发点、接收点、中继点,每个有向图都有传输能力的限制。 例如,想象一下道路交通网络。 顶点是城市(或道路的交叉点),边缘是道路。 边缘容量是指传输能力的大小,是货物的最大运输量。 发货点是提供货物的地方,收货点是需要货物的地方,可以接收其他顶点寄来的货物。 网络理论还是图论中极其重要的分支,提供了图论中许多著名结论的证明。

图1表示网络流程,各有向边旁边的数字表示其容量。 网络流有几个基本定义。

节点:在这一点上,流入的流量大于流出的相同源点(source ),流出的流量大于流入的流量汇点(sink )。 在这一点上,流入大于流出容量)和流量(value of a flow )。 每个有向边有两个量、容量和流量,分别为

互联网最大的流动问题and The Edmonds-Karp algorithm把source比作生产工厂,最大的流动问题是要求工厂最多可以发货多少货物,不超过道路的容量限制。

计算最大流的最基本方法之一是埃德蒙yjfdfk算法(The Edmonds-Karp algorithm,维基百科)。 举板栗吧。

首先,从零流(所有流量都是0的流)开始。 如果有这样的路,这条路从源点开始一直一级一级地通向汇点。 而且,这条路的各级都满足流量容量。 在这条路上的每一级(容量-流量)值中,一定可以找到最小值的增量。 我们一定能把这条路所有段的流量加到这条三角洲上,确保这条流仍然是可行的流。 这很明显。 这样,得到了更大的流程。 他的流量是以前的流量增量,显然增量=0时是该算法要求的最大流程。

以图2(a )的网络流模型为例,我们首次找到了1-2-3-4这个流,但是加上这个流,增量为0 (图2(b ) )。 但是,1显然不是最大的趋势。 因为如果同时选择1-2-4和1-3-4这一路径,就能得到流量为2的流动。

上述方法的问题在于没有“反感”机制,而Edmonds-Karp algorithm通过引入“反边缘”解决了这个问题。

返回图2(a ),选择1-2-3-4这条路,则为图2(a )。 由于对边的存在,还可以找到1-3-2-4这条路,进而得到了如图2(d )所示的正确的最大流2。

现在怎么解决这个问题? 1955年,Harris在研究铁路最大运输量时,首先提出了用一个给定网络求两点之间最大运输量的问题。 1956年,Ford等人提出了解决此类问题的标签法,建立了网络流理论。 现在,您不需要像他们那样复杂地解决网络流问题,而是可以使用Python的第三方库NetworkX快速构建和解决网络。

图3是NetworkX的运行结果。 请自己尝试运行以下代码。 我认真地写了注释。 我希望对你有帮助。

importnetworkxasnximportmatplotlib.pyplotasplt #空有向图g=NX.digraph(#图g.add_edges_from () ) s,' ' )容量' : )、) v1 )、) t )、) capacity'3360} )、) ) capacity )、) ) 65 pos [ ' t ' ] [1]=0pos [ pos['s'][1]=0pos['v1'][0]=0; pos['v1'][1]=1pos['v2'][0]=0; pos['v2'][1]=-1#表示graph#处理侧显示的容量edge _ label=NX.get _ edge _ attributes (g,' capacity ' )为节点、ed pos ) nx.draw_networkx_edges(G ) g,pos ) NX.draw_networkx_edge_ ) NX font_size=15 )显示原始图像#最大流mama maxflow_const=maxflow(1) )检索每个边流量信息并将其存储在边显示值for i in maxFlow_const.keys ) 3360forjinmin中3360edge_label(I j ) ]、f='str ) maxflow_const[I] ) #添加新边的标签font_size=12 ) #显示流量及原图PLT.axis(on ) (PLT.xticks )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。