ধরুন আমাদের A এবং B দুটি ম্যাট্রিস আছে, আমাদের AB এর ফলাফল বের করতে হবে। আমরা অনুমান করতে পারি যে A এর কলাম সংখ্যা B এর সারি সংখ্যার সমান।
সুতরাং, যদি ইনপুট হয় [[1,0,0],[-1,0,3]] [[7,0,0],[0,0,0],[0,0,1]] ,
1 | 0 | 0 |
-1 | 0 | 3 |
7 | 0 | 0 |
0 | 0 | 0 |
0 | 0 | 1 |
তাহলে আউটপুট হবে [[7,0,0],[-7,0,3]]
7 | 0 | 0 |
-7 | 0 | 3 |
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
r1 :=A এর আকার, r2 :=B
এর আকার -
c1 :=A[0] এর সাইজ, c2 :=B[0]
এর সাইজ -
অর্ডার r1 x c2
এর একটি 2D অ্যারে রেট সংজ্ঞায়িত করুন -
জোড়ার একটি অ্যারে sparseA[r1] সংজ্ঞায়িত করুন
-
আরম্ভ করার জন্য i :=0, যখন i
-
j শুরু করার জন্য :=0, যখন j
করুন -
যদি A[i, j] 0 এর সমান না হয়, তাহলে −
-
sparseA[i]
এর শেষে { j, A[i, j] } ঢোকান
-
-
-
-
আরম্ভ করার জন্য i :=0, যখন i
-
j শুরু করার জন্য :=0, যখন j
-
আরম্ভ করার জন্য k :=0, যখন k
-
x :=sparseA[i, j]
এর প্রথম উপাদান -
যদি B[x, k] 0 এর সমান না হয়, তাহলে −
-
ret[i, k] :=ret[i, k] + sparseA[i, j] * B[x, k]
এর দ্বিতীয় উপাদান
-
-
-
-
-
রিটার্ন রিটার্ন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
শ্রেণির সমাধান {সর্বজনীন:ভেক্টর<ভেক্টরগুণন(ভেক্টর<ভেক্টর এন্ড এ, ভেক্টর<ভেক্টর &B) { int r1 =A.size(); int r2 =B.size(); int c1 =A[0].size(); int c2 =B[0].size(); ভেক্টর <ভেক্টর ret(r1, ভেক্টর > sparseA[r1]; for(int i =0; i ইনপুট
{1,0,0},{-1,0,3}},{{7,0,0},{0,0,0},{0,0,1}}আউটপুট
<প্রে>[[7, 0, 0, ],[-7, 0, 3, ],]