知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
利用計算機尋找樹(python實現(xiàn))
發(fā)表時間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):57
from numpy import *
import numpy
import random
import itertools
def check(v): #判斷是否是回路
i3,i4,i5,i6=0,0,0,0
t=1
c= numpy.zeros((m, n)) #創(chuàng)建一個與電路矩陣相同大小的零矩陣
for i3 in v:
c[:, int(i3)] = a1[:, int(i3)]
for i4 in range(m): #將后面所有列的元素與全部加到第一列
for i5 in range(n-1):
c[i4,0]+= c[i4,i5+1]
for i6 in range(m): #判斷第一列是都有0元素
if c[i6,0]==0:
t=0
break
if t==1:
return 1 #無0即不是回路,返回1 輸出
else:
return 0 #有0即是回路,返回0 不輸出輸出
def C(n,i): #確定組合個數(shù)
#n>=i
Min=min(i,n-i)
result=1
for j in range(0,Min):
result=result*(n-j)/(Min-j)
return result
#電路圖定義部分
if __name__ == '__main__':
m = int(input("請輸入節(jié)點數(shù)"))
n = int(input("請輸入支路數(shù)"))
i = 0
j = 0
c = 0
count = 0
shu_num=0
input1 = list(input("請輸入電路圖對應(yīng)矩陣"))
for c in range(m - 1):
input1.remove(' ') #移除字符串中的空格鍵
q = list(input1)
a1 = numpy.zeros((m, n))
for i in range(m):
for j in range(n):
a1[i,j] = int(q[count]) #將list中的每一個元素分別給矩陣按行賦值
count += 1
list1 = []
b=[]
for i in range(n):
list1.append(i) #list1存放1-n個數(shù)用來產(chǎn)生所有組合
list2 = list(itertools.combinations(list1, m-1))
num = int(C(n, m - 1)) #調(diào)用C函數(shù)
for i in range (num):
if check(list2[i])==1: #調(diào)用check 檢查是否是回路函數(shù)
shu_num+=1
b = [m + 1 for m in list2[i]]
print("該電路圖的樹",shu_num,b)
代碼驗證:
相關(guān)案例查看更多
相關(guān)閱讀
- web前端
- 云南網(wǎng)站建設(shè)專業(yè)品牌
- 云南小程序被騙蔣軍
- 云南網(wǎng)絡(luò)公司
- 做小程序被騙
- 小程序
- 云南建設(shè)廳網(wǎng)站
- 網(wǎng)絡(luò)公司哪家好
- 百度自然排名
- 小程序表單
- 云南旅游網(wǎng)站建設(shè)
- 云南網(wǎng)站建設(shè) 網(wǎng)絡(luò)服務(wù)
- 網(wǎng)站建設(shè)專業(yè)品牌
- 云南網(wǎng)站建設(shè)列表網(wǎng)
- 網(wǎng)站開發(fā)哪家好
- 云南網(wǎng)站建設(shè)電話
- web開發(fā)
- 云南網(wǎng)站建設(shè)公司排名
- 網(wǎng)絡(luò)公司報價
- 網(wǎng)站優(yōu)化公司
- 大理網(wǎng)站建設(shè)公司
- 云南花農(nóng)小程序
- 小程序開發(fā)平臺前十名
- 云南小程序定制
- 軟件定制公司
- 昆明網(wǎng)站設(shè)計
- 網(wǎng)站建設(shè)快速優(yōu)化
- 報廢車拆解軟件
- 云南網(wǎng)站制作
- 云南省建設(shè)廳官方網(wǎng)站