کنکور کامپیوتر
0
ورود | ثبت نام
نظرات
اشتراک
بالا
علاقه‌مندی

اشتراک
 

آموزش تقسیم و غلبه، کاربردها و مزایای تقسیم و غلبه

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

الگوریتم تقسیم و غلبه، یک استراتژی برای حل یک مسئله بازگشتی بزرگ با مراحل زیر است:

الگوریتم تقسیم و غلبه چیست؟

در این مقاله، نحوه عملکرد الگوریتم تقسیم و غلبه را خواهید آموخت، ما همچنین رویکرد تقسیم و غلبه را با سایر رویکردها و الگوریتمالگوریتم چیست به زبان ساده و با مثال های فراوانالگوریتم چیست به زبان ساده و با مثال های فراواندر این مقاله به زبان بسیار ساده و با مثال های متعدد توضیح داده شده که الگوریتم چیست و چه کاربردهایی دارد‌ها برای حل یک مسئله بازگشتی مقایسه خواهیم کرد.

نحوه کار الگوریتم تقسیم و غلبه با مثال

مراحل کار الگوریتم تقسیم و غلبه به‌ترتیب عبارتند از:

اجازه دهید این مفهوم را با کمک یک مثال درک کنیم:

در این مثال، یک آرایهآموزش آرایه در ساختمان داده به زبان ساده و از 0 تا 100آموزش آرایه در ساختمان داده به زبان ساده و از 0 تا 100در این مقاله موارد زیر بررسی شده است : 1- آرایه چیست 2- انواع اندیس گذاری در آرایه 3- انواع آرایه 4- محاسبه آدرس در آرایه 5- محاسبه شماره در آرایه 6- آرایه در برنامه نویسی 7- مزایای استفاده از آرایه را با استفاده از رویکرد تقسیم و غلبه مرتب می‌کنیم. فرض کنید آرایه داده شده، به شکل زیر باشد:

یک آرایه 6 عنصری

آرایه را به دو قسمت تقسیم می‌کنیم:

تقسیم آرایه داده شده به دو بخش

مجدداً، هر قسمت فرعی را به صورت بازگشتی به دو نیمه تقسیم می‌کنیم تا زمانی که عناصر جداگانه به دست آیند.

به دست آوردن عناصر جداگانه در آرایه پس از تقسیم

اکنون عناصر جداگانه را به‌صورت مرتب، ترکیب می‌کنیم. در این مرحله، غلبه و ترکیب را انجام دادیم. در مثال فوق توانستیم با استفاده از الگوریتم تقسیم و غلبه، یک آرایه با 6 عنصر را مرتب کنیم.

پیچیدگی زمانی

پیچیدگی زمانی الگوریتم تقسیم و غلبه با استفاده از قضیه مستر محاسبه می‌شود. فرم بازگشتی الگوریتم تقسیم و غلبه به شکل زیر است:

$\mathrm{T}\left(\mathrm{n}\right)\mathrm{=aT}\left(\frac{\mathrm{n}}{\mathrm{b}}\right)\mathrm{+f}\left(\mathrm{n}\right)$

به‌طوری که:

$\mathrm{n}$ = اندازه ورودی

$\mathrm{a}$ = تعداد زیرمسائل در بخش بازگشتی

$\frac{\mathrm{n}}{\mathrm{b}}$ = اندازه هر زیرمسئله، فرض بر این است که همه مسائل فرعی دارای اندازه یکسانی هستند.

$\mathrm{f}\left(\mathrm{n}\right)$ = هزینه کار انجام شده خارج از فراخوان بازگشتی، که شامل هزینه تقسیم مسئله و هزینه ادغام راه‌حل‌ها می‌شود.

نحوه حل این گونه مسائل به‌طور مفصل در مقاله قضیه مستر بررسی شده است و ما در این مقاله از این بحث صرف‌نظر می‌کنیم.

مقایسه تقسیم و غلبه با برنامه نویسی پویا

هم الگوریتم تقسیم و غلبه و هم برنامه نویسی پویا از بازگشت برای یافتن راه‌حل برای یک مسئله استفاده می‌کنند، اما هر دو ویژگی‌های متفاوتی دارند و در نتیجه مجموعه‌ای از مسائل متفاوت دارند. رویکرد تقسیم و غلبه یک مسئله را به زیر مسائل کوچک‌تر تقسیم می‌کند. این زیرمسائل بیشتر به صورت بازگشتی حل می‌شوند. در نتیجه هر زیرمسئله‌ای برای ارجاعات آینده ذخیره نمی‌شود، در حالی که در رویکرد برنامه نویسی پویا، نتیجه هر زیرمسئله برای ارجاعات آینده ذخیره می‌شود. زمانی که یک زیرمسئله یکسان چندین بار حل نشد از رویکرد تقسیم و غلبه استفاده کنید. از رویکرد پویا زمانی استفاده کنید که نتیجه یک زیرمسئله چندین بار در آینده مورد استفاده قرار گیرد. اجازه دهید این توضیحات را با یک مثال درک کنیم. فرض کنید می‌خواهیم سری فیبوناچیدنباله فیبوناچی یا سری فیبوناچی چیه؟ – آموزش اعداد فیبوناچیدنباله فیبوناچی یا سری فیبوناچی چیه؟ – آموزش اعداد فیبوناچیاین مقاله عالی دنباله فیبوناچی یا سری فیبوناچی را آموزش داده، سپس الگوریتم فیبوناچی و برنامه بازگشتی محاسبه nامین عدد فیبوناچی در پایتون و C را آورده است  را پیدا کنیم.

روش تقسیم و غلبه

fib(n)
  If n  2, return 1
  Else , return f(n - 1) + f(n - 2)

روش پویا:

mem = []
fib(n)
  If n in mem: return mem[n] 
  else,     
    If n  2, f = 1
    else , f = f(n - 1) + f(n - 2)
    mem[n] = f
    return f

در روش برنامه نویسی پویا، mem نتیجه هر زیرمسئله را ذخیره می‌کند.

کاربردهای تقسیم و غلبه

از کاربردهای تقسیم و غلبه می‌توان به موارد زیر اشاره کرد:

مزایا و معایب تقسیم و غلبه

از مزایای الگوریتم تقسیم و غلبه می‌توان به موارد زیر اشاره کرد:

از معایب الگوریتم تقسیم و غلبه می‌توان به موارد زیر اشاره کرد:

جمع‌بندی

در این مقاله نحوه کارکرد الگوریتم تقسیم و غلبه را توضیح دادیم و برخی کاربردهای آن‌را بررسی کردیم. همین‌طور درباره نحوه نمایش فرمول بازگشتی برای مسائلی که توسط الگوریتم تقسیم و غلبه حل می‌شوند، صحبت کردیم. در ادامه به کاربردهای این الگوریتم اشاره کردیم و آن‌ها را به‌طور خلاصه شرح دادیم. و در نهایت به بررسی مزایا و معایب این الگوریتم پرداختیم.

الگوریتم تقسیم و غلبه چیست؟

الگوریتم تقسیم و غلبه، استراتژی حل یک مسئله بزرگ با شکستن مسئله به زیرمسائل کوچک‌تر، حل زیرمسائل و ترکیب آنها برای به دست آوردن خروجی مورد نظر است.

تفاوت الگوریتم تقسیم و غلبه با برنامه نویسی پویا چیست؟

تفاوت اصلی این است که در تقسیم و غلبه، مسئله را به قطعات کوچک‌تر تقسیم می‌کنید و سپس هرکدام را جداگانه حل می‌کنید، در حالی که در برنامه نویسی پویا، مسئله را به قطعات کوچک‌تر تقسیم می‌کنید و سپس هرکدام را با هم حل می‌کنید.

اصلی‌ترین مشکل الگوریتم تقسیم و غلبه چیست؟

زیرمسائل بازگشتی بخش اصلی الگوریتم‌های تقسیم و غلبه است. از این رو به مدیریت حافظه فشرده نیاز دارد. این فضا ممکن است توسط یک پشته بیش از حد مورد استفاده قرار گیرد. اگر فراخوانی بازگشتی به شدت فراتر از پشته CPU انجام شود، سیستم حتی ممکن است از کار بیفتد.

چرا الگوریتم تقسیم و غلبه از بقیه الگوریتم ها سریع‌تر است؟

روش تقسیم و غلبه، درجه پیچیدگی زمانی را کاهش می‌دهد، زیرا مسئله را به زیرمسائلی تقسیم می‌کند که به راحتی قابل حل هستند و معمولاً سریع‌تر از سایر الگوریتم‌ها اجرا می‌شوند.

کاربردهای الگوریتم تقسیم و غلبه چیست؟

از کاربردهای الگوریتم تقسیم و غلبه می‌توان به این موارد اشاره کرد: جستجوی دودویی، مرتب‌سازی سریع، مرتب‌سازی ادغامی، پیدا کردن نزدیک‌ترین جفت نقطه‌ها، الگوریتم استراسن و برج هانوی

امتیازدهی5 1 1 1 1 1 1 1 1 1 15.00 امتیاز (1 امتیاز)
اشتراک
بارگذاری نظرات
تلگرام اینستاگرام