اَبا اِباد

جستجوی بروت فورس

جستجوی بروت فورس

یک جعبه سیب جلوی شما می‌گذارند و می‌گویند ببینید که در این جعبه چند سیب خراب وجود دارد؟

اولین و ساده‌ترین راهی که پیش رو دارید، این است که تک تک سیب‌های درون جعبه را وارسی کنید و در نهایت بگویید که چند سیب خراب و چند سیب سالم وجود دارد. اگر درون آن جعبه پنجاه سیب وجود داشته باشد، شما بایستی عمل وارسی را پنجاه بار انجام دهید. اما اگر مساله کمی سخت‌تر شود، مثلا به جای یک جعبه، یک کامیون سیب به شما بدهند و از شما بخواهند که تعداد سیب‌های خراب در آن کامیون را پیدا کنید، چه کار می‌کنید؟

اگر در مورد یک کامیون سیب نیز روش بررسی مورد به مورد را انتخاب کنید، در مورد یک انبار سیب چه کار می‌کنید؟

هرچقدر تعداد سیب‌ها بیشتر شود، بررسی‌ شما به زمان بیشتری نیاز دارد و از جایی به بعد این روش، اصلا جوابگو نخواهد بود. به این روش بررسی داده ها در علوم کامپیوتر، جستجوی بروت-فورس یا جستجوی غیرهوشمندانه یا جستجوی جامع (فراگیر) یا Exhaustive Search گفته می‌شود. این روش علیرغم اینکه بسیار ساده است، از نظر محاسباتی بسیار گران قیمت است. البته این روش برای بسیاری از مسائل، به جواب می‌رسد اما باید پرسید به چه قیمتی؟

مثلا اگر مساله این باشد ‌که تعداد اعداد اول از یک تا یک میلیون چندتاست، اصلا منطقی نیست ‌که تک تک اعداد یک تا یک میلیون را بررسی کنیم که آیا عدد اول هستند یا خیر؟

اما‌ اگر همین سوال را برای اعداد یک تا بیست از شما بپرسند، بهترین روش همین است که به جای جستجو برای هر فرمول و رابطه و الگوریتمی، اعداد یک تا بیست را جلوی خودتان بگذارید و در مورد هریک از آن‌ها بپرسید که آیا این عدد اول است یا خیر؟

روش جستجوی غیرهوشمندانه علیرغم اینکه خیلی از اوقات مناسب به نظر نمی‌رسد، اما یک ویژگی مهم دارد، اینکه شما مطمئن هستید که به جواب می‌رسید، هرچند با سختی و مشقت زیاد. گاهی اوقات (به ندرت) این روش‌ در کریپتوگرافی نیز به کار می‌رود. مثلا یک‌ هکر می‌خواهد رمز حساب کاربری شما را پیدا کند و هیچ سرنخی از اینکه رمز شما چیست ندارد. او تنها می‌داند که رمز شما از ۴ رقم تشکیل شده و فقط عدد است. اگر محدودیتی در دفعات وارد کردن رمز اشتباه نداشته باشد، کافی‌ست ده هزار عدد را به ترتیب از 0000 شروع کند تا به 9999 برسد.

اما اگر رمز شما ده رقم باشد و علاوه بر اعداد، حروفی نیز در آن به کار رفته باشد، چطور؟

اما مثلا برای باز کردن کیف‌های سامسونت قدیمی، کافی بود که از 000 شروع کنید تا به 999 برسید و رمز بالاخره یکی از این اعداد بود. تمام این روش‌ها، روش جستجوی غیرهوشمندانه است. اما ما هر روشی بهتری که پیدا کنیم، می‌توانیم‌ با این روش مقایسه کنیم و حداقل یک حالت پایه داریم که روشمان را با آن مقایسه کنیم.

پی‌نوشت: زندگی مثل کیف سامسونت نیست که فقط سه رقم داشته باشد. اگر بخواهیم در زندگی همه‌ی حالت‌های ممکن را امتحان کنیم، به احتمال خیلی زیاد، قبل از باز شدن قفل زندگی، عمرمان به پایان می‌رسد. پس بهتر است هوشمندانه جستجو کنیم نه به شکل Exhaustive Search.

یا به قول سعدی “صد انداختی تیر و هر صد خطاست / اگر هوشمندی یک انداز و راست”

– اَبا اِباد

دیدگاه‌ خود را بنویسید

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