Python实现二终端可靠度的代码是什么
Admin 2022-06-15 群英技术资讯 452 次浏览
在网络可靠性中,一种较为经典且在实践中更为常用的可靠度计算便是二终端可靠度,即给定网络拓扑结构与边可靠度(假定节点完全可靠),计算网络中指定的两个节点之间的连通可靠度。
在此,笔者依据最小路集思想给出此方法的python代码实现,该代码可以依据给定的输入矩阵、节点序号等设定值算出两节点间的连通可靠度。
逻辑代码与测试用例如下:
import itertools def min_path_sets(init_matrix,index_start,index_end): import re num_point = init_matrix.shape[0] min_path_list = [] for i in range(num_point-1): temp = init_matrix**(i+1) item = expand(temp[index_start-1,index_end-1]) list_given = re.sub('[ *123456789]',"",str(item)).split("+") #删除指定阶数下,路径长度不等于阶数的路 index_to_delete = [] for j in range(len(list_given)): if len(list_given[j])!=(i+1) or list_given[j]=='0': index_to_delete.append(j) for counter, index in enumerate(index_to_delete): index = index - counter list_given.pop(index) min_path_list.extend(list_given) return min_path_list def str_de_duplication(pstr): a = '' for i in range(len(pstr)): if pstr[i] not in a: a+=pstr[i] return a def product_symbol(pstr,my_dict): import numpy as np value_list = [] for i in pstr: value_list.append(my_dict[i]) return np.prod(value_list) def generate_label(path_sets,my_dict): import numpy as np all_result = [] for exp_num in range(len(path_sets)): item_Combination = list(itertools.combinations(path_sets, exp_num+1)) item_list = list(map(lambda x: str_de_duplication("".join(x)),item_Combination)) value_list = list(map(lambda x: product_symbol(x,my_dict),item_list)) all_result.append(np.sum(value_list)*(-1)**(exp_num)) return np.sum(all_result) def Matrix_label(init_matrix,my_dict,index_start,index_end): path_sets = min_path_sets(init_matrix,index_start,index_end) pro_value = generate_label(path_sets,my_dict) return pro_value from sympy import * from sympy.abc import A,B,C,D,E,F index_start = 2 index_end = 1 data = Matrix([[0,A,B], [A,0,C], [B,C,0]]) my_dict = {'A':0.8, 'B':0.9, 'C':0.9} Matrix_label(data,my_dict,index_start,index_end)
在前部分,主要定义了几个函数以便求出最小路集以及利用容斥原理计算二终端可靠度,最终外层函数为Matrix_label(data,my_dict,index_start,index_end):
参数解释:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家详细介绍了python实现双人版坦克大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要介绍了在Django中使用ElasticSearch,Elasticsearch是基于Lucene库的搜索引擎。它提供了具有HTTP Web界面和无模式JSON文档的分布式,多租户功能的全文本搜索引擎,下面详细内容,需要的朋友可以参考一下
这篇文章主要介绍了如何从Python的cmd中获得.py文件参数操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
本文详细讲解了Python制作基础学生信息管理系统的实现,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要介绍了TensorFlow如何指定GPU训练模型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008