نمایشگر پیکسلی زاریچ

پدر زاریچ برای کادوی روز تولد زاریچ یک نمایشگر پیکسلی $n \times m$ خریده که دارای $n$ سطر و $m$ ستون است که سطر‌ها از بالا به پایین با اعداد $۱$ تا $n$ و ستون‌ها از چپ به راست با اعداد $۱$ تا $m$ شماره‌گذاری شده‌اند. کنار هر سطر و هر ستون عددی نوشته شده است. عدد نوشته شده کنار سطر $i$ام $r_i$ و عدد نوشته شده در کنار ستون $i$ام $c_i$ است. نمایش دودویی (باینری) عدد نوشته شده در کنار هر سطر یا ستون متناظر با پیکسل‌های آن سطر یا ستون است، به طوری که اگر پیکسل سطر $i$ام و ستون $j$ام روشن باشد بیت $j$ام نمایش دودویی عدد $r_i$ و بیت $i$ام نمایش دودویی عدد $c_j$ برابر یک است.
یکی از قابلیت‌های این نمایشگر این است که می‌توان دو تا سطر یا دو تا ستون از آن را جابه‌جا کرد. پس از هر جابه‌جایی مقادیر $c_i$ و $r_i$ها نیز بروزرسانی می‌شوند.

پیکسل‌های خاکستری روشن هستند و با جابه‌جایی دو ستون مقادیر کنار سطر‌ها و ستون‌ها تغییر می‌کنند

زاریچ که لپتاپ می‌خواست از این کادو خوشش نیامد و به پدرش گفت که برایش لپتاپ بخرد. پدرش هم برای اینکه او را به سراغ نخود سیاه بفرستد تعدادی از خانه‌های نمایشگر را روشن کرد و از او خواست بدون خاموش و روشن کردن پیکسل ها و صرفا با عملیات جابه‌جایی سطر یا ستون، کاری کند که هم $c_i$ها و هم $r_i$ها نانزولی شوند. زاریچ بسیار باهوش است و با جابه‌جایی سطرها و ستون‌ها کاری کرد تا شرط بالا برقرار شود. اما این سؤال برایش پیش آمده که اگر پدرش در ابتدا به هر نحوی پیکسل‌ها را روشن یا خاموش می‌کرد آیا باز هم می‌توانست به چنین نتیجه‌ای برسد؟ شما به عنوان دوست زاریچ ثابت کنید مستقل از وضعیت اولیه پیکسل‌ها با دنباله‌ای از جابه‌جایی دو سطر یا دو ستون می‌توان کاری کرد که $c_i$ها و $r_i$ها نانزولی شوند.

راهنمایی

الگوریتم طبیعی را امتحان می‌کنیم. هرجا دو سطر پشت‌سرهم برعکس‌اند، جابه‌جایشان می‌کنیم. برای ستون‌ها هم همین کار را انجام می‌دهیم.

راهنمایی

تنها مشکلی که در ایده‌ی بالا وجود دارد، مشخص نبودن پایان‌پذیری الگوریتم است.

راهنمایی

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

راهنمایی

به $c_1$ ضریب ۱، به $c_2$ ضریب ۲، به $c_3$ ضریب ۴، به $c_4$ ضریب ۸ و … نسبت می‌دهیم.

راهنمایی

به طور مشابه به $r_1, r_2, r_3, \dots, r_n$ به ترتیب ضریب‌های $1, 2, 4, \dots, 2^n$ نسبت می‌دهیم.

راهنمایی

قرار دهید $$S = c_1 + 2c_2 + 4c_3 + 8c_4 + \dots + 2^mc_m + r_1 + 2r_2 + 4r_3 + 8r_4 + \dots + 2^nr_n$$ ثابت کنید با هر عملیات الگوریتم، $S$ افزایش می‌یابد.

راهنمایی

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

راهنمایی

تنها جایی که الگوریتم پایان می‌پذیرد، مرتب بودن سطر‌ها و ستون‌ها به نحو خواسته شده در مسئله است.