برج هانوی - نظر شما چیه

مدیران انجمن: parse, javad123javad

ارسال پست
نمایه کاربر
آیاز

عضویت : سه‌شنبه ۱۳۸۷/۱۱/۱ - ۱۰:۱۱


پست: 1038

سپاس: 20


تماس:

برج هانوی - نظر شما چیه

پست توسط آیاز »

مساله برج هانوی یکی از مسائل جذاب، قدیمی و مشهور است که به یک مساله کلاسیک در علوم رایانه تبدیل شده‌است.


تاریخچه
در محوطه معبدی در آسیای دور سه میله الماسی قرار داشت که یکی از آنها حاوی تعدادی قرص طلایی بود. کاهنان معبد در تلاش بودند تا قرص‌های طلائی را از آن میله به یکی دیگر از میله‌ها تحت شرایطی انتقال دهند، و باور داشتند که با تمام شدن انتقال قرص‌ها عمر جهان نیز به پایان خواهد رسید! میله اولیه ۶۴ قرص داشت، که بر روی هم به طور نزولی بر اساس اندازه‌شان چیده شده‌بودند. آنها اعتقاد دارند وقتی آخرین قرص را به میله سوم برسانند خود کاهنان میله ها و بطرو کلی جهان بیکباره خاکستر خوهد شد و همه چیز از بین خواهد رفت باصطلاح جهان به پایان می رسد
تصویر

نمونه‌ای از برج هانوی همانند شکل سه میله داریم. یکی از میله‌ها میله مبدا (A)، دیگری میله کمکی (B) و دیگری میله مقصد (C) است. هدف انتقال تمام دیسک‌ها از میله مبدا به میله مقصد با رعایت شرایط زیر است:
تصویر تصویر

در هر زمان فقط یک دیسک را می‌توان جابجا نمود. نباید در هیچ زمانی دیسکی بر روی دیسک با اندازه کوچکتر قرار بگیرد.


حل مساله
هدف ما ارائه الگوریتمی است که کمترین توالی حرکت‌ها را برای انتقال دیسک‌ها به ما بدهد. مثلا اگر n=۲ باشد، توالی حرکت به صورت زیر است:


حل مساله برج هانویدیسک ۱ را به میله B منتقل می‌کنیم
دیسک ۲ را به میله C منتقل می‌کنیم
دیسک ۱ را به میله C منتقل می‌کنیم

حل مساله برج هانوی
توجه داشته باشید که بر اساس قانون اول نمی‌توان به غیر از بالاترین دیسک هر میله، به دیسک دیگری از آن دسترسی پیدا کرد.

حال سوال این است که آیا این مساله به کمک تکنیک بازگشت قابل حل است؟ اصولا چه مسائلی را می‌توان بازگشتی حل نمود؟

برای اینکه مساله‌ای بتواند با روش بازگشتی حل شود باید یک ویژگی اساسی داشته باشد. مساله اصلی (مساله‌ای که به ما داده می‌شود) قابل خرد شدن به زیر مساله‌هایی از همان نوع مساله اصلی باشد، به شرطی که اندازه زیر مساله‌های ایجاد شده کمتر باشد. آنگاه می‌توان امیدوار بود که آن را به طور بازگشتی حل کرد! این ویژگی در مورد مساله برج هانوی صدق می‌کند. ایده اصلی این است که توجهمان را به جای حرکت بالاترین دیسک، روی پایین ترین دیسک میله متمرکز کرده، و مراحل زیر را طی می‌کنیم:

n - ۱ دیسک بالایی را با شرایط ذکر شده و به کمک میله C به میله B منتقل می‌کنیم. بزرگترین دیسک را از میله مبدا به میله مقصد حرکت می‌دهیم. n - ۱ دیسک را که هم اکنون در میله B هستند با شرایط داده شده به میله مقصد انتقال می‌دهیم. می‌بینیم که توانستیم عملیات جابجا کردن n دیسک را به دو عملیات مشابه ولی با اندازه کمتر و یک عملیات ساده تقسیم کنیم. واضح است که جابجا کردن n - ۱ قرص راحتتر از جابجا نمودن n قرص است.


ترتیب فراخوانی‌ها برای اجرا شدن دستوربرای مثال فراخوانی تابع به شکل ('hanoi(۳, ‘A’, ‘B’, ‘C مساله برج هانوی را با سه دیسک که در میله A قرار دارند و با کمک میله B به میله C منتقل خواهد شد، حل می‌کند.


درختی که ترتیب اجرای دستورها را نشان می‌دهدبرای این که به کاهنان کمک کنیم، باید دستور ('hanoi(۶۴, ‘A’, ‘B’, ‘C را اجرا کنیم. ولی چه زمانی طول می‌کشد تا این دستور اجرا شود؟ در حالت کلی می‌خواهیم بدانیم اگر تعداد دیسک‌ها n باشد، کمترین تعداد حرکت برای جابجا نمودن دیسک‌ها چقدر است؟

در ابتدا باید بررسی کنیم که آیا تابع بازگشتی فوق کمترین تعداد حرکت را چاپ می‌کند؟ جواب مثبت است. زیرا واضح است که برای جابجا کردن بزرگترین دیسک از پایین میله A، بقیه دیسک‌ها باید در میله B باشند. فقط در این صورت این دیسک جابجا می‌شود. در فراخونی‌های بعدی دیسک دوم از نظر بزرگی جابجا می‌شود و الی آخر. پس در این فراخوانی‌ها جابجایی بیهوده‌ای صورت نمی‌گیرد. همچنین توالی حرکت‌ها برای هر n منحصر بفرد است. یعنی برای یک n دو توالی متمایز از جابجایی‌ها وجود ندارد که تعداد جابجایی آن‌ها کمتر یا مساوی این حالت باشد.

اگر فرض کنیم کاهنان با سرعت عمل زیاد توانسته باشند به صورت شبانه روزی و نسل به نسل در هر دو ثانیه یک قرص را جابجا کنند، برای انتقال تمامی ۶۴ قرص به میله مقصد، در حدود ۱٫۱۶۹ ترلیون (میلیون میلیون) سال زمان لازم دارند!

در واقع ما از روش Divide and Conquer یا حل و تقسیم برای ارائه راه حل استفاده نموده‌ایم. اما چون در تقسیم مساله اصلی به دو زیر مساله، اندازه ورودی‌های زیر مساله‌ها نزدیک به اندازه ورودی اصلی هستند، کارایی الگوریتم مطلوب نیست.
تانري اولوب
باريش اولسا...
قاييداجاقدير
_____________________
برگردان فارسي:

خدا مرده اما
اگر صلح باشد...
باز خواهد گشت
«آلما يولو»

نمایه کاربر
pooria.m

محل اقامت: مشهد

عضویت : یک‌شنبه ۱۳۸۷/۲/۱۵ - ۱۶:۳۵


پست: 59



Re: برج هانوی - نظر شما چیه

پست توسط pooria.m »

جالبه smile048 smile072 smile021 smile020 smile022 smile019

نمایه کاربر
آیاز

عضویت : سه‌شنبه ۱۳۸۷/۱۱/۱ - ۱۰:۱۱


پست: 1038

سپاس: 20


تماس:

Re: برج هانوی - نظر شما چیه

پست توسط آیاز »

فقط همين؟
تانري اولوب
باريش اولسا...
قاييداجاقدير
_____________________
برگردان فارسي:

خدا مرده اما
اگر صلح باشد...
باز خواهد گشت
«آلما يولو»

aht_Astronomy

عضویت : سه‌شنبه ۱۳۸۸/۶/۳ - ۱۶:۰۱


پست: 379

سپاس: 13

Re: برج هانوی - نظر شما چیه

پست توسط aht_Astronomy »

خیلی ممنون که این مقاله رو گذاشتی
من باورش دارم ولی اینکه وقتی تموم بشه و اونم اشتباه نکنیم دنیا تموم میشه بنظر من بدلیل بزرگی مقدار زمان انجام دادنش رو نشون میده و چیزی جز غلو نیست
این عدد همون در داستان خواسته ی مخترع شطرنج از پادشاه هم اومده. smile072

ارسال پست