advertise laitec sharif univercity تبلیغات در سایت سورس کد تبلیغات در سایت سورس کد
دانلود پروژه پایانی طراحی وب سایت مخابرات با Asp.net

دانلود پروژه پایانی طراحی وب سایت مخابرات با Asp.net

14000 تومان
دانلود پروژه کامل مهندسی نرم افزار ، شرکت نرم افزاری

دانلود پروژه کامل مهندسی نرم افزار ، شرکت نرم افزاری

3000 تومان
دانلود برنامه هشت وزیر با جستجوی عمقی در سی شارپ

دانلود برنامه هشت وزیر با جستجوی عمقی در سی شارپ

3000 تومان
دانلود پایان نامه وب سایت مهندسی پزشکی با ASP.net

دانلود پایان نامه وب سایت مهندسی پزشکی با ASP.net

12000 تومان
پروژه پایانی PHP وب سایت فروشگاه کامپیوتری

پروژه پایانی PHP وب سایت فروشگاه کامپیوتری

23000 تومان

برنامه نویسی منطقی پرولوگ در هوش مصنوعی

پرولوگ Prolog پرکاربردترین زبان برنامه نویسی منطقی است. این زبان، ابتدا به عنوان زبان الگوسازی سریع و کارهای پردازش نمادها مثل نوشتن کامپایلر و ترجمه ی زبان های طبیعی به کار رفت
برنامه نویسی منطقی پرولوگ در هوش مصنوعی

برنامه نویسی منطقی پرولوگ در هوش مصنوعی

برنامه نویسی منطقی فناوری ای است که تقریبا شامل ایده ی اعلانی است: سیستم باید با بیان دانش در یک زبان رسمی ساخته شود و مسئله ها باید از طریق اجرای فرآیندهای استنتاج بر روی آن دانش حل شوند. این ایده در معادله رابرت کووالسکی (Robert Kawalsi) آمده است:

Algorithm = Logic + Control                      الگوریتم = منطق + کنترل

پرولوگ (Prolog) پرکاربردترین زبان برنامه نویسی منطقی است. صدها هزار نفر از آن استفاده میکنند. این زبان، ابتدا به عنوان زبان الگوسازی سریع و کارهای پردازش نمادها مثل نوشتن کامپایلر و ترجمه ی زبان های طبیعی به کار رفت (Preeira و Wament در 1980). سیستم های خبره زیادی برای حوزه های قانون پزشکی، مالی و غیره نوشته شدند.

برنامه های پرولوگ مجموعه ای از کلازهای معین است که طرز نوشتن آن کمی متفاوت از منطق مرتبه اول است. پرولوگ از حروف بزرگ برای متغیرها و از حروف کوچک برای ثوابت استفاده میکند (برعکس قواعد منطق). عطف های موجود در کلازها با کاما از هم جدا میشوند، و کلازها از چیزی که استفاده کردیم بصورت معکوس نوشته میشود. به جای A ʌ B C در پرولوگ داریم C : ¬A , B.

 

نمادگذاری [E | L] لیستی را نشان میدهد که عنصر اول آن E و بقیه آن L است. برنامه پرولوگ برای عبارت append(X, Y, Z) در زیر آمده است. این برنامه وقتی با موفقیت اجرا میشود که  z نتیجه حاصل از اضافه کردن لیست های x و y باشد:

append ( [] , Y , Y)

append ( [A|X] , Y , [A|Z] ) : - append (X, Y, Z)

در فارسی، این کلازها را میتوانیم بصورت زیر بخوانیم، (1) اضافه کردن لیست Y به لیست خالی، لیستی مشابه Y را ایجاد میکند و (2) [A|Z] نتیجه اضافه کردن [A|X] به Y است، به شرطی که Z نتیجه اضافه کردن X به Y باشد.

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

بسط برنامه های پرولوگ از طریق زنجیره عقبگرد عمقی انجام میشود که در آن کلازها به ترتیبی ارزیابی میشوند که در پایگاه دانش نوشته شدند. بعضی از جنبه های پرولوگ خارج از استنتاج منطقی استاندارد هستند:

► پرولوگ از معناشناسی پایگاه داده استفاده میکند، نه معناشناسی مرتبه اول، و این نکته در رفتار آن با عملگرهای تساوی و نقیض روشن است.

► مجموعه ای از توابع سیستمی برای محاسبات وجود دارد. لیترال های استفاده کننده از این نمادهای تابعی با اجرای کد (به جای استنتاج بیشتر) اثبات میشوند.

► محمولات سیستمی وجود دارند که اجرای آنها با اثرات جانبی همراه است. اینها شامل محمولات ورودی – خروجی و محمولات assert/ retract برای اصلاح پایگاه دانش است. این محمولات همتایی در منطق ندارند و میتوانند اثرات عجیبی به وجود آورند. بعنوان مثال ممکن است حقایق در شاخه ای از درخت اثبات قرار داده شوند که سرانجام منجر به شکست میشود.

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

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

طراحی پرولوگ مصالحه ای را بین قابلیت اعلان و کارایی اجرا ارائه میدهد (تا حدی که کارایی در زمان طراحی پرولوگ درک شده بود.)

 

پیاده سازی کارآمد برنامه های منطقی Prolog

اجرای برنامه پرولوگ در دو حالت انجام میشود : مفسری و کامپایلری. تفسیر، اساسا برای اجرای الگوریتم FOL-BC-ASK مفید است.

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

ثانیا پیاده سازی ساده FOL-BC-ASK وقت خوبی را برای تولید و ترکیب جایگزینی ها صرف میکند. پرولوگ به جای ساخت صریح جایگزینی ها متغیرهای منطقی دارد که انقیادهای فعلی آنها را به خاطر بسپارند. در هر نقطه از زمان هر متغیر موجود در برنامه، یا مقید به مقداری است یا فاقد انقیاد است. این مقادیر و متغیرها بطور ضمنی جایگزینی را برای شاخه فعلی اثبات تعریف میکنند.

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

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

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

 

 



2
نظرات
  • user avatar ماعده:
    ۱۷:۱۱:۴۹ __ ۱۳۹۴/۱۰/۰۳

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

  • user avatar شیما:
    ۰۱:۰۴:۴۷ __ ۱۳۹۵/۰۹/۲۸

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

نظر خود را ارسال کنید



نام:
ایمیل:
دیدگاه:
captcha
کد امنیتی :


advertise
زبان سطح بالای پرولوگزبان پرولوگ در هوش مصنوعیprolog language در AIپیاده سازی کارآمد برنامه های منطقیالگوریتم یکسان سازی پرولوگنمادگذاری زبان PROLOGآشنایی مقدماتی با زبان پرولوگبرنامه های منطقی پرولوگزبان برنامه نویسی prologآشنایی با برنامه نویسی منطقیبرنامه نویسی پرولوگپیاده سازی برنامه های زبان PROLOG لیست برچسب ها
تمامی حقوق این سایت اعم از محتوی ، تصاویر ، قالب و ... متعلق به گروه مهندسی وب سایت سورس کد می باشد.
SourceCodes.ir ، افقی روشن برای برنامه نویسان ، از مبتدی تا حرفه ای

سفارش پروژه در سورس کد

پیشنهادات ویژه سورس کد

پکیج ویژه پروژه پایانی رشته کامپیوتر دانلود مجموعه 70 پروژه کاربردی سی شارپ وب سایت فروشگاه با php