المصفوفة المتفرقة

مثال على المصفوفة المتفرقة
(11220000003344000000556677000000088000000099){\displaystyle \left({\begin{smallmatrix}11&22&0&0&0&0&0\\0&33&44&0&0&0&0\\0&0&55&66&77&0&0\\0&0&0&0&0&88&0\\0&0&0&0&0&0&99\\\end{smallmatrix}}\right)}
تحتوي المصفوفة المتفرقة أعلاه على 9 عناصر غير صفرية فقط، منها 26 عنصرًا صفريًا. تبلغ نسبة تفرقها 74%، وكثافتها 26%.
مصفوفة متفرقة تم الحصول عليها عند حل مسألة العناصر المحدودة في بعدين. العناصر غير الصفرية موضحة باللون الأسود.

في التحليل العددي والحوسبة العلمية ، تُعرف المصفوفة المتفرقة أو المصفوفة المتفرقة بأنها مصفوفة تكون فيها معظم العناصر أصفارًا. [ 1 ] لا يوجد تعريف دقيق لنسبة العناصر الصفرية اللازمة لتصنيف المصفوفة كمتفرقة، ولكن المعيار الشائع هو أن يكون عدد العناصر غير الصفرية مساويًا تقريبًا لعدد الصفوف أو الأعمدة. في المقابل، إذا كانت معظم العناصر غير صفرية، تُعتبر المصفوفة كثيفة . [ 1 ] يُشار أحيانًا إلى نسبة عدد العناصر الصفرية إلى العدد الإجمالي للعناصر (مثلًا، m × n لمصفوفة m × n ) باسم تفرق المصفوفة.

مفهومياً، يشير مصطلح "التباعد" إلى الأنظمة ذات التفاعلات الثنائية القليلة. على سبيل المثال، تخيل صفاً من الكرات المتصلة بنوابض من كرة إلى أخرى: هذا نظام متباعد، حيث أن الكرات المتجاورة فقط هي المتصلة. في المقابل، إذا كان صف الكرات نفسه يحتوي على نوابض تربط كل كرة بجميع الكرات الأخرى، فإن النظام سيُمثل مصفوفة كثيفة. يُعد مفهوم التباعد مفيداً في التوافقية ومجالات تطبيقية مثل نظرية الشبكات والتحليل العددي ، والتي عادةً ما تتميز بانخفاض كثافة البيانات أو الروابط المهمة. غالباً ما تظهر المصفوفات المتباعدة الكبيرة في التطبيقات العلمية أو الهندسية عند حل المعادلات التفاضلية الجزئية .

عند تخزين ومعالجة المصفوفات المتفرقة على الحاسوب ، من المفيد، بل والضروري في كثير من الأحيان، استخدام خوارزميات وهياكل بيانات متخصصة تستفيد من طبيعة المصفوفة المتفرقة. وقد صُممت حواسيب متخصصة للمصفوفات المتفرقة، [ 2 ] نظرًا لشيوعها في مجال التعلم الآلي. [ 3 ] تكون العمليات التي تستخدم هياكل وخوارزميات المصفوفات الكثيفة القياسية بطيئة وغير فعالة عند تطبيقها على المصفوفات المتفرقة الكبيرة، حيث تُهدر موارد المعالجة والذاكرة على الأصفار. تتميز البيانات المتفرقة بطبيعتها بسهولة ضغطها ، وبالتالي تتطلب مساحة تخزين أقل بكثير . بعض المصفوفات المتفرقة الكبيرة جدًا يصعب معالجتها باستخدام خوارزميات المصفوفات الكثيفة القياسية.

حالات خاصة

مخطط

تُشكّل مصفوفات النطاق فئةً خاصةً من المصفوفات المتفرقة، حيث تتركز العناصر غير الصفرية بالقرب من القطر الرئيسي. وتتميز مصفوفة النطاق بعرض نطاقها الأدنى والأعلى، واللذان يشيران إلى عدد الأقطار أسفل وأعلى (على التوالي) القطر الرئيسي الذي تقع بينه جميع العناصر غير الصفرية.

بصورة رسمية، يُعرَّف عرض النطاق الأدنى للمصفوفة A بأنه أصغر عدد p بحيث يكون العنصر aᵢ , يساوي صفرًا عندما يكون i > j + p . وبالمثل، يُعرَّف عرض النطاق الأعلى بأنه أصغر عدد p بحيث يكون aᵢ , = 0 عندما يكون i < jp ( جولوب وفان لون، 1996 ، §1.2.1) . على سبيل المثال، المصفوفة ثلاثية الأقطار لها عرض نطاق أدنى يساوي 1 وعرض نطاق أعلى يساوي 1. كمثال آخر، المصفوفة المتفرقة التالية لها عرض نطاق أدنى وعرض نطاق أعلى يساويان 3. لاحظ أن الأصفار ممثلة بنقاط للتوضيح. [XXXXXXXXXXXXXXXXXXXXXXX]{\displaystyle {\begin{bmatrix}X&X&X&\cdot &\cdot &\cdot &\cdot &\\X&X&\cdot &X&X&\cdot &\cdot &\\X&\cdot &X&\cdot &X&\cdot &\cdot &\\\cdot &X&\cdot &X&\cdot &X&\cdot &\\\cdot &X&X&\cdot &X&X&X&\\\cdot &\cdot &\cdot &X&X&X&\cdot &\\\cdot &\cdot &\cdot &\cdot &X&\cdot &X&\\\end{bmatrix}}}

تُعرف المصفوفات ذات النطاق العلوي والسفلي الصغير نسبيًا باسم مصفوفات النطاق، وغالبًا ما تكون مناسبة لخوارزميات أبسط من المصفوفات المتفرقة العامة؛ أو يمكن للمرء أحيانًا تطبيق خوارزميات المصفوفات الكثيفة واكتساب الكفاءة ببساطة عن طريق التكرار على عدد أقل من المؤشرات.

بإعادة ترتيب صفوف وأعمدة المصفوفة قد يكون من الممكن الحصول على مصفوفة A ذات نطاق ترددي أقل. وقد صُممت العديد من الخوارزميات لتقليل النطاق الترددي .

قطري

المصفوفة القطرية هي الحالة القصوى للمصفوفة النطاقية، حيث يكون عرض النطاق العلوي والسفلي صفراً. يمكن تخزين المصفوفة القطرية بكفاءة عالية عن طريق تخزين عناصر القطر الرئيسي فقط كمصفوفة أحادية البعد ، لذا فإن المصفوفة القطرية من الرتبة n × n لا تتطلب سوى n عنصرًا في الذاكرة.

متماثل

تنشأ المصفوفة المتناظرة المتفرقة كمصفوفة تجاور لرسم بياني غير موجه ؛ ويمكن تخزينها بكفاءة كقائمة تجاور .

قطر الكتلة

تتكون المصفوفة القطرية الكتلية من مصفوفات فرعية على طول كتلها القطرية. تأخذ المصفوفة القطرية الكتلية A الشكل التالي: أ=[أ1000أ2000أن]،{\displaystyle \mathbf {A} ={\begin{bmatrix}\mathbf {A} _{1}&0&\cdots &0\\0&\mathbf {A} _{2}&\cdots &0\\\vdots &\vdots &\ddots &\vdots \\0&0&\cdots &\mathbf {A} _{n}\end{bmatrix}},}

حيث A k هي مصفوفة مربعة لجميع قيم k = 1، ...، n .

يستخدم

تقليل التعبئة

تُعرف عناصر المصفوفة التي تتغير قيمتها من الصفر إلى قيمة غير صفرية أثناء تنفيذ الخوارزمية باسم "عناصر التعبئة". ولتقليل متطلبات الذاكرة وعدد العمليات الحسابية المستخدمة في الخوارزمية، يُنصح بتقليل عناصر التعبئة عن طريق تبديل الصفوف والأعمدة في المصفوفة. ويمكن استخدام تحليل تشوليسكي الرمزي لحساب أسوأ قيمة تعبئة ممكنة قبل إجراء تحليل تشوليسكي الفعلي .

توجد طرق أخرى غير تحليل تشوليسكي قيد الاستخدام. تُعدّ طرق التعامد (مثل تحليل QR) شائعة، على سبيل المثال، عند حلّ المسائل باستخدام طرق المربعات الصغرى. مع أن التعبئة النظرية تبقى نفسها، إلا أن "القيم غير الصفرية الزائفة" عمليًا قد تختلف باختلاف الطرق. ويمكن استخدام النسخ الرمزية لهذه الخوارزميات بنفس طريقة تشوليسكي الرمزية لحساب أسوأ حالة تعبئة.

حل معادلات المصفوفات المتفرقة

توجد طرق تكرارية ومباشرة لحل المصفوفات المتفرقة.

تستخدم الطرق التكرارية، مثل طريقة التدرج المترافق و GMRES، حسابات سريعة لضرب المصفوفة في المتجه.أxأنا{\displaystyle Ax_{i}}، حيث المصفوفةأ{\displaystyle A}تكون البيانات متفرقة. يمكن أن يؤدي استخدام المعالجات المسبقة إلى تسريع تقارب هذه الطرق التكرارية بشكل كبير.

تخزين

تُخزَّن المصفوفة عادةً على شكل مصفوفة ثنائية الأبعاد. يُمثِّل كل عنصر في المصفوفة عنصرًا من عناصر المصفوفة ، ويُشار إليه بالرمزين i و j . اصطلاحًا، يُمثِّل i فهرس الصف، ويُرقَّم من الأعلى إلى الأسفل، بينما يُمثِّل j فهرس العمود، ويُرقَّم من اليسار إلى اليمين. بالنسبة لمصفوفة من الرتبة m × n ، فإن حجم الذاكرة اللازمة لتخزين المصفوفة بهذا الشكل يتناسب طرديًا مع m × n (مع تجاهل ضرورة تخزين أبعاد المصفوفة أيضًا).

في حالة المصفوفة المتفرقة، يمكن تحقيق تخفيضات كبيرة في متطلبات الذاكرة عن طريق تخزين العناصر غير الصفرية فقط. وبناءً على عدد وتوزيع هذه العناصر، يمكن استخدام هياكل بيانات مختلفة، مما يوفر مساحة كبيرة في الذاكرة مقارنةً بالأسلوب الأساسي. لكن في المقابل، يصبح الوصول إلى العناصر الفردية أكثر تعقيدًا، وتتطلب استعادة المصفوفة الأصلية بشكل واضح هياكل بيانات إضافية.

يمكن تقسيم التنسيقات إلى مجموعتين:

  • تُستخدم أنواع البيانات التي تدعم التعديل الفعال، مثل DOK (قاموس المفاتيح)، وLIL (قائمة القوائم)، وCOO (قائمة الإحداثيات)، عادةً لإنشاء المصفوفات.
  • تلك التي تدعم الوصول الفعال وعمليات المصفوفة، مثل CSR (الصف المتفرق المضغوط) أو CSC (العمود المتفرق المضغوط).

قاموس المفاتيح (DOK)

تتكون DOK من قاموس يربط أزواج ( صف، عمود) بقيم العناصر. تُعتبر العناصر المفقودة من القاموس أصفارًا . يُعد هذا التنسيق مناسبًا لإنشاء مصفوفة متفرقة تدريجيًا بترتيب عشوائي، ولكنه غير مناسب للتكرار على القيم غير الصفرية بترتيب معجمي. عادةً ما يتم إنشاء مصفوفة بهذا التنسيق ثم تحويلها إلى تنسيق آخر أكثر كفاءة للمعالجة. [ 4 ]

قائمة القوائم (LIL)

يخزن LIL قائمة واحدة لكل صف، ويحتوي كل عنصر على فهرس العمود والقيمة. عادةً ما تُرتّب هذه العناصر حسب فهرس العمود لتسريع عملية البحث. هذا تنسيق آخر مناسب لإنشاء المصفوفات التزايدية. [ 5 ]

قائمة الإحداثيات (COO)

يخزن تنسيق COO قائمة من أزواج (الصف، العمود، القيمة) . من الناحية المثالية، يتم فرز الإدخالات أولاً حسب فهرس الصف ثم حسب فهرس العمود، لتحسين أوقات الوصول العشوائي. هذا تنسيق آخر مناسب لإنشاء المصفوفات التزايدية. [ 6 ]

صفوف متفرقة مضغوطة (تنسيق CSR أو CRS أو Yale)

يُمثل تنسيق الصفوف المتفرقة المضغوط (CSR) أو تخزين الصفوف المضغوط (CRS) أو تنسيق ييل، المصفوفة M بثلاثة مصفوفات (أحادية البعد)، تحتوي على التوالي على القيم غير الصفرية، وامتدادات الصفوف، ومؤشرات الأعمدة. وهو مشابه لتنسيق COO، ولكنه يضغط مؤشرات الصفوف، ومن هنا جاءت التسمية. يتيح هذا التنسيق الوصول السريع إلى الصفوف وعمليات ضرب المصفوفة في المتجه ( M × ). يُستخدم تنسيق CSR منذ منتصف الستينيات على الأقل، مع ظهور أول وصف كامل له في عام 1967. [ 7 ]

يخزن تنسيق CSR مصفوفة M متفرقة من الرتبة m × n في شكل صفوف باستخدام ثلاث مصفوفات (أحادية البعد) (V، COL_INDEX، ROW_INDEX) . لنفترض أن NNZ يمثل عدد العناصر غير الصفرية في M. (لاحظ أنه سيتم استخدام الفهارس التي تبدأ من الصفر هنا).

  • يبلغ طول المصفوفتين V و COL_INDEX NNZ ، وتحتويان على القيم غير الصفرية ومؤشرات الأعمدة لتلك القيم على التوالي.
  • يحتوي COL_INDEX على العمود الذي يوجد فيه الإدخال V المقابل.
  • المصفوفة ROW_INDEX طولها m + 1 ، وتُشفّر فهرس بداية الصف المُعطى في V و COL_INDEX . وهذا يُكافئ ROW_INDEX[j] الذي يُشفّر العدد الإجمالي للقيم غير الصفرية فوق الصف j . العنصر الأخير هو NNZ ، أي الفهرس الوهمي في V الذي يلي مباشرةً آخر فهرس صالح NNZ − 1. [ 8 ]

على سبيل المثال، المصفوفة (5000080000300600){\displaystyle {\begin{pmatrix}5&0&0&0\\0&8&0&0\\0&0&3&0\\0&6&0&0\\\end{pmatrix}}} هي مصفوفة 4 × 4 تحتوي على 4 عناصر غير صفرية، وبالتالي

V = [ 5 8 3 6 ] COL_INDEX = [ 0 1 2 1 ] ROW_INDEX = [ 0 1 2 3 4 ]

بافتراض أن اللغة تبدأ من الصفر.

لاستخراج صف، نقوم أولاً بتحديد ما يلي:

row_start = ROW_INDEX[row] row_end = ROW_INDEX[row + 1]

ثم نأخذ شرائح من V و COL_INDEX بدءًا من row_start وانتهاءً عند row_end.

لاستخراج الصف الأول (الصف الثاني) من هذه المصفوفة، نُحدد قيمتي row_start=1و row_end=2. ثم نُنشئ الشرائح V[1:2] = [8]و COL_INDEX[1:2] = [1]. نعلم الآن أن لدينا في الصف الأول عنصرًا واحدًا في العمود الأول بقيمة 8.

في هذه الحالة، يحتوي تمثيل CSR على 13 مدخلاً، مقارنةً بـ 16 مدخلاً في المصفوفة الأصلية. يوفر تنسيق CSR مساحة في الذاكرة فقط عندما يكون NNZ < ( m ( n -1)-1) / 2 .

مثال آخر، المصفوفة (10200000030040000050607000000080){\displaystyle {\begin{pmatrix}10&20&0&0&0&0\\0&30&0&40&0&0\\0&0&50&60&70&0\\0&0&0&0&0&80\\\end{pmatrix}}} هي مصفوفة 4 × 6 (24 عنصرًا) تحتوي على 8 عناصر غير صفرية، لذا

الخامس = [ 10 20 30 40 50 60 70 80 ] COL_INDEX = [ 0 1 1 3 2 3 4 5 ] ROW_INDEX = [ 0 2 4 7 8 ]

يتم تخزين الكل على شكل 21 مدخلاً: 8 في V ، و8 في COL_INDEX ، و5 في ROW_INDEX .

  • يقوم ROW_INDEX بتقسيم المصفوفة V إلى صفوف: (10, 20) (30, 40) (50, 60, 70) (80)، مما يشير إلى فهرس VCOL_INDEX ) حيث يبدأ كل صف وينتهي؛
  • COL_INDEX يقوم بمحاذاة القيم في الأعمدة: (10, 20, ...) (0, 30, 0, 40, ...)(0, 0, 50, 60, 70, 0) (0, 0, 0, 0, 0, 80).

لاحظ أنه في هذا التنسيق، تكون القيمة الأولى لـ ROW_INDEX دائمًا صفرًا، والقيمة الأخيرة دائمًا NNZ ، لذا فهما زائدتان نوعًا ما (مع أن NNZ لا تُعدّ زائدة في لغات البرمجة التي تتطلب تخزين طول المصفوفة صراحةً). ومع ذلك، يُجنّب هذا الحاجة إلى معالجة حالة استثنائية عند حساب طول كل صف، إذ يضمن أن الصيغة ROW_INDEX[ i + 1] − ROW_INDEX[ i ] تعمل لأي صف i . علاوة على ذلك، من المرجح أن تكون تكلفة الذاكرة لهذا التخزين الزائد ضئيلة بالنسبة لمصفوفة كبيرة بما فيه الكفاية.

تُعدّ صيغ المصفوفات المتفرقة (القديمة والجديدة) في جامعة ييل مثالين على مخطط CSR. تعمل صيغة ييل القديمة تمامًا كما هو موضح أعلاه، بثلاث مصفوفات؛ أما الصيغة الجديدة فتجمع بين ROW_INDEX و COL_INDEX في مصفوفة واحدة وتتعامل مع قطر المصفوفة بشكل منفصل. [ 9 ]

بالنسبة لمصفوفات التجاور المنطقي ، يمكن حذف مصفوفة البيانات، حيث أن وجود عنصر في مصفوفة الصف يكفي لنمذجة علاقة تجاور ثنائية.

من المرجح أن يُعرف باسم تنسيق ييل لأنه تم اقتراحه في تقرير حزمة المصفوفات المتفرقة لعام 1977 الصادر عن قسم علوم الحاسوب في جامعة ييل. [ 10 ]

العمود المتفرق المضغوط (CSC أو CCS)

يُشبه تنسيق CSC تنسيق CSR باستثناء أنه يقرأ القيم أولاً حسب العمود، ويُخزَّن فهرس صف لكل قيمة، بالإضافة إلى مؤشرات الأعمدة. على سبيل المثال، يُكتب CSC على النحو التالي: (val, row_ind, col_ptr) ، حيث val عبارة عن مصفوفة من القيم غير الصفرية للمصفوفة (من الأعلى إلى الأسفل، ثم من اليسار إلى اليمين)؛ و row_ind هي فهارس الصفوف المقابلة للقيم؛ و col_ptr هي قائمة فهارس val التي يبدأ منها كل عمود. يستند الاسم إلى حقيقة أن معلومات فهرس العمود مضغوطة مقارنةً بتنسيق COO. عادةً ما يُستخدم تنسيق آخر (LIL، DOK، COO) للإنشاء. يُعد هذا التنسيق فعالاً للعمليات الحسابية، وتقطيع الأعمدة، وضرب المصفوفات في المتجهات. وهو التنسيق التقليدي لتحديد مصفوفة متفرقة في MATLAB (عبر الدالة sparse).

برمجة

تدعم العديد من مكتبات البرامج المصفوفات المتفرقة، وتوفر حلولاً لمعادلات المصفوفات المتفرقة. وفيما يلي بعض المكتبات مفتوحة المصدر:

  • PETSc ، مكتبة C كبيرة، تحتوي على العديد من حلول المصفوفات المختلفة لمجموعة متنوعة من تنسيقات تخزين المصفوفات.
  • Trilinos ، مكتبة C++ كبيرة، مع مكتبات فرعية مخصصة لتخزين المصفوفات الكثيفة والمتفرقة وحل الأنظمة الخطية المقابلة.
  • Eigen3 هي مكتبة C++ تحتوي على العديد من خوارزميات حل المصفوفات المتفرقة. ومع ذلك، لا يوجد أي منها يعمل بالتوازي .
  • MUMPS ( MUltifrontal Massively Parallel sparse direct Solver )، مكتوب بلغة Fortran90، هو برنامج حل أمامي .
  • deal.II ، مكتبة العناصر المحدودة التي تحتوي أيضًا على مكتبة فرعية للأنظمة الخطية المتفرقة وحلها.
  • DUNE ، مكتبة أخرى للعناصر المحدودة تحتوي أيضًا على مكتبة فرعية للأنظمة الخطية المتفرقة وحلولها.
  • يوفر Armadillo غلاف C++ سهل الاستخدام لـ BLAS و LAPACK.
  • توفر مكتبة SciPy الدعم للعديد من تنسيقات المصفوفات المتفرقة، والجبر الخطي، والخوارزميات.
  • ALGLIB هي مكتبة مكتوبة بلغة C++ و C# تدعم الجبر الخطي المتفرق
  • مكتبة ARPACK Fortran 77 لتحليل ومعالجة المصفوفات المتفرقة، باستخدام خوارزمية أرنولدي.
  • مكتبة SLEPc لحل الأنظمة الخطية واسعة النطاق والمصفوفات المتفرقة
  • توفر مكتبة scikit-learn ، وهي مكتبة بايثون للتعلم الآلي ، دعمًا للمصفوفات المتفرقة وحلولها.
  • SparseArrays هي مكتبة قياسية للغة جوليا .
  • PSBLAS ، مجموعة أدوات برمجية لحل الأنظمة الخطية المتفرقة التي تدعم تنسيقات متعددة أيضًا على وحدة معالجة الرسومات (GPU).

تاريخ

ربما يكون مصطلح المصفوفة المتفرقة قد صاغه هاري ماركويتز الذي بدأ بعض الأعمال الرائدة ولكنه ترك المجال بعد ذلك. [ 11 ]

انظر أيضاً

ملحوظات

  1. 1 2 يان، دي؛ وو، تاو؛ ليو، ينغ؛ جاو يانغ (2017). “ضرب مصفوفة فعالة ومتناثرة الكثافة على نظام متعدد النواة”. المؤتمر الدولي السابع عشر لـ IEEE لعام 2017 لتكنولوجيا الاتصالات (ICCT) . IEEE. الصفحات 1880–3 . دوى : 10.1109/icct.2017.8359956 . رقم ISBN  978-1-5090-3944-9تعتمد نواة الحساب في الشبكات العصبية العميقة على ضرب المصفوفات الكبيرة المتفرقة والكثيفة . في مجال التحليل العددي، تُعرَّف المصفوفة المتفرقة بأنها مصفوفة تتكون عناصرها في الغالب من أصفار. في المقابل، إذا كان عدد العناصر غير الصفرية في المصفوفة كبيرًا نسبيًا، فإنها تُعتبر عادةً مصفوفة كثيفة. يُطلق على نسبة العناصر الصفرية (أو غير الصفرية) في المصفوفة اسم التفرق (أو الكثافة). تكون العمليات التي تستخدم هياكل وخوارزميات المصفوفات الكثيفة القياسية بطيئة نسبيًا وتستهلك كميات كبيرة من الذاكرة عند تطبيقها على المصفوفات المتفرقة الكبيرة.
  2. "شركة سيريبراس سيستمز تكشف النقاب عن أول شريحة في الصناعة تحتوي على تريليون ترانزستور" . www.businesswire.com . 19 أغسطس 2019. تاريخ الاطلاع: 2 ديسمبر 2019. تحتوي وحدة WSE على 400,000 نواة حسابية مُحسّنة للذكاء الاصطناعي. تُعرف هذه النوى باسم SLAC™ (نوى الجبر الخطي المتفرق)، وهي مرنة وقابلة للبرمجة ومُحسّنة للجبر الخطي المتفرق الذي يُشكّل أساس جميع حسابات الشبكات العصبية.
  3. "مختبر أرغون الوطني ينشر سيريبراس CS-1، أسرع حاسوب ذكاء اصطناعي في العالم | مختبر أرغون الوطني" . www.anl.gov (بيان صحفي) . تاريخ الاطلاع: 2 ديسمبر 2019. تُعدّ شريحة WSE أكبر شريحة تم تصنيعها على الإطلاق بمساحة 46,225 مليمترًا مربعًا، أي أكبر بـ 56.7 مرة من أكبر وحدة معالجة رسومات. تحتوي على 78 ضعفًا من نوى الحوسبة المُحسّنة للذكاء الاصطناعي، و3000 ضعف من الذاكرة عالية السرعة المدمجة، و10000 ضعف من عرض نطاق الذاكرة، و33000 ضعف من عرض نطاق الاتصال.
  4. انظرscipy.sparse.dok_matrix
  5. انظرscipy.sparse.lil_matrix
  6. انظرscipy.sparse.coo_matrix
  7. بولوتش، أيدين؛ فينمان، جيريمي ت.؛ فريجو، ماتيو؛ جيلبرت، جون ر.؛ ليسرسون، تشارلز إي. (2009). ضرب المصفوفة المتفرقة بالمتجه وضرب منقولة المصفوفة بالمتجه بالتوازي باستخدام كتل متفرقة مضغوطة (PDF) . ندوة ACM حول التوازي في الخوارزميات والهياكل. CiteSeerX 10.1.1.211.5256 . 
  8. سعد 2003
  9. بنك، راندولف إي.؛ دوغلاس، كريغ سي. (1993)، "حزمة ضرب المصفوفات المتفرقة (SMMP)" (ملف PDF) ، التقدم في الرياضيات الحسابية ، 1 : 127-137 ، doi : 10.1007/BF02070824 ، S2CID 6412241 
  10. إيزنستات، إس سي؛ جورسكي، إم سي؛ شولتز، إم إتش؛ شيرمان، إيه إتش (أبريل 1977). "حزمة مصفوفات ييل المتفرقة" (ملف PDF) . مؤرشف (ملف PDF) من الأصل في 6 أبريل 2019. تم الاطلاع عليه في 6 أبريل 2019 .
  11. مقابلة تاريخية شفهية مع هاري م. ماركويتز ، الصفحات 9، 10.

مراجع

  • جولوب، جين هـفان لون، تشارلز ف. (1996). حسابات المصفوفات (  الطبعة الثالثة). بالتيمور: جونز هوبكنز. ISBN 978-0-8018-5414-9.
  • ستوير، جوزيف؛ بوليرش، رولاند (2002). مقدمة في التحليل العددي (  الطبعة الثالثة). سبرينغر. doi : 10.1007/978-0-387-21738-3 . ISBN 978-0-387-95452-3.
  • تيوارسون، ريجينالد ب. (1973). المصفوفات المتفرقة . الرياضيات في العلوم والهندسة. المجلد  99. دار النشر الأكاديمية. ISBN 0-12-685650-8. OCLC 316552948 . (كان هذا الكتاب، الذي ألفه أستاذ في جامعة ولاية نيويورك في ستوني بروك، أول كتاب مخصص حصريًا للمصفوفات المتفرقة. وقد تم تقديم دورات الدراسات العليا التي تستخدم هذا الكتاب ككتاب مدرسي في تلك الجامعة في أوائل الثمانينيات).
  • بنك، راندولف إي.؛ دوغلاس، كريج سي. "حزمة ضرب المصفوفات المتفرقة" (PDF) .
  • بيسانيتسكي، سيرجيو (1984). تقنية المصفوفات المتفرقة . دار النشر الأكاديمية. ISBN 978-0-12-557580-5. OCLC 680489638 . 
  • سناي، ريتشارد أ. (1976). "تقليل حجم المصفوفات المتناظرة المتفرقة". النشرة الجيوديسية . 50 (4): 341-352 . Bibcode : 1976BGeod..50..341S . doi : 10.1007/BF02521587 . hdl : 2027/uc1.31210024848523 . S2CID 123079384 . وكذلك المذكرة الفنية الصادرة عن الإدارة الوطنية للمحيطات والغلاف الجوي (NOAA) رقم NOS NGS-4، هيئة المسح الجيوديسي الوطنية، روكفيل، ماريلاند. بالرجوع إلى سعد 2003 .
  • سكوت، جينيفر؛ توما، ميروسلاف (2023). خوارزميات الأنظمة الخطية المتفرقة . سلسلة مركز نيتشاس. بيركهاوزر. doi : 10.1007/978-3-031-25820-6 . ISBN 978-3-031-25819-0.(متاح للجميع)

للمزيد من القراءة