پاورپوینت طراحی الگوریتم ها
فرمت فایل: پاورپوینت
تعداد اسلاید: 27
پیچیدگی مسائل
پیچیدگی چندجمله ای
پیچیدگی نمایی و فاکتوریل
این الگوریتم ها برای مسائل با اندازه کوچک بد نیستند ولی با افزایش اندازه ورودی به شدت کند می شوند
مساله کنترل ناپذیر
برای مساله راه حلی با زمان چندجمله ای وجود ندارد
مسائل رام نشدنی(Intractable)
اثبات می گردد که یافتن راه حل کارآمد غیر ممکن است مثلا یافتن کلیه مسیر های همیلتونی
مسائل NP-Complete
مسائلی هستند که یافتن راه حل کارآمد برای آنها غیر ممکن نیست (ثابت نشده است رام نشدنی هستند) مانند کوله پشتی 0-1 و فروشنده دوره گرد و رنگ آمیزی گراف ها
تحقیق فرمت فایل word تعداد صفحات 30
پیاده سازی VLSI یک شبکه عصبی آنالوگ مناسب برای الگوریتم های ژنتیک
دراین تحقیق موارد زیر برسی مشوند :
خلاصه
مفید بودن شبکه عصبی آنالوگ مصنوعی بصورت خیلی نزدیکی با میزان قابلیت آموزش پذیری آن محدود می شود
این مقاله یک معماری شبکه عصبی آنالوگ جدید را معرفی می کند که وزنهای بکار برده شده در آن توسط الگوریتم ژنتیک تعیین می شوند .
اولین پیاده سازی VLSI ارائه شده در این مقاله روی سیلیکونی با مساحت کمتر از 1mm که شامل 4046 سیناپس و 200 گیگا اتصال در ثانیه است اجرا شده است .
از آنجائیکه آموزش می تواند در سرعت کامل شبکه انجام شود بنابراین چندین صد حالت منفرد در هر ثانیه می تواند توسط الگوریتم ژنتیک تست شود
1- مقدمه 2- تحقق شبکه عصبی
2-1- اصول عملکرد
2-2- پیاده سازی مدارهای شبکه
3- پیاده سازی الگوریتم آموزش ژنتیک
4- نتایج تجربی
5- نتیجه و چشم انداز
طراحی الگوریتم دانش ساخت الگوریتمها برای حل مسئلهاست. طراحی الگوریتم کاربردی را مهندسی الگوریتم مینامند. طراحی الگوریتم در بسیاری از راه حلهای تئوری تحقیق در عملیات، شناسایی و گنجانیده شدهاست، مانند برنامهنویسی پویا و تقسیم و غلبه. الگوهای طراحی الگوریتم تکنیکهای طراحی و اجرای طرحهای الگوریتم هستند، در این روزها از طراحی الگوریتم میتوان در فرایندهای بازیابی اینترنتی، مسیریابی استفاده نمود.
هم اکنون در ایران طراحی الگوریتمها به عنوان درسی در رشته مهندسی کامپیوتر (نرمافزار و سختافزار) و فناوری اطلاعات تدریس میشود. در طراحی الگوریتمها مباحثی همچون پیچیدگی زمانی،بازگشتی، روش تقسیم و غلبه، روش حریصانه، روش برنامه سازی پویا، تکنیک عقبگرد، نظریه P و NP تدریس میشود. زبانهای برنامهنویسی رایانههای بزرگ مانند زبان ALGOL (برای زبان الگوریتمی)، زبان FORTRAN، زبان COBOL، زبان PL/I، زبان SAIL و SNOBOL ابزار محاسبات برای به اجرا درآوردن یک طراحی الگوریتم است اما یک طراحی الگوریتم (a/d) یک زبان نیست، یک a/d میتواند یک روش دست نوشته باشد، به طور مثال مجموعهای از معادلات. یک سری از فرایندهای مکانیکی انجام شده توسط دست، قطعه آنالوگ از تجهیزات یا فرایند دیجیتال و پردازندهاست. یکی از مهمترین جنبههای طراحی الگوریتم، ایجاد یک الگوریتم است که دارای یک زمان اجرای کارآمد باشد، که به عنوان اوه بزرگ(big Oh)شناخته شدهاست.
روشهای طراحی الگوریتمکارایی، تحلیل و مرتبه الگوریتمها
نوشتن الگوریتم به زبان فارسی دو ایراد دارد:
نوشتن الگوریتمهای پیچیده به این شیوه دشوار است.مشخص نیست از توصیف فارسی الگوریتم چگونه میتوان یک برنامه کامپیوتری ایجاد کرد.تحلیل الگوریتمهاتعیین مقدار میزان کارایی یک الگوریتم در حل مسئله با تحلیل الگوریتم انجام میشود.
تحلیل پیچیدگی زمانیزمانی که یک الگوریتم انجام میشود با تعداد ورودیهای الگوریتم افزایش مییابد.
تحلیل پیچیدگی زمانی یک الگوریتم، تعیین تعداد دفعاتی است که عمل اصلی به ازای هر مقدار از ورودی انجام میشود.
T(n) را پیچیدگی زمانی الگوریتم در حالت معمول میگویند.
W(n) را تحلیل پیچیدگی زمانی در بدترین حالت مینامند.
A(n) را پیچیدگی زمانی در حالت میانگین میگویند.
عمل اصلی:زمان نوشتن الگوریتم اندازهٔ دادهها را معین سپس چند دستور را معلوم میکنیم که تعداد دفعاتی که این دستورات اجرا میشود کل کار الگوریتم را نشان میدهد.
تحلیل پیچیدگی زمانی برای حالت معمول برای الگوریتم (جمع کردن عناصرآرایه)
عمل اصلی: افزودن یک عنصر از آرایه به sum.
اندازه ورودی: n، تعداد عناصر آرایه.
عمل اصلی همیشه n بار انجام میشود یعنی برابر است با T(n) = n تحلیل پیچیدگی زمانی برای حالت معمول برای الگوریتم (مرتبسازی تعویضی)
عمل اصلی: مقایسه S [j] با S[i].
اندازه ورودی: تعداد عناصری که باید مرتب شوند.
بدترین حالت: T(n) = nتحلیل پیچیدگی زمانی دربدترین حالت برای الگوریتم (جستجوی ترتیبی)
عمل اصلی: مقایسه یک عنصر آرایه با x.
اندازه ورودی: , n تعداد عناصر موجود در آرایه.
بهترین حالت: T(n) = ۱تحلیل پیچیدگی زمانی در بهترین حالت برای الگوریتم (جستجوی ترتیبی)
عمل اصلی: مقایسه یک عنصر آرایه با x.
اندازه ورودی: , n تعداد عناصر آرایه. توضیح: در اولین بار عنصر مورد نظر پیدا شود.
B (n) = ۱مرتبه الگوریتمالگوریتمها یی با پیچیدگی زمانی ازقبیل n و100n را الگوریتمهای زمانی خطی میگویند.
مجموعه کامل توابع پیچیدگی را که با توابع درجه دوم محض قابل دستهبندی باشند، n²) (θ میگویند.
آشنایی بیشتر با مرتبه الگوریتمهابرای یک تابع پیچیدگی مفروض ƒ(n),O (ƒ (n) "O بزرگ» مجموعهای از توابع پیچیدگی g (n) است که برای آنها یک ثابت حقیقی مثبت c و یک عدد صحیح غیر منفی N وجود دارد به قسمی که به ازای همهٔ N =g (n)>= c × ƒ (n)
برای یک تابع پیچیدگی مفروض ƒ(n)، (Ω (ƒ(n)مجموعهای از توابع پیچیدگی g (n) است که برای آنها یک عدد ثابت حقیقی مثبت c و یک عدد صحیح غیر منفی N وجود دارد به قسمی که به ازای همهٔ N =g (n) =برای یک تابع پیچیدگی مفروض ƒ(n)، داریم: θ (ƒ(n)) = O (ƒ(n)) ∩ Ω (ƒ(n))
یعنی θ(ƒ(n)) مجموعهای از توابع پیچیدگی g (n) است که برای آنها ثابتهای حقیقی مثبت c وd و عدد صحیح غیر منفی N وجود دارد به قسمی که:
c × ƒ (n) <= d × ƒ(n)
برای یک تابع پیچیدگی ƒ(n) مفروض، (o(ƒ(n) ”o کوچک” عبارت ازمجموعه کلیه توابع پیچیدگیg (n) است که این شرط را برآورده میسازند: به ازای هرثابت حقیقی مثبت c، یک عدد صحیح غیر منفی N وجود دارد به قسمتی که به ازای همهٔ N =g (n) =روش تقسیم و حل
روش تقسیم و حل یک روش بالا به پایین است.
حل یک نمونه سطح بالای مسئله با رفتن به جزء و بدست آوردن حل نمونههای کوچکتر حاصل میشود.
هنگام پی ریزی یک الگوریتم بازگشتی، باید:
۱- راهی برای به دست آوردن حل یک نمونه از روی حل یک نمونه ازروی حل یک یا چند نمونه کوچکتر طراحی کنیم.
۲- شرط (شرایط) نهایی نزدیک شدن به نمونه (های) کوچکتر را تعیین کنیم.
۳- حل را در حالت شرط (شرایط) نهایی تعیین کنیم.
انواع روشهای مرتبسازی:
ادغام یک فرایند مرتبط با مرتبسازی است.
ادغام دوطرفه به معنای ترکیب دو آرایه مرتب شده در یک آرایهٔ مرتب است.
مرتبسازی ادغامی شامل مراحل زیر میشود:
۱- تقسیم آرایه به دو زیر آرایه، هر یک با n/2 عنصر.
۲- حل هر زیر آرایه با مرتبسازی آن.
۳- ترکیب حلهای زیر آرایهها از طریق ادغام آنها در یک آرایه مرتب.
راهبرد طراحی تقسیم و حل شامل مراحل زیر است:
۱- تقسیم نمونهای ازیک مسئله به یک یا چند نمونه کوچکتر.
۲- حل هر نمونه کوچکتر. اگر نمونههای کوچک تربه قدر کافی کوچک نبودند، برای این منظور از بازگشت استفاده کنید.
۳- در صورت نیاز، حل نمونههای کوچکتر را ترکیب کنید تا حل نمونه اولیه به دست آید.
در مرتبسازی سریع، ترتیب آنها از چگونگی افراز آرایهها ناشی میشود.
همه عناصر کوچکتر از عنصر محوری در طرف چپ آن وهمه عناصربزرگ تر، درطرف راست آن واقع هستند.
مرتبسازی سریع، به طور بازگشتی فراخوانی میشود تا هر یک از دوآرایه را مرتب کند، آنها نیز افراز میشوند واین روال ادامه مییابد تا به آرایهای با یک عنصر برسیم. چنین آرایهای ذاتاً مرتب است.
فهرست مطالب:
فصل اول: کارایی، تحلیل و مرتبه الگوریتم ها
ایرادات نوشتن الگوریتم به زبان فارسی
الگوریتم 1-1: جست و جوی ترتیبی
الگوریتم 2-1:محاسبه مجموع عناصر آرایه
الگوریتم 3-1:مرتب سازی تعویضی
الگوریتم 4-1:ضرب ماتریس ها
اهمیت ساخت الگوریتم های کارآمد
و...
فصل دوم: روش تقسیم و حل
الگوریتم1-2: جست و جوی دودویی
تحلیل پیچیدگی زمانی در بدترین حالت برای الگوریتم جست و جوی دودویی بازگشتی
مرتب سازی ادغامی
الگوریتم2-2: مرتب سازی ادغامی
الگوریتم3-2: ادغام
و...
فصل سوم: برنامه نویسی پویا
الگوریتم 3-1: ضریب دو جمله ای با استفاده از تقسیم و حل
الگوریتم 2-3: ضریب دو جمله ای با استفاده از برنامه نویسی پویا
الگوریتم 3-3: الگوریتم فلوید برای یافتن کوتاه ترین مسیر
الگوریتم 4-3:الگوریتم فلوید برای یافتن کوتاهترین مسیر 2
الگوریتم 5-3:چاپ کوتاهترین مسیر
3-3 برنامه نویسی پویا و مسائل بهینه سازی
و...
فصل چهارم: روش حریصانه در طراحی الگوریتم
اصول
مراحل
درخت های پوشای کمینه
الگوریتم پریم
الگوریتم 1-4: الگوریتم پریم
تحلیل پیچیدگی زمانی در حالت معمول برای الگوریتم 1-4 (الگوریتم پریم)
الگوریتم 4-2: الگوریتم کروسکال
الگوریتم دیکسترا برای کوتاهترین مسیر تک مبدا
و...
فصل پنجم: راهبرد عقبگرد
الگوریتم 1-5: الگوریتم عقبگرد برای مسئله n وزیر
استفاده از الگوریتم مونت کارلو برای برآورد کردن کارایی یک الگوریتم عقبگرد
الگوریتم2-5: برآورد مونت کارلو
الگوریتم 3-5: بر آورد مونت کارلو برای الگوریتم 1-5
الگوریتم 4-5: الگوریتم عقبگرد برای مسئله حاصل جمع زیرمجموعه ها
رنگ آمیزی گراف
الگوریتم5-5: الگوریتم عقبگرد برای مسئله رنگ آمیزی m
و...
فصل ششم: راهبرد شاخه و حد
مقدمه
الگوریتم 1-6: الگوریتم جست و جوی عرضی با هرس کردن شاخه و حد برای مسئله کوله پشتی صفر و یک
الگوریتم 2-6: بهترین جست و جو با هرس کردن شاخه و حد برای مسئله کوله پشتی صفر و یک
مسئله فروشنده دوره گرد
الگوریتم 3-6: الگوریتم بهترین جستجو با هرس کردن شاخه و حد برای مسئله فروشنده دوره گرد
استنباط فرضیه ای
الگوریتم 4-6 : الگوریتم بهترین جست و جو با هرس کردن شاخه و حد برای استنباط فرضیه ای
و...
فصل هفتم: مقدمه ای بر پیچیدگی محاسباتی: مسئله مرتب سازی
پیچیدگی محاسباتی
مرتب سازی درجی و مرتب سازی انتخابی
الگوریتم 1-7: مرتب سازی درجی
الگوریتم 2-7: مرتب سازی انتخابی
الگوریتم مرتب سازی تعویضی
نگاهی دوباره به مرتب سازی ادغامی
بهبود بخشیدن به مرتب سازی ادغامی
الگوریتم 3-7: مرتب سازی ادغامی 3
الگوریتم 4-7: مرتب سازی ادغامی 4
و...
الگوریتم (نسبت: الگوریتمی، خوارزمیک) یا خوارزمی مجموعهای متناهی از دستورالعملها است، که به ترتیب خاصی اجرا میشوند و مسئلهای را حل میکنند. به عبارت دیگر یک الگوریتم، روشی گام به گام برای حل مسئله است. شیوه محاسبه معدل در مدرسه، یکی از نمونههای الگوریتم است.
ریشه واژهٔ الگوریتمواژه الگوریتم از نام ریاضیدان و ستارهشناس و جغرافیدان نامی ایرانی، ابوجعفر محمد بن موسی خوارزمی (الخوارزمی)، گرفته شده است، که در خوارزم زاده شد و در دانشگاه «بیت الحکمه» بغداد به اوج شهرت رسید. خوارزم یکی از شهرهای «ایران بزرگ» بود، که امروزه در ازبکستان واقع شده است و خیوه نام دارد. رسالهای که خوارزمی در قرن ۹ میلادی به عربی نگاشته بود، در قرن ۱۲ بهلاتین با نام "Algoritmi de numero Indorum" ترجمه شد؛ یعنی "[کتابی بدست] «الگوریتمی» در مورد اعداد هندی"، که «الگوریتمی» نام الخوارزمی بود که مترجم در تبدیل به لاتین نام وی را جلوی نام اصلی کتاب (در مورد اعداد هندی) آورده بود. در قرن ۱۳ میلادی واژه الگوریسموس(algorismus) به معنای «سیستم شمارش عربی (دهدهی)» (یعنی اعداد ۱ تا ۹ به علاوه صفر، و نیز مفهوم اعشار) بود؛ که هنوز هم یکی از معانی واژه الگوریسم(algorism) است. معنای دیگر الگوریسم «حساب کردن با کمک اعداد عربی» است؛ یعنی فن انجام أعمال حسابی پایه، مانند جمع و ضرب، با قرار دادن اعداد در زیر هم و إعمال قواعدی خاص، که جایگزین به کارگیری اعداد رومی و استفاده از چرتکه شد. حتی روش انجام دستی تقسیم و جذر گرفتن (رادیکال) هم الگوریسم نامیده میشود. در قرن ۱۹ این کلمه در فرانسوی به algorithme تغییر شکل پیدا کرد، البته معنایش ثابت ماند. طولی نکشید که این کلمه به شکل algorithm وارد زبان انگلیسی شد؛ ولی فقط در اواخر قرن ۱۹ میلادی بود که معنای عامتر امروزیاش را یافت، و به «هر مجموعه قواعدی برای انجام یک رویه محاسباتی یا روال رایانهای به کار رود» الگوریتم گفته شد.
تبدیل نام الخوارزمی به الگوریسم و سپس الگوریتم احتمالاً تحت تأثیر واژه یونانی arithmos (به معنای عدد) و arithmetic (به معنای محاسباتی) بوده است. برخی منابع هم کلمه لگاریتم را هم در تبدیل الگوریسم و الگوریتم بی تأثیر ندانستهاند.
برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شدهمهندسی نرمافزار متغیر است.
برنامهنویسی رایانه (که اغلب به طور کوتاه برنامهنویسی نامیده میشود) فرایند سوق دادن ساختار اصلی یک مسئله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسئله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (که معمولاً به عنوان کدینگ از آن یاد میشود) این الگوریتم در یک زبان برنامهنویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامههای کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده میشود. کد منبع به یک یا چند زبان برنامهنویسی، مانند جاوااسکریپت، اسمالتاک، پایتون، جاوا، سی شارپ، سی پلاسپلاس و سی نوشته شده است.
زبان برنامهنویسی سی، زبانی همه منظوره، ساختیافته، دستوری و روندگرا میباشد که در سال ۱۹۷۲ توسط دنیس ریچی در آزمایشگاههای بل ساخته شد.
پیشینهدر سال ۱۹۶۷ مارتین ریچاردز زبان BCPL را برای نوشتن نرمافزارهای سیستمعامل و کامپایلر در دانشگاه کمبریج ابداع کرد. سپس در سال ۱۹۷۰ کن تامسون بل زبان B را بر مبنای ویژگیهای زبان BCPL نوشت و از آن برای ایجاد اولین نسخههای سیستمعامل یونیکس در آزمایشگاههای بلاستفاده کرد. زبان C در سال ۱۹۷۲ توسط دنیس ریچی از روی زبان B و BCPL در آزمایشگاه بل ساخته شد و ویژگیهای جدیدی همچون نظارت بر نوع دادهها نیز به آن اضافه شد. ریچی از این زبان برای ایجاد سیستمعامل یونیکس استفاده کرد اما بعدها اکثر سیستمعاملهای دیگر نیز با همین زبان نوشته شدند. این زبان با سرعت بسیاری گسترش یافت و چاپ کتاب "The C Programming Language" در سال ۱۹۷۸ توسط برایان کرنیگان و ریچی باعث رشد روزافزون این زبان در جهان شد.
متأسفانه استفاده گسترده این زبان در انواع کامپیوترها و سختافزارهای مختلف باعث شد که نسخههای مختلفی از این زبان بوجود آید که با یکدیگر ناسازگار بودند. در سال ۱۹۸۳ مؤسسه استانداردهای ملی آمریکا (ANSI) کمیتهای موسوم به X3J11 را را مأمور کرد تا یک تعریف فاقد ابهام و مستقل از ماشین را از این زبان تدوین نماید. در سال ۱۹۸۹ این استاندارد تحت عنوان ANSI C به تصویب رسید و سپس در سال ۱۹۹۰، سازمان بینالمللی استانداردسازی (ISO) نیز این استاندارد را پذیرفت و مستندات مشترک آنها تحت عنوان ANSI/ISO C منتشر گردید.
در سالهای بعد و با ظهور روشهای برنامهنویسی شئگرا نسخه جدیدی از زبان C بنام C++ توسط بییارنه استراستروپ در اوایل ۱۹۸۰ در آزمایشگاههای بل توسعه یافت. در C++ علاوه بر امکانات جدید، خاصیت شئگرایی نیز به C اضافه شدهاست.
با گسترش شبکه و اینترنت، نیاز به زبانی احساس شد که برنامههای آن بتوانند برروی هر ماشین و هر سیستمعامل دلخواهی اجرا گردد. شرکت سان مایکروسیستمز در سال ۱۹۹۵ میلادی زبانجاوا را برمبنای C و C++ ایجاد کرد که هم اکنون از آن در سطح وسیعی استفاده میشود و برنامههای نوشته شده به آن برروی هر کامپیوتری که از جاوا پشتیبانی کند (تقریباً تمام سیستمهای شناخته شده) قابل اجرا میباشد.
فهرست مطالب:
فصل اول: مفاهیم اولیه
الگوریتم
شرایط الگوریتم ها
فلوچارت
نوع داده مجرد
انواع توابع یک نوع داده
بررسی نحوه اجرای برنامه
و...
فصل دوم: زبان برنامه نویسی
مقدمه
ویژگی های مهم زبان C
کاراکتر
شناسه
متغیر
علامت توضیح
ساختار برنامه ها
دستورالعمل های اجرایی
و...
فصل سوم: انواع داده ها
مقدمه
انواع داده های اسکالر
انواع داده های غیر اسکالر
اعلان متغیرها
داده های صحیح
مقادیر ثابت صحیح
داده های اعشاری
داده های کاراکتری
و...
فصل چهارم: توابع ورودی و خروجی
مقدمه
تابع () printf
کاراکتر فرمت n%
تابع () scanf
و...
فصل پنجم: ساختارهای کنترلی و شرطی
مقدمه
دستور کنترلی while
دستور کنترلی do while
دستور کنترلی for
دستورهای شرطی if و if-else
دستور شرطی switch
و...
فصل ششم: برنامه سازی پیمانه ای
مقدمه
تعریف تابع
دستور return
فراخوانی تابع
تابع بازگشتی
استفاده از چند تابع
پارامترهای خط فرمان
و...
فصل هفتم: آرایه
مقدمه
تعریف آرایه
اندیس آرایه
مقداردهی اولیه آرایه
آرایه های چند بعدی
انتقال آرایه به یک تابع
آرایه ها و رشته ها
و...
فصل هشتم: اشاره گر
مقدمه
تعریف اشاره گر
آدرس متغیر
مقداردهی اولیه اشاره گر
اشاره گر تهی
عملیات روی اشاره گرها
و...
فصل نهم: نوع داده کاربر
مقدمه
ساختار
ساختارهای تو در تو
اختصاص مقادیر اولیه
آرایه ای از ساختارها
پردازش یک ساختار
انتقال ساختار به تابع
داده تعریف شده توسط کاربر
و...
فصل دهم: پشته و صف
مقدمه
نوع داده مجرد پشته
پشته چندگانه
ارزشیابی عبارات infix ،postfix ،prefix
نوع داده مجرد صف
صف حلقوی
و...
فصل یازدهم: ساختار درختی
مقدمه
درخت
نمایش درخت
نمایش لیست
نمایش فرزند چپ ـ همزاد راست
نمایش دودویی یک درخت
درخت دودویی
تفاوتهای درخت عادی با درخت دودویی
خواص درختان دودویی
درخت دودویی پر
و...
فصل دوازدهم: فایل
مقدمه
انواع فایل
بازکردن و بستن فایل
توابع کار با فایل ها
فایل های ورودی و خروجی
توابع دیگر
دستگاههای ورودی و خروجی استاندارد
و...
فصل سیزدهم: توابع کتابخانه ای
مقدمه
توابع تبدیل نوع
توابع ریاضی
توابع کاراکتری
توابع رشته ای
توابع تخصیص حافظه پویا
و...
پاورپوینت روش تقسیم و حل در طراحی الگوریتم ها
فرمت فایل: پاورپوینت
تعداد اسلاید: 18
روش تقسیم و حل
ناپلئون، امپراتور فرانسه، در یکی از جنگ ها وقتی دید تعداد دشمنان بسیار بیشتر از افراد خود است از روش جالبی استفاده کرد.
ناپلئون به قلب سپاه حمله کرد و نیروها را به دو بخش تقسیم کرد.
از آنجا که هر یک از دو بخش سپاه به تنهایی از پس ناپلئون بر نمی آمدند، بر آنها تلفات سنگینی وارد آمد.
ناپلئون با تقسیم سپاه بزرگ به دو سپاه کوچک تر و پیروز شدن بر تک تک آن ها توانست بر سپاه بزرگ غلبه کند.
روش تقسیم و حل (Divide and Conquer)
یکی از روش های طراحی الگوریتم ، روش تقسیم و حل است:
این روش، مسئله را به نمونه های کوچک تر تقسیم میکند، آنقدر این کار را ادامه میدهد تا بتوان نمونه های کوچک شده را به راحتی حل کرد. حل مسئله اصلی از ترکیب کردن همین حل های کوچکتر بدست می آید.
روش تقسیم و حل یک روش بالا به پایین است. زیرا برای حل یک نمونه سطح بالا از مسئله، با رفتن به پایین و به دست آوردن حل نمونه های کوچک تر حاصل میشود.