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

محتوای حذف‌شده محتوای افزوده‌شده
Pamoghaddam (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
Pamoghaddam (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۱۰:
| پیچیدگی فضایی =
}}
'''جستجوی بروت-فورس''' یا '''جستجوی غیرهوشمندانه'''<ref>{{یادکرد فرهنگستان|مصوب=حملهٔ غیرهوشمندانه|بیگانه=bruteBrute force attack|بیگانه در فارسی=|حوزه=رمزشناسی|دفتر=نهم|بخش=فارسی|سرواژه=حملهٔ غیرهوشمندانه}}</ref> {{انگلیسی|bruteBrute-force search}} یا '''جستجوی جامع (فراگیر)''' (به انگیسی: exhaustive search)، که همچنین در [[علوم کامپیوتر]] به نام '''جستجوی تولید و تِست''' (به [[زبان انگلیسی|انگلیسی]]: generate and test) شناخته شده، روشی بدیهی در عین حال بسیار کلی برای [[حل مسئله]] می‌باشد. این روش که شامل شمارش نظام مند تمام نامزدهای ممکن برای حل و چک کردن اینکه آیا هر یک از نامزدها قادر به ارضا شرط مسئله است. به عنوان مثال، یک الگوریتم bruteBrute-force برای پیدا کردن [[مقسوم علیه]]‌های یک [[عدد طبیعی]] ''N''، شامل شمردن تمام [[اعداد صحیح]] از ۱ تا ریشهٔ دوم از n است، و بررسی اینکه آیا n به هر یک از آن‌ها تقسیم پذیر است یا خیر.
 
جستجو به روش Brute-force به سادگی قابل پیاده‌سازی می‌باشد و همیشه جواب مسئله را در صورت وجود می‌یابد. با این حال، به دلیل اینکه هزینه‌های آن متناسب با تعداد نامزدهای حل مسئله است، استفاده از آن در بسیاری از مسائل عملی، که تعداد نامزدهای حل مسئله تمایل به رشد بسیار سریع با افزایش اندازه مسئله را دارد، امکانپذیر نمی‌باشد. این روش هنگامی به کار می‌رود که اندازه مسئله محدود می‌باشد یا روش‌های ابتکاری برای کاهش تعداد مجموعه نامزدهای حل مسئله وجود دارد. این روش هنگامی که سادگی پیاده‌سازی مهم‌تر از سرعت است نیز به کار می‌رود.
 
به عنوان مثال، در برنامه‌های حساس که در آن هر گونه خطا در الگوریتم می‌تواند عواقب بسیار جدی داشته باشد، یا در هنگام استفاده از رایانه برای اثبات یک قضیه ریاضی این روش به کار برده می‌شود. جستجو به روش bruteBrute-force به عنوان روش «پایه» در هنگام تعیین معیار الگوریتم‌های دیگر یا metaheuristics مفید می‌باشد. در واقع، جستجو به روش bruteBrute-force را می‌توان ساده‌ترین metaheuristic نام نهاد. با این وجود نباید این روش را با [[روش پسگرد]] اشتباه گرفت. در روش عقبگرد، مجموعه بزرگی از راه حل‌ها را می‌توان بدون شمارش حذف کرد. روش Brute-force برای پیدا کردن یک آیتم در یک جدول [[جستجوی خطی]] نامیده می‌شود.
 
== پیاده‌سازی جستجوی Brute-force ==
== الگوریتم پایه ==
به منظور استفاده از روش bruteBrute-force در یک کلاس خاص از مسائل، باید چهار زیر برنامه first, next, valid و output پیاده‌سازی شود. هر یک از این روش‌ها، داده P از یک مسئله را به عنوان یک پارامتر در نظر گرفته و مراحل زیر را انجام می‌دهد:
 
(''first'' (''P'': ایجاد اولین نامزد برای حل P.