دانلود پاورپوینت الگوریتم های تقسیم و حل (pptx) 52 اسلاید
دسته بندی : پاورپوینت
نوع فایل : PowerPoint (.pptx) ( قابل ویرایش و آماده پرینت )
تعداد اسلاید: 52 اسلاید
قسمتی از متن PowerPoint (.pptx) :
روش تقسیم و حل (Divide and Conquer)
شیوه حل در این روش به این صورت است که:
به صورت بازگشتی ...
مساله به دو یا بیشتر زیر مساله از نوع همان مساله (یا مسالهای که در حل مساله اصلی مرتبط است) تقسیم (divide) میشود و ...
اینکار (شکستن و تقسیمکردن) تا آنجایی ادامه مییابد که ...
مساله به اندازهای ساده شود که بتواند مستقیما حل شود (conquer). سپس ...
پاسخهای زیرمسالهها با هم ترکیب میشوند تا پاسخی برای مساله اصلی فراهم سازند.
روش تقسیم و حل (Divide and Conquer)
فهم و طراحی الگوریتمهای D&C، مهارت پیچیدهای است که نیازمند فهم خوب از ماهیت مساله دارد.
روش تقسیم و حل (Divide and Conquer)
توجه:
به هنگام نوشتن الگوریتمهای بازگشتی در سطح مسئله فکر میکنیم و
میگذاریم تا جزئیات را زبان برنامه نویسی با استفاده از Stack بر عهده گیرد
هنگام طراحی الگوریتمهای تقسیم و حل معمولا همین گونه فکر میکنیم و آن را به صورت یک روال بازگشتی مینویسیم
روش تقسیم و حل (Divide and Conquer)
برخی از مولفین میگویند که عنوان روش تقسیم و حل حتما میبایست به روشهایی تعلق گیرد که مساله را به دو یا بیشتر زیرمساله تقسیم میکند و ...
چنانچه مساله به تنها یک زیرمساله دیگر شکسته شود به آن روش، کاهش و حل (Decrease and Conquer) میگویند.
روش تقسیم و حل
سابقه تاریخی علت نامگذاری این روش:
در سال 1805، ارتشی از سربازان روسی و اتریشی با بیش از 15 هزار نفر به جنگ با ناپلئون آمدند.
ناپلئون با حمله به قلب سپاه آنها و تقسیم نیروهای دشمن به دو بخش بر آنها پیروز شد.
در واقع ناپلئون با تقسیم (Divide) سپاه بزرگ به دو سپاه کوچکتر و پیروز شدن بر تکتک آنها موفق شد بر آن سپاه بزرگ غبه یابد (Conquer)
الف) جستجوی دودویی
اگر x برابر عنصر میانی آرایه بود جستجو تمام است. در غیر این صورت ...
آرایه را به دو زیر آرایه تقسیم کن که هریک حدودا نصف آرایه اولیهاند.
اگر x کوچکتر از عنصر میانی بود کار را در زیرآرایه چپی و اگر x بزرگتر از عنصر میانی بود، کار را در زیر آرایه راستی ادامه میدهیم
حل مسئله را از حل مسئله زیر آرایه به دست آور
الف) جستجوی دودویی
x=18
الف) جستجوی دودویی
function position=recbinsearch(x,low,high)
global A;
mid=floor((low+high)/2);
if (A(mid)==x)
position=mid;
else
if x
=newlow)
high=newhigh; low=newlow;
position=recbinsearch(x,low,high);
else
position=0;
end
end
end
توجه:
برای تعریف متغیر به صورت عمومی به گونهایکه در تمامی تابعها قابل دسترسی باشد،
ابتدا آن را عمومی تعریف میکنیم:
global A;
سپس مقداردهی میکنیم:
A=[10 12 13 14 18 20 25 27 30 35 40 45 47];
و سپس در هر تابعی قبل از استفاده، از تعریف عمومی آن استفاده میکنیم:
global A;