[نکات] NP و مسائل متفرقه - نسخهی قابل چاپ |
[نکات] NP و مسائل متفرقه - Masoud05 - 02 دى ۱۳۸۹ ۰۲:۳۳ ب.ظ
مساله ای بغرنج است که حل آن توسط الگوریتمی با زمان چند جمله ای غیر ممکن باشد. یاد آوری: زمان چند جمله ای بصورتی مثل روبرو می باشد: n/iیا n^3 یا n^2 * log n |
[نکات] NP و مسائل متفرقه - admin - 08 دى ۱۳۸۹ ۱۲:۰۷ ق.ظ
مسئلهای را Np-Complete مینامیم در صورتی که: ۱. بتوان از طریق reduction آن را به مسئله NP-Hard کاهش داد. ۲. یک جواب مسئله را بتوان در زمان چند جملهای بررسی کرد. |
[نکات] NP و مسائل متفرقه - ف.ش - ۱۷ بهمن ۱۳۸۹ ۰۸:۴۹ ب.ظ
***************************** NP ************************************ این لیست مسائل NP است مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید. NPC ***************************************************************** من نمیدونم کدوم هاش توی کنکور ازشون سوال میاد اگه کسی میدونه لطفا لیستشون کنه! |
RE: [نکات] NP و مسائل متفرقه - psps1368 - 17 بهمن ۱۳۸۹ ۱۱:۳۳ ب.ظ
[tex]B \in NP-Complete \Leftrightarrow \begin{Bmatrix} B \in NP\\ \forall L \in NP: A \leq_{P} B \end{matrix}[/tex] [tex]B \in NP-Hard \Leftrightarrow \forall L \in NP: A \leq_{P} B[/tex] پس: [tex]\begin{Bmatrix} B \in NP-Complete \\ B \leq_{P} C \\C \in NP \end{matrix} \Leftrightarrow C \in NP-Complete[/tex] [tex]\begin{Bmatrix} B \in NP-Complete\\ B \leq_{P} C \end{matrix} \Leftrightarrow C \in NP-Hard[/tex] کاهش دادن مسئله باید در زمان چند جمله ای انجام شود. |
[نکات] NP و مسائل متفرقه - yaser_ilam_com - 21 فروردین ۱۳۹۱ ۰۴:۱۵ ب.ظ
نظریه پیچیدگی محاسباتی نظریهٔ پیچیدگی محاسباتی شاخهای از نظریهٔ محاسبات، علوم نظری رایانه و ریاضی است که به بررسی دشواری حل مسائل به وسیلهٔ رایانه (به عبارت دقیقتر به صورت الگوریتمی) میپردازد. این نظریه بخشی از نظریهٔ محاسباتی است که با منابع مورد نیاز برای حل یک مساله سروکار دارد. مقدمه عمومیترین منابع زمان (چقدر زمان برای حل کردن مساله لازم است) و فضا (چقدر حافظه مورد نیاز است) میباشند. سایر منابع میتواند تعداد پروسسورهای موازی (در حالت پردازش موازی) و... باشند. اما در این صفحه عوامل بالا مورد بحث نیستند. باید به این نکته توجه داشت که نظریه پیچیدگی با نظریه قابل حل بودن متفاوت است. این نظریه در مورد قابل حل بودن یک مساله بدون توجه به منابع مورد نیاز آن، بحث میکند. بعد از این نظریه که بیان میکند کدام مسائل قابل حل و کدام مسائل غیرقابل حل هستند، این سوال به نظر طبیعی میرسد که درجه سختی مساله چقدر است. نظریه پیچیدگی محاسبات در این زمینهاست. برای سادگی کار مسالهها به کلاسهایی تقسیم میشوند به طوری که مسالههای یک کلاس از حیث زمان یا فضای مورد نیاز با هم مشابهت دارند. این کلاسها در اصطلاح کلاسهای پیچیدگی خوانده میشوند. کلاس پیچیدگی (تغییرمسیر از کلاسهای پیچیدگی) کلاس پیچیدگی در نظریه پیچیدگی محاسباتی به مجموعه مسائلی اطلاق میشود که دارای پیچیدگی شبیه به هم هستند و تعریفی به شکل زیر دارند: مجموعه مسائلی که میتوان آنها را توسط ماشین انتزاعی M با مرتبه یا Order تابعی از n با استفاده از منبع R حل کرد که n اندازه ورودی است. برای مثال کلاس NP مجموعهای از مسئلههای تصمیمگیری هستند که توسط ماشین تورینگ غیرقطعی در زمان چندجملهای حل میشوند در حالی که PSPACE مجموعهای از مسئلههای تصمیمگیری هستند که توسط ماشین تورینگ قطعی در فضای چندجملهای حل میشوند.بعضی از کلاسهای پیچیدگی مجموعههایی از مسئلههای تابع هستند مانند FP. مهمترین کلاسها روابط بین مهمترین کلاسهای پیچیدگی. تا کنون نزدیک به ۵۰۰ کلاس پیچیدگی معرفی شدهاند که در اینجا مهمترین آنها را میآوریم: P: قابل حل در زمان چندجملهای NP: جوابهای «بله» قابل بررسی در زمان چندجملهای Co-NP: جوابهای «نه» قابل بررسی در زمان چندجملهای توسط ماشین غیرقطعی NP-complete: سختترین مسائل در NP PH: اجتماع کلاسها در سلسلهمراتب چندجملهای PSPACE: قابل حل با حافظه چندجملهای EXP: قابل حل در زمان نمایی NC: قابل حل به صورت کارامد در زمان چندجملهای لگاریتمی روی کامپیوترهای موازی L: قابل حل در فضای لگاریتمی P/poly: قابل حل در زمان چندجملهای با یک «رشته راهنما» که فقط به اندازه ورودی بستگی دارد. BPP: قابل حل در زمان چندجملهای توسط الگوریتمهای تصادفی (جواب احتمالاٌ درست است.) MA: قابل حل در زمان چندجملهای توسط پروتکل مرلین-آرتور AM:قابل حل در زمان چندجملهای توسط پروتکل آرتور-مرلین BQP:قابل حل در زمان چندجملهای روی کامپیوتر کوانتوم (جواب احتمالاٌ درست است.) P#: شمارش راهحلهای یک مسئله NP PP: چندجملهای به صورت احتمالاتی (جواب با احتمال اندکی بزرگتر از ½ درست است.) بعضی منابع دیگری که در این نظریه مورد بررسی قرار میگیرند، مثل عدم تعین صرفاً جنبهٔ صوری دارند ولی بررسی آنها موجب درک عمیقتر منابع واقعی مثل زمان و فضا میشود. معروفترین کلاسهای پیچیدگی، P و NP هستند که مسالهها را از نظر زمان مورد نیاز تقسیمبندی میکنند. به طور شهودی میتوان گفت P کلاس مسالههایی است که الگوریتمهای سریع برای پیدا کردن جواب آنها وجود دارد. اما NP شامل آن دسته از مسالههاست که اگرچه ممکن است پیدا کردن جواب برای آنها نیاز به زمان زیادی داشته باشد اما چک کردن درستی جواب به وسیلهٔ یک الگوریتم سریع ممکن است. البته کلاسهای پیچیدگی به مرتبه سختتری از NP نیز وجود دارند. P-SPACE: مسائلی که با اختصاص دادن مقدار کافی حافظه (که این مقدار حافظه معمولاً تابعی از اندازه مساله میباشد) بدون در نظر گرفتن زمان مورد نیاز به حل آن، میتوانند حل شوند. EXP-TIME: مسائلی که زمان مورد نیاز برای حل آنها به صورت توانی میباشد. مسائل این کلاس شامل همه مسائل سه کلاس بالایی نیز میباشد. نکته جالب و قابل توجه این است که حتی این کلاس نیز جامع نمیباشد. یعنی مسائلی وجود دارند که بهترین و کارامدترین الگوریتمها نیز زمان بیشتری نسبت به زمان توانی میگیرند. Un-decidable یا غیرقابل تصمیمگیری: برای برخی از مسائل میتوانیم اثبات کنیم که الگوریتمی را نمیشود پیدا کرد که همیشه آن مساله را حل میکند، بدون در نظر گرفتن فضا و زمان. در این زمینه آقای ریچارد لیپتون (از صاحبنظران این زمینه) در مقالهای نوشتهاند: یک روش اثبات غیررسمی برای این مساله میتواند این باشد: تعداد زیادی مساله، مثلاً به زیادی اعداد حقیقی وجود دارند، ولی تعداد برنامههایی که مسائل را حل میکنند در حد اعداد صحیح هستند. اما ما همیشه میتوانیم مسائل به دردبخوری را پیدا کنیم که قابل حل نیستند. آیا P=NP است؟ برابر بودن مسائل کلاس P دقیقا همان مسائل کلاس NP، یکی از مهمترین سوالهای بدون جواب علوم کامپیوتری است. به بیانی دیگر اگر همیشه به این سادگی بتوان صحت یک راهحل را بررسی کرد، آیا پیدا کردن راهحل نیز میتواند به آن سادگی باشد؟ برای این سوال یک جایزه ۱ میلیون دلاری از طرف انسیتیتو ریاضی Clay در نظرگرفته شدهاست. ما هیچ دلیلی برای قبول کردن آن نداریم ولی بین نظریهپردازان نیز این باور وجود دارد که باید جواب این سوال منفی باشد. همچنین دلیلی برای رد کردن آن نیز وجود ندارد. معرفی Np کامل تا این بخش از مقاله مسائلی معرفی شدند که اگر بتوان روشی برای حل آنها حدس زد، در زمان نزدیک به زمان خطی و یا حداقل در زمان چند جملهای برحسب ورودی میتوانستیم صحت راهحل را بررسی کنیم. ولی NP-Completeها مسائلی هستند که اثبات شده به سرعت قابل حل نیستند. در تئوری پیچیدگی NP-Completeها دشوارترین مسائل کلاس NP هستند و جزء مسائلی میباشند که احتمال حضورشان در کلاس P خیلی کم است. علت این امر این میباشد که اگر یک راهحل پیدا شود که بتواندیک مساله NP-Complete را حل کند، میتوان از آن الگوریتم برای حل کردن سریع همه مسائل NP-Complete استفاده کرد. به خاطر این مساله و نیز بخاطر اینکه تحقیقات زیادی برای پیدا کردن الگوریتم کارآمدی برای حل کردن اینگونه مسائل با شکست مواجه شدهاند، وقتی که مسالهای به عنوان NP-Complete معرفی شد، معمولاً اینطور قلمداد میشود که این مساله در زمان Polynomial قابل حل شدن نمیباشد، یا به بیانی دیگر هیچ الگوریتمی وجود ندارد که این مساله را در زمان Polynomial حل نماید. کلاس متشکل از مسائل NP-Complete با نام NP-C نیز خوانده میشود. بررسی ناکارآمد بودن زمانی مسائلی که در تئوری قابل حل شدن میباشند ولی در عمل نمیتوان آنها را حل کرد، محال یا ناشدنی مینامند. در حالت کلی فقط مسائلی که زمان آنها به صورت Polynomial میباشد و اندازه ورودی آنها در حد کوچک یا متوسط میباشد قابل حل شدن میباشند. مسائلی که زمان آنها به صورت توانی (EXPTIME-complete) میباشند به عنوان مسائل محال یا ناشدنی شناخته شدهاند. همچنین اگر مسائل رده NP جز مسائل رده P نباشند، مسائل NP-Complete نیز به عنوان محال یا نشدنی خواهند بود. برای ملموستر شدن این مساله فرض کنید که یک مساله مرحله لازم دارد تا حل شود (n اندازه ورودی میباشد). برای مقادیر کوچک n=۱۰۰ و با در نظر گرفتن کامپیوتری که ۱۰^۱۰ (۱۰ giga) عملیات را در یک ثانیه انجام میدهد، حل کردن این مساله زمانی حدود ۴*(۱۲^۱۰) سال طول خواهد کشید، که این زمان از عمر فعلی جهان بیشتر است! روشهایی برای حل مسائل NP-Complete به خاطر اینکه تعداد مسائل NP-Complete بسیار زیاد میباشد، شناختن اینگونه مسائل به ما کمک میکند تا دست از پیدا کردن یک الگوریتم سریع و جامع برداریم و یکی از روشهای زیر را امتحان کنیم: به کار بردن یک روش حدسی: یک الگوریتم که تا حد قابل قبولی در بیشتر موارد درست کار میکند، ولی تضمینی وجود ندارد که در همه موارد با سرعت قابل قبول نتیجه درستی تولید کند. حل کردن تقریبی مساله به جای حل کردن دقیق آن: اغلب موارد این روش قابل قبول میباشد که با یک الگوریتم نسبتاً سریع یک مساله را به طور تقریبی حل کنیم که میتوان ثابت کرد جواب بدست آمده تقرییا نزدیک به جواب کاملاً صحیح میباشد. الگوریتمهای زمان توانی را به کار ببریم: اگر واقعا مجبور به حل کردن مساله به طور کامل هستیم، میتوان یک الگوریتم با زمان توانی نوشت و دیگر نگران پیدا کردن جواب بهتر نباشیم. از خلاصه کردن استفاده کنیم: خلاصه کردن به این مفهوم میباشد که از برخی اطلاعات غیرضروری میتوان صرف نظر کرد. اغلب این اطلاعات برای پیادهسازی مساله پیچیده در دنیای واقعی مورد نیاز میباشد، ولی در شرایطی که بخواهیم به نحوی مساله را حل کنیم (حداقل به صورت تئوری و نه در عمل) میتوان از برخی اطلاعات غیرضروری صرف نظر کرد. نمونه مساله یک مسیر ساده در یک گراف به مسیری اطلاق میشود که هیچ راس یا یال تکراری در آن وجودنداشتهباشد. برای پیاده سازی مساله ما به این احتیاج داریم که بتوانیم یک سوال بلی/خیر طراحی کنیم. با داشتن گراف G، رئوس s و t و عدد k آیا یک مسیر ساده از s به t با حداقل k یال وجوددارد؟ راهحل این مساله جواب سوال خواهد بود. چرا این مساله NP میباشد؟ چون اگر مسیری به شما داده شود، به راحتی میتوان طول مسیر را مشخص نمود و آن را با k مقایسه کرد. همه این کارها در زمان خطی و صد البته در زمان Polynomial قابل انجام میباشد. اگر چه میدانیم که این مساله آیا در کلاس P میباشد یا نه، با این حال روش خاصی برای پیدا کردن مسیری با ویژگیهای ذکر شده نیز بیان نشدهاست. و در حقیقت این مساله جز NP-Completeها میباشد، پس میتوان به این نتیجه نیز رسید که الگوریتمی کارآمد با چنان عملیات وجود ندارد. الگوریتمهایی وجود دارند که این مساله را حل میکنند، به عنوان مثال همه مسیرهای موجود و ممکن را بررسی نموده و نتایج مقایسه شوند که آیا این مسیر مساله را حل میکند یا نه. اما تا آنجایی که میدانیم، الگوریتمی با زمان Polynomial برای حل این مساله وجود ندارد. منبع :فکر کنم قبلا از ویکی پدیا گرفتم ------------------------------------------------------------------- این موضوع در مانشت توسط دکتر تنهایی عزیز بحث شده مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید. |