public void prodr( int v,ref int p, ref int[] pre, ref int[,] mtxg)
{
pre[p] = v+1;
p++;
for (int i = 0; i < mtxg.GetLength(0); i++)
if ( mtxg[v, i] >= 1)
{
mtxg[i, v] = 0;
mtxg[v, i] = 0;
prodr( i,ref p, ref pre, ref mtxg);
}
}
هر یال که به گرافت با الگوریم کروسکال اضافه می کنی یک بار این تابع رو استفاده میکنی .
برای فراخوانی :
v شماره رآس اولین یال (کوچکترین یال ، توی شکل A )
P=0
[]pre آرایه ای به طول راس ها با مقادیر اولیه صفر
[،]mtxg ماتریس مجاورت گراف کنونی (یعنی گرافی که در الگوریتم ساخته شده)
بعد از انجام این متد pre را چک میکنی و اگر عدد (رآس ) تکراری در آن بود دور ایجاد شده .
این الگوریم در حقیقت پیمایش پیش ترتیب است ولی اگر گراف درخت نباشد دور ها را پیدا میکند
مثلا اگر pre اینطوری بود :1-2-3-4-7-3 ..... 3-4-7-3 دور است.
در ضمن اگر پروژه ساختمان گسسته کامل خواستی بگو ... !!!!