PDA

View Full Version : کد و الگوریتم مسئله پازل 8 تایی (لطفا هر چه زودتر کمکم کنید)



utmost
جمعه 03 اردیبهشت 1389, 10:10 صبح
کد برنامه به زبان C# یا C++ مسئله پازل 8 تایی را می خواستم
اگر لینک دانلود را می دانید لطفا آدرس لینک را بدهید
باتشکر

dousti_design
جمعه 03 اردیبهشت 1389, 12:58 عصر
توضیحات مسئله 8 وزیر به روش الگوریتم ژنتیک رو میتونید اینجا (http://fa.dousti.com/?tag=%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9 %85-%DA%98%D9%86%D8%AA%DB%8C%DA%A9)
الگوریتم ژنتیک (http://fa.dousti.com/?tag=%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9 %85-%DA%98%D9%86%D8%AA%DB%8C%DA%A9)
ببینید. سورسش رو هم از اینجا بردارید:
سورس مسئله n وزیر با الگوریتم ژنتیک (http://fa.dousti.com/?tag=%D9%85%D8%B3%D8%A6%D9%84%D9%87-n-%D9%88%D8%B2%DB%8C%D8%B1-%D8%A8%D8%A7-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%DA%98%D9%86%D8%AA%DB%8C%DA%A9)

yasemi
جمعه 03 اردیبهشت 1389, 20:23 عصر
سلام

نوشتن این برنامه خیلی آسونه 300 خط بیشتر نیست با لیست پیوندی هم نزدیک 400 خط میشه ببین برنامه رو دارم اما اونو بهت نمی دم چون میخوام خودت بنویسیش خیلیم ساده هست همیشه هلو برو تو گلو نباشید ( البته توهین قلمداد نشه) ببین اینجا اومدی چیزی یاد بگیری نه چیزی دانلود کنی حالا برای نوشتنش
1. تابعی که کنترل کنه خانه خالی کجاست
2. تابعی که بنا به اطلاعات از تابع قبل ماتریس های جدید رو تولید کنه
3. تابع نمایش که هروقت به نتیجه رسیدی ماتریس ها رو چاپ کنه

مشکلی بود در خدمتم
موفق باشی

sarakh
شنبه 04 اردیبهشت 1389, 22:40 عصر
سلام این برنامه رو با چه روش جستجویی می شه نوشت؟؟؟؟؟؟؟؟؟؟؟

qwerty11
یک شنبه 05 اردیبهشت 1389, 09:48 صبح
سلام این برنامه رو با چه روش جستجویی می شه نوشت؟؟؟؟؟؟؟؟؟؟؟
اول عمق
اول سطح
IDS
َA Star
و خلاصه هر جستجویی که وجود داره !

yasemi
یک شنبه 05 اردیبهشت 1389, 14:35 عصر
با روش های مختلفی نوشته شده اما به نظرم اول سطح از همه ساده تر نوشته میشه

sarakh
دوشنبه 06 اردیبهشت 1389, 19:26 عصر
ممنون از راهنماییتون.فقط متوجه نمی شم منظورتون از مورد 2 و 3 چیه(2. تابعی که بنا به اطلاعات از تابع قبل ماتریس های جدید رو تولید کنه
3. تابع نمایش که هروقت به نتیجه رسیدی ماتریس ها رو چاپ کنه)؟

از بین این روش های جستجو که گفتین کدومش زودتر به جواب می رسونه؟؟؟؟؟؟

qwerty11
دوشنبه 06 اردیبهشت 1389, 21:26 عصر
از بین این روش های جستجو که گفتین کدومش زودتر به جواب می رسونه؟؟؟؟؟؟ جواب اون سوالای بالاییتونو اون دوستمون باید بگه اما جواب این سوالتون A Star میشه.

narcis_86
دوشنبه 06 اردیبهشت 1389, 22:58 عصر
مهندس من هم از جنس شمام ولی الآن وقت ندارم سریع upload کن میخوام بردارم:عصبانی++::متعجب:

sarakh
سه شنبه 07 اردیبهشت 1389, 16:50 عصر
بازم ممنون.من به راهنمایی نیاز دارم می خوام این مسئله رو با visual basic بنویسم از یه طرفم ویندوز vista استفاده می کنم که نمی دونم چرا componentهای vb رو پشتیبانی نمی کنه و نمی شه از component هاش استفاده کرد.برای نوشتن این برنامه نیاز به component هست یا نه؟؟؟؟؟؟؟؟؟تقریبا برای نوشتنش یک ماه و نیم وقت دارم راهنماییم کنین از کجا باید شروع کنم؟اصلا vb برای این مسئله خوبه؟؟؟

yasemi
سه شنبه 07 اردیبهشت 1389, 18:43 عصر
برای نوشتنش فقط باید بلد باشی تابع تعریف کنی به هیچ چیز دیگه ای احتیاج نیست



1. تابعی که کنترل کنه خانه خالی کجاست


ببین برای راحتی خانه خالی رو صفر درنظر بگیر بعد توی تابع با یه for ساده و if ببین خانه صفر کجاست بعد از اینکه پیدا کردی اگه توی خانه های 1 و 3 و 7و9 باشه یعنی باید دوتا ماتریس براش تولید کنی اگه توی خانه های 2 و 4و6و8 باشه سه تا ماترس دیگه تولید باید بکنی و اگه توی خانه وسط بود 4 تا ماتریس جدید داری البته ما گفتیم خانه ماتری از یک شروع میشه اما اگه از صفر بگیری مثل ++c اونوقت باید با صفر محاسبه کنی



2. تابعی که بنا به اطلاعات از تابع قبل ماتریس های جدید رو تولید کنه



بعد از اینکه فهمیدی چند تا ماتریس جدید باید تولید کنی توی این تابع ماتریس های جدید رو تولید کن مثلا اگه خانه خالی توی اولین خانه ماتریس باشه ( خانه یک یا توی ++c صفر) باید دوتا ماتریس تولید کنیم که مثل ماتریس فعلی اما با این تفاوت که توی یکی جای خانه اول رو با خانه روبه روش و توی اون یکی با خانه زیریش عوض میشه



3. تابع نمایش که هروقت به نتیجه رسیدی ماتریس ها رو چاپ کنه


بعد از اینه به هدف رسیدی باید مسیر رو چاپ کنی که این تابع این کارو میکنه

البته هرجور بلدی میتونی تغیرش بدی اما حتما کارا رو تقسیم کن بر ای راحتی حتما یه خانه شماره گره رو اضافه کن و توی یه خانه دیگه شماره پدر گره فعلی رو ذخیره کن

موفق باشی

kebriya
پنج شنبه 09 اردیبهشت 1389, 10:51 صبح
سلام خسته نباشید من هم توی الگوریتمش مشکل دارم میخوام از روش عمقی بنویسم که از باید از استک استفاده بشه ولی نمیدونم تا کجا پیش برم. یعنی نمیدونم تا کجا باید push کنم و کجا باید pop کنم اگه میشه کمکم کنید. ممنون

qwerty11
پنج شنبه 09 اردیبهشت 1389, 11:45 صبح
هر وقت که گره جدیدی تولید میشه و میدونیم که این گره قبلاً تولید نشده باید push کنین.

اینم یه سودو کد که خودم نوشتم :گیج::گیج:



stack.push(source)
while(stack is not empty){
node=stack.pop();
if(node=destination) break;
foreach child of node{
if(child is not generated before){
parent[child]=node;
stack.push(child);
}
}
}

kebriya
پنج شنبه 09 اردیبهشت 1389, 13:08 عصر
از کجا بفهمم قبلا تولید نشده؟ چجوری کدشو بنویسم

qwerty11
پنج شنبه 09 اردیبهشت 1389, 13:31 عصر
3 تا راه داری :

1- یه لیست در نظر بگیر که گره هایی رو نگهداری میکنه که تولید شدن. وقتی به یه گره جدید رسیدی این لیست رو نگاه کن ببین این گره توش هست یا نه !؟ اما این راه یه عیب بزرگی که داره اینه که خیلی کنده چون search تو لیست O(n) I هستش!

2- از map استفاده کن. هم راحت تره و هم سرعتش خیلی بالاست چون search تو این ساختار پیچیدگیش O(1) I هستش.

3- نمیدونم، شاید راه دیگه ای هم داشته باشه ...

kebriya
پنج شنبه 09 اردیبهشت 1389, 14:10 عصر
ممنون از لطفت
میشه در مورد map توضیح بدین؟ نمیدونم چیه.
ببینین من یه کلاس که ماتریس رو نگه می داره و یه کلاس که استک است رو نوشتم و استک هم از نوع ماتریس باید باشه.
حالا باید بازگشتی بنویسم؟ تا به آخرش برسه یا اینکه غر بازگشتی هم میشه؟

qwerty11
پنج شنبه 09 اردیبهشت 1389, 16:50 عصر
خوب تو پیشرفته/ساختمان داده به شما چی یاد دادن پس !؟

با چه زبانی میخوای بنویسی !؟ C++‎ !?

شاید از همون لیست استفاده کنی برای شما بهتر باشه. اما اینکه map چیه رو توی این لینک (http://www.yolinux.com/TUTORIALS/CppStlMultiMap.html) میتونی ببینی.

چرا بازگشتی بنویسی !؟ مگه اون سودو کدی که من نوشتم بازگشتی بود !؟ اگر این سوال رو بازگشتی بنویسی با این الگوریتم stack overflow میگیری. پس جواب بازگشتی رو فراموش کن.

kebriya
پنج شنبه 09 اردیبهشت 1389, 17:58 عصر
والا 7-8 سال پیش این چیزا یادمون ندادن شاید دادن من یادم نیست. ولی در کل من لینکی نمی بینم. دلم می خواد بدونم map چیه!!!

qwerty11
پنج شنبه 09 اردیبهشت 1389, 18:24 عصر
مگه C++‎ دیروز یا امروز اختراع شده !؟

لینک رو نمیبینی !؟ : http://www.yolinux.com/TUTORIALS/CppStlMultiMap.html

sarakh
جمعه 10 اردیبهشت 1389, 14:10 عصر
یکی راهنماییم کنه.لطفا"

sarakh
جمعه 10 اردیبهشت 1389, 14:45 عصر
برای نوشتنش فقط باید بلد باشی تابع تعریف کنی به هیچ چیز دیگه ای احتیاج نیست



ببین برای راحتی خانه خالی رو صفر درنظر بگیر بعد توی تابع با یه for ساده و if ببین خانه صفر کجاست بعد از اینکه پیدا کردی اگه توی خانه های 1 و 3 و 7و9 باشه یعنی باید دوتا ماتریس براش تولید کنی اگه توی خانه های 2 و 4و6و8 باشه سه تا ماترس دیگه تولید باید بکنی و اگه توی خانه وسط بود 4 تا ماتریس جدید داری البته ما گفتیم خانه ماتری از یک شروع میشه اما اگه از صفر بگیری مثل ++c اونوقت باید با صفر محاسبه کنی



بعد از اینکه فهمیدی چند تا ماتریس جدید باید تولید کنی توی این تابع ماتریس های جدید رو تولید کن مثلا اگه خانه خالی توی اولین خانه ماتریس باشه ( خانه یک یا توی ++c صفر) باید دوتا ماتریس تولید کنیم که مثل ماتریس فعلی اما با این تفاوت که توی یکی جای خانه اول رو با خانه روبه روش و توی اون یکی با خانه زیریش عوض میشه



بعد از اینه به هدف رسیدی باید مسیر رو چاپ کنی که این تابع این کارو میکنه

البته هرجور بلدی میتونی تغیرش بدی اما حتما کارا رو تقسیم کن بر ای راحتی حتما یه خانه شماره گره رو اضافه کن و توی یه خانه دیگه شماره پدر گره فعلی رو ذخیره کن

موفق باشی

ببخشید یه سوال این روشی که گفتین روش جستجوش چیه؟؟؟؟؟
این جمله آخری رو هم متوجه نشدم "البته ما گفتیم خانه ماتریس از یک شروع میشه اما اگه از صفر بگیری مثل ++c اونوقت باید با صفر محاسبه کنی"؟؟؟؟

yasemi
جمعه 10 اردیبهشت 1389, 14:50 عصر
جستجوی سطحی عزیزم

منظورم درباره جمله اخر این بود که اگه بخوای از ++C استفاده کنی خانه آرایه از صفر شروع میشه همین

موفق باشی

sarakh
سه شنبه 21 اردیبهشت 1389, 15:36 عصر
چجوری باید به گره هایی که تولید میشه شماره داد و در یک خانه ذخیره کرد؟چه طور می شه مسیر رو ذخیره کرد که بدونیم تا حالا کدوم گره ها چک شدن؟

sarakh
دوشنبه 03 خرداد 1389, 16:59 عصر
سلام این برنامه رو با روش اول سطح نوشتم اما با اینکه یه تابع نوشتم که ماتریسهای تکراری رو حذف کنه باز هم ماتریسهای زیادی رو تولید می کنه و پیغام می ده که تعداد عناصر از حد گذشته.چکار کنم لطفا راهنمایی کنین.

yasemi
دوشنبه 03 خرداد 1389, 22:57 عصر
برنامه رو بزار ببینم چکار کردی

sarakh
پنج شنبه 06 خرداد 1389, 17:41 عصر
سلام اگر بخوام این مسئله رو با روش dfs حل کنم.بعد از اینکه به هدف رسید چه طور می تونیم مسیری رو که رفتیم تا به جواب رسیدیم رو پیدا کنم؟؟؟؟:متفکر::گریه:

yasemi
جمعه 07 خرداد 1389, 13:01 عصر
شما باید توی برنامه اسم پدر گره ها رو ذخیره کنید وقتی به هدف رسیدی طبق شماره پدر میتونی به ریشه برسی و بعد مسیر رو چاپ کنی

موفق باشی

sarakh
جمعه 07 خرداد 1389, 21:54 عصر
شما باید توی برنامه اسم پدر گره ها رو ذخیره کنید وقتی به هدف رسیدی طبق شماره پدر میتونی به ریشه برسی و بعد مسیر رو چاپ کنی

موفق باشی
سلام مگه این طور نیست که وقتی یک گره pop می شه از پشته حذف می شه اگر جواب نبود فرزندانش تولید می شه.حالا اگر یکی از این فرزندان جواب بود گره های قبلی که چک شدن از پشته حذف شده چه طور می شه از اون گره ها که حذف شدن استفاده کرد آیا باید گره های pop شده را در یک آرایه ذخیره کرد؟؟؟؟

yasemi
جمعه 07 خرداد 1389, 23:19 عصر
این روش شما فقط گره هدف رو پیدا میکنه اما شما اگه بخوای مسیر رو چاپ کنی باید گره های قبلی رو نگه داری

sarakh
دوشنبه 10 خرداد 1389, 12:04 عصر
سلام این برنامه رو با vb و روش جستجوی dfs نوشتم چطوری می تونم از push شدن گره های تکراری در پشته جلوگیری کنم؟؟؟؟؟؟؟؟؟؟

sarakh
دوشنبه 10 خرداد 1389, 12:09 عصر
اگر بخوام برای جستجو تک تک گره ها که تولید می شه رو توی یک آرایه دو بعدی ذخیره کنم تعداد سطرها زیاد می شه و همون خطایی که در روشbfs بهم داده می شد رو دریافت می کنم.
لطفا خیلی دقیق راهنمایی کنید.یک هفته بیشتر فرصت ندارم.:افسرده::گریه:

sarakh
دوشنبه 10 خرداد 1389, 20:22 عصر
هیچکس نمی خواد برنامه ای که نوشتم رو ببینه؟؟؟؟ببینه کجاش مشکل داره که چه با bfs و چه با dfs جواب رو پیدا نمی کنه و تعداد گره هایی که تولید می کنه خیلیییییییییییییییییییییی ییییی زیاده؟

yasemi
دوشنبه 10 خرداد 1389, 22:24 عصر
خوب حتما جایی مشکل داری برنامه رو خوب نگاه کن ببین منطق برنامه چطوری بعد براش راه حل بنویس

sarakh
سه شنبه 18 خرداد 1389, 12:00 عصر
سلام برنامه رو با روش اول سطح نوشتم طبق راهنماایی دوستان اما. مشکل برنامه اینه که اگر تعداد خانه هاخیلی جابه جا شده باشن تعداد گره های تولیدشده زیاد می شه.و به جواب نمی رسه.ولی در بعضی حالات که خانه ها خیلی جا به جا نشده باشن جواب میده.برنامه رو نگاه کنین ببنید چی باید بهش اضافه بشه.توی برنامه گره مبدا رو مقدار دهی کردم که با 6 جا به جایی جواب می ده با زدن دکمه enter.لطفا راهنماییم کنین چکار کنم که در هر حالتی جواب بده
خیلی لازم دارم.ممنون.

yasemi
چهارشنبه 19 خرداد 1389, 12:47 عصر
اگه با حالت های ساده کار میکنه پس درست نوشتی برای حالتهای پیچیده هم باید توی برنامه خود کاری کنی که مثلا وقتی یه گره تولید میشه بری این گره رو با گره های قبلی مقایسه کنی اگه با حالت های قبلی یکی بود حذفش کنی اما اگه نبود اضافه بشه اینجوری حالت های پیچیده تر رو هم حل میکنه البته بعضی حالت ها ممکنه خیلی حل شدنش طول بده طوری که ممکنه حتی کل حافظه رو هم پر کنه البته اونجوری که من خودم تحقیق کردم میگن بعضی از حالات اصلا قابل حل نیست اما در هر صورت اکه تکراری ها رو حذف کنی خیلی از حات ها رو حل میکنه


موفق باشی:تشویق:

sarakh
شنبه 22 خرداد 1389, 12:53 عصر
اگه با حالت های ساده کار میکنه پس درست نوشتی برای حالتهای پیچیده هم باید توی برنامه خود کاری کنی که مثلا وقتی یه گره تولید میشه بری این گره رو با گره های قبلی مقایسه کنی اگه با حالت های قبلی یکی بود حذفش کنی اما اگه نبود اضافه بشه اینجوری حالت های پیچیده تر رو هم حل میکنه البته بعضی حالت ها ممکنه خیلی حل شدنش طول بده طوری که ممکنه حتی کل حافظه رو هم پر کنه البته اونجوری که من خودم تحقیق کردم میگن بعضی از حالات اصلا قابل حل نیست اما در هر صورت اکه تکراری ها رو حذف کنی خیلی از حات ها رو حل میکنه


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

yasemi
یک شنبه 23 خرداد 1389, 19:42 عصر
چون توی چند حالت جواب میده درست نوشتی اما بشین یه حالت رو قدم به قدم دنبال کن ببین کجا مشکل ایجاد میکنه


موفق باشی

sarakh
پنج شنبه 03 تیر 1389, 09:35 صبح
سلام. دوستانی که این پازل رو با روش اول سطح نوشتن لطفا توضیح بدن که برای جواب گرفتن چقدر طول می کشه؟؟؟؟؟؟برنامه ای که نوشتم تا 13 حرکت رو سریعا پیدا می کنه ولی برای خیلی حالات دیگه جواب نمی ده.یا خیلی طول می کشه تا جواب بده.
ممنون.

sarakh
پنج شنبه 03 تیر 1389, 09:41 صبح
می خوام برنامه رو با روش Astar بنویسم لطفا راهنماییم کنین که چه مراحلی باید داشته باشه و چه کارهایی باید انجام بشه؟؟برای این روش چه چیزی رو باید حتما در نظر بگیرم.لطف کردین اگر مرحله به مرحله کارههایی که باید انجام بشه رو بهم بگین.فقط یک هفته فرصت دارم لطفا دقیق و کامل توضیح بدین.
ممنون.

sarakh
پنج شنبه 03 تیر 1389, 09:42 صبح
آیا برای Astarحتما باید از پشته استفاده بشه؟؟؟

qwerty11
پنج شنبه 03 تیر 1389, 17:50 عصر
می خوام برنامه رو با روش Astar بنویسم لطفا راهنماییم کنین که چه مراحلی باید داشته باشه و چه کارهایی باید انجام بشه؟؟برای این روش چه چیزی رو باید حتما در نظر بگیرم.لطف کردین اگر مرحله به مرحله کارههایی که باید انجام بشه رو بهم بگین.فقط یک هفته فرصت دارم لطفا دقیق و کامل توضیح بدین.
ممنون. فرض میکنم A* میدونی چیه چون من خیلی خوب نمیتونم توضیح بدم.
تو این الگوریتم باید بین گره ها تمایز قائل بشی و براساس یه تابعی به گره ها ارزش بدی. پس :

1- فاصله ی منهتن یه گره رو با گره مقصد پیدا کن.
2- تو هر مرحله باید گره ای از لیست انتخاب بشه که منهتن کمتری داره.
3- بهتره از صف اولیت یا همون priority queue استفاده کنی چون اعمال گرفتن مینیمم و اضافه کردن رو توی log n انجام میده. priority queue در واقع همون min heap خودمونه !

پس مثل جستجوی اول سطح عمل میکنی با این تفاوت که به جای اضافه کردن گره به صف اون رو به صف اولویت اضافه میکنی براساس مقدار منهتن اون گره.

sarakh
یک شنبه 06 تیر 1389, 11:01 صبح
برای روش آاستار بعد از اینکه به هدف رسید چه جوری مسیر رو پیدا کنیم؟؟؟؟؟؟؟؟

fatemegm
یک شنبه 06 تیر 1389, 18:13 عصر
من همه این کامنتارو خوندم!
ولی هنوز نفهمیدم روش کار چیه؟؟
(شماها چقدر چیزا از دی اس یاد گرفتین:ناراحت:)

qwerty11
دوشنبه 07 تیر 1389, 06:25 صبح
برای روش آاستار بعد از اینکه به هدف رسید چه جوری مسیر رو پیدا کنیم؟خوب واسه هر گره یه گره پدر تعریف کن و بعد از اینکه به مقصد رسیدی معکوس برگرد عقب تا به مبدا برسی. البته روش های دیگه ای هم هستش... اما باید حواست به مصرف حافظه باشه. مثلاً به جای اینکه دقیقاً خود پدر رو داخل فرزند ذخیره کنی میتونی حرکتی که باهاش از پدر به فرزند رسیدیم رو ذخیره کنی. که میتونه شامل R,U,D,L باشه...

sarakh
دوشنبه 07 تیر 1389, 12:09 عصر
سلام من برای جستجو از طریق*A از پشته استفاده کردم.من یه تابع نوشتم برای اینکه اگر یه گره تکراری بود اون گره رو نسازه و به فرزندان اضافه نکنه.از یه طرفم گره هایی که expand شدن(از پشته pop شدن) و جواب نبودن رو توی یه آرایه دو بعدی ذخیره کردم.گره هایی که expandنشدن رو توی پشته گذاشتم.
حالا سوال اینجاست که برای اینکه ببینم گره ای که ساخته شده قبلا تولید شده یا نه؟باید هم گره های توی پشته چک بشن و هم گره های توی اون آرایه دو بعدی؟؟؟؟؟؟؟؟؟؟؟

qwerty11
دوشنبه 07 تیر 1389, 14:39 عصر
خوب چه کاریه !؟

وقتی به یه گره میرسی که گره هدف نیست این گره رو همون موقع به لیست گره هایی که بهشون رسیدی و مقصد نیستن اضافه کن. (در واقع همون موقع به آرایه ی 2 بعدیت اضافه کن).

من نمیفهمم A* رو چرا میخوای با پشته پیاده سازی کنی :-؟

sarakh
دوشنبه 07 تیر 1389, 21:24 عصر
من نمیفهمم A* رو چرا میخوای با پشته پیاده سازی کنی :-؟
چون می خوام گره ی با کمترین هزینه انتخاب بشه.پشته رو جوری مرتب می کم که گره با کمترین هزینه بالا باشه.

badguy
شنبه 19 تیر 1389, 15:26 عصر
سلام دوستان

راستش من الان دانشجویه ترم اولم و تنها درسی که خوندم مبانیه و از پیشرفته / ساختمون داده چیزی نمیدوم ولی پروژه پایان ترمم نوشتن برنامه ای که پازل رو اتوماتیک حل کنه

یه چیزایی از روش *A متوجه شدم ولی تو تابع ابتکاریش موندم میشه لطفا یه نفر یه تابع ابتکاری معرفی کنه ,روش کارش چطوریه ( چطوری محاسبه میشه ) یا یه منبع مناسب بده(فارسی یا انگلیسی بودن منبع مهم نیس)

خیلی ممنون میشم اگه یه نفر کمکم کنه:لبخندساده:

badguy
جمعه 15 مرداد 1389, 07:13 صبح
سلام به همه

آقا من این اتوماتیک پازل رو با C++‎‎‎‎‎‎‎‎‎‎‎.Net نوشتم ,اینطوری شد خواستم با بقیه شر کنم

تابع ای که مسئله رو حل میکنه طوری نوشته شده که با کوچک ترین تغییرات میشه هر نوع الگوریتم هوشی رو توش پیاده سازی کرد

البته میدونم خیلی ناشیانه نوشتم و دیگه چه کنم ترم اولی هستم و زیاد از تکنیک هایه برنامه نویسی نمیدونم:لبخند:

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

بدرود

amir_askary69
پنج شنبه 26 آبان 1390, 15:29 عصر
سلام. ببین دوست من ظاهرا برنامه ات درسته ولی این ذات روش اول سطح هست که برای پازل 8 تایی تو حالتهایی که گامهای حل بیش از 7 و8 باشه چندین سال طول میکشه و چند ترابایت هم رم میخواد ! به زبون خودمونی جواب نمیده.
روشی که باید استفاده کنی تا همه حالت ها جواب بده *A هست چون خیلی از مسیرهای بیهوده رو در درخت هرس میکنه و سریع جواب میده.

از کتاب راسل میتونی کمک بگیری تو اینترنت هم مطلب برای *A پره !

موفق باشی:چشمک:

Cancer
پنج شنبه 26 آبان 1390, 18:20 عصر
سلام سلام سلام.
خدمت اساتید.

من قبلاً یادم می یادش که روی این معمای 8 فکر کردم.
...
جستجوی اول عمق و سطحی رو بیخیال.
این *A یکم خوبه. ولی بازم فکر کنم مشکلاتی داره.
تو بعضی حالات فکر کنم دچار مشکل می شه.
اگه الگوریتمی نوشتین یا برنامه ای نوشتین که برای بعضی حالات که کاشی ها کم جابجا شدن می تونه به جواب برسه. اشتباهه. بیخیال اون الگوریتمتون بشین.
باید برنامه تون برای !9 عمل کنه. بعضی ها هم می گن که اگه برای 2/!9 عمل کنه درسته. چرت می گن.
فقط !9.
یه سری به
http://www.8puzzle.com/
بزنین.
بنظر من بهترین منبع برای همین معما هستش.
داخلش چندتا منبع دیگه هم هستش که اونا هم خوبن.
برنامشو دانلود کنید.
ببینین با چه سرعتی به جواب می رسه.
برای !9.
ولی این هم ضعیفه.
اگه به بدترین حالت برسه، یعنی جایی که حالت شروع با حالات هدف 30 گام فاصله داره چند ثانیه زمان می بره (2 و 3 و چند ثانیه).
ولی بازم خیلی خوبه.
حتماً به اون آدرسه برین.
اساتید این برنامه ای که شما نوشتین:
برای !9 حالت کار می کنه؟
در بدترین حالت که 30 گام فاصله داره با هدف با چه سرعتی کار می کنه؟
به سرعت این برنامه (برنامه ی داخل اون سایته) می رسه؟
...
همین دیگه.
اگه جواب ها بله است.
این ایمل منه.
cancer_die2000@yahoo.com

فعلاً بای

sari-1369
دوشنبه 13 آذر 1391, 19:08 عصر
سلام خدمت دوستان عزیز

من میخوام پازل 8 رو به روش A* حل کنم . یه کدی هم (گرچه خیلی مبتدیا) با زبون vb.net نوشتم .
اما جواب نمیگیرم . نمیدونم کلا الگوریتم رو اشتباه متوجه شدم یا اینکه کد هام مشکل دارن . میخوام اگر امکانش هست شما اساتید یه نگاهی بهش بندازید.
و یه مورد دیگه اینکه اول با تابع بازگشتی خواستم بنویسم اما خیلی زود به استک اورفلو میرسیدم این بود که که فعلا توی یه حلقه گزاشتم و نود های گذشته رو نگه نمیدارم.

کد رو ضمیمه کردم

fafa_na
سه شنبه 28 آذر 1391, 09:12 صبح
وای بچه ها منم میخوام این برنامه را بنویسم ولی واقعا هنوز نمیدونم اصلا این برنامه چه جوری کار میکنه.یعنی خودم به عنوان یک انسان نمیتونم حلش کنم چه برسه به اینکه الگوریتمشم بنویسم.یکی میتونه به زبان خیلی ساده برام بگه وقتی چطوری خودم حلش کنم.وقتی به ماتریس ها نگا میکنم وحشت میکنم.نمیدونم از کجا باید شروع کنم.چی رو باید حساب کنم.کدوم اول حرکت کنه بعدش کی بعد اون کی.
بعد هر حرکت باید بازچیزی حساب کنم؟
در کل خییییییییییییلی شوتم.میشه لطفا خیلی ساده برام توضیحش بدید.واقعا مرسسسسسسسسسی

fafa_na
چهارشنبه 29 آذر 1391, 07:53 صبح
وای .یکی جواب بده لطفا

fafa_na
شنبه 02 دی 1391, 08:45 صبح
واقعا کسی نمیتونه بمن کمک کنه

fafa_na
سه شنبه 05 دی 1391, 12:28 عصر
کسی نیست مرا یاری دهد

zarifcomputer
سه شنبه 05 دی 1391, 13:00 عصر
سلام
بیا اینم یاری
این لینک (http://barnamenevis.org/showthread.php?370493-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%DB%8C%DA%A9-%D8%A8%D8%A7%D8%B2%DB%8C-%D9%BE%D8%A7%D8%B2%D9%84-Open-Source-%D8%A8%D8%A7-%D8%AF%D9%84%D9%81%DB%8C&p=1635342&viewfull=1#post1635342) را ببین

fafa_na
چهارشنبه 06 دی 1391, 08:34 صبح
دست گلت دردنکنه ولی بابا من میخوام بدونم شخص این بازیو چطوری انجام میده.فرد برای بازی چیا را در نظر میگیره و حرکت میکنه تا برنده میشه.لطفا یکی کمک کنه لطفا

zarifcomputer
چهارشنبه 06 دی 1391, 09:46 صبح
دست گلت دردنکنه ولی بابا من میخوام بدونم شخص این بازیو چطوری انجام میده.فرد برای بازی چیا را در نظر میگیره و حرکت میکنه تا برنده میشه.لطفا یکی کمک کنه لطفا
خودت باید بازی کنی تا متوجه بشی

fafa_na
چهارشنبه 06 دی 1391, 10:39 صبح
حالا شما کمکم کن تا دفعه اولو بازی کنم و برنده بشم بخدا بعدش خودم بازی میکنم