۰
subtitle
ارسال: #۱
  
سورس کد الگوریتم فلوید
سلام
میشه سورس کد برنامه ای که با الگوریتم فلوید کوتاهترین مسیر از هر راس در یک گراف به راس دیگر را پیدا کنه
با استفاده از یک آرایه دو بعدی
W یک آرایه ی دو بعدی است ستون و سطرهایی به اندازه ی رئوس گراف دارد ، چون از راسی حلقه ندارد قطر اصلی صفر است
از طرفی اگر از راسی به راسی مسیری مستقیم وجود نداشته باشید آن خانه با متغیری از نوع Long int پر میشود
"""" یعنی تبدیل این الگوریتم به کد"""
خیلی ممنون خواهش کمکم کنید
هرجور هست براتون جبران میکنم
میشه سورس کد برنامه ای که با الگوریتم فلوید کوتاهترین مسیر از هر راس در یک گراف به راس دیگر را پیدا کنه
با استفاده از یک آرایه دو بعدی
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])
هرجور هست براتون جبران میکنم
۰
ارسال: #۲
  
الگوریتم فلوید
سلام جوادی کجایی نبودی؟؟
کامل جواب میده فقط خودت تحلیل کن چون نیستم زیاد جواب بدم برام کار پیش اومده
آقا اینم به زبان سی شارپ البته اینو من امتحان نکردم
فقط مدیونی حذف کنی بزار دوستان هم استفاده کنند
کامل جواب میده فقط خودت تحلیل کن چون نیستم زیاد جواب بدم برام کار پیش اومده
نقل قول:کد:
#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);
}
}
}
}
۰
ارسال: #۳
  
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 فاصله صفر هست .
اگه به صورت دستس هم امتحان کنی میبینی بازم کامل درسته .حالا من امتحان شدشم رو برات پیوست کردم .
خیالت راحت کد درست کار میکنه این کد رو دوست برنامه نویسمون آقای رستمی نوشته نه بنده فقط همیشه قطر اصلی صفر است و به جای بینهایت ۹۹۹۹
گفتم برات یه مثال قرار بدم تا بیشتر متوجه بشی .
فرضا گرافی همانند زیر وجود دارد ماتریس 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 فاصله صفر هست .
اگه به صورت دستس هم امتحان کنی میبینی بازم کامل درسته .حالا من امتحان شدشم رو برات پیوست کردم .
خیالت راحت کد درست کار میکنه این کد رو دوست برنامه نویسمون آقای رستمی نوشته نه بنده فقط همیشه قطر اصلی صفر است و به جای بینهایت ۹۹۹۹
۰
۰
ارسال: #۵
  
RE: الگوریتم فلوید
دوست من
من خیلی از شما ممنونم
برنامه ی شما اشتبانیست، درسته
و این کتاب بود که مثل همیشه ضایع ام کرداشتباه بود
من از شما خیییییییییییییییییییییییییییییییلی ممنونم
من خیلی از شما ممنونم
برنامه ی شما اشتبانیست، درسته
و این کتاب بود که مثل همیشه ضایع ام کرداشتباه بود
من از شما خیییییییییییییییییییییییییییییییلی ممنونم
۰
ارسال: #۶
  
سورس کد الگوریتم فلوید
سلام ممنون از الگوریتمی که گذاشتید
می خواستم بپرسم این الگوریتم فلوبدی که گذاشتید ایا وقتی گرافو بهش می دیم بهمون میگه که مثلا اگه بخوایم از شهر ۱ به ۳ بریم از چند تا شهر باید بگذریم و اون شهرا کدوم شهرا هستن؟
می خواستم بپرسم این الگوریتم فلوبدی که گذاشتید ایا وقتی گرافو بهش می دیم بهمون میگه که مثلا اگه بخوایم از شهر ۱ به ۳ بریم از چند تا شهر باید بگذریم و اون شهرا کدوم شهرا هستن؟
Bache Mosbat، در تاریخ ۱۱ آذر ۱۳۹۱ ۰۷:۰۱ ب.ظ برای این مطلب یک پانوشت گذاشته است:
دوست عزیز اگر ممکنه در تاپیک جداگانه سوالتون رو بپرسید
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close