برنامهنویسی منطقی و اعلانی
برنامهنویسی منطقی و اعلانی، مسائل را به صورت روابط، حقایق و قواعد بیان میکنند و جستجو برای راهحلها را به یک موتور استنتاجی واگذار میکنند، نه دستورالعملهای گام به گام صریح.
Definition
برنامهنویسی منطقی یک پارادایم اعلانی است که در آن یک برنامه مجموعهای از بندهای منطقی (حقایق و قواعد) است و محاسبات با استنتاج خودکار، معمولاً رزولوشن با یکسانسازی، برای پاسخ به پرسوجوها در برابر آن دانش پیش میرود.
Scope
این موضوع برنامهنویسی منطقی مبتنی بر بندهای هورن و رزولوشن (مانند پرولوگ)، برنامهنویسی منطقی با محدودیت، و ایده اعلانی گستردهتر برای مشخص کردن آنچه باید برقرار باشد به جای چگونگی محاسبه آن را پوشش میدهد. این شامل یکسانسازی (unification)، جستجوی پسگرد (backtracking search)، معناشناسی مدل-نظری و اثبات-نظری برنامههای منطقی، و جداسازی مشخصات منطقی از کنترل میشود.
Core questions
- محاسبه با اثبات یک هدف از بندهای منطقی به چه معناست؟
- یکسانسازی و پسگرد چگونه جستجو را بر روی یک برنامه رابطهای محقق میکنند؟
- جداسازی منطق از کنترل چگونه دقیق میشود؟
- محدودیتها چگونه برنامهنویسی منطقی محض را گسترش میدهند؟
Key theories
- اصل رزولوشن
- رزولوشن رابینسون یک قاعده استنتاجی واحد و ماشینگرا برای منطق مرتبه اول ارائه میدهد که موتور استنتاجی را فراهم میکند که برنامهنویسی منطقی را از نظر محاسباتی امکانپذیر میسازد.
- منطق به علاوه کنترل
- تحلیل کوالسکی محتوای منطقی یک برنامه (آنچه درست است) را از مؤلفه کنترلی آن (چگونگی جستجوی اثبات) متمایز میکند و برنامهنویسی منطقی را به عنوان راهی برای تغییر کنترل در حالی که منطق ثابت میماند، چارچوببندی میکند.
- معناشناسی اعلانی و رویهای برنامههای منطقی
- لوید معناشناسی مدل-نظری، نقطه ثابت، و عملیاتی برنامههای منطقی قطعی را رسمی میکند و تطابق آنها را اثبات میکند، که معنای برنامههای منطقی را پایه میگذارد.
Clinical relevance
تکنیکهای اعلانی و مبتنی بر منطق، زیربنای زبانهای پرسوجوی پایگاه داده، حلکنندههای محدودیت، نمایش دانش، و موتورهای قواعد هستند. تأکید آنها بر مشخص کردن مسائل به جای الگوریتمها، آنها را برای جستجوی ترکیبی، پیکربندی، و وظایف استدلالی بسیار مناسب میسازد.
History
اصل رزولوشن رابینسون در سال ۱۹۶۵، مبنای استنتاجی را فراهم کرد. در اوایل دهه ۱۹۷۰، کلمرائر و روسل پرولوگ را ایجاد کردند و کوالسکی تفسیر رویهای بندهای هورن را بیان کرد. این پارادایم در طول دهه ۱۹۸۰ شکوفا شد و بر پروژه نسل پنجم ژاپن تأثیر گذاشت و بعدها به برنامهنویسی منطقی با محدودیت و برنامهنویسی مجموعه پاسخ گسترش یافت.
Debates
- خلوص در برابر کنترل عملی
- زبانهای برنامهنویسی منطقی بین ایدهآل منطق اعلانی محض و نیازهای عملی برای کنترل صریح، مانند برش (cut) و ترتیب، که کارایی را بهبود میبخشند اما جدایی پاک منطق/کنترل را به خطر میاندازند، تعادل برقرار میکنند.
Key figures
- Robert Kowalski
- Alain Colmerauer
- J. Alan Robinson
- John Lloyd
- Philippe Roussel
Related topics
Seminal works
- kowalski1979
- robinson1965
- lloyd1987
- colmerauer1993
Frequently asked questions
- برنامهنویسی منطقی چه تفاوتی با برنامهنویسی دستوری دارد؟
- به جای مشخص کردن دنبالهای از عملیات، یک برنامه منطقی حقایق و قواعد را اعلام میکند و یک موتور استنتاجی به دنبال اثباتهایی میگردد که به پرسوجوها پاسخ میدهند، بنابراین برنامهنویس بر آنچه درست است تمرکز میکند تا چگونگی محاسبه آن.
- یکسانسازی چیست؟
- یکسانسازی فرآیند یافتن یک جایگزینی است که دو عبارت منطقی را یکسان میکند؛ این مکانیسم اصلی است که برنامههای منطقی اهداف را با سر بندها مطابقت میدهند.