Processing math: 41%

المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۱۸:تئوری:سوال ۹

جستجو در فضای شیطنت

عدد ‎x‎ و دنباله‌ی اعداد ‎a1a2an‎ داده شده است. ففلی می‌خواهد ببیند که ‎x‎ در این دنباله وجود دارد یا خیر. برای این کار از الگوریتم جستجوی دودویی (Binary Search) استفاده می‌کند. این الگوریتم به این صورت کار می‌کند که اگر بخواهیم در زیردنباله‌ی ‎aiai+1aj‎ به دنبال ‎x‎ بگردیم در ابتدا ‎x‎ را با ‎a(i+j)/2‎ مقایسه کرده و بر اساس جواب به یکی از دو زیرمسئله‌ی بازگشتی کوچک‌ترِ ‎(i‎, ‎\lfloor (i+j)/2\rfloor-1)‎ و یا ‎(\lfloor (i+j)/2\rfloor+1‎, ‎j)‎ می‌رویم و یا در صورت برابری به الگوریتم پایان می‌دهیم.

به خاطر شیطنت‌های خاص ففلی، او در مقایسه‌ی ‎x‎ با هر ‎a_i‎ ممکن است اشتباه کند اما می‌دانیم که به ازای هر ‎a_i‎ او در عمر خود در مقایسه‌ی ‎x‎ با ‎a_i‎ حداکثر یک بار اشتباه می‌کند. ففلی الگوریتم فوق را ‎k‎ بار تکرار می‌کند. کم‌ترین مقدار ‎k‎ چند است به طوری‌که مطمئن باشیم در لااقل یک بار از این ‎k‎ بار ففلی به جواب درست می‌رسد.


ابزار صفحه