ورود ثبت‌نام راهنما درباره‌ی کاهو
پرسش‌ها برچسب‌ها کاربر‌ها سوال بپرسید!

آمار پرسش:

  • پرسیده شده: 2014-06-13 03:25:28 -0500
  • مشاهده شده: 1,031 بار
  • بروز شده: 2014-06-15 06:06:03 -0500

پرسش‌های مشابه:

یافتن کوتاه ترین دور در گراف ساده

آیا گراف قویا همبند است؟

پیدا کردن مولفه های قویا همبند گراف جهت دار

کد مساله هشت وزیر با استفاده از الگوریتم ژنتیک

مرجع فارسی برای الگوریتم های هندسی و 2sat

تعداد زیردنباله های نا حسابی

گذاشتن n وزیر در صفحه ی شطرنج بطوری که همدیگر را تهدید نکنند

جزوه ی برنامه نویسی قسمت (گراف)

کسی جزوه یا سوال خوب برای segment tree داره؟

محاسبه‌ی دفعات چرخیدن n سرباز در یک ردیف

نکاتی در مورد نوشتن پاسخ:

در این قسمت می‌تونی به یک پرسش پاسخ بدی. اگه می‌خوای در مورد پرسش بحث و اظهار نظر کنی از قسمت «ثبت نظر» استفاده کن.
پاسخت رو دقیق و کامل بنویس، از عکس استفاده کن و اگه لازمه به منابع (کتاب یا سایت) ارجاع بده.
اگه پرسش یا پاسخ‌ها مفید هستند حتما بهشون رای بده تا پرسش‌ها و پاسخ‌های خوب مشخص بشن.

استفاده از ویرایشگر:

توی قسمت پیش‌نمایش می‌تونی ببینی متنی که نوشتی چجوری روی سایت دیده میشه.
خیلی مهم: برای اینکه به خط بعد بری باید دوتا Enter بزنی.
می‌تونی از تگ‌های معمولی و ساده‌ی html هم استفاده کنی.
با دکمه‌هایی که بالای ویرایش‌گر قرار دارند کلی کار می‌شه کرد. از عکس‌گذاشتن بگیر تا لیست شماره‌دار. حتما امتحان‌شون کن.

علائم ریاضی:

برای نوشتن علائم ریاضی می‌تونی از Mathjax استفاده کنی. راهنمای Mathjax رو از سایت math.stackexchange بخون.
برای نوشتن عبارت ریاضی وسط جمله، اون عبارت رو بین دوتا $ قرار بده.
برای نوشتن عبارت ریاضی تو یه خط جدید اون رو بین دوتا $$ قرار بده.

کد برای بررسی یک ریختی 2 گراف

2

این سولل الان برام پیش اومد اگه کسی بلده جواب بده ممنون می شم:

آیا می شه الگوریتمی اراءه داد که 2 گراف رو از طریق ماتریس مجاورت دریافت کنه و بگه هم ریختن یا نه؟ (البته به جز این که یکی از ماتریس ها رو نگه داره و به ماتریس دوم جایگشت بده)

گراف الگوریتم برنامه-نویسی
2014-06-13 03:25:28 -0500
عقب مونده 189 ● 4 ● 8 ● 17
پاک‌کردن   ویرایش سوال
نظرات

سلام میدونستید انجمن علمی نخبگان دانشگاه صنعتی شریف مسابقه تخصصی مهارت سنجی برنامه نویسی و داده کاوی گذاشته است آدرس سایتش www.fanavard.com

2015-08-06 09:24:32 -0500 امیر شکری

سلام میگم یک سر به سایت www.fanavard.ir بزنید. مسابقات برنامه نویسی شون شروع شده. گواهی رسمی از طرف دانشگاه شریف می ده. 50 تا سکه هم جایزشه

2016-10-27 08:27:13 -0500 امیر شکری

3 پاسخ

5

این مساله از معدود مسائل الگوریتمی است که هم براش الگوریتم چندجمله‌ای پیدا نشده و هم اینکه ثابت نشده NP-Complete هست (یعنی با استفاده از این مساله نمی‌شه مسائل NP رو حل کرد).

برای اطلاعات بیشتر این صفحه رو ببینید:

مساله‌ی یک‌ریختی گراف‌ها

2014-06-14 07:04:44 -0500
چشمه 191 ● 6
پاک‌کردن   ویرایش پاسخ
نظرات

ممنون از توضیحتون

2014-06-14 10:26:49 -0500 عقب مونده
2

کدش رو میتونین با پس گرد (Backtrack) بزنین. کافیه تناظرهای یک به یک (جایگشتها) از راسهای گراف اول به گراف دوم رو یکی یکی بررسی کنید. اما برای کوچک کردن فضای جستجو (Branch & Bound) میتونید ابتدا ببینید هر راس گراف اول با چه راسهایی از گراف دوم درجه یکسان داره، در این صورت هر راس از گراف اول فقط به راسهایی از گراف دوم متناظر میشه که هم درجه باشند.

علاوه بر درجه میشه از پارامترهای دیگری هم استفاده کرد. مثلا کمترین فاصله بین هر زوج راس از هر دو گراف رو محاسبه کنین (با الگوریتم Floyd). در این صورت یک راس از گراف اول میتونه با یک راس از گراف دوم متناظر بشه اگر و تنها اگر توالی مرتب شده فواصل راس اول با سایر راسها در گراف اول برابر با توالی مرتب شده فواصل راس دوم با سایر راسها در گراف دوم باشه. راه دیگه اینه که از هر راس در هر دو گراف BFS بزنید و درجه راسهای قرار گرفته در هر لایه از BFS‌ رو محاسبه کنید، در هر لایه از BFS راسها رو بر اساس درجه مرتب کنید. نهایتا این توالی برای دو راس از دو گراف که میخوان متناظر هم بشن باید مساوی بشه.

به این ترتیب تعداد راسهایی از گراف دوم که قابل تناظر با گراف اول هستند اونقدر کوچک میشه که خیلی وقتها (به خصوص در مورد گرافهای تصادفی) انجام این عمل تناظر بسیار سریع قابل انجام هست (و همین موضوع این مساله رو مشکوک به داشتن الگوریتم چند جمله ای میکنه).

البته هنوز هم میشه الگوریتم رو بهبود داد، مثلا بعد از این که همه این جور کنترلها رو اضافه کردیم تا راسهایی از گراف دوم که قابل تناظر به هر راس از گراف اول هستند محدود بشه، تعداد راسهای قابل تناظر به هر راس از گراف اول رو بشماریم. اگر راسی از گراف اول بود که با صفر راس از گراف دوم قابل تناظر بود که این دو گراف هم ریخت نیستن. وگرنه ابتدا راسی از گراف اول رو وارد روال پس گرد کنیم که کمترین تعداد راسهای گراف دوم قابل متناظر شدن با اون هستند، و همین ترتیب کوچک به بزرگ رو در کل فرایند پس گرد اعمال کنیم (که به این روش پس گرد «محدودترین متغیر-نخست» یا Most Constrained Variable First میشه)

ضمنا وقتی در فرایند پس گرد هر راس رو متناظر با یک راس از گراف دوم میکنیم محدودیتهای جدیدی برای سایر راسها به وجود میاد: اگر $u$ از گراف اول به $v$ از گراف دوم متناظر شد، همسایه های $u$ فقط با همسایه های $v$ میتونن متناظر بشن، و غیر همسایه های $u$ فقط با غیر همسایه های $v$ که همین موضوع باعث میشه فضای جستجوی ما در طول فرایند پس گرد محدودتر هم بشه.

2014-06-15 06:06:03 -0500
کلاه قرمزی 3097 ● 21 ● 34 ● 57
پاک‌کردن   ویرایش پاسخ
0

فک کنم فقط باید این کارو کرد چون برای اثبات یک ریختی دو تا گرافم حتمن باید یه تابع یک به یک بینشون ارایه کرد

البته با چک کردن یه چیزایی میتونی بگی همریخت نیستن ( مثلن تعداد راسا و مینیمم درجه و ماکسیمم درجه و دنباله درجه ها و .... ) ولی نمیتونی بگی هم ریختن حتمن...

2014-06-13 14:22:49 -0500
گابی 101 ● 3
پاک‌کردن   ویرایش پاسخ

پاسخ شما

فقط در صورتی که پاسخی برای این پرسش دارید، آن را اینجا بنویسید و برای بحث کردن از قسمت «ثبت‌ نظر» استفاده کنید. شما می‌توانید قبل از وارد شدن به سایت پاسخ خود را بنویسید. این پاسخ ذخیره می‌شود و زمانی که شما وارد سایت شدید یا ثبت‌نام کردید منتشر می‌شود.

پیش‌نمایش:

کلیه‌ی حقوق این سایت متعلق به کمیته‌ی ملی المپیاد کامپیوتر است.