孫翠先,張 健,吳煥春
(唐山學(xué)院 基礎(chǔ)教學(xué)部,河北 唐山 063000)
集合A上的二元關(guān)系R的傳遞性描述了序偶之間的內(nèi)在聯(lián)系。當(dāng)A的元數(shù)|A|比較小(|A|≤4)時,可通過序偶法、關(guān)系矩陣法或關(guān)系圖法判定,計算量不大,人工判定可以完成。但當(dāng)|A|較大時,不論上述三種方法哪一種,人工計算量都非常巨大,基本上不可能完成。而求關(guān)系R的傳遞閉包t(R)時,當(dāng)R不具有傳遞性,就需要通過不斷添加新序偶使之具備傳遞性為止。因此當(dāng)|A|較大時,求t(R)變得非常困難。此時Warshall提出了一種算法[1]。本文在Warshall算法基礎(chǔ)上,利用關(guān)系矩陣,借助數(shù)學(xué)軟件Matlab,給出求t(R)的優(yōu)化算法。此法實現(xiàn)了傳遞閉包的Matlab計算,最大優(yōu)點是對|A|無限制,程序簡便易操作,最重要的一點是給出了新添加的序偶矩陣。
給定集合A上的一個二元關(guān)系R,設(shè)MR為R的關(guān)系矩陣,MR=(rij),這里rij只取0或1,它是一個布爾矩陣。設(shè)集合A={a1,a2,…,an},t(R)的關(guān)系矩陣為Mt(R)。
Mt=R;
a=size(R);
for k=1∶a
for i=1∶a
for j=1∶a
Mt(i,j)=max(min(Mt(i,k),Mt(k,j)),Mt(i,j));
end
end
end
Mt
Mt-R=NR
還原得t(R)。
給定A={a,b,c,d,e,f,g,h},|A|=8,R={,,,
在Matlab R2007b下運行:
>>Mt=MR;
>>a=size(MR);
>>for k=1∶a
for i=1∶a
for j=1∶a
Mt(i,j)=max(min(Mt(i,k),Mt(k,j)),Mt(i,j));
end
end
end
>>Mt
Mt=
>>Mt-MR
ans=
ans即為新添加的序偶矩陣。新添加的序偶集合為
實例中全域關(guān)系|EA|=64,而|R|=8,|R|占|EA|的百分比只有12.5%,此時可以人工手算。但當(dāng)|R|占|EA|的百分比只有30%以上時,人工求t(R)幾乎不可能實現(xiàn),而此時突顯本文給出的方法的優(yōu)越性。