توضیح مسایل NP

  • شروع کننده موضوع
  • #1

tiberium

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,057
امتیاز
1,052
نام مرکز سمپاد
شهید بهشتی سمنان
شهر
سمنان
سال فارغ التحصیلی
1389
مدال المپیاد
المپیاد کامپیوتر
دانشگاه
صنعتی شریف
رشته دانشگاه
مهندسی فن آوری اطلاعات
به زبان خیلی ساده یه سری مسایل هستن که نمیشه برای اونها الگوریتم چند جمله ای ارائه کرد.
مثلا حل سودوکو چیزیه که الگوریتم چند جمله ای نداره
یا مثلا اینکه آیا یک گراف دور همیلتونی داره یا نه

یه مساله معروف دیگش مساله subset sum هست
مسالش اینه که ما n تا عدد داریم. می خوایم بدونیم آیا میشه یه عده از اینا رو انتخاب کرد که جمعشون دقیقا بشه K یا نه.
این مساله همه NP هست .یعنی الگوریتم چند جمله ای براش وجود نداره و مجبوریم یه جورایی همه حالات و چک کنیم.
یعنی باید به عبارتی جمع تمام زیر مجموعه های این n تا عدد رو بدست بیاریم و با k مقایسه کنیم. یعنی حدود 2 به توان n عملیات
که مبینید یه عدد توانی(نمایی) هست.


یه دانش مندی ثابت کرده که مساله ی SAT (اگر خواستین خودتون راجع بهش بخونید) np هست.
حالا یکی از کارهایی که میشه کرد نبدیل مسایل به مسایل NP هست.
یه وقت هست بهتون میگن باید ثابت کنید که این مساله الگوریتم چند جمله ای نداره و NP هست.
برای ثابت کردن این مسایل باید سعی کنید مساله رو جوری به مسایل NP دیگه مربوط کنید طوری که بگید اگر من بتونم برای این مساله الگوریتم چند جمله ای بیارم با استفاده از همین الگوریتم میتونم اون مساله ی NP رو هم حل کنم.پس چون اون مساله NP هستش قطعا الگوریتم من نمیتونه چند جمله ای باشه. پس مساله من هم NP هست.

جالبه که بدونید همه مسایل NP به هم قابل تبدیلن...بعنی میشه با هر کدوم اون یکی رو حل کرد . و اگر یه روزی بتونن برا یکی از اینا الگوریتم چند جمله ای بیارن کل مسایل NP حل میشه. و به عبارتی درس خوندن و دانشگاه رفتن ما و این حرفا همه الکی میشه:D
یعنی الان این مساله هنوز open هست که آیا p=np?
و فکر کنم جایزه 1 میلیون دلاری داره حل این سوال!
البته حدسی که زدن نه هست

حالا جالب اینه که مثلا نوشتن paper از طرف کامپیوتر np هست.:D یعنی اگر مسایل NP حل بشن دیگه میبینید خود کامپیوتر میتونه علم تولید کنه تو زمان چمد جمله ای...و این یعنی بیکار شدن همه آدما:D.

حالا اول از همه فرض می کنیم مسایل زیر NP هستن
وجود دور همیلتونی در یک گراف.
وجود مسیر همیلتونی در یک گراف
مساله subset sum


فعلا همینا کافیه. حالا مساله اول
ثابت کنید این مساله NP هست
گراف ساده و بدون جهت G رو داریم. می خوایم بدونیم آیا دوری تو این گراف وجود داره که حداقل از نصف راس ها رد بشه.(دیگه به تکراری نبودن و ایناش هم دقت کنید که نمی خوایم از رو یه راس 2 بار رد بشیم.)
 
  • شروع کننده موضوع
  • #2

tiberium

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,057
امتیاز
1,052
نام مرکز سمپاد
شهید بهشتی سمنان
شهر
سمنان
سال فارغ التحصیلی
1389
مدال المپیاد
المپیاد کامپیوتر
دانشگاه
صنعتی شریف
رشته دانشگاه
مهندسی فن آوری اطلاعات
پاسخ : توضیح مسایل NP

من هنوز منتظرم حل بشن اینا که مسایل بعدی رو بزارم:D
 

most wanted

کاربر نیمه‌حرفه‌ای
ارسال‌ها
215
امتیاز
669
نام مرکز سمپاد
علامه حلی2
شهر
تهران
پاسخ : توضیح مسایل NP

الان میگی الگوریتم بنویسیم بد اوردر شو حساب کنیم یا ایده ترکیبیاتی چیزی بزنیم؟ :-?
 
  • شروع کننده موضوع
  • #4

tiberium

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,057
امتیاز
1,052
نام مرکز سمپاد
شهید بهشتی سمنان
شهر
سمنان
سال فارغ التحصیلی
1389
مدال المپیاد
المپیاد کامپیوتر
دانشگاه
صنعتی شریف
رشته دانشگاه
مهندسی فن آوری اطلاعات
پاسخ : توضیح مسایل NP

نه ببین مساله اینجاست که الان شما میدونید که مثلا پیدا کردن دور همیلتونی توی یه گراف یه مساله NP هست.یعنی الگوریتم چند جمله ای براش وجود نداره.
شما تو این مساله باید نشون بدین که اگر الگوریتم چند جمله ای برای این سوال ما پیدا بشه با اون الگوریتم میتونید مساله دور همیلتونی رو حل کنید تو چند جمله ای...که تناقض هست.
یعنی باید ببینید چطوری امکان داره به وسیله این مساله ای که طرح شده دور همیلتونی رو حل کنید.
 
ارسال‌ها
1,097
امتیاز
6,254
نام مرکز سمپاد
علامه حلی 1
شهر
کرمان
سال فارغ التحصیلی
1393
دانشگاه
دانشگاه شیراز
رشته دانشگاه
سخت افزار
پاسخ : توضیح مسایل NP

آرمان جان بچه ها الان مرحله یک دارن فک نکنم زیاد استقبال شه ها
 

Parham MLK

کاربر نیمه‌حرفه‌ای
ارسال‌ها
250
امتیاز
675
نام مرکز سمپاد
شهید سلطانی
شهر
کرج
پاسخ : توضیح مسایل NP

ما که مرحله یک نداریم! :-"

به نقل از آرمان حقیقی :
ثابت کنید این مساله NP هست
گراف ساده و بدون جهت G رو داریم. می خوایم بدونیم آیا دوری تو این گراف وجود داره که حداقل از نصف راس ها رد بشه.
خب!
فرض کنیم الگوریتمی پیدا شده که با اُردر چندجمله‌ای این خاصیت رو برای هر گرافی چک میکنه!
حالا میخوایم ببینیم تو گراف G، دور همیلتونی وجود داره یا نه!
گراف H=G+G ، رو در نظر میگیریم! و الگوریتم خفنمون رو روش میزنیم!

___________________________________________
_____________ | ____________ ____________ H |
| | | | | | | |
| | | | G | | | |
| G | =======> | | | | | |
| | | | | | G | |
|____________ | | |____________| |___________ | |
|__________________________________________|



اگه گف یه دور با حداقل نصف رئوس توش وجود داره، اون دور مسلما برای G، همیلتونیه!
(چون H ناهمبنده و تعداد رئوسش دوبرابر Gـه)
اگر هم که پیدا نکرد، تو G هم دور همیلتونی نداریم!
پس بدین ترتیب "یافتن دور همیلتونی" NP نیست! :D هوراااااااا!
که با فرض اولیه در تناقضه و اینا! :D

دیگه درست یا غلطش با خدا! :-" :D
---
به نقل از آرمان حقیقی :
جالبه که بدونید همه مسایل NP به هم قابل تبدیلن...
الان ینی حل سودوکو رو میشه به Subset Sum ربط داد!؟ چجوری دقیقاً؟! :-"
 
  • شروع کننده موضوع
  • #7

tiberium

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,057
امتیاز
1,052
نام مرکز سمپاد
شهید بهشتی سمنان
شهر
سمنان
سال فارغ التحصیلی
1389
مدال المپیاد
المپیاد کامپیوتر
دانشگاه
صنعتی شریف
رشته دانشگاه
مهندسی فن آوری اطلاعات
پاسخ : توضیح مسایل NP

به نقل از پرهام :
ما که مرحله یک نداریم! :-"
خب!
فرض کنیم الگوریتمی پیدا شده که با اُردر چندجمله‌ای این خاصیت رو برای هر گرافی چک میکنه!
حالا میخوایم ببینیم تو گراف G، دور همیلتونی وجود داره یا نه!
گراف H=G+G ، رو در نظر میگیریم! و الگوریتم خفنمون رو روش میزنیم!

___________________________________________
_____________ | ____________ ____________ H |
| | | | | | | |
| | | | G | | | |
| G | =======> | | | | | |
| | | | | | G | |
|____________ | | |____________| |___________ | |
|__________________________________________|



اگه گف یه دور با حداقل نصف رئوس توش وجود داره، اون دور مسلما برای G، همیلتونیه!
(چون H ناهمبنده و تعداد رئوسش دوبرابر Gـه)
اگر هم که پیدا نکرد، تو G هم دور همیلتونی نداریم!
پس بدین ترتیب "یافتن دور همیلتونی" NP نیست! :D هوراااااااا!
که با فرض اولیه در تناقضه و اینا! :D

دیگه درست یا غلطش با خدا! :-" :D
---الان ینی حل سودوکو رو میشه به Subset Sum ربط داد!؟ چجوری دقیقاً؟! :-"
سلام آفرین!. میتونیم اینجوری هم بگیم که ما فرض کردیم برا اون سوال یه راه حل داریم.به گرافمون n تا راس خالی اضافه می کنیم. الان گرافمون 2n راس داره.حالا اینو میدیم به برناممون.اگر بگه دور به طول حداقل نصف داره این حتما همون دور همیلتونی هست...


ببین لزوما همرو نمیتونی به صورت مستقیم به همدیگه ربط بدی....شاید مثلا با سودوکو بشه X رو حل کرد. با X بشه Y رو حل کرد و با Y بشه Subset sum رو حل کرد.حقیقتش روی این مساله که گفتی فکر نکردم تاحالا و الان نمی دونم.اما از الان فکر می کنیم روش.ببینیم به چیا میشه رسید!
 

most wanted

کاربر نیمه‌حرفه‌ای
ارسال‌ها
215
امتیاز
669
نام مرکز سمپاد
علامه حلی2
شهر
تهران
پاسخ : توضیح مسایل NP

یه مسئله منطقی هست
معلممون میگفت دانشمندا می گن اگه حل شه همه ان پی ها حل میشه میشه توضیش بدی؟
 
  • شروع کننده موضوع
  • #9

tiberium

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,057
امتیاز
1,052
نام مرکز سمپاد
شهید بهشتی سمنان
شهر
سمنان
سال فارغ التحصیلی
1389
مدال المپیاد
المپیاد کامپیوتر
دانشگاه
صنعتی شریف
رشته دانشگاه
مهندسی فن آوری اطلاعات
پاسخ : توضیح مسایل NP

به نقل از A-_liR3z_-A :
یه مسئله منطقی هست
معلممون میگفت دانشمندا می گن اگه حل شه همه ان پی ها حل میشه میشه توضیش بدی؟
همین مساله ی circuit SAT هستش که گفتم. که فکر کنم توسط 2 تا دانشمند به نام های cook و levin مطرح شد.
ما هم هنوز راجع به این مساله نخوندیم و توی درس نظریه زبان ماشین ها میخونیم. اما تا جایی که میدونم میگن تمامی مسایل رو میشه به یه صورت منطقی نوشتن.
یعنی به صورت ((یا)) و ((و )) و با استفاده از خود عبارات و یا نقیضشون میشه هر مساله ای رو بیان کرد. و حالا تعیین کردن درست یا غلط بودن عبارات برای درست بودن مساله یک مساله NP هست.که دانشمنده دقیقا ثابت کرده که این NP هست و تمامی مسایل رو هم میشه به این صورت نوشت.
خود عنوان دقیق مساله اینه که ثابت کردن اگر یه مساله n بیت ورودی داشته باشه و جواب بله یا خیر داشته باشه رو میشه با همین منطق ها پیاده کرد.
راستش اطلاعات بیشتری راجع به چگونگی اثباتش و اینا رو ندارم :D ایشالله وقتی فهمیدم اینجا توضیح میدم
 

most wanted

کاربر نیمه‌حرفه‌ای
ارسال‌ها
215
امتیاز
669
نام مرکز سمپاد
علامه حلی2
شهر
تهران
پاسخ : توضیح مسایل NP

به نقل از آرمان حقیقی :
همین مساله ی circuit SAT هستش که گفتم. که فکر کنم توسط 2 تا دانشمند به نام های cook و levin مطرح شد.
ما هم هنوز راجع به این مساله نخوندیم و توی درس نظریه زبان ماشین ها میخونیم. اما تا جایی که میدونم میگن تمامی مسایل رو میشه به یه صورت منطقی نوشتن.
یعنی به صورت ((یا)) و ((و )) و با استفاده از خود عبارات و یا نقیضشون میشه هر مساله ای رو بیان کرد. و حالا تعیین کردن درست یا غلط بودن عبارات برای درست بودن مساله یک مساله NP هست.که دانشمنده دقیقا ثابت کرده که این NP هست و تمامی مسایل رو هم میشه به این صورت نوشت.
خود عنوان دقیق مساله اینه که ثابت کردن اگر یه مساله n بیت ورودی داشته باشه و جواب بله یا خیر داشته باشه رو میشه با همین منطق ها پیاده کرد.
راستش اطلاعات بیشتری راجع به چگونگی اثباتش و اینا رو ندارم :D ایشالله وقتی فهمیدم اینجا توضیح میدم
آره اسمشم گفت ولی من با این حافظم :-"

پیدا کردی توضیح بده کلن
x:الگوریتم x:
 
  • شروع کننده موضوع
  • #11

tiberium

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,057
امتیاز
1,052
نام مرکز سمپاد
شهید بهشتی سمنان
شهر
سمنان
سال فارغ التحصیلی
1389
مدال المپیاد
المپیاد کامپیوتر
دانشگاه
صنعتی شریف
رشته دانشگاه
مهندسی فن آوری اطلاعات
پاسخ : توضیح مسایل NP

مساله بعدی که قرار روش فکر کنید اینه
http://www.sampadia.com/forum/index.php/topic,97354.msg961264.html#msg961264

اول این حل بشه تا مسایل بعدی رو هم بزاریم
ببینم چی کار می کنید دیگه:D
 
بالا