مساله به دست آوردن تعداد گشت های به طول k در یک گراف مساله ای است که بسیاری از مسائل شمارشی را می توان حالت خاصی از آن حساب کرد و چون زمان محاسبه این تعداد متناسب با لگاریتم k است، در بسیاری از موارد از الگوریتم های دیگر سریع تر عمل می کند و می توان به جای راه های دیگر از توان رساندن ماتریس این گراف استفاده کرد.
در این بخش خانواده هایی از توابع بازگشتی که در مسائل تئوری و همچنین برنامه نویسی پویا
دیده می شوند را در نظر می گیریم و برای آن ها گراف هایی می سازیم که جمله
n
ام رابطه بازگشتی مورد نظر برابر تعداد گشت های به طول
n
در گرافی باشد که تعداد ثابتی راس دارد. به این ترتیب الگوریتمی به دست می آید که پیچیدگی آن
یک گراف دو راسی را در نظر بگیرید که در آن دو راس به هم یال دارند و راس اول به خودش یک طوقه
دارد. می خواهیم تعداد گشت های به طول
n
از راس یک به خودش را محاسبه کنیم و این مقدار را
و تعداد گشت های ۰ یالی و ۱ یالی از راس یک به خودش برابر ۱ است و بنابراین دنباله
f
همان دنباله فیبوناچی معروف است. پس اگر بخواهیم عدد
n
ام در دنباله فیبوناچی را حساب کنیم می توانیم ماتریس مجاورت این گراف را به توان برسانیم. یعنی
درایه ۱ و ۱ ماتریس
نیازی نیست که برای هر رابطه بازگشتی بیاییم و از ابتدا یک گراف بسازیم، بلکه می توانیم تبدیل های کلی ای پیدا کنیم و گراف را طوری تغییر دهیم که الگوی خاصی از توابع را شامل شود. برای مثال در ادامه تبدیل جمع جزیی آمده است.
فرض کنید گرافی داریم که در آن تعداد گشت های به طول
n
آن از راس
i به j
برابر
می خواهیم گراف را به طوری تغییر دهیم که بتوان با آن دنباله بالا را محاسبه کرد. به گراف
یک راس جدید مانند
k
اضافه می کنیم و یک یال از راس
j به k
اضافه می کنیم و یک طوقه نیز روی راس جدید می گذاریم. تعداد گشت های از راس
i به j
تغییری نمی کند و همان حالت قبل می ماند. ادعا می کنیم که تعداد گشت های به طول
n از i به k
همان مقدار خواسته شده است. ابتدا واضح است که پایه برقرار است و هیچ گشت ۰ یالی
از i به k
وجود ندارد. برای اثبات قسمت دوم روی یال آخر گشت حالت بندی می کنیم. یا یال آخر
گشت همان یال طوقه است که ابتدای گشت