PDA

View Full Version : سوال: روشهاي جستجو در هوش مصنوعي



amironline
پنج شنبه 28 آبان 1388, 17:29 عصر
همونطور كه ميدونين يه سري روشهاي جستجو در كتاب هوش مصنوعي راسل مطرح شده

جستجوي سطحي(bfs)
جستجوي با هزينه يکسان(ucs)
جستجوي عمقي(dfs)
جستجوي عمقي محدود شده(dls)
جستجوي عميق‌کننده تکراري(iddfs)
جستجوي دوطرفه(bs)
جستجوي اول بهترين(bfs)
جستجوي *A
و ......

حالا به چه روشي ميتونيم اينها رو پياده سازي كنيم؟
اگه درخت يا گراف رو با ماتريس مجاورت نشون بديم، ميشه پياده سازي كرد يا بايد از روش ديگه اي استفاده كرد؟

alihassanabadi
جمعه 29 آبان 1388, 17:10 عصر
سلام
با درخت میشه پیاده سازی کرد ولی همیشه روش بهینه رو انتخاب کن
هر کدوم رو میشه با روش های خاصی پیاده سازی کرد
مثلا میشه جستجوی اول سطح رو به کمک صف پیاده سازی کرد
اول عمق رو با پشته و صف
و...
با تشکر

amironline
جمعه 29 آبان 1388, 23:06 عصر
اينايي كه شما ميگين صحيحه ولي اگه موافق باشين با كمك همديگه اين روشها رو پياده سازي كنيم تا برا بقيه دوستان هم مفيد باشه چون من تاپيك كاملي تو اين زمينه نديدم

alihassanabadi
دوشنبه 02 آذر 1388, 11:04 صبح
سلام
پس به امید خدا شروع میکنیم
فقط اینکه تا اونجایی که بتونم (یعنی اگه فرست باشه) همکاری میکنم
کما اینکه بچه های زیادی هستند که میتونند همکاری کنند
خوب زبان برنامه نویسی چی باشه؟
من که فقط با c++ موافقم
با تشکر

amironline
سه شنبه 03 آذر 1388, 22:01 عصر
من جستجوي عمقي يا dfs (http://fa.wikipedia.org/wiki/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85_% D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C_%D8%A7%D9%88%D 9%84_%D8%B9%D9%85%D9%82) رو با استفاده از ماتريس مجاورت پياده سازي كردم

عملكرد برنامه هم به اين صورت هست كه به هر يك از گره هاي گراف يا درخت يك شماره (0 ريشه جستجو هست) داده ميشه و پس از وارد كردن ماتريس مجاورت، شماره گرهي رو كه دنبالش مي گرديم رو وارد مي كنيم و برنامه شروع به پيمايش به روش عمقي ميكنه

اينم كد


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

int **w,*visit;
int v,s,i,j,n,t,f=0;

int pdfs(int v)
{
int k;
visit[v]=1;
printf("% d",v);
if (v==t)
{
f=1;
return 0;
}
for(k=0;k<n;k++)
if (w[v][k]==1)
if (!visit[k])
pdfs(k);
}

void main()
{
clrscr();
s=0;
printf("\nEnter number of vertex:");
scanf("%d",&n);
w=new int*[n];
for(i=0;i<n;i++)
w[i]=new int[n];
visit=new int[n];
for(i=0;i<n;i++)
visit[i]=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("w[%d][%d] ==> ",i,j);
scanf("%d",&w[i][j]);
}
printf("\nEnter Your Node Number to search:");
scanf("%d",&t);
printf("\nYour depth first search traverse is:");
pdfs(s);
if (f==0)
printf("\n\nPath not found from %d to %d",s,t);
getch();
}

sima2000
جمعه 28 آبان 1389, 07:50 صبح
سلام

خیلی ممنون به خاطر این پست جالب و مفیدی که گذاشتید . برای من که خیلی قابل استفاده بود .

میشه لطفا" پیاده سازی الگوریتم های دیگه مثل bfs و ucs رو هم قرار بدین؟

با تشکر فراوان

parsdarab
شنبه 27 فروردین 1390, 20:56 عصر
سلام دوستان
من می خوام گرافشم رسم کنم اگه کسی کدش رو داره ممنون می شم بزاره

moria9
یک شنبه 27 آذر 1390, 18:22 عصر
سلام

کد برنامه جستجوی عمقی (dfs) رو به زبان پرولوگ دارین؟
ممنون