Matlab求传递闭包t(R)

Matlab求传递闭包t(R),第1张

a=size(R)

B=zeros(a)

flag=0

while

flag==0

for

i=

1:

a

for

j=

1:

a

for

k=1:a

B(

i

,

j

)

=

max(min(

R(

i

,

k)

,

R(

k,

j)

)

,

B(

i

,

j

)

)

%R与昌侍R内积,先取小再取誉迅洞大

end

end

end

if

B==R

flag=1

else

R=B%循环计算R传递闭包庆枯

end

end

程序运行通过,很好用

最佳答案

#include <stdio.h>

#include <stdlib.h>

#define N 20

#define M 20

main()

{

int i,j,k,m,n

int r1[M],r2[M],a[N],mr[N][N]={0}

FILE * fp

printf("卜中程序自动调用c:/stone2.txt文件内相应数据\n")

fp=fopen("c:\\stone2.txt","r")

fscanf(fp,"%d",&n) /*读取集合元素个数*/

for(i=0i<ni++) /*读取集合元素*/

fscanf(fp,"%d",&a[i])

fscanf(fp,"%d",&m) /*读取关系个数*/

for(k=0k<mk++)

fscanf(fp,"%d,%d",&r1[k],&r2[k])/*读取关系*/

fclose(fp)

printf("自反闭包r(R):\n{")

for(i=0i<ni++) printf("<%d,%d>,",a[i],a[i]) /*输出自反闭包*/

for(k=0k<mk++)

{

if(r1[k]!=r2[k]) printf("<%d,%d>,",r1[k],r2[k])

else continue

}

printf("\b}\n")

printf("对称闭包s(R):\n{") /*输出对称闭包*/

for(k=0k<mk++)

{

if(r1[k]!=r2[k]) printf("<%d,%d>,<%d,%d>,",r1[k],r2[k],r2[k],r1[k])

else printf("<%d,%d>,",r1[k],r2[k])

}

printf("\b}\n")

k=0

for(i=0i<n,k<mi++)

{

if(r1[k]!=a[i]) continue

else

{

for(j=0j<n,k<mj++)/*关系转换成矩阵*/

{

if(r2[k]!=a[j]) continue

else

{

mr[i][j]=1

k++i=0j=0

break

}

}

}

}

printf("关系所型数山对应的关系矩阵:\n")

for(i=0i<ni++)

{ /*打印关系矩阵*/

for(j=0j<nj++)

printf("%5d",mr[i][j])

printf("\n")

}

for(k=0k<nk++)

for(i=0i<ni++)/*warshall*/

for(j=0j<nj++)

mr[i][j]+=mr[i][j]+mr[i][k]*mr[k][j]

for(i=0i<ni++)

for(j=0j<nj++)

{/*把mr[]非0项赋值为1*/

if(!mr[i][j]) continue

else mr[i][j]=1

}

printf("传递闭包对应关系矩阵:\n")

for(i=0i<ni++)

{ /*输出传递闭包对应的关系矩阵*/

for(j=0j<nj++)

printf("%5d",mr[i][j])

printf("\n")

}

system("PAUSE")

}

自己写的,三个闭包都有,包括传递闭包毕汪,看注释就知道了,还是用文件读写,方便数据输入


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12401143.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存