اول یه توضیح علمی میگم براش بعد از آن در مورد برنامه نویسی و عمکرد آن براتون میگم:
شبکه پیچیده(به انگلیسی: Complex networks)شبکه است با ویژگیهای توپولوژی بارز، ویژگیهایی که در شبکههای ساده از قبیل شبکهٔ کاری یا گراف تصادفی رخ نمیدهد ولی اغلب در گرافهای مدل از سیستمهای واقعی رخ میدهد. مطالعهٔ شبکههای پیچیده زمینهٔ جوان و فعالی از پژوهشهای علمی (از سال ۲۰۰۰ میلادی) است که به طور گسترده از مطالعات تجربی شبکههای دنیای واقعی از قبیل شبکههای رایانهای، شبکههای تکنولوژی، شبکههای مغزی و شبکههای اجتماعی الهام گرفته است. به طور ساده یک شبکه یا گراف یک مجموعه ای از نودها و لینکها هستد. لینکها میتوانند وزن دار یا غیر وزن دار باشند. مغز یک شبکه عظیمی از نرونهاست که توسط سیناپس ها به هم متصل شدهاند. کنترل فعالیت ژنتیک در یک سلول که یک شبکه پیچیده ای از ژن هاست، توسط پروتئینهای تنظیم کننده انجام میگیرد. ارتباطات اجتماعی شبکه هایی هستند که در آن مردم یا سازمانهایی از مردم، نودها هستند و ارتباطات گوناگونی بین آنها وجود دارد. اینترنت و وب دو شبکه برجسته در جوامع امروزی هستند. در قلمرو امنیت ملی، تلاشهای بسیاری برای شناسایی و تحلیل شبکه های تروریستی انجام گرفته است. همه این مباحث برای مدت زمانی مطالعه شده، اما فقط مطالعه شبکه ها یک بحث اصلی تحقیق در سیستم های پیچیده است و از جمله دلایل برای این موضوع، کامپیوترهای سریعی هستند که مطالعه شبکه های واقعی را از روی مشاهده و تجربه ممکن میسازد. مثالهایی از سیستمهای پیچیده در طبیعت و جامعه وجود دارد؛ مانند: مغز، دستگاه ایمنی بدن، سلولهای بیولوژیکی، شبکه های متابولیکی، کلونی مورچه، اینترنت و وب، داد و ستد اقتصادی و شبکه های اجتماعی انسانی. هیچ تعریف رسمی از سیستم های پیچیده وجود ندارد. به طور غیر رسمی، یک سیستم پیچیده که یک شبکه بزرگی از مولفه های نسبتاً ساده است، بدون هیچ کنترلی، رفتارهای پیچیدهای را نشان میدهد. البته واژه ها در این تعریف یا دقت زیادی تعریف نشدهاند. مولفههای نسبتاً ساده به این معنا است که نقش وظیفهای آنها در رفتار جمعی سیستم، ساده است. برای مثال، یک نرون (یاخته عصبی) یا یک مورچه موجودیت های پیچیده ای هستند، هر چند که نقش وظیفه ای آنها در مغز یا کلونی نسبتاً ساده است سیستم های پیچیده نگاهی نو به پدیده های است که به علت ارتباط بین اجزای آن و همچنین ارتباط با دیگر پدیده ها، از پیچیدگی بالایی برخوردارند و رفتار جمعی متفاوتی بروز می دهند. بدین معنی که با مطالعه تک تک اجزای یک سیستم پیچیده نمی توان به رفتار جمعی آن دست یافت. به عبارت دیگر، سیستم پیچیده معرف پارادایم پیچیدگی است که عناصر سازنده آن تشکیل شبکه ای را می دهند که اجزاء شبکه دارای برهم کنش هستند و از اندیشه کل نگر بهره می گیرند. پارادایم کلاسیک که بخشی نگر است، بر این فرض استوار است که اگر اجزاء سیستمی را دقیقاً شناسایی کنیم و از عمل کرد آن اطلاع یابیم، قادر خواهیم بود به خواص کلی پدیده و سیستم دست یابیم. مطالعات کیهان شناسی، ساختارهای بی نظم در مواد، زیست شناسی، جامعه شناسی و اقتصاد محدودیت کاربرد این مسئله در مقالات و کتب متعدد را به نمایش گذاشته اند. حوزههای اصلی دانش سیستمهای پیچیده به قرار زیر است: 1. دینامیکها (پویاییها): مطالعه ساختار و رفتار و ویژگی های سیستم های پیچیده که در طول زمان به طور مداوم تغییر میکند 2. اطلاعات: مطالعه ارائهها، نمادها و ارتباطات 3. رایانش: مطالعه نحوه پردازش اطلاعات و اقدام بر مبنای آن توسط سیستمها 4. تکامل: مطالعه چگونگی تطبیق سیستمها با محیطی که دائما در حال تغییر است تمامی این موارد حوزههای مستقلی از پژوهش هستند، اما در مطالعات پیچیدهگی کنار هم قرار میگیرند. یه نظر دانش سیستم های پیچیده حداقل دو هدف دارد (یا به عبارتی محققین مختلف اهداف متفاوتی دارند): 1. توسعه ابزارهای ریاضوی و محاسباتی که منجر به بینشی بین رشتهای میشود. برای مثال با مطالعه رفتار کلنی مورچهها به عنوان یک مثال پردازش اطلاعات، میتوان پرسید که این پردازش چه تفاوتها و شباهتهایی با آنچه در شهرها صورت میگیرد دارد. یا جریان اطلاعات در شبکه مغزی، تا چه حدی شبیه یک شبکه اقتصادی است؟ چنین یافتههای بین رشتهای امروزه از بزرگترین دستاوردهای دانش سیستم های پیچیده بوده است. که بسیاری را در این مجموعه مطالب بررسی خواهیم کرد. 2. برخی دانشمندان پیچیدگی هدفی والاتر دارند و آن توسعه یک تئوری عمومی پیچیدگی است که تمامی حوزههای جدا از هم این دانش را یکی کند. چنین هدفی در جامعه محققان بسیار بحث برانگیز است و خیلیها اعتقاد دارند که واقعبینانه نیست. با این وجود عده به دنبالش هستند. در این مطالب ا چندی دانشمندان دانش سیستم های پیچیده درباره چنین رویکردی میشنویم.
برای تحلیل شبکههای پیچیده مانند شبکههای اجتماعی یا هر شبکهای که نودهای آن به هم متصل میشوند و یال داریم میتوانیم از ابزارهای مانند Networkx در پایتون یا graphx در اسپارک استفاده کنیم. در این مقاله بیشتر از این مبحث را توضیح نمیدهم ولی در مقالات بعدی ابزار networkx را قدم به قدم توضیح خواهم داد.