شبكة إكس
NetworkX هي مكتبة بايثون لدراسة الرسوم البيانية والشبكات . NetworkX برنامج مجاني مرخص بموجب رخصة BSD-new .
تاريخ
بدأ تطوير NetworkX في عام 2002 بواسطة أريك أ. هاغبرغ، ودانيال أ. شولت، وبيتر ج. سوارت. [ 4 ] وهو مدعوم من قبل الإدارة الوطنية للأمن النووي التابعة لوزارة الطاقة الأمريكية في مختبر لوس ألاموس الوطني .
صُممت هذه الحزمة بهدف إنشاء أدوات لتحليل البيانات واستراتيجيات التدخل للسيطرة على انتشار الأمراض الوبائية، مع استكشاف بنية وديناميكيات الأنظمة الاجتماعية والبيولوجية والبنية التحتية بشكل عام. [ 4 ]
استُلهمت NetworkX من مقال غيدو فان روسوم عام 1998 حول تمثيل الرسوم البيانية في بايثون، [ 5 ] وظهرت لأول مرة للجمهور في المؤتمر السنوي لـ SciPy عام 2004. وفي أبريل 2005، أُتيحت NetworkX كبرنامج مفتوح المصدر. [ 1 ]
تتوفر العديد من حزم بايثون المتخصصة في نظرية الرسوم البيانية ، بما في ذلك igraph و graph-tool وغيرها الكثير. وبحلول أبريل 2024، تجاوز عدد مرات تحميل NetworkX خمسين مليون مرة، [ 6 ] متجاوزًا بذلك عدد مرات تحميل ثاني أكثر الحزم شيوعًا، igraph، بأكثر من خمسين ضعفًا. [ 7 ] ويمكن أن يُعزى هذا الانتشار الواسع إلى الإصدار المبكر لـ NetworkX وتطورها المستمر ضمن بيئة SciPy.
في عام 2008، قام نظام SageMath ، وهو نظام رياضيات مفتوح المصدر، بدمج NetworkX في حزمته وأضاف دعمًا لمزيد من خوارزميات ووظائف الرسم البياني. [ 4 ]
| إصدار | تاريخ الافراج عنه | تغييرات رئيسية |
|---|---|---|
| 0.22 | 17 يونيو 2005 | الفرز الطوبولوجي لاختبار الرسوم البيانية الموجهة غير الدورية (DAGs). دمج خوارزمية ديكسترا لإيجاد أقصر المسارات في الرسوم البيانية الموزونة . [ 8 ] |
| 0.99 | 18 نوفمبر 2008 | تم تغيير نوع الرسم البياني الافتراضي إلى رسم بياني مرجح. تم تقديم MultiGraph و MultiDiGraph و LabeledGraph و LabeledDiGraph. [ 8 ] |
| 1.0 | 8 يناير 2010 | إضافة عوامل الفرق والتقاطع. تطبيق خوارزمية A* لإيجاد المسار الأمثل. دمج خوارزميات PageRank و HITS و [eigenvector] centrality لتحليل الشبكات. دمج خوارزمية كروسكال لإنشاء الأشجار الممتدة الدنيا . [ 8 ] |
| 2.0 | 20 سبتمبر 2017 | تنقيحات هامة للأساليب داخل فئتي MultiGraph و DiGraph. إصلاح شامل لنظام التوثيق . تغييرات متنوعة لتحسين تجربة المستخدم. [ 8 ] |
| 3.0 | 7 يناير 2023 | تحسين التكامل مع حزم نظام SciPy البيئي. تمت إضافة ميزة إضافية جديدة للسماح للمستخدمين باستخدام واجهات خلفية مختلفة ( GraphBLAS ، CuGraph) للحساب. [ 9 ] |
سمات
- فئات للرسوم البيانية والرسوم البيانية الموجهة .
- تحويل الرسوم البيانية من وإلى عدة صيغ.
- القدرة على إنشاء رسوم بيانية عشوائية أو إنشائها بشكل تدريجي.
- القدرة على إيجاد الرسوم البيانية الفرعية ، والمجموعات ، والنقاط الأساسية k .
- استكشف التجاور ، والدرجة ، والقطر ، ونصف القطر ، والمركز ، والوساطة ، وما إلى ذلك.
- ارسم الشبكات ثنائية وثلاثية الأبعاد.
أنواع الرسوم البيانية المدعومة
ملخص
تمثل الرسوم البيانية، في هذا السياق، مجموعات من الرؤوس (العقد) والحواف (الوصلات) بينها. يوفر NetworkX دعمًا لأنواع متعددة من الرسوم البيانية، كل منها مناسب لتطبيقات وسيناريوهات مختلفة.
الرسوم البيانية الموجهة (DiGraph)
تتكون الرسوم البيانية الموجهة، أو الرسوم البيانية الموجهة، من عقد متصلة بحواف موجهة. في الرسم البياني الموجه، يكون للحواف اتجاه يشير إلى التدفق أو العلاقة بين العقد. [ 10 ]

الرسوم البيانية غير الموجهة (الرسم البياني)
الرسوم البيانية غير الموجهة، والتي يُشار إليها ببساطة باسم الرسوم البيانية في NetworkX، هي رسوم بيانية لا تمتلك حوافها اتجاهًا جوهريًا. وتكون الاتصالات بين العقد متناظرة، بمعنى أنه إذا كانت العقدة A متصلة بالعقدة B، فإن العقدة B متصلة أيضًا بالعقدة A. [ 11 ]

الرسوم البيانية المتعددة
تسمح الرسوم البيانية المتعددة بوجود حواف متعددة بين نفس زوج العقد. بعبارة أخرى، تسمح الرسوم البيانية المتعددة بوجود حواف متوازية ، حيث يمكن أن يوجد أكثر من حافة واحدة بين عقدتين. [ 12 ]

الرسوم البيانية المتعددة الموجهة
الرسوم البيانية الموجهة المتعددة هي رسوم بيانية موجهة تسمح بوجود حواف موجهة متعددة بين نفس زوج العقد. وعلى غرار الرسوم البيانية الموجهة المتعددة، تُمكّن الرسوم البيانية الموجهة المتعددة من نمذجة السيناريوهات التي توجد فيها علاقات موجهة متعددة بين العقد. [ 13 ]

تحديات في مجال التصور البصري
على الرغم من أن NetworkX توفر أدوات قوية لإنشاء الرسوم البيانية وتحليلها، إلا أن إنتاج تصورات للرسوم البيانية المعقدة قد يكون صعباً. قد يتطلب تصور الرسوم البيانية الكبيرة أو ذات الترابط الكثيف تقنيات متخصصة ومكتبات خارجية تتجاوز إمكانيات NetworkX وحدها.
تخطيطات الرسوم البيانية
توفر مكتبة NetworkX خوارزميات تخطيط متنوعة لتصوير الرسوم البيانية في الفضاء ثنائي الأبعاد. تحدد هذه الخوارزميات مواقع العقد والحواف في تمثيل الرسم البياني، بهدف الكشف عن بنيته وعلاقاته بفعالية.
تصميم الربيع
يُعدّ تخطيط الربيع في NetworkX طريقة شائعة لتصوّر الرسوم البيانية باستخدام خوارزمية تعتمد على القوة. وهو مبنيّ على نموذج فروخترمان-رينغولد، الذي يعمل كمحاكاة فيزيائية افتراضية. كل عقدة في الرسم البياني عبارة عن جسيم مشحون يتنافر مع العقد الأخرى، بينما تعمل الحواف كزنبركات تجذب العقد المتصلة ببعضها. هذا التوازن يُنشئ تخطيطًا ينتشر فيه الرسم البياني بشكل طبيعي ليُشكّل شكلًا غنيًا بالمعلومات.
أثناء تشغيل الخوارزمية، تسعى إلى تقليل "طاقة" النظام الإجمالية عن طريق تعديل مواقع العقد تدريجيًا. غالبًا ما تُبرز النتيجة أنماطًا في الرسم البياني، مثل التجمعات أو مجموعات العقد المتصلة بإحكام. وهي تُحقق أفضل النتائج مع الرسوم البيانية الصغيرة والمتوسطة الحجم، حيث تُعدّ الوضوح والمظهر من الأمور المهمة.
يمكنك إنشاء هذا التخطيط في NetworkX باستخدام الدالة spring_layout() الموجودة في networkx.drawing.layout. تتيح لك هذه الدالة عدة خيارات لتخصيص التخطيط، حيث يمكنك التحكم في المسافة بين العقد باستخدام المعامل k أو تحديد عدد التكرارات التي يجب أن تُجرى عليها المحاكاة. كما تتيح لك رسم المخطط في أكثر من بُعدين عن طريق ضبط المعامل dim.

G = nx.path_graph ( 4 ) pos = nx.spring_layout ( G ) nx.draw ( G , pos , with_labels = True )تُستخدم طريقة التخطيط هذه في العروض المرئية التفاعلية والاستكشافية. غالبًا ما يكشف تخطيط الربيع عن بنية الرسم البياني بطريقة بديهية وسهلة القراءة [ 14 ].
التخطيط الطيفي
يعتمد التخطيط الطيفي على الخصائص الطيفية لمصفوفة التجاور الخاصة بالرسم البياني . ويستخدم القيم الذاتية والمتجهات الذاتية لمصفوفة التجاور لتحديد مواقع العقد في فضاء منخفض الأبعاد. يميل التخطيط الطيفي إلى إبراز البنية العامة للرسم البياني، مما يجعله مفيدًا في تحديد المجموعات والتجمعات . [ 15 ]
كيف يعمل التخطيط الطيفي
المصدر: [ 16 ]
- قم بإنشاء مصفوفة لابلاس للرسم البياني.
- تُعرَّف مصفوفة لابلاس L للرسم البياني على النحو التالي:، أين هي مصفوفة الدرجة (مصفوفة قطرية حيث(درجة الرأس i) و A هي مصفوفة التجاور.
- للرسم البيانيبمصفوفة تجاور ذات n رأس، تكون المصفوفة A مصفوفة من الرتبة n × n حيثإذا كانت هناك حافة بين الرأس i والرأس i وخلاف ذلك.
- تحتوي مصفوفة لابلاس على قيم ذاتية ومتجهات ذاتية مقابلة تشفر الخصائص الهيكلية للرسم البياني. [ 17 ]
- احسب المتجهات الذاتية المقابلة لأصغر القيم الذاتية غير الصفرية. [ 18 ]
- استخدم هذه المتجهات الذاتية كقيم إحداثيات لتحديد مواقع الرؤوس. [ 19 ]
- تأتي الإحداثيات السينية من المتجه الذاتي الثاني (المرتبط بثاني أصغر قيمة ذاتية)، وتأتي الإحداثيات الصادية من المتجه الذاتي الثالث. [ 19 ]
- قم بتغيير حجم وتوسيط التصميم الناتج حسب الحاجة.
لماذا يكشف ذلك عن بنية الشبكة
- تحتوي العقد الموجودة في التجمعات الكثيفة على مدخلات متجه ذاتي متشابهة، مما يؤدي إلى تجميعها مكانيًا. [ 20 ]
- يعمل متجه فيدلر ( المتجه الذاتي الثاني) على تقليل نسبة القطع ، مما يؤدي إلى فصل الرسم البياني إلى مجموعات ذات أقل قدر من الترابطات. [ 21 ]

في الرسم البياني أعلاه، نلاحظ أن التخطيط الطيفي يساعد في رصد البنى العالمية والمجتمعية المضمنة في الرسم البياني. وبمقارنة كلا التخطيطين، نرى أن التخطيط الطيفي يُبقي العقد المنتمية إلى نفس المجتمع متقاربة، مما يُسهّل رصد المجتمعات مقارنةً بالتخطيط الربيعي. [ 22 ]
أكواد لتنفيذ الرسم البياني
استيراد numpy كـ np، و matplotlib.pyplot كـ plt، و networkx كـ nx# إنشاء رسم بياني بعقد متداخلة في تخطيط طيفي G = nx.karate_club_graph ( ) L = nx.laplacian_matrix ( G ) .todense ( )# حساب المتجهات الذاتية لـ L لتخطيط الطيف eigenvals ، eigenvecs = np.linalg.eigh ( L ) fiedler_vector = eigenvecs [ :, 1 ] # ثاني أصغر متجه ذاتي eigenvec2 = eigenvecs [ :, 2 ] # ثالث أصغر متجه ذاتي# إنشاء تخطيط طيفي (ثنائي الأبعاد: استخدام متجه فيدلر للإحداثي السيني، وأصفار للإحداثي الصادي) pos_spectral = { node : ( fiedler_vector [ i ] + np . random . normal ( 0 , 0.01 ), eigenvec2 [ i ] + np . random . normal ( 0 , 0.1 )) for i , node in enumerate ( G . nodes ())}# تعريف التخطيطات للمقارنة layouts = { "Spring Layout" : nx . spring_layout ( G , seed = 42 ), "Spectral Layout" : pos_spectral }# رسم جميع التخطيطات plt.figure ( figsize = ( 15 , 8 ) ) for i , ( title , pos ) in enumerate ( layouts.items ( ) , 1 ) : plt.subplot ( 1 , 2 , i ) nx.draw ( G , pos , with_labels = True , node_color = ' skyblue ' , node_size = 800 , font_size = 10 ) plt.title ( title ) plt.tight_layout ( ) plt.savefig ( ' Spec_layout.png ' ) plt.show ( )التصميم الدائري

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

يُرتب تخطيط الصدفة العُقد في دوائر متحدة المركز أو صدفات بناءً على بُعدها عن مركز مُحدد. تكون العُقد داخل الصدفة نفسها على بُعد متساوٍ من المركز، بينما تُرسَم الحواف شعاعيًا بين العُقد في الصدفات المتجاورة. يُستخدم تخطيط الصدفة غالبًا لتصوير الهياكل الهرمية أو الشجرية. [ 24 ]
نموذج التعليمات البرمجية
# مثال بسيط لتخطيط الصدفة G = nx.balanced_tree ( 2 , 2 ) shells = [[ 0 ] , [ 1 , 2 ] , [ 3 , 4 , 5 , 6 ] ] pos = nx.shell_layout ( G , nlist = shells ) nx.draw ( G , pos , with_labels = True )تخطيط كامادا-كاواي

تعتمد خوارزمية كامادا-كاواي لتخطيط الشبكات على تحديد مواقع العقد بناءً على المسافات بينها، بهدف تقليل الطاقة الكلية للنظام. وتأخذ هذه الخوارزمية في الاعتبار كلاً من بنية الرسم البياني وأطوال حوافه، مما ينتج عنه تخطيط يركز على الدقة الهندسية وسهولة القراءة. [ 25 ]
تخطيط عشوائي

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

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

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

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

يُرتب تخطيط BFS (المُطبق في عرضنا التوضيحي باستخدام تخطيط shell على طبقات BFS) العُقد حسب بُعدها عن عقدة المصدر. جميع العُقد التي تبعد مسافة d تنتقل إلى shell d. يُشفّر هذا بصريًا عدد القفزات من الجذر، بحيث يُمكنك رؤية بُعد كل عقدة في الرسم البياني بدقة. إنه مثالي لتصورات أقصر مسار أو إمكانية الوصول. ولأنه يستخدم بحث العرض أولًا بشكل كامل، فإن حسابه خطي (O(n + m)).
الاستخدام
توفر مكتبة NetworkX وظائف لتطبيق خوارزميات تخطيط مختلفة على الرسوم البيانية وعرض النتائج باستخدام مكتبة Matplotlib أو مكتبات رسم بياني أخرى. يمكن للمستخدمين تحديد خوارزمية التخطيط المطلوبة عند استدعاء وظائف الرسم، مما يتيح عرضًا مرنًا وقابلًا للتخصيص للرسوم البيانية.
ملاءمة
يُعدّ NetworkX مناسبًا للعمل على الرسوم البيانية الكبيرة في العالم الحقيقي، مثل الرسوم البيانية التي تتجاوز 10 ملايين عقدة و100 مليون حافة. [ 26 ] ونظرًا لاعتماده على بنية بيانات "قاموس القواميس" المكتوبة بلغة بايثون، يُعتبر NetworkX إطار عمل فعالًا وقابلًا للتوسع بدرجة كبيرة وقابلًا للنقل بسهولة لتحليل الشبكات والشبكات الاجتماعية . [ 4 ]
التطبيقات
صُمم برنامج NetworkX ليكون سهل الاستخدام والتعلم، فضلاً عن كونه أداة قوية ومتطورة لتحليل الشبكات. ويُستخدم على نطاق واسع في العديد من المجالات، بدءًا من تعليم علوم الحاسوب وتحليل البيانات وصولاً إلى الدراسات العلمية واسعة النطاق. [ 4 ]
يُستخدم برنامج NetworkX في أي مجال يدرس البيانات على شكل رسوم بيانية أو شبكات، مثل الرياضيات والفيزياء وعلم الأحياء وعلوم الحاسوب والعلوم الاجتماعية. [ 27 ] يمكن تخصيص عُقد الرسم البياني في NetworkX لتخزين أي نوع من البيانات، كما أن البيانات المخزنة في الحواف اختيارية، مما يجعله قابلاً للتطبيق على نطاق واسع في مختلف المجالات. يستطيع البرنامج قراءة الشبكات من البيانات وإنشاء شبكات عشوائية بخصائص محددة. وهذا يسمح باستخدامه لاستكشاف التغيرات عبر كميات كبيرة من الشبكات. [ 4 ] يوضح الشكل أدناه مثالاً بسيطاً لقدرة البرنامج على إنشاء وتعديل التباينات عبر كميات كبيرة من الشبكات.

يحتوي NetworkX على العديد من خوارزميات تحليل الشبكات والرسوم البيانية، مما يُساعد في مجموعة واسعة من أغراض تحليل البيانات. ومن الأمثلة المهمة على ذلك خياراته المتعددة لخوارزميات أقصر مسار. تتضمن NetworkX الخوارزميات التالية، مع تعقيداتها الزمنية التي تعتمد على عدد الرؤوس (V) والحواف (E) في الرسم البياني: [ 28 ]
- ديكسترا : O((V+E) log V)
- بيلمان-فورد : O(V * E)
- غولدبيرغ-رادزيك: O(V * E)
- جونسون : O(V^2 log(V) + VE)
- فلويد وارشال : O(V^3)
- A* : O((V+E) log V)
يُمكن ملاحظة مثال على استخدام خوارزميات الرسوم البيانية في NetworkX في دراسة أُجريت عام 2018، حيث استُخدمت لتحليل مرونة شبكات إنتاج الماشية في مواجهة انتشار الأوبئة. استخدمت الدراسة نموذجًا حاسوبيًا للتنبؤ باتجاهات الأوبئة ودراستها في جميع أنحاء شبكات إنتاج الخنازير الأمريكية، مع مراعاة جميع أدوار صناعة الثروة الحيوانية. في هذه الدراسة، استُخدمت NetworkX للحصول على معلومات حول درجة العقد، وأقصر المسارات، والتجميع، وعدد النوى (k-cores) عند إدخال العدوى ومحاكاة انتشارها في النموذج. ثم استُخدمت هذه المعلومات لتحديد الشبكات الأكثر عرضة للأوبئة. [ 29 ]
إلى جانب إنشاء الشبكات وتحليلها، يتمتع برنامج NetworkX بالعديد من إمكانيات التصور. فهو يوفر روابط مع Matplotlib و GraphViz للرسومات ثنائية الأبعاد، و VTK وUbiGraph للرسومات ثلاثية الأبعاد. [ 4 ] وهذا ما يجعل البرنامج مفيدًا في عرض وتحليل بيانات الشبكات بسهولة، كما يسمح بتبسيط الشبكات للمعالجة المرئية.
مقارنة مع برنامج Matlab
يُمكّن برنامج MATLAB المستخدم من رسم الشبكات بيانيًا. ويُستخدم MATLAB على نطاق واسع لرسم الشبكات من قِبل علماء الرياضيات والفيزياء والأحياء وعلوم الحاسوب. وقد تكون رسومات MATLAB البيانية أكثر فائدة من رسومات Python-Networkx في كثير من الحالات.


التعامل مع البيانات الضخمة
تكمن المشكلة الرئيسية في Networkx في استهلاك الذاكرة عند التعامل مع الرسوم البيانية الكبيرة. إذ يخزن Networkx بيانات الرسوم البيانية في كائنات بايثون، مما يجعله غير قادر على معالجة عشرات الملايين من الكائنات دون استهلاك ذاكرة الحاسوب. ويؤدي هذا إلى أخطاء نفاد الذاكرة عند العمل مع الرسوم البيانية الكبيرة. [ 30 ] من ناحية أخرى، يعمل Matlab بطريقة مختلفة. إذ يعالج Matlab مجموعات البيانات الكبيرة بكفاءة أعلى من خلال دمجها مع البنية التحتية الحالية. ويمكن للمستخدم توسيع نطاق تشغيل كود Matlab الخاص به وتشغيله بشكل تفاعلي باستخدام المعالجة المتوازية، بالإضافة إلى تشغيله في وضع الإنتاج. كما يمكن للمستخدم تشغيل كود Matlab الخاص به مع مجموعة كبيرة من البيانات على منصات بيانات سحابية مختلفة مثل Databricks و Domino Data Lab و Google® BigQuery . [ 31 ]
يكلف
لغة بايثون هي لغة برمجة مفتوحة المصدر، ويمكن تحميلها واستخدامها مجانًا تمامًا. كما أن العديد من مكتبات وحزم بايثون الشائعة الاستخدام (بما في ذلك NetworkX) مجانية تمامًا. [ 32 ] أما برنامج ماتلاب، فيتوفر بستة إصدارات مدفوعة، تتراوح أسعارها بين 49 دولارًا و2150 دولارًا. [ 33 ] وتختلف أسعار ماتلاب باختلاف نوع الترخيص. فعلى سبيل المثال، يمكن لطلاب المدارس الثانوية والجامعات الحصول على ترخيص ماتلاب بتكلفة أقل من الأفراد وأصحاب الأعمال.
الوصول إلى Networkx من خلال Matlab
يوفر برنامج MATLAB إمكانية التشغيل البيني مع لغات برمجة أخرى مثل بايثون. كما يتيح الوصول إلى العديد من لغات البرمجة، بما في ذلك C/C++ وجافا وبايثون. ويمكن استدعاء مكتبة Networkx من داخل MATLAB، مما يمنح المستخدم ميزة استخدامها ضمن بيئة عمل MATLAB. [ 34 ] وهذا يسمح للمستخدم باستدعاء أكواد بايثون-Networkx في MATLAB.
تطبيقات في الرياضيات البحتة
تُعدّ الشبكات أدوات مفيدة للتصور، مما يُساعد في التحليل والتنبؤ الدقيق، ويُمكّن الباحثين من تعميم الأفكار. كما تُقدّم صورة واضحة عند التعامل مع مجموعة منتهية. ويمكن استخدامها في مجالات رياضية مختلفة، مثل نظرية المجموعات، والجبر المجرد، ونظرية الأعداد.
ارسم شبكة المجموعات الفرعية لمجموعة
يمكن رسم شبكة المجموعات الفرعية للمجموعات المنتهية ذات الترتيب المعقول .

رسم بياني للعلاقات المرتبة
يمكن تمثيل العلاقات المرتبة على المجموعات المحدودة ذات الحجم المعقول ( العددية ) بيانيًا.

علاقات التكافؤ البياني
يمكن تمثيل علاقة التكافؤ على مجموعة منتهية ذات حجم معقول بيانيًا باستخدام Networkx. تُعد هذه طريقة مفيدة لتصورها، حيث تُظهر بوضوح فئات التكافؤ المختلفة .

اندماج
انظر أيضاً
مراجع
- ١ ٢ الإصدار العام الأول من NetworkX (NX-0.2) ، من: أريك هاغبرغ، التاريخ: ١٢ أبريل ٢٠٠٥، القائمة البريدية Python-announce-list
- ↑ الإصدار الأولي من NetworkX، NX-0.2 ، hagberg – 11-04-2005، معلومات المشروع – NetworkX، تاريخ التسجيل: 21-10-2004، SourceForge.net
- ↑ "الإصدار 3.6.1" . 8 ديسمبر 2025. تم الاطلاع عليه في 10 ديسمبر 2025 .
- 1 2 3 4 5 6 7 أريك أ. هاغبرغ، دانيال أ. شولت، بيتر ج. سوارت، استكشاف بنية الشبكة وديناميكياتها ووظيفتها باستخدام NetworkX مؤرشف في 2011-08-09 في Wayback Machine ، وقائع المؤتمر السابع لـ Python في العلوم (SciPy 2008) ، جي. فاروكو، تي. فوت، ج. ميلمان (محررون)، الصفحات 11-15.
- ↑ فان روسوم، غيدو (فبراير 1998). "أنماط بايثون - تنفيذ الرسوم البيانية" . بايثون .
- ↑ "networkx" . إحصائيات PyPi . أبريل 2024.
- ↑ "igraph" . إحصائيات PyPi . أبريل 2024.
- 1 2 3 4 "سجل الإصدارات القديمة" . NetworkX . 22 أغسطس 2020. تم الاطلاع عليه بتاريخ 24 أبريل 2024 .
- ↑ "NetworkX 3.0" . NetworkX . 7 يناير 2023. تم الاطلاع عليه بتاريخ 24 أبريل 2024 .
- ↑ "DiGraph—الرسوم البيانية الموجهة ذات الحلقات الذاتية — وثائق NetworkX 3.3" . networkx.org . تم الاطلاع عليه بتاريخ 24-04-2024 .
- ↑ "الرسم البياني - الرسوم البيانية غير الموجهة ذات الحلقات الذاتية - وثائق NetworkX 3.3" . networkx.org . تم الاطلاع عليه بتاريخ 24-04-2024 .
- ↑ "MultiGraph—Undirected graphs with self loops and parallel edges — NetworkX 3.3 documentation" . networkx.org . Retrieved 2024-04-24 .
- ↑ "MultiDiGraph—الرسوم البيانية الموجهة ذات الحلقات الذاتية والحواف المتوازية — وثائق NetworkX 3.3" . networkx.org . تم الاطلاع عليه بتاريخ 24-04-2024 .
- ↑ "spring_layout — وثائق NetworkX 3.3" . networkx.org . تم الاطلاع عليه بتاريخ 2024-05-02 .
- ↑ "spectral_layout — وثائق NetworkX 3.3" . networkx.org . تم الاطلاع عليه بتاريخ 2024-05-02 .
- ↑ "طريقة تخطيط الرسم البياني الطيفي" . maplesoft.com . تم الاطلاع عليه بتاريخ 26-04-2025 .
- ↑ "التجميع الطيفي" (ملف PDF) . معهد ماساتشوستس للتكنولوجيا . تم الاطلاع عليه بتاريخ 26-04-2025 .
- ↑ "خاصية المتجهات الذاتية للمصفوفات المتناظرة غير السالبة وتطبيقها على نظرية الرسم البياني" (ملف PDF) . تم الاطلاع عليه بتاريخ 26 أبريل 2025 عبر موقع googlescholar.com.
- 1 2 "ملاحظات حول رسم المخططات" (ملف PDF) . جامعة ولاية بنسلفانيا . تم الاطلاع عليه بتاريخ 26-04-2025 .
- ↑ "طريقة تخطيط الرسم البياني الطيفي" (ملف PDF) . معهد ماساتشوستس للتكنولوجيا . تم الاطلاع عليه بتاريخ 26-04-2025 .
- ↑ "الأساليب الطيفية لرسم المخططات وتوليف الدوائر المتكاملة" . upc.edu . تم الاطلاع عليه بتاريخ 26-04-2025 .
- ↑ "اختزال الرسم البياني مع ضمانات طيفية وقطع" (PDF) – عبر Arxiv.
- ↑ "circular_layout — وثائق NetworkX 3.3" . networkx.org . تم الاطلاع عليه بتاريخ 2024-05-02 .
- ↑ "shell_layout — وثائق NetworkX 3.3" . networkx.org . تم الاطلاع عليه بتاريخ 2024-05-02 .
- ↑ "kamada_kawai_layout — وثائق NetworkX 3.3" . networkx.org . تم الاطلاع عليه بتاريخ 2024-05-02 .
- ↑ أريك هاغبرغ، درو كونواي، "اختراق الشبكات الاجتماعية باستخدام لغة برمجة بايثون (الوحدة الثانية - لماذا يتم استخدام تحليل الشبكات الاجتماعية في NetworkX)" ، Sunbelt 2010: الشبكة الدولية لتحليل الشبكات الاجتماعية .
- ↑ هاداج، ب.؛ سترزالكا، د.؛ نوفاك، م. (19 أكتوبر 2022). "استخدام برنامجي PLANS وNetworkX في نمذجة أعطال أنظمة شبكة الطاقة" . تقارير علمية . 12 (1): 17445. Bibcode : 2022NatSR..1217445H . doi : 10.1038/s41598-022-22268-z . PMC 9581963. PMID 36261496 .
- ↑ "أقصر المسارات - وثائق NetworkX 3.3" . networkx.org . تم الاطلاع عليه بتاريخ 29-04-2024 .
- ↑ ويلتشير، سيرج و. (9 مارس 2018). "استخدام نموذج قائم على العوامل لتقييم أثر تخصص المنتجين على المرونة الوبائية لشبكات إنتاج الماشية" . PLOS ONE . 13 (3) e0194013. Bibcode : 2018PLoSO..1394013W . doi : 10.1371/journal.pone.0194013 . PMC 5844541. PMID 29522574 .
- ↑ "الأسئلة الشائعة | دليل Memgraph لمكتبة NetworkX" . memgraph.github.io . تم الاطلاع عليه بتاريخ 24-07-2025 .
- ↑ "البيانات الضخمة باستخدام MATLAB - MATLAB وSimulink" . www.mathworks.com . تاريخ الاسترجاع: 24 يوليو 2025 .
- ↑ "كم تبلغ تكلفة بايثون؟" . www.nobledesktop.com . تم الاطلاع عليه بتاريخ 24-07-2025 .
- ↑ "أسعار MATLAB لعام 2025" . www.trustradius.com . تم الاطلاع عليه بتاريخ 24 يوليو 2025 .
- ↑ "MATLAB Speaks Python » لورين يتحدث عن فن MATLAB - MATLAB وSimulink" . blogs.mathworks.com . تم الاطلاع عليه بتاريخ 24-07-2025 .
- ↑ "نظام البرمجيات الرياضية SageMath - Sage" .
روابط خارجية
- برنامج رياضيات مجاني
- برنامج مجاني مكتوب بلغة بايثون
- برنامج رسم المخططات
- البرامج الرقمية
- البرامج التي تستخدم ترخيص BSD
- مكتبات بايثون (لغة برمجة) العلمية
