Artificial Intelligence - هوش مصنوعی

Artificial Intelligence - هوش مصنوعی (http://artificial.ir/intelligence/)
-   هوش مصنوعی چیست؟ (http://artificial.ir/intelligence/forum36.html)
-   -   A-star چیست و چگونه کار میکند؟ (http://artificial.ir/intelligence/thread1161.html)

Di4mond_65 ۱۰-۵-۱۳۸۸ ۰۵:۵۰ بعد از ظهر

A-star چیست و چگونه کار میکند؟
 
سلام..
خسته نباشید دوستان.:o

من با اینکه در مورد چگونگی عملکرد A-star مطالعه هم کردم، اما هنوز برام جا افتاده نیست.
مطلبی هنوز ازش توی نت پیدا نکردم، ممنون میشم توضیحش بدید.

pasmod ۱۰-۵-۱۳۸۸ ۰۷:۴۵ بعد از ظهر

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

مثلا مو تونی عبارت هایی مثل A Star Algorithm Applet رو جستجو کنی.

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

موفق باشی.

Di4mond_65 ۱۰-۱۰-۱۳۸۸ ۱۲:۱۲ قبل از ظهر

سلام دوستان.

من یه شبه کد پیدا کردم در مورد حل معمای 8 (پازل 8) با استفاده از روش A-Star.

ولی برام نامفهومه، خوده تعریف a-star رو متوجه شدم، ولی اونطور که باید برام جا افتاده نیست که بتونم این شبه کد رو خوب متوجه بشم.
اگر برام توضیح بدید این شبه کد رو واقعا یک دنیا ممنون میشم، مخصوصا قسمتهای بلد شده.

كد:



function A*(start,goal)
    closedset := the empty set                % The set of nodes already evaluated.   
    openset := set containing the initial node % The set of tentative nodes to be evaluated.
    g_score[start] := 0                        % Distance from start along optimal path.
    h_score[start] := heuristic_estimate_of_distance(start, goal)
    f_score[start] := h_score[start]          % Estimate d total distance from start to goal through y.
    while openset is not empty
        x := the node in openset having the lowest f_score[] value
        if x = goal
            return reconstruct_path(came_from,goal)
        remove x from openset
        add x to closedset
        foreach y in neighbor_nodes(x)
            if y in closedset
                continue
            tentative_g_score := g_score[x] + dist_between(x,y)
 
            if y not in openset
                add y to openset
 
                tentative_is_better := true
            elseif tentative_g_score < g_score[y]
                tentative_is_better := true
            else
                tentative_is_better := false
            if tentative_is_better = true
                came_from[y] := x
                g_score[y] := tentative_g_score
                h_score[y] := heuristic_estimate_of_distance(y, goal)
                f_score[y] := g_score[y] + h_score[y]
    return failure
 
 function reconstruct_path(came_from,current_node)
    if came_from[current_node] is set
        p = reconstruct_path(came_from,came_from[current_node])
        return (p + current_node)
    else
        return the empty path



سپاسگذارم.{گل}

mardin200 ۱۰-۱۰-۱۳۸۸ ۱۲:۴۲ قبل از ظهر

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

Di4mond_65 ۱۰-۱۱-۱۳۸۸ ۰۳:۴۷ بعد از ظهر

mardin200 عزیز، من به حرف شما گوش کردم و یکبار دیگه مطالب مربوط به A-star از راسل رو خوندم.
ببینید چیز کلی که من از این نوع جستجو بدست آوردم، اینه که A-star کم هزینه ترین مسیر را انتخاب میکنه تا به هدف برسه.
g(n) هزینه رسیدن به گره ای هست که هر بار از بین همسایه ها (فرزندان) انتخاب میشه.
h(n) هم هزینه رسیدن از گره ای که انتخاب کردیم تا هدف هست. درست؟
حالا f(n) ما، یعنی کل ارزش مسیرمون، جمع دو تا تابع بالایی هست.

من قبل از اینکه سوالم رو بپرسم یه معذرت خواهی بابت پست قبلیم بدهکارم، من اونجا مشخص نکرده بودم که شبه کدی که گذاشتم، مربوط به "حل معمای 8 (پازل هشت) توسط A-star هست."
الآن ادیتش میکنم.


خب با این اوصاف، مشکل من اینه که نمیدونم چطور باید در درخت معمای 8 هزینه ها رو پیدا کنم؟
اصلا فکر کنم بهتره اول هر گامش رو به صورت شکل، روی کاغذ بیارم، تا بهتر تحلیل بشه.

مرحله اول ما پازل آغازین معمای 8 رو با 4 تا فرزند داریم:

http://img3.tinypic.info/files/00ml6gx5njou62zhk6jd.jpg

حالا از کجا باید بدونیم که برای انتخاب در سطح 3 چه گره ای را انتخاب کنیم؟


اگر قرار باشه فرزندای این 4 تا هم مشخص بشن که احتیاجی به این کار نیست، این فرزندان رو داریم:

http://img3.tinypic.info/files/dcx72v0cbixs24w5z2d2.jpg

اون 2 تایی که با ضربدر سبز مشخص کردم در واقع میتونن نباشن.


من تحلیل معمای 8 با A-Star را برای پروژه هوش واقعا نیاز دارم، امیدوارم برای یادگیریش کمکم کنید.

Di4mond_65 ۱۰-۱۲-۱۳۸۸ ۰۵:۵۵ بعد از ظهر

چرا کسی این شبه کد رو برای من توضیح نمیده؟
شما که همتون متخصصیت دوستان.

گاهی، نگاهی، ثوابی ...

mardin200 ۱۰-۱۲-۱۳۸۸ ۰۶:۱۲ بعد از ظهر

سلام قبل هر چیز ببخش که یکم دیر شد.
ما در ابتدا باید یک تابع اکتشافی خوب برای مسئله پیدا کنیم.
مقدار تابع برابر است با مجموع فاصله های افقی و عمودی هر عدد با مکان اصلی آن که همان هدف است.
مثلا در مثالی که خودتون انتخاب کردید همان حالت آغازین را در نظر بگیرید، فاصله عدد 8 با مکان اصلی خودش 3 است.ی2 حرکت افقی و یکی عمودی و اگر برای تک تک اعداد آن این مقادیر را بدست آوریم حاصل تابع برای این حالت برابر است با:
1+1+3+3+2+0+1+1+2=14
این مقدار، مقدار تابع h است. مقدار تابع g را هم به این صورت می توان بدست آورد ولی برای محاسبه آن باید فاصله هر حالت با حالت آغازی بدست آوریم و برای هر حالت f=g+h را بدست می آوریم برای هر نود که کمتر بود آن را بست می دهیم.
مثلا برای حالت اول که بست دادی :
f(1)=2+12=14 f(2)=2+16=18 f(3)=2+14=16 f(4)=2+14=16
پس حالا بهتر است ابتدا نود شماره 1 را بسط دهیم 3 یا 4 را هم ذخیره داشته باشیم شاید بعدا از طریق آنها به جواب بهتر برسیم
پیاده سازیش را هم با# C در سایت قرار دادم
بازم اگه سوالی بود ما هستیم.
با آرزوی موفقیت

Di4mond_65 ۱۰-۱۲-۱۳۸۸ ۰۶:۵۶ بعد از ظهر

مرسی مارین جان.
h رو متوجه شدم، ولی g رو نه!
یعنی 12 و 16 و 14 را که برای جمع با 2 استفاده کردی از کجا اومده؟
و اصلا خوده 2 ها را از کجا آوردین؟

ببخشید من یه کم زیاد آیکیوم پایینه:دی

در مورد پیاده سازیش هم من پست شما رو دیدم، داشته بودمش قبلا، ولی من نمیخوام حاضر و آماده تحویل استاد بدم، باید بفهممش.
شبه کد رو بفهمم خوده برنامه رو مطمئنا میتونم بنویسم. گیره من سره اونه.

بعد اینکه استاد ما علاوه بر نوشتن برنامه، میخواد تحلیل رو به صورت شکل روی کاغذ هم پیاده سازی کنیم.

mardin200 ۱۰-۱۲-۱۳۸۸ ۰۷:۵۳ بعد از ظهر

1(ها)ضميمه
در این فایل word براتون نوضییح دادم انشالله که این دفعه قابل فهم تر باشه

Di4mond_65 ۱۰-۱۳-۱۳۸۸ ۰۹:۳۴ بعد از ظهر

ماردین جان قربون دستت..:53:
الهی که خیر از زندگیت ببینی جوون، نمیدونید چقدر خوشحالم که الآن با خیال راحت کامل و درست با مقادیر h و g به جواب رسوندمش.

از گرافش خیالم راحت شد.:o

Di4mond_65 ۱۰-۱۴-۱۳۸۸ ۰۵:۲۰ بعد از ظهر

چطوریه که من هنوز کامل نمیفهمم اون شبه کد چیکار میکنه؟:(

Di4mond_65 ۱۰-۱۶-۱۳۸۸ ۰۲:۵۴ بعد از ظهر

اهــــــم...
باور کنید اگر بلد بودم سوال نمیپرسیدم!

ali-kh ۱۰-۱۶-۱۳۸۸ ۰۳:۲۲ بعد از ظهر

این شبه کد همونجوری که از اسمش پیداشست شبه کده یعنی به هیچ زبان خاصی نیست
یه جور الگوریتم نویسی به زبان سادست که از روی او میتونید برنامشو پیاده سازی کنید.

foreach y in neighbor_nodes(x)
if y in closedset
continue

مثلا توی این کد برای هر کدوم از فرزندان یه بار اجرا میشه و شرطش اینه که این حالت قبلا وجود نداشته باشه یعنی 2 باره کاری نشه
میشه گفت این یه جور زبان برای پیاده سازی الگوریتم هست شاید خودتون هم روی کاغذ تو برنامه نویسی این کار رو کرده باشید
----------------------------------------
چیزایی که میگم زاییده ذهن منه ممکنه اشتباه باشه . باز اساتید هستند میتونن بیشتر راهنمایی کنند

mardin200 ۱۰-۱۶-۱۳۸۸ ۰۷:۳۸ بعد از ظهر

سلام دوست عزیز
شما که گفتید همشو فهمیدید به خاطر همین ما هم بی خیال شدیم شما که روش جستجوی A-star رو فهمیدید و حتی گفتید که برای Puzzel 8 ، چک کردید.
خوب این کدها هم الگوریتم A-star رو با یک شبه کد بیان کرده، دقیقا همون کاری که خودتون انجام دادید.
اگر هم در خط خاصی از شبه کدها مشکل دارید بیان کنید تا جوابتان را بدهیم.
دلیل تاخیر جوابمان هم به خاطر نزدیک شدن امتحاناته:3:

Di4mond_65 ۱۰-۱۷-۱۳۸۸ ۱۲:۴۹ قبل از ظهر

نقل قول:

نوشته اصلي بوسيله ali-kh (پست 3604)
این شبه کد همونجوری که از اسمش پیداشست شبه کده یعنی به هیچ زبان خاصی نیست
یه جور الگوریتم نویسی به زبان سادست که از روی او میتونید برنامشو پیاده سازی کنید.

Foreach y in neighbor_nodes(x)
if y in closedset
continue

مثلا توی این کد برای هر کدوم از فرزندان یه بار اجرا میشه و شرطش اینه که این حالت قبلا وجود نداشته باشه یعنی 2 باره کاری نشه
میشه گفت این یه جور زبان برای پیاده سازی الگوریتم هست شاید خودتون هم روی کاغذ تو برنامه نویسی این کار رو کرده باشید
----------------------------------------
چیزایی که میگم زاییده ذهن منه ممکنه اشتباه باشه . باز اساتید هستند میتونن بیشتر راهنمایی کنند

مرسی دوست عزیزم..
من شبه کد اصولا توی امتحان طراحی الگوریتم زیاد به کارم میخورد که بنویسم، مثلا به جای توضیح فارسی یه چیزی، بنابراین با این شیوه نوشتاری آشنایی دارم:3:

اما نمیدونم دلیل اینکه متوجه نمیشم این رو چی هست، شاید چون زبانم خیلی خوب نیست، و شاید هم چون شبه کد هست، به هر صورت از توضیحتون واقعا ممنونم، ولی من اساسی واقعا مشکل دارمش!

نقل قول:

نوشته اصلي بوسيله mardin200 (پست 3614)
سلام دوست عزیز
شما که گفتید همشو فهمیدید به خاطر همین ما هم بی خیال شدیم شما که روش جستجوی a-star رو فهمیدید و حتی گفتید که برای puzzel 8 ، چک کردید.
خوب این کدها هم الگوریتم a-star رو با یک شبه کد بیان کرده، دقیقا همون کاری که خودتون انجام دادید.
اگر هم در خط خاصی از شبه کدها مشکل دارید بیان کنید تا جوابتان را بدهیم.
دلیل تاخیر جوابمان هم به خاطر نزدیک شدن امتحاناته:3:

سلام ماردین با محبت..
شما لطف دارید اما منظور من این بود که تحلیل رو کامل متوجه شدم، من برای پروژم با کمک شما تونستم 7 صفحه در مورد پازل 8 و روشهای حل اون با a* توضیح بنویسم و شکل بکشم که تقریبا تموم شد.

اما شبه کد رو واقعا متوجه نمیشم!
برای اینکه بتونم شبه کد و برنامه اصلی را به پروژم اضافه کنم باید بفهمم شبه کد چی گفته!


واقعا معذرت میخوام توی این گیرودار امتحانات مزاحمتون میشم، باور کنید من خودم هم هوش اولین امتحانمه که هفته دیگه دارمش و باید این رو هم تحویل بدم با دفاعیه:109:

mardin200 ۱۰-۱۷-۱۳۸۸ ۰۴:۱۵ بعد از ظهر

1(ها)ضميمه
سلام
کدها رو خط به خط براتون تو این فایل word توضیح دادم نگاه کنید اگر باز هم سوالی بود ما هستیم;)

Di4mond_65 ۱۰-۱۷-۱۳۸۸ ۱۰:۳۱ بعد از ظهر

سلـــــامم... وای وای چقدر کامل.:36:
واقعا دیگه موندم چطوری بگم که خیلی بزرگوارید.
کمک خیلی خیلی بزرگی به من کردید ماردین عزیز.:53:
خیر از جوونی و پیری و کلا از زندگی ببینید که واقعا آخرشید.:41:

خیلی خوب توضیح دادید، کامل متوجه شدم، الآن دیگه با خیال راحت به پروژم اضافه میکنمش.:67:

secretwise ۰۳-۸-۱۳۹۱ ۱۲:۵۳ بعد از ظهر

با شلام و خسته نباشید .... از دوستان خواهش میکنم اگه الگوریتم* a رو برای نقشه رومانی پیاده سازی کردند بزارن تو سایت واسه دانلود ... شدیدا نیاز دارم ... با تشکر

afsoos ۰۱-۲۱-۱۳۹۲ ۰۳:۱۳ بعد از ظهر

سلام
کسی هست یه فایل حاوی تعریف کلی، نحوه ی عملکر، مزایا و معایب الگوریتم A* رو داشته باشه؟؟؟
اگر کسی هست ممنون میشم برام ایمیل کنه...
zahra_hazbavi@yahoo.com


afsoos ۰۱-۲۱-۱۳۹۲ ۰۳:۱۹ بعد از ظهر

salam
hala k shoma tounestid algorithme a* ro motevajeh beshid mishe filesho baram befrestid mamnun misham
...

s.fa ۰۹-۱۸-۱۳۹۴ ۰۳:۳۷ بعد از ظهر

میشه اینو بزارید واسه دانلود من نیاز دارم تو رو خدا.اگه میشه بفرستید به ایمیلم .farhad.rad1377@gmail.com


زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۹:۲۳ بعد از ظهر ميباشد.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.