هوش مصنوعی با پایتون – بخش هفتم – برنامهنویسی منطقی
در این بخش به برنامهنویسی منطقی و چگونگی کمک آن به هوش مصنوعی میپردازیم. ما پیش از میدانستیم که Logic یا منطق مطالعه اصول استدلال صحیح است یا به عبارت ساده مطالعه این است که چه چیز پس از چه چیز دیگری میآید. بهعنوانمثال اگر دو جمله صحیح باشند، میتوانیم گزاره سومی را از آنها استنباط کنیم.
مفهوم برنامهنویسی منطقی
برنامهنویسی منطقی ترکیبی از دو کلمه است: منطق و برنامهنویسی. برنامهنویسی منطقی یک الگوی برنامهنویسی است که در آن مسائل بهمانند حقایق و قوانین توسط اعلان[1]های مسئله بیان میشوند اما درون سیستم منطق رسمی[2] قرار دارند. درست مانند سایر الگوهای برنامهنویسی مانند شیءگرایی، functional، [3]declarative و procedural[4] و غیره. البته اینیک روش بخصوص برنامهنویسی هم میباشد.
چگونه مسائل را با برنامهنویسی منطقی حل کنیم؟
برنامهنویسی منطقی برای حل مسئله از حقایق و قوانین استفاده میکند. به همین این حقایق و قوانین بلوکهای ساخت برنامهنویسی منطقی نامیده میشوند. برای هر برنامه در برنامهنویسی منطقی باید یک هدف مشخص شود. برای درک اینکه چگونه میتوان یک مسئله را در برنامهنویسی منطقی حل کرد باید در مورد چگونگی ساختمان بلوکها بدانیم یعنی همان حقایق و قوانین.
حقایق
درواقع، هر برنامه منطقی برای اینکه کار کند به حقایق نیاز دارد تا بتواند به هدف معینی برسد. حقایق درواقع اعلانهای (عبارتهای) درست در مورد برنامه و دادهها هستند. بهعنوانمثال تهران پایتخت ایران است.
قوانین
قوانین در حقیقت محدودیتهایی هستند که به ما امکان میدهند در مورد حوزه مسئله نتیجهگیری کنیم. قوانینی که اساساً بهعنوان بندهای منطقی برای بیان حقایق مختلف نوشتهشدهاند. بهعنوانمثال اگر ما در حال ساخت یک بازی رایانهای هستیم باید تمام قوانین تعریف شوند. قوانین برای حل هر نوع مسئلهای در برنامهنویسی منطقی مهم هستند. قوانین اساساً نتیجهگیری منطقی هستند که میتوانند حقایق را بیان کنند. در ادامه syntax یا ساختار یک قانون آمده است:
A∶− B1,B2,…,Bn.
در اینجا نماد A بهعنوان سَر و نماد B بهعنوان بدن میتواند تعبیر شود. مثالهای دیگر (مانند منطق مرتبه اول) میتواند ancestor(X,Y) :- father(X,Y) یا ancestor(X,Z) :- father(X,Y), ancestor(Y,Z باشند. این عبارت میتواند به این صورت خوانده شود که به ازای هر X و Y اگر X پدر Y و Y هم، جد Z باشد، نتیجه میگیریم X جد Z است. یعنی به ازای هر X و Y، X جد Z است اگر X پدر Y و Y جد Z باشد.
نصب پکیجهای مفید
برای شروع برنامهنویسی منطقی در پایتون، ما باید دو پکیج مفید زیر را نصب کنیم:
Kanren
این پکیج راهی به ما میدهد برای سادهسازیِ کدهای منطق تجاری[5]. این پکیج به ما اجازه میدهد تا منطق را به زبان قوانین و حقایق بیان کنیم. برای نصب آن از دستور زیر استفاده میکنیم:
Pip install kanren
Sympy
این پکیج یکی از کتابخانههای پایتون برای نمادهای ریاضی است. پکیج sympy به تبدیلشدن کامپیوتر به یک سیستم کامل جبری (CAS) کمک میکند و همچنین به سادهسازیِ هرچه بیشتر کدهای نوشتهشده در جهت جامعیت و قابلگسترش بودن یاری میرساند. دستور زیر به شما کمک میکند تا sympy را نصب کنید:
Pip install sympy
قسمتهای دیگر مقاله را از لینکهای زیر بخوانید:
هوش مصنوعی با پایتون – بخش هفتم – برنامهنویسی منطقی (قسمت دوم)
هوش مصنوعی با پایتون – بخش هفتم – برنامهنویسی منطقی (قسمت سوم)
هوش مصنوعی با پایتون – بخش هفتم – برنامهنویسی منطقی (قسمت آخر)
[1] Statement
[2] Formal Logic
[3] اعلانی
[4] رویهای
[5] Business Logic