جستجوی بروت-فورس: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
خط ۱۲:
در [[علوم کامپیوتر]]، '''[[جستجو|جستجوی]] خام و بی‌خردانه''' (به انگلیسی: brute-force search) یا '''جستجوی جامع (فراگیر)''' (به انگیسی: exhaustive search)، همچنین به نام '''جستجوی تولید و تِست''' (به انگلیسی: generate and test) شناخته شده، روشی بدیهی در عین حال بسیار کلی برای [[حل مسئله]] می‌باشد. این روش که شامل شمارش نظام مند تمام نامزدهای ممکن برای حل و چک کردن اینکه آیا هر یک از نامزدها قادر به ارضا شرط مسئله است. به عنوان مثال، یک الگوریتم brute-force برای پیدا کردن [[مقسوم علیه]]‌های یک [[عدد طبیعی]] ''N''، شامل شمردن تمام [[اعداد صحیح]] از ۱ تا ریشهٔ دوم از n است، و بررسی اینکه آیا n به هر یک از آنها تقسیم پذیر است یا خیر.
 
جستجو به روش brute-force به سادگی قابل پیاده‌سازی می‌باشد و همیشه جواب مسئله را در صورت وجود می‌یابد. با این حال، به دلیل اینکه هزینه‌های آن متناسب با تعداد نامزدهای حل مسئله است، استفاده از آن در بسیاری از مسائل عملی، که تعداد نامزدهای حل مسئله تمایل به رشد بسیار سریع با افزایش اندازه مسئله را دارد، امکانپذیر نمی‌باشد. این روش هنگامی به کار می‌رود که اندازه مسئله محدود می‌باشد یا روش‌های ابتکاری برای کاهش تعداد مجموعه نامزدهای حل مسئله وجود دارد. این روش هنگامی که سادگی پیاده‌سازی مهم ترمهم‌تر از سرعت است نیز به کار می‌رود.
 
به عنوان مثال، در برنامه‌های حساس که در آن هر گونه خطا در الگوریتم می‌تواند عواقب بسیار جدی داشته باشد، یا در هنگام استفاده از رایانه برای اثبات یک قضیه ریاضی این روش به کار برده می‌شود. جستجو به روش brute-force به عنوان روش «پایه» در هنگام تعیین معیار الگوریتم‌های دیگر یا metaheuristics مفید می‌باشد. در واقع، جستجو به روش brute-force را می‌توان ساده‌ترین metaheuristic نام نهاد. با این وجود نباید این روش را با [[روش پسگرد]] اشتباه گرفت. در روش عقبگرد، مجموعه بزرگی از راه حل‌ها را می‌توان بدون شمارش حذف کرد. روش brute-force برای پیدا کردن یک آیتم در یک جدول [[جستجوی خطی]] نامیده می‌شود.