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

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

10000 تومان
دانلود پروژه وب سایت هتل با HTML و ASP.NET

دانلود پروژه وب سایت هتل با HTML و ASP.NET

10000 تومان
دانلود مقاله ای در مورد الگوریتم  کرم شب تاب FireFly در هوش مصنوعی

دانلود مقاله ای در مورد الگوریتم کرم شب تاب FireFly در هوش مصنوعی

10000 تومان
دانلود پروژه وب سایت اشعار با ASP.NET و SQL

دانلود پروژه وب سایت اشعار با ASP.NET و SQL

10000 تومان
دانلود سورس اپلیکیشن اندروید کتاب گرامر انگلیسی

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

10000 تومان

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

پرولوگ 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 وقت خوبی را برای تولید و ترکیب جایگزینی ها صرف میکند. پرولوگ به جای ساخت صریح جایگزینی ها متغیرهای منطقی دارد که انقیادهای فعلی آنها را به خاطر بسپارند. در هر نقطه از زمان هر متغیر موجود در برنامه، یا مقید به مقداری است یا فاقد انقیاد است. این مقادیر و متغیرها بطور ضمنی جایگزینی را برای شاخه فعلی اثبات تعریف میکنند.

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

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

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

 

 



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

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

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

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

  • user avatar دانش:
    ۰۹:۴۳:۱۲ __ ۱۴۰۲/۰۲/۳۰

    سلام. شما در زمینه برنامه نویسی منطق احتمالاتی میتونید کمک کنید؟

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



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


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

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

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