SciPy Graphs
کار کردن با گرافها
گراف یک ساختار داده اساسی است.
SciPy مدول scipy.sparse.csgraph
را جهت کار با گرافها فراهم کرده است.
ماتریس مجاورت
ماتریس مجاورت (Adjacency Matrix) یک ماتریس n❌n
است که n
تعداد عناصر در گراف میباشد.
مقادیر این ماتریس نمایش دهنده نحوه اتصال میان عناصر است.
برای مثال شکل زیر را در نظر بگیرید.
برای چنین گرافی با عناصر B ،A و C ارتباط به این صورت است که:
- A & B با وزن یک به هم متصل هستند.
- A & C با وزن دو به هم متصل هستند.
- B & C به هم متصل نیستند.
ماتریس مجاورت آن به صورت زیر خواهد بود.
در زیر به بررسی تعدادی از پر کاربردترین توابع شیء جهت کار با ماتریس مجاورت پرداختهایم.
تابع شیء ()connected_components
با استفاده از این تابع شیء همه مؤلفههای متصل به هم را میتوانید پیدا کنید.
تابع شیء ()dijkstra
از این تابع شیء جهت پیدا کردن کوتاهترین مسیر از یک عنصر به عنصر دیگر استفاده میشود.
آرگومانهای زیر را نیاز دارد:
return_predecessors
- بولین (اگر میخواهید کل مسیر پیمایش را نشان دهدTrue
در غیر اینصورتFalse
)indices
- ایندکس عنصری که میخواهید همه مسیرها از آن عنصر برگردانده شوند.limit
- حداکثر وزن مسیر
در کد زیر کوتاهترین مسیر از عنصر 1 به 2 را پیدا میکنیم.
تابع ()floyd_warshall
کوتاهترین مسیر بین هر دو جفت عنصر را پیدا میکند.
تابع شیء ()bellman_ford
این تابع شیء هم کوتاهترین مسیر بین هر دو جفت عنصر را پیدا میکند با این تفاوت که میتواند با وزنهای منفی نیز کار کند.
تابع شیء ()depth_first_order
پیمایش اولین عمق (depth first traversal) را از یک گره محاسبه میکند.
به آرگومانهای زیر نیاز دارد:
- گراف
- عنصر آغازین جهت شروع پیمایش از آن
تابع شیء ()breadth_first_order
یا استفاده از این تابع شیء میتوان مرتبه اولین پهنا را از یک گره محاسبه کرد.