কম্পিউটার

C++ এ স্পার্স ম্যাট্রিক্স গুণন


ধরুন আমাদের 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, ],]

  1. ম্যাট্রিক্স চেইন গুন

  2. স্পার্স ম্যাট্রিক্সের জন্য সি প্রোগ্রাম

  3. C++ এ ম্যাট্রিক্সের সারি-ভিত্তিক বনাম কলাম-ভিত্তিক ট্রাভার্সাল

  4. C++ এ স্ট্রসেনের ম্যাট্রিক্স সমীকরণ মনে রাখার সহজ উপায়