الگوریتم کلونی مورچگان
On image denoising methods
الگوریتم حذف نویز NL-means
روشهای حذف نویز تصویر
چکیده:
تحقیق در مورد روشهای موثر حذف نویز در پردازش تابعی و آماری هنوز چالشی جدی است. بر خلاف بزرگنمایی روشهای پیشنهادی اخیر، اغلب الگوریتم ها هنوز به سطح مطلوبی از عملکرد دست نیافته اند. همه آنها وقتی با مدل تصویری که مطابق با فرضیات الگوریتم میباشد عملکرد برجسته ای دارند، اما در حالت کلی تولید اثر تصنعی کرده یا قسمتهایی از ساختار تصویر را از بین میبرند. تمرکز اصلی در این مقاله، در مرحله اول، تعریف یک روش کلی ریاضیاتی و آزمایشگاهی برای مقایسه و طبقه بندی الگوریتمهای حذف نویز بوده و در مرحله دوم، پیشنهاد یک روش (Non Local Means) که ساختار یک تصویر دیجیتال را نگاه میدارد معرفی میشود. تحلیلات ریاضیاتی بر مبنای تحلیل "نوع نویز"، که از تفاوت بین تصویر دیجیتال و نسخه حذف نویز شده آن تعریف میشود میباشد. همچنین اثبات میشود روش NL-means به صورت مجانبی نتایجی کمتر از یک حالت بهینه خواهد داشت. عملکرد روشهای معرفی دیگر نیز از چهار جنبه بررسی خواهند شد؛ ریاضیات: تحت بزرگنمایی های مختلف بزرگنمایی مدل نویز با توجه به مفروضات؛ ریاضیات ادراکی: اثرات تصنعی تولید شده و توضیح آنها به عنوان نقص های مدل؛ اندازه گیری مقدار خطا: با جدولهای مبنی بر اختلاف نسخه حذف نویز شده و مدل اصلی. قدرتمندترین روش برای مقایسه روشها به نظر میرسد که نویزی باشد که بیشتر در تصاویر طبیعی دیده میشود. برای شبیه سازی این مدلهای نویز به نظر میرسد نویز سفید بهترین باشد.
در فایل زیپ شده اصل مقاله بصورت PDF، ترجمه بصورت فایل Word، کدهای برنامه بصورت کد متلب و شرح خط به خط برنامه متلب در یک فایل Word به صورت مجزا وجود دارد.
الگوریتمPSO یک الگوریتم جستجوی اجتماعی است که از روی رفتار اجتماعی دستههای پرندگان مدل شده است. PSO روش محبوبی است که برای حل مشکلات مناسب سازی در شبکه های حسگر بی سیم به دلیل آسان بودنش، کیفیت بالای راه حل هایش، همگرایی سریع و ظرفیت، محاسبه ای نامشخص خود مورد استفاده قرار گرفته است. PSO مستلزم مقادیر زیادی حافظه است که ممکن است اجرای آن را برای ایستگاههای اصلی سرشار از منبع کاهش دهد. این متن کاربردهای شبکه حسگر بی سیم موفق فراوانی دارد که فواید PSO را مورد استفاده قرار می دهد. گردآوری اطلاعات نیازمند مناسب سازی توزیع شده مکرر و راه حل های سریع می باشد. بنابراین، PSOبه طور متوسط آن را مناسب می سازد. صف بندی ثابت، موقعیت یابی و خوشه بندی مشکلاتی هستند که فقط یکبار در ایستگاه مرکزی حل شده اند. PSO آنها را بسیار مناسب ساخته است .
فصل اول
معرفی شبکه های بی سیم حسگر
نگاهی به شبکه های بی سیم حسگر
توضیحات اولیه
ساختمان گره
ویژگی های عمومی یک شبکه حسگر
ساختار ارتباطی شبکه های حسگر
ساختار خودکار
ساختار نیمه خودکار
فاکتورهای طراحی
تحمل خرابی
قابلیت گسترش
هزینه تولید
محدودیتهای سخت افزاری یک گره حسگر
توپولوژی شبکه
محیط کار
مصرف توان
کاربردهای شبکههای بیسیم حسگر
کاربردهای رهایی از سانحه
کنترل محیطی و نگاشت تنوع زیستی
سازههای هوشمند
مدیریت تاسیسات
نظارت ماشین آلات و نگهداری پیشگیرانه
کشاورزی دقیق
پزشکی و بهداشت
حمل و نقل
پردازش راه دور
پشته پروتکلی
انواع منبعها و چاهکها
شبکههای تک پرشی در مقابل شبکههای چند پرشی
انواع تحرک
پروتکلهای مسیریابی برای شبکههای حسگر بیسیم
1- پروتکلهایی بر مبنای داده
مسیریابی به روش سیلآسا و خبردهی
پروتکلهای حسگر برای اطلاعات از طریق مذاکره
انتشار جهتدار
مسیریابی پخشی
2- پروتکلهای سلسله مراتبی
LEACH
PEGASIS
TEEN and APTEEN
3- پروتکلهای بر مبنای مکان
MECN
GAF
عیب های شبکه حسگر
روش های امنیتی در شبکههای بی سیم
WEPSSIDMACفصل دومبهینه سازی
تئوری بهینهسازی
انواع مسائل بهینه سازی و تقسیم بندی آنها از دیدگاه های مختلف
بهینه سازی با سعی خطا، بهینه سازی با تابع
بهینه سازی تک بعدی و بهینه سازی چند بعدی
بهینه سازی پویا و بهینه سازی ایستا
بهینه سازی مقید و نا مقید
بهینه سازی پیوسته و یا گسسته
بهینه سازی تک معیاره و چند معیاره
برخی دیگر از روش های بهینه سازی
روش مبتنی بر گرادیان
روند کلی بهینه سازی گرادیانی
روش سیمپلکس
الگوریتم ژنتیک
ویژگیهای الگوریتم ژنتیک
Ant colony
الگوریتم کلونی مورچه ها چیست؟
مزیتهای ACO
کاربردهای ACO
5- الگوریتم رقابت استعماری
شکل دهی امپراطوریهای اولیه
سیاست جذب: حرکت مستعمرهها به سمت امپریالیست
انقلاب؛ تغییرات ناگهانی در موقعیت یک کشور
جابجایی موقعیت مستعمره و امپریالیست
رقابت استعماری
سقوط امپراطوریهای ضعیف
شبه کد
کاربردها
فصل سوم
Particle Swarm Optimitation(PSO)
مقدمه
(Particle Swarm Optimitation(PSO
توپولوژی های همسایگی PSO
تاریخچه خوشه بندی
تعریف خوشه بندی
تحلیل خوشه بندی
فرضیه موقعیت تصادفی
فرضیه برچسب تصادفی
فرضیه نمودارتصادفی
مراحل خوشه بندی
فرایندهای خوشه بندی
مطالعه تکنیک های خوشه بندی
کاربرد های ویژه PSO
تعریف کلاسیک خوشه بندی
معیار نزدیک بودن
کاربرد های خوشه بندی
تعداد خوشه ها
داده ها
تعداد ویژگی ها و مشخصات آنها
مقدار دهی اولیه برای Kmeans
Kmeans
Pso و کاربرد آن در خوشه بندی
رمز گذاری فضای سه بعدی در ذرات
کمی کردن کیفیت خوشه بندی
Pso و خوشه بندی(الگوریتم 1)
Pso و خوشه بندی در ناحیه بندی تصویر
Pso و خوشه بندی(الگوریتم 2)
ترکیب pso و kmeans برای خوشه بندی (الگوریتم هیبرید)
ترکیب Pso و GA
فصل چهارم
بهینه سازی wsn با استفاده از الگوریتم بهینه سازی pso
نصب گره ها WSN بهینه
موقعیت یابی گره ثابت
موقعیت یابی گره متحرک
VFCPSO
موقعیت یابی ایستگاه اصلی
تعیین محل گره در WSNها (شبکه های حسگر بی سیم)
تعیین موقعیت های گره های هدف
1) PSO تکراری
2) PSO بدون علامت
3) PSO با چهار علامت
خوشه بندی هشدار انرژی (EAC) در WSNها
خوشه بندی PSO
MST-PSO
جمع آوری اطلاعات در WSNها
تخصیص نیروی انتقال مناسب
تعیین آستانه های مکانی- مناسب
تشکیل حسگر مناسب
نتیجه گیری
مراجع فارسی
مراجع انگلیسی
هر برنامه، می بایست دارای یک طرح و یا الگو بوده تا برنامه نویس بر اساس آن عملیات خود را دنبال نماید.از دیدگاه برنامه نویسان ، هر برنامه نیازمند یک الگوریتم است . بعبارت ساده ، الگوریتم ، بیانه ای روشمند بمنظور حل یک مسئله بخصوص است . از منظر برنامه نویسان ،الگوریتم بمنزله یک طرح کلی و یا مجموعه دستورالعمل هائی است که با دنبال نمودن آنان ، برنامه ای تولید می گردد.
الگوریتم های میکرو در مقابل ماکرو
الگوریتم ها دارای ویژگی های متفاوتی می باشند . ما می توانیم در رابطه با الگوریتم استفاده شده به منظور نوشتن یک برنامه مشخص صحبت نمائیم . از این زاویه ، ما صرفا" در رابطه با الگوریتم در سطح ماکرو(macro level) ، صحبت نموده ایم . در چنین مواردی ، الگوریتم ارائه شده ، سعی در بدست آوردن جنبه های عمومی برنامه از طریق یک مرور کلی به برنامه در مقابل درگیر شدن در جزئیات را دارد.ما می توانیم در رابطه با الگوریتم ها ، از سطح "میکرو" صحبت نمائیم . از این زاویه ، به سطوح پایین تر رفته و به عوامل اساسی ونگهدارنده ای که یک جنبه خاص از برنامه را با یکدیگر مرتبط می نماید، صحبت کرد. مثلا" در صورتیکه شما دارای داده هائی هستید که می بایست قبل از استفاده مرتب گردند ،الگوریتم های مرتب سازی متعددی در این زمینه وجود داشته و می توان یکی از آنها را بمنظور تامین اهداف مورد نظر خود انتخاب نمود. انتخاب یک الگوریتم مرتب سازی ، صرفا" باعث حل شدن یکی از جنبه های متفاوت برنامه می گردد . پس از مرتب سازی داده ها ،می بایست از یک الگوریتم میکرو دیگر بمنظور نمایش داده ها ی مرتب شده استفاده گردد .
همانگونه که احتمالا" حدس زده اید ، ما می توانیم تمام الگوریتم های میکرو را بمنظور ایجاد یک الگوریتم ماکرو ، جمع آوری نمائیم . اگر ما با الگوریتم های میکرو ، آغاز نمائیم ، و حرکت خود را بسمت نمایش ماکروی یک برنامه ، پیش ببریم ، کاری را انجام داده ایم که موسوم به طراحی " پایین به بالا" (buttom-up) ، است . اگر ما فعالیت خود را با یک الگوریتم ماکرو آعاز و حرکت خود را بسمت پائین و الگوریتم های میکرو ، ادامه دهیم ، طراحی از نوع " بالا به پایین " (top-down) را انجام داده ایم .
شاید این سوال مطرح گردد که کدام روش بهتر است ؟ اگر شما تمام مقالاتی را که تاکنون در این زمینه نوشته شده اند را دنبال نمائید ، هرگز به یک نتیجه قابل قبول دست نخواهید یافت . هر رویکرد، دارای نکات مثبت و منفی مربوط به خود است . صرفنظر از رویکرد طراحی استفاده شده ، می بایست دارای الگوئی (طرحی) مناسب برای برنامه باشیم .حداقل، نیازمند یک اعلامیه از مسئله برنامه نویسی و یک طرح ( الگو) برای برخورد با مسئله ، خواهیم بود . پس از شناخت مسئله ، می توان نحوه حل مسئله را ترسیم کرد. شناخت عمیق و مناسب نسبت به مسئله ای که قصد حل آن را داریم ، شرط اساسی و ضروری برای طراحی یک برنامه است .
با توجه به اینکه این اعتقاد وجود دارد که شناخت جامع و کلی از مسئله ای که حل آن را داریم ، بخشی ضروری در اولین مرحله برنامه نویسی است ، ما در ادامه از رویکرد "بالا - پایین "، تبعیـت می نمائیم . فراموش نکنیم که رویکرد فوق ، امکان مشاهده مجازی از هر مسئله برنامه نویسی را فراهم خواهد نمود.
مراحل پنج گانه
هر برنامه را صرفنظر از میزان پیچیدگی آن ، می توان به پنج مرحله اساسی تجزیه کرد :
• مقدار دهی اولیه
• ورودی
• پردازش
• خروجی
• پاکسازی
در ادامه به بررسی هریک از مراحل فوق ، خواهیم پرداخت .
مرحله مقداردهی اولیه
مرحله مقداردهی اولیه ، اولین مرحله ای است که می بایست در زمان طراحی یک برنامه در رابطه با آن فکر کرد . مرحله فوق ، شامل تمامی عملیات مورد نیازی است که برنامه می بایست قبل ازبرقراری ارتباط با کاربر ، انجام دهد . در ابتدا ممکن است این موضوع که عملیاتی را قبل از برقراری ارتباط با کاربر می بایست انجام داد ، تا اندازه ای عجیب بنظر رسد ولی احتمالا" برنامه های زیادی را مشاهده نموده اید که در این راستا عملیات مشابهی را انجام می دهند. مثلا" ، در زمان استفاده از برنامه هائی نظیر Word ، Excel و یا برنامه های مشابه دیگر ، با چنین مواردی برخورد نموده ایم . مثلا" با انتخاب گزینه منو File ، می توان لیستی از فایل هائی را که با آنها کار کرده ایم در بخش انتهائی منوفوق ، مشاهده کرد. ( مشاهده آخرین فایل های استفاده شده در یک برنامه خاص ، با استفاده از جادو! میسر نشده است ) . برنامه مورد نظر شاید ، لیست فایل های اخیر را از دیسک خوانده و آنها را به لیست مربوطه در منوی File ، اضافه کرده باشد . با توجه به اینکه لیست فایل های فوق ، می بایست قبل از اینکه برنامه هر چیز دیگر را برای کاربر نمایش دهد ، خوانده و نمایش داده شوند ، می توان انجام عملیات فوق را نمونه ای از مرحله مقداردهی اولیه، در نظر گرفت.
یکی دیگر از عملیات متداول که به این مرحله مرتبط می باشد ، خواندن فایل های Setup است . چنین فایل هائی ممکن است حاوی اطلاعاتی در رابطه با نام مسیرهائی باشند که بانک ها ی اطلاعاتی خاصی و یا فایل های ذخیره شده دیگری را بر روی دیسک را مشخص می نمایند . با توجه به نوع برنامه ای که اجراء می گردد ، فایل های Setup می توانند شامل اطلاعاتی در رابطه با فونت های نمایش ، نام و محل چاپگر ، رنگ های زمینه و رویه ، وضوح تصویر صفحه نمایشگر و اطلاعات مشابهی دیگر باشند . سایر برنامه ها ممکن است مستلزم خواندن اطلاعاتی در رابطه با اتصالات شبکه ، مجوزهای امنیتی و دستیابی به اینترنت ، رمزهای عبور و سایر اطلاعات حساس دیگر باشند . در چنین مواردی فایل های Setup دارای نقشی مهم خواهند بود.
در زمان طراحی یک برنامه ، همواره می بایست در رابطه با اطلاعاتی که یک برنامه قبل آغاز خدمات و عملیات خود به آنها نیازمند است ، اندیشید و برای آنان در مرحله مقداردهی اولیه راهکار مناسب را انتخاب کرد . مرحله مقداردهی اولیه احتمالا" جائی است که می بایست از طریق آن اقدام به ارائه راهکار مناسب در جهت پاسخ به نیازهای فوق ، کرد.
مرحله ورودی
مرحله ورودی ، در حقیقت چیزی است که انتظار دارید باشد! مرحله فوق ، شامل اخذ ( جمع آوری ) هر آنچیزی است که یک برنامه برای انجام فعالیت های خود به آنها نیاز خواهد داشت . دراکثر موارد، اگر استنباط مناسبی از عملیاتی را که یک برنامه قصد انجام آنان را دارد ، حاصل گردد، مشخص نمودن لیستی از ورودی ها ، کاری ساده خواهد بود. مثلا" اگر شما قصد نوشتن یک برنامه وام را دارید ، می دانید که می بایست از کاربر میزان وام درخواستی ، بهره موردنظر و مدت زمان وام ، درخواست گردد.
در حالات دیگر، لازم است در رابطه با نوع ورودی هائی که می بایست از کاربر اخذ گردد، بررسی لازم و مبتنی بر اندیشه را دنبال نمود. مثلا" در صورتیکه قصدنوشتن یک برنامه دفترچه آدرس را دارید ، آیا می خواهید نام فایل حاوی دفترچه تلفن و محل ذخیره فایل مربوطه را در هر مرتبه که برنامه اجراء می گردد ، از کاربر درخواست نمائید ؟ بعبارت دیگر برخی از مراحل ورودی می توانند و شاید می بایست ، توسط مرحله مقدار دهی انجام شوند. ماهیت واقعی میزان اطلاعاتی که می توان آنها را در مرحله مقداردهی خواند ، بستگی به رفتار برنامه دارد. بعنوان یک قانون عمومی می توان به این مورد اشاره داشت که اکثر کاربران تمایل دارند که اطلاعات تکراری در یک فایل Setup و یا مقداردهی اولیه ذخیره گردد (در مقابل اینکه هر مرتبه که برنامه اجراء می گردد ، مجبور به ورود اطلاعات تکرای باشند ) .
فایل های Setup بسیار مناسب بوده و در هرموردی که امکان بخدمت گرفتن آنان منطقی بنظر می آید ، می بایست از آنان استفاده گردد . برخی دیگر از اطلاعات اولیه دارای ماهیت خاص خود بوده و تا زمانیکه کاربر آنها را تایپ ننماید ، شناخته نمی گردند . در مثال وام اشاره شده ، می توان از TextBox های متعددی بمنظور احذ اطلاعات از کاربر و استفاده از آنان در برنامه ، کمک گرفت . با توجه به اینکه کاربر می بایست با این TextBox ها مرتبط تا اطلاعات موردنیاز برنامه را وارد نماید ، روشی را که شما بمنظور ارائه Textbox ,Labels ,Menus و سایر عناصر برنامه ، استفاده می نمائید ، یکی از بخش های مهم یک برنامه یعنی رابط کاربر ( user interface ) را مشخص خواهد کرد . فراموش نکنیم یکی از عوامل موفقیت هر نرم افزار ، بخش رابط کاربر آن است . طراحی مناسب بخش فوق ، امروزه بعنوان تخصصی خاص در طراحی و پیاد ه سازی نرم افزار مطرح و دارای جایگاه خاص خود است .
مرحله پردازش
مرحله پردازش ، شامل انجام عملیات بر روی ورودی (ورودی ها ) ، بمنظور تولید نتایج مورد نظر برای برنامه است . در مثال وام ، برنامه پس از دریافت ورودی های مورد نظر ( میزان وام ، درصد بهره و زمان وام ) آنها را از طریق یک معادله مالی بیکدیگر مرتبط و پس از حل معادله ، نتیجه مورد نظر حاصل خواهد شد( میزان پرداخت ماهانه ) . بعبارت دیگر ، مرحله پردازش قادر به دریافت ورودی ، برخورد با آنها و تولید پاسخ مناسب به مسئله است . توجه داشته باشید که مرحله پردازش همواره باعث نمایش چیزی بر روی نمایشگر نخواهد شد. هدف ، عمل ( عملیات ) برروی داده ( داده ها ) بمنظور تولید یک نتیجه ( نتایج ) است . در این رابطه هیچگونه استثنائی وجود ندارد . در صورتیکه در برنامه ای از قبل می دانیم که مرحله پردازش زمان زیادی طول خواهد کشید ، منطقی است که فیدبک های لازم بمنظور آگاهی کاربر از میزان و درصد انجام پردازش ( پردازش ها ) در اختیار وی گذاشته شود ( در زمانیکه برنامه در حال اجراء است ) . در این رابطه می توان از روش های متعددی استفاده کرد . ( ارائه یک میله پیشرفت ، برآورد زمان تقریبی بمنظور اتمام عملیات ) .
مرحله خروجی
مرحله فوق ، پاسخ ( پاسخ ها ی) مناسب و مورد انتظار را به کاربران مبنی بر حل مسئله مورد نظر ، ارائه می نماید. تعداد زیادی ازبرنامه ها ، پاسخ نهائی ( نتیجه ) خود را از طریق یک Textbox ، نمایش و در اختیار کاربر قرار می دهند . ، مثلا" اگر برنامه ای نوشته شده است که قصد محاسبه و نمایش میزان پرداخت ماهیانه یک وام دریافتی را داشته باشد ، می توان نتیجه بدست آمده (پرداخت ماهانه) را از طریق یک textbox ، ارائه تا پاسخی مناسب در ارتباط با مرحله خروجی یک برنامه، داده شده باشد . سایر برنامه ها ممکن است دارای وضعیتی بمراتب پیچیده تر باشند .مثلا" می توان برنامه ای را در نظر گرفت که نام ، آدرس ، شماره تلفن و سایر اقلام اطلاعاتی را از بانک اطلاعاتی خوانده و در ادامه آنها را بر روی صفحه نمایشگر ، نشان دهد. برنامه هائی اینچنین ، نیازمند شکل مناسبتری از نمایش خروجی بوده و نمی توان با استفاده از چند textbox به خواسته خود دست یافت ( ارائه یک خروجی مطلوب و انعطاف پذیر) در اینگونه موارد می بایست از راهکارهای مناسبتری استفاده گردد . مثلا" می توان از جداول خاصی بمنظور نمایش اطلاعات مورد نظر استفاده کرد .( استفاده از grid و یا List box که برنامه در صورت ضرورت آنان را تکمیل نماید ) . نکته مهمی که می بایست در رابطه با مرحله خروجی رعایت گردد ، آگاهی از این موضوع است که با توجه به نمایش نتایج خروجی برای کاربر، بخش فوق را می توان جزئی از بخش رابط کاربر یک نرم افزار در نظر گرفت . در زمان ورود اطلاعات ( مرحله ورودی ) از عناصر متفاوتی بمنظور اخذ اطلاعات توسط کاربر در بخش رابط استفاده می گردد ، در مرحله خروجی ، بخش رابط کاربر با کاربر بگونه ای دیگر مرتبط خواهد شد ( ارتباطی بمراتب غیر فعالتر نسبت به مرحله ورود اطلاعات ) .
مرحله پاکسازی ( Cleanup )
مرحله پاکسازی ، بمنظور خاتمه بخشیدن مودبانه یک برنامه، پس از تکمیل عملیات مربوطه است. می توان این مرحله را بعنوان مکمل مرحله مقداردهی اولیه در نظر گرفت .با اینکه تعداد زیادی از برنامه های ساده قادرند بسادگی و بدون انجام عملیات تکمیلی توسط برنامه نویس ، خاتمه یابند ولی برنامه های پیچیده زیادی نیازمند برخی کمک ها در این زمینه می باشند. مثلا" اگر برنامه ای یک فایل Setup را بمنظور مقداردهی برخی از متغیرها در زمان مرحله مقداردهی اولیه ، خوانده باشد ، مرحله پاکسازی می تواند شامل بهنگام سازی آندسته از متغیرهای موجود در فایل Setup باشد که نشاندهنده آخرین اطلاعات کاربر است . مرحله پاکسازی ، اغلب شامل بستن فایل ها ( فایل های Setup و بانک اطلاعاتی) است . برخی برنامه ها میزان استفاده از برنامه توسط کاربران را ثبت و اطلاعات مربوطه را در مکانهائی که Log file نامیده می شوند ، ذخیره می نمایند( ثبت مشخصات افرادیکه برنامه را اجراء نموده بهمراه سایر اطلاعات مرتبط نظیر تاریخ و زمان آغاز و توقف برنامه ، در خیلی از برنامه ها به امری ضروری تبدیل شده است ) .
یکی دیگر از انواع فایل های Log به فایل های ثبت خطاء برمی گردد( error log file ) . هدف این نوع از فایل ها ، ثبت اطلاعاتی در رابطه با هر نوع خطائی است که ممکن است در مدت زمان اجرای یک برنامه ، محقق گردد. برنامه نویسان با استفاده از محتویات این نوع فایل ها ، قادر به اشکال زدائی برنامه خواهند بود .
عملیات واقعی و مورد نظری که می بایست در مرحله پاکسازی ، انجام گردد ، به نیازهای یک برنامه بستگی خواهد داشت . معمولا" اگر در برخی برنامه ها عملیات خاصی را در مرحله مقدار دهی اولیه انجام می هیم ، می بایست برخی از عملیات متناظر با آنان را در مرحله پاکسازی انجام داد . باز نمودن و بستن فایل های مورد نیاز در یک برنامه ، نمونه ای متداول از دو مرحله فوق می باشد .
آیا هر برنامه شامل پنج مرحله گفته شده است؟
در پاسخ به سوال فوق می بایست با صراحت پاسخ منفی داده شود. در این راستا ، برنامه های متعددی وجود دارد که مثلا" به مراحل مقداردهی اولیه و یا پاکسازی ، نیاز نخواهند داشت . مراحل مقداردهی اولیه و پاکسازی در مرحله طراحی برنامه های پیچیده مورد توجه جدی قرار خواهند گرفت. بموازات افزایش تجربه در نوشتن برنامه ، شناخت مناسبی در این رابطه بوجود می آید( کدام برنامه به تمام مراحل پنج گانه نیاز و کدامیک نیاز ندارند).طراحان می بایست همواره یک مسئله برنامه نویسی را با فرض وجود پنج مرحله یاد شده ،دنبال نمائید . قطعا" حذف یک مرحله در زمان طراحی بمراتب ساده تر از نادیده گرفتن ! اولیه آن خواهد بود.
پالایش یک طرفه ( SidewaysRefinement )
همانگونه که قبلا" اشاره گردید ، ما علاقه مند به طراحی بالا به پایین می باشیم .( الگوریتم ماکرو بعنوان یک نقطه شروع در فرآیند طراحی برنامه) . پس از انتخاب رویکرد فوق ، می بایست شناخت مناسبی نسبت به مسئله ای که قصد حل آن وجود دارد ، ایجاد گردد. تا رسیدن به سطح میکرو( ارائه الگوریتم های میکرو) بمنظور حل مسئله مورد نظر راه زیادی را در پیش خواهیم داشت. بموازات حرکت از سطح مرور کلی برنامه به خصوصیات و ویژگی های یک برنامه ، می بایست دانش خود را نسبت به جرئیات مربوطه افزایش داد .
فرمت این مقاله به صورت Word و با قابلیت ویرایش میباشد
تعداد صفحات این مقاله 20 صفحه
پس از پرداخت ، میتوانید مقاله را به صورت انلاین دانلود کنید
اجرای قویترین الگوریتم رفع نویز نمودار بدون هیچگونه جابجابب نمودار همراه با سورس برنامه
برای برنامه هایی که با نمودارها سرو کار دارند بهترین گزینه است.