جستجوی Brute Force در جاوا (Brute Force Search)

در این قسمت تیم کدگیت را با آموزش جستجوی Brute Force در جاوا (Brute Force Search) همراهی کنید. همانند جلسات گذشته ابتدا الگوریتم Brute Force را توضیح و سپس به پیاده سازی آن می‌پردازیم. پیشنهاد می‌کنیم قبل از مطالعه این جلسه، آموزش‌های زیر را بررسی کنید:

  1. متد در جاوا
  2. شی گرایی در جاوا
  3. حلقه for در جاوا
  4. If در جاوا

جستجوی Brute force

جستجوی Brute force یا جستجوی جامع (exhaustive search) برای حل مسائل استفاده می‌شود و در این روش تمامی حالت مسئله بررسی می‌شود. جستجو به روش brute-force به سادگی قابل پیاده‌سازی می‌باشد و همیشه جواب مسئله را در صورت وجود می‌یابد. با این حال، به دلیل اینکه هزینه‌های آن متناسب با تعداد کاندید‌های حل مسئله است، استفاده از آن در بسیاری از مسائل، که تعداد کاندیدهای حل مسئله تمایل به رشد بسیار سریع با افزایش اندازه مسئله را دارد، امکانپذیر نمی‌باشد.

به عنوان مثال ، تصور کنید که یک قفل کوچک با 4 رقم دارید (هر کدام بین 0-9). شما رمز خود را فراموش کرده اید ، اما نمی خواهید قفل دیگری خریداری کنید. از آنجایی که شما نمی توانید هیچ یک از ارقام را به یاد آورید، برای باز کردن قفل باید از روش جستجوی Brute Force  استفاده کنید و تمام حالات رمز خود را امتحان کنید تا قفل شما باز شود.

جستجوی Brute force در جاوا

فرض کنید ما یک تابع به فرمول (x-1) * (x-1) =y را داریم. می‌خواهیم با استفاده از روش جستجوی Brute Force در جاوا، مینیمم این تابع را در محدوده (1- و 2) پیدا کنیم. یک کلاس به نام BruteForce می‌سازیم و در آن یک متد به نام f(double x) می‌نویسیم که در ورودی مقدار x را دریافت کرده و در خروجی تابع، مقدار y را می‌دهد. کد این قسمت به صورت زیر است:

بیشتر بخوانید:  نوشتن در فایل اکسل با جاوا (Write Excel File)

دو متغیر(فیلد کلاس Brute Force) برای تعیین محدوده جستجوی خود تعریف می‌کنیم:

 در این مسئله تعداد قدم‌های برای بررسی x را 0.01 در نظر می‌گیریم. در جاوا آن را dx نام‌گذاری می‌کنیم. یک متد به نام BruteForce می‌سازیم و به صورت زیر پیاده سازی می‌کنیم:

در کد بالا ما از نقطه شروع X اقدام به جستجوی مینمم می‌کنیم و در هر مرحله به اندازه dx یا 0.01 به جلو می‌رویم. این کار را تا نقطه پایان X ادامه می‌دهیم. سپس مقدار مینمم را چاپ می‌کنیم.

تست کد جستجوی Brute force در جاوا

برای تست کدهای بالا، کد Main زیر را پیاده سازی کنید:

خروجی کد بالا به صورت زیر است:

بیشتر بخوانید:  ب م م در جاوا (بزرگترین مضرب مشترک)

The minimum value is f(x) = 1.7749370367472766E-30 and x = 1.0000000000000013

در زیر تصویری از نمودار (x-1) * (x-1) =y آورده‌ایم (جهت بررسی مینیمم):

جستجوی Brute Force در جاوا

همانطور که در تصویر می‌بینید مینیمم در نقطه x=1 می‌باشد و با جواب ما برابری می‌کند.

    پسورد فایل: www.codegate.ir

    دیدگاهتان را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *