زمان کنونی: ۰۱ اردیبهشت ۱۴۰۳, ۰۵:۲۰ ب.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

سورس کد الگوریتم فلوید

ارسال:
  

javady_joon پرسیده:

سورس کد الگوریتم فلوید

سلام
میشه سورس کد برنامه ای که با الگوریتم فلوید کوتاهترین مسیر از هر راس در یک گراف به راس دیگر را پیدا کنه
با استفاده از یک آرایه دو بعدی
W یک آرایه ی دو بعدی است ستون و سطرهایی به اندازه ی رئوس گراف دارد ، چون از راسی حلقه ندارد قطر اصلی صفر است
از طرفی اگر از راسی به راسی مسیری مستقیم وجود نداشته باشید آن خانه با متغیری از نوع Long int پر میشود


"""" یعنی تبدیل این الگوریتم به کد"""

کد:
void Matris (int n, float W[][n] ,float D [][n-1] )
{
int i,j,k;
D=W;
for (k=0 ;k<n; k++)
for (i=0; i<n;k++)
for (j=0 ;j<n;j++)
D[i][j]=min (D[i][j],D[i][k]+D[k][j])
خیلی ممنون خواهش کمکم کنید
هرجور هست براتون جبران میکنم

۰
ارسال:
  

yaser_ilam_com پاسخ داده:

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

سلام جوادی کجایی نبودی؟؟

کامل جواب میده فقط خودت تحلیل کن چون نیستم زیاد جواب بدم برام کار پیش اومده
نقل قول:
کد:
#include<iostream.h>

#include<conio.h>
#include<string.h>
#define MAX 64
using namespace std;
//**********
void path (int i,int j,int p[MAX][MAX])

{

if(p[i][j]!=0)

{

path (i,p[i][j],p);

cout<<"masire :"<<i<<" , "<<j<<" =:>>"<<p[i][j];

cout<<endl;

path (p[i][j],j,p);

}

}
void floyd (int D[MAX][MAX],int n,int p[MAX][MAX] )

{

int i,j,k;



for (k=1 ; k<=n ; k++)

for (i=1 ; i<=n ; i++)

for (j=1 ; j<=n ; j++)

if ( (D[i][k] + D[k][j]) < D[i][j] )

{

D[i][j] = D[i][k] + D[k][j];

p[i][j]=k;

}

cout<<"\njadvale tanzim shodeh ba algoritme floyd :\n\n";

for (i=1 ; i<=n ; i++)

{

for (j=1 ; j<=n ; j++)

if (D[i][j] == 9999)

cout<<"* ";

else
{

cout<<D[i][j]<<' ';

if (D[i][j]<=9)

cout<<' ';

}

cout<<endl;

}

cout<<endl;

cout<<"____________________________________________________";

cout<<endl;

for (i=1 ; i<=n ; i++)

{

for (j=1 ; j<=n ; j++)

cout<<p[i][j]<<" ";

cout<<endl;

}

cout<<endl;

cout<<"____________________________________________________";

cout<<endl;



for (int ii=1;ii<=n;ii++)



for (int jj=1;jj<=n;jj++)

path(ii,jj,p);

}
int main()

{

int i,j=0,n;

int W[MAX][MAX],p[MAX][MAX];

cout<<"tedade satr va sotoon ra bedahid : ";

cin>>n;

for (i=1 ; i<=n ; i++)

for (j=1 ; j<=n ; j++)

{

W[i][j]=0;

if (i != j)

{

cout<<"adade ["<<i<<"] ["<<j<<"] :=>> ";

cin>>W[i][j];

}

else

W[i][j]=0;

}

cout<<"Matrix Adad :\n\n";

for (i=1 ; i<=n ; i++)

{

cout<<'\t';

for (j=1 ; j<=n ; j++)

if (W[i][j] == 9999)

cout<<"* ";

else



cout<<W[i][j]<<' ';

cout<<endl;

}

for (i=1 ; i<=n ; i++)

for (j=1 ; j<=n ; j++)

p[i][j]=0;

floyd (W,n,p);

system("pause");
getch();
return 0;

}


آقا اینم به زبان سی شارپ البته اینو من امتحان نکردم

فقط مدیونی حذف کنی بزار دوستان هم استفاده کنند
نقل قول:
کد:
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace floyd
{
    class Program
    {
       /// Cite http://daneshju-club.com if you want to use the source code
       ///writing by navid
        static int[,] w;
        static int[,] d;
        static int[,] p;
        static int n, i, j, k, m;
        static void Main(string[] args)
        {
            Console.WriteLine("enter number of node:");
            n = Convert.ToInt32(Console.ReadLine());
            w = new int[n, n];
            d = new int[n, n];
            p = new int[n, n];
            Console.WriteLine("for inf insert ( 50 ):");
            for (i = 0; i < n; i++)
                for (j = 0; j < n; j++)
                {
                    Console.WriteLine("enter the value of [ " + (i) + " , " + (j) + " ] =");
                    w[i, j] = Convert.ToInt32(Console.ReadLine());

                }
            for (i = 0; i < n; i++)
                for (j = 0; j < n; j++)
                    p[i, j] = 0;
            for (i = 0; i < n; i++)
                for (j = 0; j < n; j++)
                    d[i, j] = w[i, j];

            for (k = 0; k < n; k++)
                for (i = 0; i < n; i++)
                    for (j = 0; j < n; j++)
                    {
                        m = d[i, k] + d[k, j];
                        if (m < d[i, j])
                        {
                            d[i, j] = m;
                            p[i, j] = k+1;
                        }
                    }
            Console.WriteLine("the short lenght matrix is:");
            for (i = 0; i < n; i++)
            {
                for (j = 0; j < n; j++)
                    Console.Write("  " + d[i, j]);
                Console.WriteLine();
            }
            Console.WriteLine("the p matrix is:");
            for (i = 0; i < n; i++)
            {
                for (j = 0; j < n; j++)
                    Console.Write("  " + p[i, j]);
                Console.WriteLine();
            }
            Console.WriteLine("insert i and j to find short path:");
            i = Convert.ToInt32(Console.ReadLine());
            j = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("the path is:");
            path(i, j);
            Console.Read();
        }
        static void path(int q, int r)
        {
            if (p[q, r] != 0)
            {
                path(q, p[q, r]);
                Console.Write("v" + p[q, r] + "  ");
                path(p[q, r], r);
            }
        }
    }
}

۰
ارسال:
  

yaser_ilam_com پاسخ داده:

RE: الگوریتم فلوید

سلام دوست من .
گفتم برات یه مثال قرار بدم تا بیشتر متوجه بشی .
فرضا گرافی همانند زیر وجود دارد ماتریس c نیز برای این گراف به صورت زیر تعریف می شود : (گراف رو پیوست کردم)

[tex]\begin{bmatrix} 0 &5 &9999 &9999 \\ 50&0 & 15 & 5\\ 30&9999 &0 &15 \\ 15& 9999 &5 &0 \end{bmatrix}[/tex]

حالا دقت کن هر جا قرار دادم ۹۹۹۹ یعنی همون بینهایت که به معنی نبود هیچ یالی از راس i به راس j است .
این که روی قطر اصلی همه صفر هست یعنی ار گره i به خود گره i فاصله صفر هست .
اگه به صورت دستس هم امتحان کنی میبینی بازم کامل درسته .حالا من امتحان شدشم رو برات پیوست کردم .


خیالت راحت کد درست کار میکنه این کد رو دوست برنامه نویسمون آقای رستمی نوشته نه بنده فقط همیشه قطر اصلی صفر است و به جای بینهایت ۹۹۹۹


فایل‌(های) پیوست شده


۰
ارسال:
  

javady_joon پاسخ داده:

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

چشم
دستت درد نکنه

۰
ارسال:
  

javady_joon پاسخ داده:

RE: الگوریتم فلوید

دوست من
من خیلی از شما ممنونم
برنامه ی شما اشتبانیست، درسته
و این کتاب بود که مثل همیشه ضایع ام کرداشتباه بود
من از شما خیییییییییییییییییییییییییییییییلی ممنونم

۰
ارسال:
  

پرنیان* پاسخ داده:

سورس کد الگوریتم فلوید

سلام ممنون از الگوریتمی که گذاشتید
می خواستم بپرسم این الگوریتم فلوبدی که گذاشتید ایا وقتی گرافو بهش می دیم بهمون میگه که مثلا اگه بخوایم از شهر ۱ به ۳ بریم از چند تا شهر باید بگذریم و اون شهرا کدوم شهرا هستن؟
Bache Mosbat، در تاریخ ۱۱ آذر ۱۳۹۱ ۰۷:۰۱ ب.ظ برای این مطلب یک پانوشت گذاشته است:

دوست عزیز اگر ممکنه در تاپیک جداگانه سوالتون رو بپرسید Smile



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
Rainbow سورس کد کوله پشتی صفر و یو با الگوریتم عقبگرد alimomen ۲ ۲,۳۴۹ ۲۶ آذر ۱۳۹۵ ۰۵:۱۳ ب.ظ
آخرین ارسال: alimomen
  ۱۷۱ نرم افزار و ۱۹۸ الگوریتم - شبانه الگوریتم دانشگاه تهران axarsu ۱ ۲,۴۷۱ ۰۸ شهریور ۱۳۹۵ ۰۸:۳۶ ب.ظ
آخرین ارسال: majidgeek
  ۲۴۲ الگوریتم ،۳۷۱ نرم. الگوریتم برم یا نرم افزار؟ azamcheraghi ۱۱ ۷,۲۷۶ ۰۳ تیر ۱۳۹۵ ۱۱:۳۸ ق.ظ
آخرین ارسال: azamcheraghi
  سورس تبدیل سفید کننده در متلب k1.technology ۰ ۱,۲۴۳ ۲۸ آبان ۱۳۹۴ ۰۶:۱۸ ب.ظ
آخرین ارسال: k1.technology
  مشکل در الگوریتم جایگزینی (الگوریتم ساعت ) araz22 ۶ ۴,۷۴۲ ۱۹ مهر ۱۳۹۴ ۱۰:۲۴ ب.ظ
آخرین ارسال: so@
  ۸ الگوریتم ۱۲ نرم افزار ۱۵ علوم -- نرم افزار شریف گرایش الگوریتم ahrmb ۲ ۱,۸۴۱ ۰۸ مهر ۱۳۹۴ ۰۶:۴۳ ب.ظ
آخرین ارسال: ahrmb
  ۱۴۷ نرم افزار و ۱۱۶ الگوریتم - الگوریتم روزانه تهران slaf83 ۱۴ ۹,۶۷۴ ۲۴ شهریور ۱۳۹۴ ۱۱:۴۵ ق.ظ
آخرین ارسال: slaf83
  ۱۸۰ نرم ۱۷۰ الگوریتم الگوریتم تهران-شبانه t.mehr ۶ ۳,۵۶۳ ۲۰ شهریور ۱۳۹۴ ۰۴:۰۴ ب.ظ
آخرین ارسال: tondar.sal
  ۱۲۱ نرم افزار ۱۴۵ الگوریتم - الگوریتم تهران روزانه ali blhj ۲۳ ۱۰,۴۸۹ ۱۵ شهریور ۱۳۹۴ ۱۰:۵۹ ق.ظ
آخرین ارسال: ali blhj
  درخواست کد الگوریتم زمانبدی FIFOیا سایر الگوریتم های زمان بندی در سی شارپ sepideh1373 ۲ ۲,۵۰۶ ۰۳ اردیبهشت ۱۳۹۴ ۰۶:۱۳ ب.ظ
آخرین ارسال: one hacker alone

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close