#!/usr/bin/python注1:在模糊數學(模糊理論基礎)中, 關係 是最重要的一部分內容,也是整個課程的核心,fuzzy矩陣的閉包就是關係的一種,即對應的行和列對應元素,先取小,再對新的向量取大。#-*- coding: utf-8 -*-
#__author__="ziyuan wang"
import numpy as np
def bibao(a1,a2):
m=int(a1.size**0.5)#這裡只可以計算方陣,
b = np.ones((m,m))
for j in range(m):
for i in range(m):
min_que=np.minimum(a1[j,:],a2[:,i]) #行和列對應值取小
b[j,i]=min_que.max()# 對生成的新向量取大
print(b)
return b
a = np.array([[1,0.6,0.5,0.7,0],[0.4,1,0.7,0.9,0.2],[0.6,0.6,1,0.5,0],[0.5,0.7,0.9,1,0.6],[0.8,0,0.7,0.9,1]])
# a = np.array([[0.3,1.0],[0.8,0.1]])
# a = np.array([[0.9,0.5,0.3],[0.2,0.4,0.95],[0.8,0.1,0.25]])
# a=np.array([[1,0.3,0.1,0.4,0.8,0.7,0.6],[0.3,1,0.5,0.9,0.6,0.8,0.9],[0.1,0.5,1,0.7,0.6,0.2,0.1],[0.4,0.9,0.7,1,0.5,0.9,0.4],[0.8,0.6,0.6,0.5,1,0.7,0.5],[0.7,0.8,0.5,0.9,0.7,1,0.4],[0.6,0.9,0.1,0.4,0.5,0.4,1]])
print('r: ')
print(a)
print("\nr^2: ")
a1=bibao(a,a) #r^2
print("\nr^3")
a2=bibao(a1,a) #r^3
print("\nr^4")
a3=bibao(a1,a1) #r^4
print("\n r^5")
a4=bibao(a3,a) #r^5
注2:在實際做程式設計時,一開始打算用的matlab,考慮到它本身就是基於矩陣的一款數學軟體,但是最後在行和列對應取小---做迴圈時,遇到很大困難,查資料發現,numpy中已經封裝好了,這個方法,直接就可以用了,隨用python很輕鬆的就搞定了!
求對稱閉包以及傳遞閉包
include include define n 50 求對稱閉包以及傳遞閉包 intmain else break int r n n 關係矩陣 for int i 0 iprintf 請輸入關係的個數 n int k 0 scanf d k printf 請輸入具有關係的兩個數以,分隔,回車輸入...
floyd求傳遞閉包
n頭牛比賽,m種比賽結果,最後問你一共有多少頭牛的排名被確定了,其中如果a戰勝b,b戰勝c,則也可以說a戰勝c,即可以傳遞勝負。求能確定排名的牛的數目。思路 如果一頭牛被x頭牛打敗,打敗y頭牛,且x y n 1,則我們容易知道這頭牛的排名就被確定了,所以我們只要將任何兩頭牛的勝負關係確定了,在遍歷所...
Floyd演算法 求傳遞閉包
題目讓確定有幾個人的位置是確定的,如果乙個點有x個點能到達此點,從該點出發能到達y個點,若x y n 1 x y n 1 x y n 1,則該點的位置是確定的。用floyd演算法算出每兩個點之間的距離,最後統計時,若dis a b dis a b dis a b 之間無路且dis b a dis b...