المصفوفات المتفرقة
حين تكون المصفوفة مليئة بالأصفار، تقلل صيغ التخزين المتفرقة الذاكرة من O(n²) إلى O(nnz) — مما يتيح حسابات على الرسوم البيانية والشبكات كانت مستحيلة قبل ذلك.
معظمها أصفار
COO — الإحداثيات
- الذاكرة: 3 × nnz كلمة
- SpMV: بسيط لكن وصول عشوائي للصفوف
- الأفضل لـ: بناء المصفوفة
CSR — الصف المضغوط
ثلاثة مصفوفات: val[]، col_ind[]، row_ptr[]. الوصول التسلسلي للصفوف → ودّي للذاكرة المؤقتة. صيغة العمل للمحلات التكرارية (CG، GMRES). الذاكرة: nnz + nnz + (m+1) كلمة.
CSC — العمود المضغوط
- يعكس CSR لكن بترتيب الأعمدة: col_ptr[]، row_ind[]، val[]
- أصلي في MATLAB — جميع مصفوفات sparse() تستخدم CSC
- المحلات المباشرة (Cholesky، LU) تفضل الوصول العمودي
- Aᵀv رخيص في CSC = Av في CSR
- الوصول للصفوف مكلف — يستلزم مسح المصفوفة بأكملها
SpMV وملء الفراغ
الرسوم البيانية والشبكات
- PageRank: تكرار القوة على مصفوفة انتقال متفرقة
- التجميع الطيفي: متجهات ذاتية للابلاسيان المتفرق L = D − A
- شبكات الرسوم البيانية العصبية: تمرير رسائل = Ã H W لكل طبقة
- أقصر المسارات: Bellman-Ford كـ SpMV في شبه الحلقة (min, +)
- عد المثلثات: قطر SpGEMM لـ A³
FEM ومصفوفات الصلابة
FEM على شبكة ثنائية الأبعاد بـ n عقدة تولد مصفوفة صلابة متفرقة موجبة محددة K بـ nnz ≈ 7n. دوال الأساس لها دعم محلي — كل معادلة تربط العقد المجاورة فقط. التجميع: ثلاثيات COO لكل عنصر → تحويل إلى CSR → حل تكراري (CG + متعدد الشبكات).
اختيار المحل المتفرق
- مباشر (UMFPACK، CHOLMOD): متين، أمثل لأطراف يمنى متعددة، محدود بملء الفراغ في 3D
- تكراري (CG، GMRES): O(nnz) لكل خطوة، يتوسع لـ n > 10⁷، يحتاج مسبّق
- مسبّق ILU: تحليل تقريبي متفرق → تكرارات CG أقل
- متعدد الشبكات: O(n) إجمالاً للمعادلات الإهليلجية — معيار الذهب في 3D
- خالٍ من المصفوفة: التكراري فقط إذا كانت A ضمنية
متفرق بالتصميم
COO للتجميع → CSR للحساب → CSC لعمليات الأعمدة. SpMV هو الأساس الحاسم — محدود بعرض نطاق الذاكرة. ملء الفراغ أثناء التحليل يتطلب إعادة الترتيب. الرسوم البيانية وFEM وسلاسل ماركوف تولد مصفوفات متفرقة بشكل طبيعي. المباشر للمتانة وأطراف يمنى متعددة؛ التكراري + المسبّق للمسائل الكبيرة ثلاثية الأبعاد.