هوش مصنوعی با پایتون – جستجوی کاشف

3 سال پیش

 

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

مفهوم جستجوی کاشف در هوش مصنوعی

جست و جوی هیوریستیک یک قانون کلی است که ما را به راه حل احتمالی رهنمون می کند. بیشتر مشکلات در هوش مصنوعی ماهیت نمایی دارند و راه حل های بسیاری دارند. شما دقیقاً نمی دانید کدام راه حل ها درست هستند و بررسی همه راه حل ها بسیار سخت است.

پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون

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

تفاوت جستجوی ناآگاهانه و آگاهانه

دو نوع استراتژی کنترل یا تکنیک جستجو وجود دارد: ناآگاه و آگاه. آنها در اینجا با جزئیات توضیح داده شده اند –

جستجوی ناآگاه

استراتژی جستجوی کور یا کنترل کور نیز نامیده می شود. نام آن به این دلیل است که فقط اطلاعاتی در مورد تعریف مسئله وجود دارد و هیچ اطلاعات اضافی دیگری در مورد states در دسترس نیست. این نوع تکنیک های جستجو کل فضای states را برای دستیابی به جست و جوی هیوریستیک می کند. (Breadth First Search (BFS و (Depth First Search (DFS نمونه هایی از جستجوی نا آگاه هستند.

جستجوی آگاهانه

استراتژی جستجوی ابتکاری یا کنترل اکتشافی نیز نامیده می شود. این نام به این دلیل نامگذاری شده است که اطلاعات اضافی در مورد states وجود دارد. این اطلاعات اضافی برای محاسبه اولویت بین گره های کودک برای کاوش و گسترش مفید است. یک عملکرد ابتکاری در ارتباط با هر گره وجود دارد. بهترین جستجوی اول (BFS) ، A * ، میانگین و تحلیل نمونه هایی از جستجوی آگاهانه هستند.

مسائل ارضای محدودیت (CSP)

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

بخشهای قبلی به ایجاد مشکلات ارضای محدودیت می پرداختند. حال اجازه دهید این مورد را در مورد مشکلات دنیای واقعی نیز اعمال کنیم. چند نمونه از مشکلات دنیای واقعی که با رضایت محدودیت حل شده اند به شرح زیر است –

حل رابطه جبری

با کمک مسئله ارضای محدودیت، می توانیم روابط جبری را حل کنیم. در این مثال، سعی خواهیم کرد یک رابطه جبری ساده a * 2 = b حل کنیم. مقدار a و b را در محدوده ای که تعریف می کنیم برمی گرداند.

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

توجه داشته باشید که قبل از نوشتن برنامه، باید پکیج پایتون به نام python-constraint را نصب کنیم. با کمک دستور زیر می توانید آن را نصب کنید –

ip install python-constraint

 

مراحل زیر یک برنامه پایتون برای حل رابطه جبری با استفاده از رضایت محدودیت را به شما نشان می دهد –

پکیج constraint را با استفاده از دستور زیر وارد کنید –

from constraint import *

 

همانطور که در زیر نشان داده شده، یک شی از ماژول به نام ()problem ایجاد کنید –

problem = Problem()

 

اکنون، متغیرها را تعریف کنید. توجه داشته باشید که در اینجا ما دو متغیر a و b داریم، و ما ۱۰ را به عنوان دامنه آنها تعریف می کنیم، به این معنی که ما حل را در ۱۰ عدد اول دریافت کردیم.

problem.addVariable('a', range(10))
problem.addVariable('b', range(10))

 

بعد، محدودیت خاصی را که می خواهیم در مورد این مشکل اعمال کنیم تعریف کنید. مشاهده کنید که در اینجا ما از محدودیت a * 2 = b استفاده می کنیم.

problem.addConstraint(lambda a, b: a * 2 == b)

 

اکنون، با استفاده از دستور زیر شی ماژول ()getSolution را ایجاد کنید –

solutions = problem.getSolutions()

 

در آخر، خروجی را با استفاده از دستور زیر چاپ کنید –

print (solutions)

 

می توانید خروجی برنامه فوق را به صورت زیر مشاهده کنید –

[{'a': 4, 'b': 8}, {'a': 3, 'b': 6}, {'a': 2, 'b': 4}, {'a': 1, 'b': 2}, {'a': 0, 'b': 0}]

 

مربع جادویی
مربع جادویی یک ترتیب از اعداد مجزا است، به طور کلی اعداد صحیح، در یک شبکه مربع، جایی که اعداد در هر سطر، و در هر ستون، و اعداد در مورب، همه به همان تعداد “ثابت جادویی” اضافه می شود.

در زیر اجرای مرحله ای کد پایتون ساده برای تولید مربع های جادویی آورده شده است –

همانطور که در زیر نشان داده شده تابعی را به نام magic_square تعریف کنید –

 

def magic_square(matrix_ms):
   iSize = len(matrix_ms[0])
   sum_list = []

 

کد زیر کد عمودی مربع ها را نشان می دهد –

for col in range(iSize):
   sum_list.append(sum(row[col] for row in matrix_ms))

 

کد زیر کد برای  مربع های افقی را نشان می دهد –

sum_list.extend([sum (lines) for lines in matrix_ms])

 

کد زیر کد مربع های افقی را نشان می دهد –

dlResult = 0
for i in range(0,iSize):
   dlResult +=matrix_ms[i][i]
sum_list.append(dlResult)
drResult = 0
for i in range(iSize-1,-1,-1):
   drResult +=matrix_ms[i][i]
sum_list.append(drResult)

if len(set(sum_list))>1:
   return False
return True

 

اکنون مقدار ماتریس را داده و خروجی را بررسی کنید –

print(magic_square([[1,2,3], [4,5,6], [7,8,9]]))

 

می توانید مشاهده کنید که خروجی False خواهد بود زیرا مجموع به همان تعداد نیست.

print(magic_square([[3,9,2], [3,5,7], [9,1,6]]))

 

می توانید مشاهده کنید که خروجی True است زیرا مجموع همان عدد است که در اینجا ۱۵ است.

 

منبع.

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

  1. آموزش هوش مصنوعی با برنامه نویسی پایتون – مفهوم کلی
  2. شروع آموزش هوش مصنوعی با برنامه نویسی پایتون
  3. یادگیری ماشین در هوش مصنوعی با برنامه نویسی پایتون
  4. هوش مصنوعی با برنامه نویسی پایتون، آماده ‌سازی داده ها
  5. هوش مصنوعی با پایتون، یادگیری نظارت شده و طبقه بندی
  6. هوش مصنوعی با برنامه نویسی پایتون – یادگیری تحت نظارت: رگرسیون
  7. هوش مصنوعی با برنامه نویسی پایتون – برنامه نویسی منطقی
  8. هوش مصنوعی با پایتون – یادگیری بدون نظارت: خوشه بندی
  9. هوش مصنوعی با پایتون – پردازش زبان طبیعی
  10. هوش مصنوعی با پایتون – پکیج NLTK
  11. هوش مصنوعی با پایتون – تجزیه و تحلیل داده های سری زمانی
  12. هوش مصنوعی با پایتون – تشخیص گفتار

 

0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه