درخت (نظریه گراف): تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
جز ربات: جایگزینی پیوند جادویی شابک با الگو شابک
FreshmanBot (بحث | مشارکت‌ها)
جز اصلاح فاصله مجازی + اصلاح نویسه با ویرایشگر خودکار فارسی
خط ۱:
[[پرونده:Tree graph.svg|left]]
در [[نظریه گراف|نظریهٔ گراف]]، '''درخت''' گرافی همبند و بدون دور است. درخت‌ها به طوربه‌طور گسترده در [[علوم رایانه]] و [[ساختار داده‌ها]] کاربرد دارند. مثل [[درخت‌های جستجوی دودویی]]، [[پشته‌ها]]،<ref>Heaps</ref> درخت‌های هافمن<ref>Huffman trees</ref> برای [[فشرده‌سازی اطلاعات]] و غیره.
 
== تعاریف ==
خط ۲۴:
درخت چندگانه<ref>Polytree</ref> درختی است که حداکثر یک مسیر بدون جهت بین هر دو رأسش دارد. یعنی درخت چندگانه یک [[گراف جهت دار]] بدون مدار است که مدار بدون جهت نیز ندارد.
 
درخت برچسب دار<ref>Labeled tree</ref> درختی است که در آن هر رأس برچسب یکتایی دارد. رئوس درختی با n رأس به طوربه‌طور نمونه با اعداد ۱و۲و۳و… وn برچسب گذاری می‌شوند. درخت بازگشتی<ref>Recursive tree</ref> یک درخت ریشه دار با برچسب است که برچسب رئوس باتوجه به مرتبهٔ درخت تعیین می‌شود. (اگر <math>u<v</math> و u,v دو رأس درخت باشند برچسب u کوچکتر از برچسب v است)
 
درخت ساده نشدنی<ref>irreducible tree</ref> درختی است که رأسی با درجهٔ ۲ ندارد.
خط ۴۱:
<span style="font-size: large;">'''خیابان‌ها و چهار راه‌ها :'''</span>
 
تغییر نام [[خیابان‌ها]] و چهارراه‌ها ی عمومی یکی از سرگرمی‌های مطلوب انجمن‌های شهری در سراسر جهان است. فرض کنید مسئولین شهری بخواهند نسبت به نامگذاری خیابان‌های خود بسیار اصولی باشند. فرض کنید بخواهند هر خیابان به درازای یک بلوک و هم نام با یکی از چهارراه‌های دو انتهای خود باشد؛ پس به عنوان مثال، یکی از دو انتهای خیابان واشینگتن بایستی در چهار راه واشینگتن باشد. طبیعتاً می‌خواهیم مسئله خود را در زبان گراف‌ها در حالتی کلی عنوان کنیم. گراف همبندی داده شده استشده‌است. تحت چه شرط‌هایی می‌توان به طوربه‌طور منحصربه‌فردی هر یال را با یکی از دو رأس انتهایی آن متناظر کرد؟
در ابتدا خاطر نشان می‌کنیم که اگر گرافمان درخت باشد، این امر ممکن است. برای این منظور به طریق زیر عمل می‌کنیم:
پس از اینکه ریشه ای مانند a0 را در درختی مانند درخت شکل زیر
[[پرونده:Treef1.JPG]]
 
به دلخواه انتخاب کردیم، یال a1 a0 را متناظر با رأس a1 می‌گیریم، به همین ترتیب a0 a2 را متناظر با a2 و و a0 a3 را متناظر با a3، سپس a1 a11 را متناظر با a11 قرار می‌دهیم، و الی آخر؛ به طوربه‌طور کلی، هر یال را به انتهایی از آن که از a0 دور تر است، متناظر می‌کنیم.
اکنون فرض کنید که گراف دارای مداری مثلاً c، باشد (شکل ۲) هر یال c باید متناظر با یکی از دو رأس انتهایی خود باشد، یعنی متناظر با رأسی از c. اگر به عنوان مثال یال a1 a2 متناظر با a2 باشد آنگاه یال a2 a3 بایستی متناظ با a3 باشد، و الی آخر؛ بنابراین هیچ یال نا متعلق به c نمی‌تواند با رأسی از c متناظر باشد. در نتیجه یالی مانند a1 b1 که در a1 مدار c را قطع می‌کند، بایستی با b1 متناظر باشد و یالی مانند b1 b2 با b2 و الی آخر.
 
خط ۵۲:
 
چنان‌که ملاحظه می‌کنیم، قسمتی از گراف که به این ترتیب با عزیمت از a1 و حرکت در طول یال‌هایی مانند a1 b1 که با c در a1 مشترکند، پیموده می‌شود، بایستی درختی مانند T1 می‌توان هر یال را با انتهایی از آن که از a1 متناظرند، بنابراین از این تجزیه و تحلیل نتیجهٔ زیر به دست می‌آید:
هر یال یک [[گراف همبند]] را می‌توان به طوربه‌طور منحصربه‌فردی با یکی از دو رأس آن یال متناظر کرد اگر و تنها اگر گراف نامبرده یک درخت باشد یا متشکل از مدار منحصربه‌فردی همراه با درخت‌هایی منشعب از رأس‌های آن مدار باشد (به شکل ۳ نگاه کنید)
 
[[پرونده:Tree3.JPG]]
خط ۵۸:
بنا به قضیه (هر درخت با n رأس دارای n-1 یال است) تعداد رأس‌های یک درخت یکی بیش از تعداد یال‌های آن است . . تعداد یال‌های یک مدار یا مداری که درخت‌هایی از رأس‌های آن منشعب شده‌اند با تعداد رأس‌های آن مساوی است؛ بنابراین، در این موارد برقراری تناظری میان یال‌ها و رأس‌ها امکان دارد.
 
در ختی مانند درخت شکل (۱) یا گرافی مانند گراف شکل (۳)، فقط می‌توانند نقشهٔ خیابان‌های شهرهای خیلی کوچک باشند که فاقر بلوک‌های شهری واقعی اند، یا فقط یک بلوک مرکزی دارند که خیابان‌هایی از حومه به آنهاآن‌ها کشیده شده استشده‌است.
پس از اندکی تأمل دربارهٔ این موضوع، عضوهای انجمن شهر سرافرازانه متوجه این واقعیت می‌شوند که شهر آن‌ها بزرکتر از آن است که بتوان این روش را در آن به کار گرفت؛ بنابراین قرار می‌گذارند که به جای آن از قاعدهٔ زیر استفاده کنند: خیابان‌ها و چهارراه‌ها طوری نامگذاری شوند که در هر چهار راهی یکی از خیابان‌ها به نام همان چهارراه باشد؛ یعنی، به عنوان مثال، بایستی یکی از خیابان‌ها به نام همان چهار راه باشد؛ یعنی به عنوان مثال، بایستی یکی از خیابان‌های منتهی به چهارراه واشینگتن به نام واشینگتن باشد.
به زبان نظریهٔ گراف‌ها، این کار به معنی متناظر کردن هر رأس با فقط یکی از یال‌های متصل به آن است. این کار در مواردی عملی نیست؛ به عنوان مثال همان‌طور که گفته شد، تعداد رأس‌های هر درخت از تعداد یال‌های آن یکی بیشتر است. گراف شکل (۱) را در نظر بگیرید. در این گراف می‌توان هر رأس را با یالی که از آن به سمت رأس a0 خارج می‌شود متناظر کرد. به این ترتیب، به جز ریشه، هر رأس با یالی متناظر می‌شود.
خط ۶۴:
== با توجه به حکم کلی زیر درخت‌ها از این نظر مستثنی هستند. ==
رأس‌های گراف همبند غیر درخت را می‌توان با یال‌های متصل به آن‌ها متناظر کرد.
اثبات:هر گرافی که n رأس را به هم متصل می‌کند دارای حداقل n-1 یال است و با حذف برخی از یال‌ها قابل تبدیل به درخت است. فرض کنید a0b0 = e0 یکی از یال‌هایی باشد که با حذف آن‌ها گراف ما به یک درخت، مثلاً T، تبدیل می‌شود. a0 را به عنوان ریشهٔ T انتخاب کنید. در T هر أس به جز a0 را می‌توان با یالی متصل به آن متناظر کرد؛ یال اضافی e0 از گراف را نیز می‌توان با a0 متناظر کرد. به این ترتیب هر رأس گراف با یالی متصل به آن متناظر شده استشده‌است.
 
با توجه به بحث پیشین، توجه به این نکته مفید است که همیشه می‌توان در گراف، ر أس‌ها را با یال‌های متصل به آن‌ها، یا یال‌ها را با رأس‌های متصل به آنهاآن‌ها متناظر کرد. می‌توانیم هر دو کار را انجام دهیم، اگر و تنها اگر تعداد رأس‌ها و یال‌های گراف مساوی باشند. چنین گرافی نمی‌تواند درخت باشد و بنابراین، نتیجه می‌گیریم که بایستی مانند گراف شکل (۳) فقط دارای یک مدار c باشد. در واقع تناظری وجود دراد که دو سویی عمل می‌کند، یال‌ها را با رأس‌ها متناظر می‌کند، و رأس‌ها را با یال‌ها. کافی است یال‌های c را با رأس‌های c، و هر رأس غیر متعلق به c را با نزدیکترین یال متصل به آن نسبت به c متناظر کرد.
 
== منابع ==