欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python實(shí)現(xiàn)二終端網(wǎng)絡(luò)可靠度

 更新時(shí)間:2021年05月05日 09:43:06   作者:快到皖里來(lái)  
這里給大家分享的是實(shí)現(xiàn)二終端網(wǎng)絡(luò)可靠度的方法以及使用Python實(shí)現(xiàn)的代碼,有需要的小伙伴可以參考下。

在網(wǎng)絡(luò)可靠性中,一種較為經(jīng)典且在實(shí)踐中更為常用的可靠度計(jì)算便是二終端可靠度,即給定網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)與邊可靠度(假定節(jié)點(diǎn)完全可靠),計(jì)算網(wǎng)絡(luò)中指定的兩個(gè)節(jié)點(diǎn)之間的連通可靠度。

在此,筆者依據(jù)最小路集思想給出此方法的python代碼實(shí)現(xiàn),該代碼可以依據(jù)給定的輸入矩陣、節(jié)點(diǎn)序號(hào)等設(shè)定值算出兩節(jié)點(diǎn)間的連通可靠度。

邏輯代碼與測(cè)試用例如下:

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("+")
        
        #刪除指定階數(shù)下,路徑長(zhǎng)度不等于階數(shù)的路
        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)

在前部分,主要定義了幾個(gè)函數(shù)以便求出最小路集以及利用容斥原理計(jì)算二終端可靠度,最終外層函數(shù)為Matrix_label(data,my_dict,index_start,index_end):

參數(shù)解釋:

  • data:矩陣形式的數(shù)據(jù),表征整個(gè)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)和邊可靠度,其中每一個(gè)矩陣元素要么為0,要么預(yù)設(shè)的字母如“A、B、C”等,每個(gè)字母取值為0到1(不包含0但包括1),元素為0表示對(duì)應(yīng)行號(hào)與列號(hào)的節(jié)點(diǎn)之間無(wú)邊相連,元素為字母如“A”表示對(duì)應(yīng)行號(hào)與列號(hào)的節(jié)點(diǎn)之間以可靠度為A的概率相連;
  • my_dict:字典形式的數(shù)據(jù),指定每一個(gè)用到的字母所表示的概率值,如{'A':0.8,'B':0.9,'C':0.9},特別指出網(wǎng)絡(luò)中節(jié)點(diǎn)之間的連通概率可以相異;
  • index_start:二終端節(jié)點(diǎn)中的起始點(diǎn)序號(hào);
  • index_end:二終端節(jié)點(diǎn)中的終止點(diǎn)序號(hào);

以上就是使用Python實(shí)現(xiàn)二終端網(wǎng)絡(luò)可靠度的詳細(xì)內(nèi)容,更多關(guān)于二終端網(wǎng)絡(luò)可靠度 的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python+Tkinter制作猜燈謎小游戲

    Python+Tkinter制作猜燈謎小游戲

    元宵節(jié),又稱上元節(jié)、燈節(jié),是春節(jié)之后的第一個(gè)重要節(jié)日。而元宵節(jié)除了吃元宵、看花燈,還有一件最重要的事情就是猜燈謎!因此本文將通過(guò)Python Tkinter制作一個(gè)猜燈謎小游戲,感興趣的小伙伴可以了解一下
    2022-02-02
  • 在類Unix系統(tǒng)上開(kāi)始Python3編程入門

    在類Unix系統(tǒng)上開(kāi)始Python3編程入門

    這篇文章主要介紹了在類Unix系統(tǒng)上開(kāi)始Python3編程入門,講解了最基礎(chǔ)最直觀的利用Print函數(shù)進(jìn)行各種輸出的方法,需要的朋友可以參考下
    2015-08-08
  • 關(guān)于python多重賦值的小問(wèn)題

    關(guān)于python多重賦值的小問(wèn)題

    這篇文章主要給大家介紹了關(guān)于python多重賦值的小問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python字符編碼判斷方法分析

    Python字符編碼判斷方法分析

    這篇文章主要介紹了Python字符編碼判斷方法,結(jié)合實(shí)例形式分析了Python字符編碼的判斷技巧,并給出了chardet的安裝與使用方法,需要的朋友可以參考下
    2016-07-07
  • python使用布隆過(guò)濾器的實(shí)現(xiàn)示例

    python使用布隆過(guò)濾器的實(shí)現(xiàn)示例

    這篇文章主要介紹了python使用布隆過(guò)濾器的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • python中將一個(gè)全部為int的list 轉(zhuǎn)化為str的list方法

    python中將一個(gè)全部為int的list 轉(zhuǎn)化為str的list方法

    下面小編就為大家分享一篇python中將一個(gè)全部為int的list 轉(zhuǎn)化為str的list方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python pandas.DataFrame 找出有空值的行

    Python pandas.DataFrame 找出有空值的行

    這篇文章主要介紹了Python pandas.DataFrame 找出有空值的行,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python密碼學(xué)ROT13算法教程

    Python密碼學(xué)ROT13算法教程

    這篇文章主要為大家介紹了Python密碼學(xué)ROT13算法的教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 利用Python探測(cè)附近WIFI密碼的詳細(xì)代碼

    利用Python探測(cè)附近WIFI密碼的詳細(xì)代碼

    這篇文章主要介紹了利用Python探測(cè)附近WIFI密碼,基于python腳本實(shí)現(xiàn)wifi密碼的暴力破解從而實(shí)現(xiàn)免費(fèi)蹭網(wǎng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-01-01
  • Python函數(shù)的參數(shù)列表解析

    Python函數(shù)的參數(shù)列表解析

    這篇文章主要介紹了Python函數(shù)的參數(shù)列表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評(píng)論