سرشار از زندگی

طبقه بندی موضوعی
پیوندهای روزانه

تحلیل igraph در R

جمعه, ۸ ارديبهشت ۱۳۹۶، ۱۰:۰۵ ق.ظ

مقدمه

بسته (package) کاربردی igraph در R  (دریافت R) را می توان نوع داده ی محبوبِ ذخیره ی گراف دانست، در این پست سعی می شود برخی جزئیات این نوع داده بررسی شود.

برای استفاده از این بسته، می توانید با دستور زیر آن را نصب کنید:

install.packages("igraph")

پس از نصب، با این دستور، آن را برای استفاده load کنید:

library("igraph")

در ادامه یک گراف تصادفی تولید کرده و با استفاده از آن، مثال های بعدی را توضیح می دهیم.


تولید گراف تصادفی

برای تولید گراف تصادفی راه های زیادی وجود دارد که با توزیع های مختلف این امکان را فراهم می کنند، اما اینجا از یک تابع ساده که در igraph موجود است استفاده می کنیم. در این مثال گرافی با 10 راس و 40 یال تصادفی تولید می شود:

myGraph <- igraph::random.graph.game(10,40,type = "gnm")

نوع gnm اشاره به نوع مورد نیاز برای تولید گراف تصادفی دارد، به طوری که در این نوع پارامتر دوم (40)، تعداد یال مورد نیاز است که اگر از نوع gnp استفاده شود، پارامتر دوم احتمال وجود یال بین هر دو یال خواهد بود:

myGraph <- igraph::random.graph.game(10,0.65,type = "gnp")

برای رسم گراف تولیدی، از تابع plot استفاده کنید:

plot(myGraph)

به دست آوردن جزئیات گراف

حال که متغیری از نوع igraph با نام myGraph داریم؛ برای تولید لیست درجات گره ها (درجه ی هر گره ی موجود در گراف) از این دستور استفاده کرد که مقادیر درجات را در یک متغیر می ریزد:

deg.list <- igraph::degree(myGraph)

برای به دست آوردن میانگین درجات گراف، می توان از تابع mean استفاده کرد:

mean(deg.list)
[1] 5.8

همچنینی برای محاسبه ی واریانس درجات گراف، می توان از تابع var استفاده کرد:

var(deg.list)
[1] 2.622222

برای محاسبه ی میانگین کوتاه ترین مسیر بین راس ها (در کل)، می توان از این کد استفاده کرد:

igraph::average.path.length(myGraph)
[1] 1.355556

در نهایت برای تولید لیست توزیع درجات، می توان از این کد استفاده کرد:

deg.dist <- degree.distribution(myGraph)

توزیع درجات را رسم می کنیم:

plot(deg.dist)


امیدوارم به درتون بخوره  :)

موافقین ۱ مخالفین ۰ ۹۶/۰۲/۰۸
مجید رحیمی

R

graph

igraph

network

تحلیل گراف

نظرات  (۱)

این برنامه برای کار تخصصی روی گراف ها است؟
پاسخ:
بله، این بسته ی روی زبان R و Python ارائه شده است.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی