PDA

View Full Version : ضرب 2 ماتریس بولی



masoud_cpu
یک شنبه 22 خرداد 1390, 11:26 صبح
سلام. اقا ما هرچی تو سایت های وطنی و این اجانب گشتیم الگوریتم ضرب ماتریس بولی رو پیدا نکردیم .
دوستان اگر میتونید فقط اون سه حلقه For مربوط به صرب و اجتمالا یه If باید داشته باشه رو واسم بزارید ممنون .
a[3][3
b[3][3
c[3][3
با تشکر.

quiet_programmer
یک شنبه 22 خرداد 1390, 15:36 عصر
باسلام.

اگه منظورت رو درست متوجه شده باشم کد زیر ضرب بولی دوتا ماتریس 3*3 میتونه باشه.

for(i=0;i<3;++i)
for(j=0;j<3;++j)
{
c[i][j]=false;
for(k=0;k<3;++k)
{
c[i][j]=c[i][j]||(a[i][k]&&b[k][j]);
}
}


البته کد بالا رو میتونی به این صورت بهینه کنی که بگی در صورتی که c[i][j] برابر true شد از حلقه سوم بپر بیرون. چون بعد از True شدن c[i][j] دیگه امکان نداره false بشه، پس دیگه حلقه رو بی مورد اجرا نکن.
for(i=0;i<3;++i)
for(j=0;j<3;++j)
{
c[i][j]=false;
for(k=0;k<3;++k)
{
(c[i][j]=c[i][j]||(a[i][k]&&b[k][j]))?(break):(NULL);
}
}