در این پست ضرب بولی دو ماتریس را بررسی خواهیم کرد، ضربی که بر روی دو ماتریس بولی انجام می پذیرد. به ماتریسی که عناصر یا درایه های آن (فقط) صفر و یک هستند، ماتریس بولی گفته می شود.

پیش نیاز :
نحوه ی این ضرب با ضرب معمولی دو ماتریس متفاوت است ولی پیش نیاز آن مانند ضرب معمولی این است که تعداد ستون های ماتریس اول با تعداد سطر های ماتریس دوم برابر باشد. نتیجه ی این ضرب نیز مانند ضرب معمولی، ماتریسی خواهد بود با تعداد سطر های ماتریس اول و ستون های ماتریس دوم. پس دو ماتریس a و b که به ترتیب a*p و p*b هستند قابل ضرب با یکدیگر اند و حاصلضرب آنها ماتریسی به اندازه ی a*b خواهد بود.

نحوه ی ضرب :

ماتریس های بالا را در نظر داشته باشید:


first matrix : a * p

second matrix : p * b

فرض کنید میخواهید درایه ی i,j ماتریس حاصلضرب را محاسبه کنید؛ اگر عدد k از 1 تا p پیدا شد به طوری که هم درایه ی i,k ماتریس اول و هم درایه ی k,j ماتریس دوم برابر 1 (یک) بود، انگاه درایه ی i,j ماتریس حاصلضرب برابر 1، و در غیر این صورت این درایه برابر 0 خواهد بود. میتوان جملات بالا را به صورت زیر نیز بیان کرد.
اگر عدد k به صورت

1 <= k <= p 
موجود بود و
first [i ,k] == 1 و second [k, j] == 1

آنگاه :
result [i, j] = 1
در غیر این صورت :

result [i, j] = 0

برای تک تک درایه های ماتریس حاصل بایستی این عملیات را انجام دهیم. برای درک بهتر این موضوع به تصویر زیر نوجه کنید. شکل زیر نحوه ی به دست آوردن درایه ی سطر دوم و ستون اول ماتریس حاصلضرب (result [2, 1]) را نشان میدهد.
+ نوشته شده در جمعه پنجم خرداد 1391ساعت 23:28 توسط MEC |