======دنباله====== دنباله‌ی $A= $ از اعداد طبیعی را در نظر بگیرید. در ابتدای کار٬ به ازای هر $1\le i \le n$ می‌دانیم که $a_i=i$. هم‌چنین یک متغیر $b$ تعریف می‌کنیم و مقدار اولیه‌ی آن را برابر ۰ می‌گذاریم. فرض کنید $f(z)$ برابر تعداد اعدادی از دنباله‌ی $A$ است که مقدارشان برابر $z$ است. مثلاً اگر $n= ۸$ در ابتدای کار داریم: $A= <1,2,3,4,5,6,7,8>$ و هم‌چنین $f(8)=1$ و $f(9)=0$. الگوریتم زیر را در نظر بگیرید که در هر بار اجرا٬ دو عدد طبیعی $x$ و $y$ را از ورودی می‌گیرد و پردازش می‌کند ($1 \le x , y \le n$): - مقدار $x$ و $y$ را از ورودی دریافت کن. - اگر $a_x= a_y$٬ به مرحله‌ی ۹ برو٬ در غیر این صورت به مرحله‌ی ۳ برو. - اگر $f(a_x) \le f(a_y)$٬ به مرحله‌ی ۴ برو٬ در غیر این صورت به مرحله‌ی ۷ برو. - $B$ را به اندازه‌ی $f(a_x)$ واحد اضافه کن. - تمام اعداد دنباله‌ی $A$ که مقدارشان برابر $a_x$ است را به $a_y$ تبدیل کن. - به مرحله‌ی ۹ برو. - $B$ را به اندازه‌ی $f(a_y)$ واحد اضافه کن. - تمام اعداد دنباله‌ی $A$ که مقدارشان برابر $a_y$ است را به $a_x$ تبدیل کن. - پایان. برای مثال اگر $n=۸$ و الگوریتم را دو بار٬ ابتدا به ازای $(x,y)=(۲,۳)$ و سپس به ازای $(x,y)=(۲,۷)$ اجرا کنیم٬ پس از اجرای الگوریتم خواهیم داشت: $A= <1,3,3,4,5,6,3,8>$. هم‌چنین مقدار $B$ بعد از این دو اجرا برابر ۲ خواهد بود. الف) فرض کنید $n=۱۶$ و می‌خواهیم الگوریتم را ۱۵ بار اجرا کنیم. مقدار $x$ و $y$ را برای هر اجرا طوری تعیین کنید که پس از پایان کار٬ مقدار $B$ برابر ۳۲ باشد. ب) فرض کنید $n=2^k$ و می‌خواهیم الگوریتم را $n-1$ بار اجرا کنیم ($1 \le k$). ثابت کنید نمی‌توان مقادیر $x$ و $y$ را در این دفعات اجرا طوری تعیین کرد که پس از پایان کار مقدار $B$ بیش‌تر از $k \times 2^k$ شود. * [[سوال چهار|سوال قبل]]