درخت (نظریه گراف)

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

برای دیگر معانی درخت به درخت (ابهام‌زدایی) نگاه کنید.

Tree graph.svg

در نظریهٔ گراف، درخت گرافی همبند و بدون دور است. درخت‌ها به طور گسترده در علوم رایانه و ساختار داده‌ها کاربرد دارند. مثل درخت‌های جستجوی دودویی، پشته‌ها[۱]، درخت‌های هافمن[۲] برای فشرده‌سازی اطلاعات و غیره.

تعاریف[ویرایش]

نمونه‌ای از یک درخت
در اینجا بدلیل وجود یک دور گراف درخت نمی‌باشد.

درخت یک گراف ساده بدون جهت است که در یکی ار شروط معادل زیر صدق کند:

  • G متصل است و دور ندارد.
  • G هیج مداری ندارد و اگر یک یال به آن اضافه شود یک مدار ساده در آن بوجود می‌آید.
  • G متصل است و اگر یک یال آن خذف شود دیگر متصل نیست.
  • G متصل است و گراف کامل 3 رأسی K_3 جزِئی از آن نیست.
  • هر دو رأس در G با یک مسیر سادهٔ یکتا به هم وصل می‌شوند.

اگر G تعداد متناهی رأس داشته باشد احکام بالا با شروط زیر نیز معادل اند:

  • G متصل است و n-1 یال دارد.
  • G مدار ساده ندارد و n-1 یال دارد.

گراف سادهٔ بدون جهت G را جنگل[۳] گوئیم اگر مسیر ساده نداشته باشد.

درخت جهت‌دار[۴] گراف جهت‌داری است که گراف زمینه آن یک درخت باشد.

یک درخت را ریشه‌دار[۵] گوییم اگر راسی داشته باشد که به ازای هر راس دیگر درخت، مسیری از آن به راس مذکور وجود داشته باشد. مرتبهٔ درخت[۶] یک مرتب‌سازی جزئی[۷] روی رئوس درخت است که u\le v اگر و فقط اگر یک مسیر یکتا از ریشه به v از u بگذرد. یک درخت که زیر گراف، گراف G است را درخت نرمال[۸] گوییم اگر انتهای هر یال G با این رتبه بندی قابل مقایسه باشد ( Diestel 2005 ,p.15 ).

درخت ریشه‌دار یک ساختار داده کلیدی در علوم کامپیوتر است. در ضمن با توجه به این که فرض می‌شود درخت‌ها ریشه دارند یک درخت بدون ریشه را درخت آزاد[۹] گوییم.

درخت چندگانه[۱۰] درختی است که حداکثر یک مسیر بدون جهت بین هر دو رأسش دارد. یعنی درخت چندگانه یک گراف جهت دار بدون مدار است که مدار بدون جهت نیز ندارد.

درخت برچسب دار[۱۱] درختی است که در آن هر رأس برچسب یکتایی دارد. رئوس درختی با n رأس به طور نمونه با اعداد 1و2و3و...وn برچسب گذاری می‌شوند. درخت بازگشتی[۱۲] یک درخت ریشه دار با برچسب است که برچسب رئوس باتوجه به مرتبهٔ درخت تعیین می‌شود.( اگر u<v و u,v دو رأس درخت باشند برچسب u کوچکتر از برچسب v است. )

درخت ساده نشدنی[۱۳] درختی است که رأسی با درجهٔ 2 ندارد.

درخت مرتب[۱۴] درختی است که برای فرزندان هر رأس مرتبه‌ای تعیین شده باشد.

درخت n-تایی درختی است که هر رأس که برگ نیست حداکثر n فرزند دارد.

درخت نمایش داده شده در شکل بالا 6 رأس، 1 -6 = 5 یال دارد. مسیر سادهٔ یکتا که رأس 2 را به 6 وصل می‌کند 6-5-4-2 است.

احکام[ویرایش]

  • هر درخت یک گراف دو بخشی[۱۵] و یک گراف میانه[۱۶] است. هر درخت با تعداد شمارا رأس یک گراف مسطح است.
  • هر درخت با n\le 2 حداقل 2 برگ ( یا رأس با درجه 1)دارد. حداقل تعداد برگ مربوط به گراف مسیر[۱۷] و حداکثر تعداد برگ (n-1) مربوط به گراف ستاره‌ای است.

کاربرد[ویرایش]

خیابان ها و چهار راه ها :

تغییر نام خیابان ها و چهارراه ها ی عمومی یکی از سرگرمی های مطلوب انجمن های شهری در سراسر جهان است . فرض کنید مسئولین شهری بخواهند نسبت به نامگذاری خیابان های خود بسیار اصولی باشند . فرض کنید بخواهند هر خیابان به درازای یک بلوک و هم نام با یکی از چهارراه های دو انتهای خود باشد؛ پس به عنوان مثال، یکی از دو انتهای خیابان واشنگتن بایستی در چهار راه واشنگتن باشد. طبیعتاً می خواهیم مسئله خود را در زبان گراف ها در حالتی کلی عنوان کنیم . گراف همبندی داده شده است . تحت چه شرط هایی می توان به طور منحصربه‌فردی هر یال را با یکی از دو رأس انتهایی آن متناظر کرد ؟ در ابتدا خاطر نشان می کنیم که اگر گرافمان درخت باشد، این امر ممکن است. برای این منظور به طریق زیر عمل می کنیم: پس از اینکه ریشه ای مانند a0 را در درختی مانند درخت شکل زیر Treef1.JPG

به دلخواه انتخاب کردیم، یال a1 a0 را متناظر با رأس a1 می گیریم، به همین ترتیب a0 a2 را متناظر با a2 و و a0 a3 را متناظر با a3، سپس a1 a11 را متناظر با a11 قرار می دهیم، و الی آخر؛ به طور کلی، هر یال را به انتهایی از آن که از a0 دور تر است، متناظر می کنیم. اکنون فرض کنید که گراف دارای مداری مثلاً c، باشد ( شکل 2 ) هر یال c باید متناظر با یکی از دو رأس انتهایی خود باشد، یعنی متناظر با رأسی از c. اگر به عنوان مثال یال a1 a2 متناظر با a2 باشد آنگاه یال a2 a3 بایستی متناظ با a3 باشد، و الی آخر . بنابراین هیچ یال نا متعلق به c نمی‌تواند با رأسی از c متناظر باشد. در نتیجه یالی مانند a1 b1 که در a1 مدار c را قطع می کند، بایستی با b1 متناظر باشد و یالی مانند b1 b2 با b2 و الی آخر .

Tree2.JPG

چنانکه ملاحظه می کنیم، قسمتی از گراف که به این ترتیب با عزیمت از a1 و حرکت در طول یال هایی مانند a1 b1 که با c در a1 مشترکند، پیموده می شود، بایستی درختی مانند T1 می توان هر یال را با انتهایی از آن که از a1 متناظرند، بنابراین از این تجزیه و تحلیل نتیجه ی زیر به دست می آید: هر یال یک گراف همبند را می توان به طور منحصربه‌فردی با یکی از دو رأس آن یال متناظر کرد اگر و تنها اگر گراف نامبرده یک درخت باشد یا متشکل از مدار منحصربه‌فردی همراه با درخت هایی منشعب از رأس های آن مدار باشد ( به شکل 3 نگاه کنید)

Tree3.JPG

بنا به قضیه (هر درخت با n رأس دارای n-1 یال است ) تعداد رأس های یک درخت یکی بیش از تعداد یال های آن است . .تعداد یال های یک مدار یا مداری که درخت هایی از رأس های آن منشعب شده اند با تعداد رأس های آن مساوی است. بنابراین، در این موارد برقراری تناظری میان یال ها و رأس ها امکان دارد.

در ختی مانند درخت شکل (1) یا گرافی مانند گراف شکل (3)، فقط می توانند نقشه ی خیابان های شهر های خیلی کوچک باشند که فاقر بلوک های شهری واقعی اند، یا فقط یک بلوک مرکزی دارند که خیابان هایی از حومه به آنها کشیده شده است. پس از اندکی تأمل درباره ی این موضوع، عضوهای انجمن شهر سرافرازانه متوجه این واقعیت می شوند که شهر آن ها بزرکتر از آن است که بتوان این روش را در آن به کار گرفت. بنابراین قرار می گذارند که به جای آن از قاعده ی زیر استفاده کنند : خیابان ها و چهارراه ها طوری نامگذاری شوند که در هر چهار راهی یکی از خیابان ها به نام همان چهارراه باشد؛ یعنی، به عنوان مثال، بایستی یکی از خیابان ها به نام همان چهار راه باشد؛ یعنی به عنوان مثال، بایستی یکی از خیابان های منتهی به چهارراه واشنگتن به نام واشنگتن باشد. به زبان نظریه ی گراف ها، این کار به معنی متناظر کردن هر رأس با فقط یکی از یال های متصل به آن است .این کار در مواردی عملی نیست؛ به عنوان مثال همانطور که گفته شد، تعداد رأس های هر درخت از تعداد یال های آن یکی بیشتر است . گراف شکل (1) را در نظر بگیرید . در این گراف می توان هر رأس را با یالی که از آن به سمت رأس a0 خارج می شود متناظر کرد . به این ترتیب، به جز ریشه، هر رأس با یالی متناظر می شود.

با توجه به حکم کلی زیر درخت ها از این نظر مستثنی هستند.[ویرایش]

رأس های گراف همبند غیر درخت را می توان با یال های متصل به آن ها متناظر کرد. اثبات:هر گرافی که n رأس را به هم متصل می کند دارای حداقل n-1 یال است و با حذف برخی از یال ها قابل تبدیل به درخت است . فرض کنید a0b0 = e0 یکی از یال هایی باشد که با حذف آن ها گراف ما به یک درخت، مثلاً T، تبدیل می شود . a0 را به عنوان ریشه ی T انتخاب کنید. در T هر أس به جز a0 را می توان با یالی متصل به آن متناظر کرد؛ یال اضافی e0 از گراف را نیز می توان با a0 متناظر کرد. به این ترتیب هر رأس گراف با یالی متصل به آن متناظر شده است.

با توجه به بحث پیشین، توجه به این نکته مفید است که همیشه می توان در گراف، ر أس ها را با یال های متصل به آن ها، یا یال ها را با رأس های متصل به آنها متناظر کرد. می توانیم هر دو کار را انجام دهیم، اگر و تنها اگر تعداد رأس ها و یال های گراف مساوی باشند . چنین گرافی نمی‌تواند درخت باشد و بنابراین، نتیجه می گیریم که بایستی مانند گراف شکل (3) فقط دارای یک مدار c باشد . در واقع تناظری وجود دراد که دو سویی عمل می کند، یال ها را با رأس ها متناظر می کند، و رأس ها را با یال ها .کافی است یال های c را با رأس های c، و هر رأس غیر متعلق به c را با نزدیکترین یال متصل به آن نسبت به c متناظر کرد .

منابع[ویرایش]

  • .Diestel, Reinhard (2005), Graph Theory (3rd ed.), Berlin, New York: Springer-Verlag, ISBN 978-3-540-26183-4
  • Otter, Richard (1948), “The Number of Trees”, Annals of Mathematics, Second Series 49 (3): 583–599
  • .گراف وکاربردهای آن، نویسنده:ایستین ایر

پانویس‌ها[ویرایش]

  1. Heaps
  2. Huffman trees
  3. forest
  4. Directed tree
  5. Rooted tree
  6. tree-order
  7. partial ordering
  8. Normal tree
  9. Free tree
  10. Polytree
  11. Labeled tree
  12. Recursive tree
  13. irreducible tree
  14. Ordered tree
  15. bipartite graph
  16. Median graph
  17. Path graph