الگوریتم امروز

وبلاگ تخصصی الگوریتم

الگوریتم امروز

وبلاگ تخصصی الگوریتم

وبلاگ علمی و مخصوص مباحث الگوریتمی است.
نظر خصوصی نگذارید چون جواب نمی‌دهم نظر عمومی بگذارید بدون نام هم که باشد همانجا جواب می‌دهم.

بایگانی

درخت steiner

سه شنبه, ۸ بهمن ۱۳۹۲، ۰۶:۵۲ ب.ظ

تعریف مساله ی درخت steiner: یک گراف وزن دار و زیرمجموعه ای از راسهای آن T داده شده است. درخت با کمترین هزینه را پیدا کنید که همه ی راسهای T را به هم وصل می کند. ("راسهای کمکی" راسهایی هستند که در گراف هستند اما در T نیستند.)

مساله: یک گراف وزن دار و زیر مجموعه ای از راسهای آن داده شده R، می خواهیم حداقل هزینه ی اتصال زیرگراف پوشای R را به دست بیاوریم. راسهای R را پایانی و بقیه راسهای گراف را استینر می نامیم.

نکته 1: زیرگراف پوشای R یک درخت است. (اگر نباشد می توانیم از آن یال حذف کنیم و هزینه کم شود اما همبندی حفظ می شود.)

نکته 2: می توانیم از راسهای غیرپایانی (استینر) برای به دست آوردن درخت استینر استفاده کنیم.

ادعا 1: بدون از دست رفتن عمومیت می توانیم فرض کنیم گراف اولیه ما (G) گراف کامل است.

Gc: تکمیل فاصله ای گراف G: هزینه ی یال u به v را به ازای هر زوج راس گراف طول کوتاهترین مسیر بین آنها در G قرار می دهیم. هزینه ی یالهای Gc یک فاصله است. (4 خاصیت فاصله را دارد.)

لم 1: اگر T درخت پوشای R در Gc باشد، می تواینم زیردرختی در G پیدا کنیم T' که R را بپوشاند و هزینه ی آن کمتر از هزینه ی T در Gc باشد.

هر یال T' یک مسیر در G است پس اجتماع یالهای این مسیرها یک گراف می شود که هزینه ی آن همان هزینه ی T' است. پس روی آن می توانیم یک درخت مثل T بسازیم و هزینه ی آن کمتر خواهد بود.

برای حل از به دست آوردن کران پایین شروع می کنیم. ایده ی دور فروشنده ی دوره گرد را برای به دست آوردن کران پایین برای درخت استینر بهینه استفاده می کنیم.

لم: فرش کنید Gc(R) زیرگراف القایی توسط R از Gc باشد. هزینه ی MST روی Gc(R) حداکثر به اندازه ی هزینه ی دور فروشنده ی دوره گرد بهینه روی Gc(R) است.

(اثبات: به پست فروشنده دوره گرد مراجعه کنید!)

لم: هزینه ی دور فروشنده ی دوره گرد (TSP) بهینه روی Gc(R) حداکثر دو برابر OPT (درخت استینر متناظر R روی گراف Gc(R) ) است.

اثبات: 

(ادامه دارد..! در ضمن اسم درست این درخت اشتاینر بود نه استینر! )

موافقین ۰ مخالفین ۰ ۹۲/۱۱/۰۸
سپیده آقاملائی

نظرات  (۱)

با سلام ممنون از مطالب مفیدتون،کد حل مسئله درخت اشتاینر در نرم افزار متلب رو چطور باید تهیه کنم؟
پاسخ:
خودتان بنویسید.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی