سؤال

عن المشروع الذي أقوم به ، تتحلل الرسم البياني التي تم إنشاؤها باستخدام NetworkX في الجوار مصفوفة باستخدام NetworkX adj_matrix() وظيفة.بيد أن واحدة من المشاكل التي كنت قد تأتي عبر هو أن كل واحد البياني التي لا تتحلل يعطيني الخطأ التالي عند محاولة إيجاد معكوس المصفوفة.

str: Traceback (most recent call last):
  File "C:\eclipse\plugins\org.python.pydev.debug_1.4.7.2843\pysrc\pydevd_resolver.py", line 179, in _getPyDictionary
    attr = getattr(var, n)
  File "C:\Python26\lib\site-packages\numpy\core\defmatrix.py", line 519, in getI
    return asmatrix(func(self))
  File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 355, in inv
    return wrap(solve(a, identity(a.shape[0], dtype=a.dtype)))
  File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 254, in solve
    raise LinAlgError, 'Singular matrix'
LinAlgError: Singular matrix

حاولت توليد الجوار المصفوفات من 5 الرسوم البيانية المختلفة و كل منهم أنتجت نفس الخطأ عندما حاولت إيجاد معكوس مصفوفة الجوار.السؤال الذي يطرح هو ما إذا كان هناك أي وسيلة للذهاب من NetworkX الرسم البياني إلى المصفوفة.ما هو أفضل مسار للعمل من هنا ؟ وأنا أدرك أن هناك أسئلة أخرى تتعلق مصفوفة معكوسة ، ولكن الألغام هي محدودة إلى حد ما من حقيقة أن أنا في حاجة إلى الرسم البياني مصفوفة الجوار.

هل كانت مفيدة؟

المحلول

المصفوفات المتاخمة ليس دائما مانعا. وبعد هناك أوراق حول هذا الموضوع؛ لست متأكدا مما إذا كان هناك أي توصيف بسيط للرسوم البيانية المقابلة. سيكون النهج العملي هو التقاط استثناء LinalGerror في التعليمات البرمجية الخاصة بك (حاول ... باستثناء ...)، وتحذير عندما لا تكون مصفوفة المجاورة غير قابلة للتحول (والحفاظ على أداء حساباتك بطريقة أخرى).

نصائح أخرى

أنا لا أعرف بالضبط كيف networkx تنتج مصفوفة الجوار ، ولكن هناك على الإطلاق أي سبب من أجل أن يكون inversible.على سبيل المثال في الرسم البياني الكامل (جميع العقد ترتبط كل بعضها البعض) ، adacency مصفوفة كاملة من تلك المصفوفة من الواضح 0 باعتبارها القيمة الذاتية (حالما عدد العقد هو >= 2 بالطبع...).أو الرسم البياني مع العقد ن و أي حواف ، مصفوفة الجوار 0...

ماذا تريد أن تفعل ؟ لم تنظر معكوس مصفوفة الجوار ، ولكن في كثير من الأحيان معكوس I - x A عن بعض (الصغيرة) قيمة x.ومعكوس هو

(I - x A) ^(-1) = I + xA + x^2 A2 + ...

وهو inversible لبعض قيمة x (في الواقع ، في أقرب وقت |×| < ماكس( |1/y| y في القيم الذاتية من) على ما أظن)...هذا لأنك تنظر في عدد من المسارات في الرسم البياني الخاص بك, ولكن وضع بعض تسوس في ذلك ، لذا فمن summable (الموقع أي شخص؟)

هل تسأل عن طريقة لتوليد الرسوم البيانية التي تكون مصفوفات مجاورة غير مفردة؟ ليس هناك خطأ في NetworkX أو Numpy أن الرسوم البيانية التي قمت بإنشائها تحتوي على مصفوفات مجاورة لا تتغاطيات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top