فایلوو

سیستم یکپارچه همکاری در فروش فایل

فایلوو

سیستم یکپارچه همکاری در فروش فایل

تحقیق در مورد الگوریتم

تحقیق در مورد الگوریتم

ک پرداخت و دانلود *پایین مطلب*

 

فرمت فایل:Word (قابل ویرایش و آماده پرینت)

  

تعداد صفحه:25

 

فهرست مطالب

الگوریتم

هر برنامه، می بایست دارای یک طرح و یا الگو  بوده تا برنامه نویس بر اساس آن عملیات خود را دنبال نماید.از دیدگاه برنامه نویسان ، هر برنامه نیازمند یک الگوریتم است . بعبارت ساده ، الگوریتم ، بیانه ای روشمند بمنظور حل یک مسئله بخصوص است . از منظر برنامه نویسان ،الگوریتم بمنزله یک طرح کلی و یا مجموعه دستورالعمل هائی است که با دنبال نمودن آنان ، برنامه ای  تولید می گردد.

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

الگوریتم ها دارای ویژگی های متفاوتی می باشند . ما می توانیم در رابطه با  الگوریتم  استفاده شده  به منظور نوشتن یک برنامه مشخص صحبت نمائیم . از این زاویه  ، ما  صرفا" در رابطه با الگوریتم  در سطح ماکرو(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 )

همانگونه که قبلا" اشاره گردید ، ما علاقه مند به طراحی بالا به پایین می باشیم .( الگوریتم ماکرو بعنوان یک نقطه شروع در فرآیند طراحی برنامه) . پس از انتخاب رویکرد فوق  ، می بایست شناخت مناسبی نسبت به مسئله ای که قصد حل آن وجود دارد ، ایجاد گردد. تا رسیدن به  سطح میکرو( ارائه الگوریتم های میکرو) بمنظور حل مسئله مورد نظر راه زیادی را در پیش خواهیم داشت. بموازات حرکت از سطح مرور کلی برنامه به خصوصیات و ویژگی های یک برنامه ، می بایست دانش خود را نسبت به جرئیات مربوطه افزایش داد .

از پنج مرحله گفته شده ، می توان بمنظور نقطه شروع دید ماکرو خود در زمان فرآیند طراحی استفاده کرد. درادامه ، می توان هر یک از مراحل را بدقت بررسی تا  جزئیات بیشتری در رابطه با مرحله مورد نظر ، مشخص گردد ( استخراج جزئیات لازم در رابطه با تحقق هر مرحله ) .  فرآیند  فوق ، " پالایش یک طرفه " ، نامیده می شود . در ادامه ، بمنظور شناخت مناسب فرآیند پالایش یک طرفه  ، به بررسی یک نمونه می پردازیم .

فرض کنید ، کاربری دارای  یک فایل بانک اطلاعاتی است که در آن تمام قرار ملاقات های وی ، ذخیره شده اند . قرار ملاقات ها در بانک اطلاعاتی با نظم و ترتیب خاص (تاریخ قرار ملاقات ) ذخیره شده اند . کاربر ، می خواهد قادر به مشاهده قرار ملاقات های خود بر اساس حروف الفبائی و بر اساس نام خانوادگی اشخاص مورد نظری که قصد ملاقات با  وی را دارند ، باشد. چگونه می توان از پالایش یک طرفه ، بمنظور طراحی یک را ه حل استفاده کرد؟

پالایش یک طرفه مرحله مقدار دهی اولیه

می دانیم که کاربر دارای یک بانک اطلاعاتی شامل قرار ملاقات ها ، می باشد. ما همچنین می دانیم که کاربر می خواهد لیستی از قرار ملاقات های خود را بصورت مرتب شده و بر اساس نام خانوادگی مشاهده نماید . موارد فوق ، دید ماکروی ما از الگوریتم است . بنابراین ، در مرحله مقداردهی اولیه چه عملیاتی می بایست انجام داد ؟ واضح است که ما نیازمند باز نمودن بانک اطلاعاتی قرار ملاقات ها می باشیم . ما همچنین نیازمند یک فرم ( مثلا" یک فرم مبتنی بر VB.NET و یا فرم وب ) بمنظور نمایش نتایج پس از مرتب سازی قرار ملاقات ها ، خواهیم بود. ( فرض می شود از مکان  بانک اطلاعاتی بر روی شبکه  آگاهی داریم ، و می توان نام و رمز عبور کاربر را از بانک اطلاعاتی مربوطه  بمحض آغاز اجرای برنامه توسط کاربر ، مشخص کرد) . با استفاده از اطلاعات فوق، اولین "پالایش یک طرفه " ، بصورت زیر خواهد بود :

 

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

شبه کد ( PseudoCode )

عملیات پالایش را می توان در رابطه با هر مرحله  با استفاده از "شبه - کد " ، دنبال کرد. شبه کد ،الگوریتمی برای بیان عملیاتی است که می بایست  توسط یک روتین محقق گردد . در این راستا از یک گرامر مشابه انگلیسی ، استفاده می گردد . مثلا"  شبه کد ، روتین IsValidUser بصورت زیر خواهد بود:

شبه کد روتین IsvalidUser

Is ValidUser()
  If  CurrentUserName Not in ValidUserList
        Display Invalid User Error Message
        Terminate Program
  Else
       Return ValidUserIDNumber
End

 

 

شبه کد ، عملیاتی را که یک روتین می بایست انجام دهد ، بدون  اتکاء به گرامر یک زبان برنامه نویسی خاص ، تشریح می نماید. شبه کد ، زبانی مبتنی بر گرامری خاص نبوده  و  الگوریتمی از عملیات مورد نظر که می بایست توسط یک روتین انجام شود را مشخص می نماید. مزیت شبه کد، شباهت زیاد آن به زبان انگلیسی است و می توان آن را با افرادیکه برنامه نویس نبوده و بنوعی در فاز طراحی صاحبنظر می باشند  ، به اشتراک تا صحت استنباطات حاصل شده تائید و یا اصلاح گردد.( در فاز طراحی می بایست یک ارتباط مستمر با کاربران صاحبنظر برقرارگردد، ما قرار است مسئله آنان را حل نمائیم نه مسئله خود را  و یا نمی خواهیم مسئله ای دیگر را بر حجم مسائل آنان اضافه نمائیم!)  بدین ترتیب ، امکان تشخیص خطاء و اعمال تعییرات لازم در خصوص برخورد با خطاهای احتمالی در ابتدا فراهم می گردد ( یکی از اصول مهندسی نرم افزار در این رابطه به این موضوع اشاره می نماید که به هر میزان که زمان کشف یک خطاء در چرخه حیات یک برنامه سریعتر باشد ، هزینه برخورد با  خطاء کاهش خواهد یافت ) .

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

 الگوریتمی عمومی برای یافتن "Site label "هائیکه احتمال شبکه را حداکثر کنند به نام "Belief Propagation" (BP) نامیده می‌شوند و مهیا ساز یک ابزار مؤثر برای حل مسائل استنتاجی از طریق گسترش احتمالات مرزی از طریق شبکه عصبی است. در این جا سه تابع اساسی احتمال وجود دارد:

 

احتمال گره

 

احتمال مرزی

 

احتمالات مشروط

 

ایدة اصلی Belief Propagation عبارت است از:

 احتمال Lable های پایه در یک حالت پایه در شبکه عصبی که از طریق محاسبة احتمال نهائی (جمع زدن) بر روی احتمال برای گره های پایه، داده شده فقط برای احتمالات "Site Label" های همسایگی Markov ، Ni که در شکل زیرنشان داده شده است (مثلاً node ها را می‌توان به عنوان مدارهای نانومقیاس input/output در نظر گرفت)

 

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

نودهای نوع اول از طریق یک ورودی محاسباتی که مقدار آن مقید به setup مسأله است.

 چنین نودهائی به نام «نودهای قابل مشاهد» نامیده می‌شوند و سایر نودها به نام «نودهای پنهان» نامیده می‌شوند. ما به احتمالاتی استناد می‌کنیم که به صورت تقریبی محاسبه می‌شوند و به عنوان "belief" می‌نامیم و belief در نود i ام را بصورت b(xi) نشان می‌دهیم.

در روش MRF، نودهای قابل مشاهده موسوم به yi ، ثابت فرض می‌شود و xi معرف نودهای پنهان است.  همان است. سپس فرض می‌شود که تعدادی وابستگی آماری بین xi و yi در هر موقعیت i ام وجود دارد و  به عنوان «احتمال گره» نامیده می‌شود. تابع فوق اغلب به عنوان evidence برای xi خوانده می‌شود.

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

 

که در آن z یک ثابت نرمال شده است.

این احتمالات محاسباتی، قابلیت تکثیر در گام بعدی محاسبات را برآورد می‌کند. اثبات شده است که این الگوریتم تکثیر به حداکثر احتمال اختصاص یافته به کل شبکه همگرا خواهد شد و در آن هیچ چرخه  ای بیرونی وجود ندارد. این الگوریم افزایشی،« پیچیدگی محاسباتی» در مرتبه تعداد نودهای موجود در شبکه با یک جملة وزن دهنده به نسبت ابعاد همسایگی دارد. در مورد چرخه ها، احتمالات می‌بایستی به

 

 

 

صورت ترکیبی بر روی حوزه شبکه انجام شود که متضمن راه حلهای مبتنی بر حداکثر احتمال است. یعنی اینکه، می‌بایستی شبکه به بلوکهای شبکه‌ای loop – free که هر یک به صورت درونی دارای loop هستند، تقسیم شود. به هر حال، نشان داده شده است که الگوریتم تکثیر Belief، به حداکثر حالت احتمال در حضور Loopها، همگرا خواهد شد.

کاربرد های عمومی الگوریتم‌ها به همراه استفاده از ساختمان داده ها:

یکی از کاربرد‌های مهم الگوریتم‌ها و استفاده از ساختمان داده ها در مرتب سازی داده‌ها است. مرتب سازی عملی بنیادی در علم کامپیوتر است. (برنامه‌های زیادی از آن بعنوان یک مرحله میانی استفاده می‌کنند.) در نتیجه تعداد زیادی از الگوریتم‌های مرتب سازی بهبود یافته‌اند . اینکه کدام الگوریتم برای یک کاربرد مورد نظر بهتر است به تعداد اقلام اطلاعاتی که بایستی مرتب شوند , میزان مرتب بودن اقلام, محدودیت‌های حافظه یا زمان و یا نوع دستگاه ذخیره سازی استفاده شده (حافظه اصلی, دیسک‌ها یا نوارهای مغناطیسی و ...) بستگی دارد.

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

مرتب سازی درجی (Insertion sort)

مرتب سازی ادغام (Merge sort)

مرتب سازی انتخابی (Selection sort)

مرتب سازی حبابی (Bubble sort)

مرتب سازی سریع (Quick sort)

مرتب سازی تنها مسئله محاسباتی که در آن الگوریتم‌ها توسعه یافته‌اند نمی‌باشد. کاربرد‌های عملی الگوریتم‌ها و استفاده از ساختمان داده های مناسب در همه جا وجود دارند و شامل نمونه‌های زیر می‌باشند :

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

پروژه ژن انسان با هدف شناسایی 1000000 ژن در DNA انسان , تعیین یک توالی از میلیاردها جفت پایه شیمیایی تشکیل دهنده DNA انسان , ذخیره این اطلاعات در پایگاه‌های داده و توسعه ابزار‌های لازم جهت تحلیل داده‌های مربوطه.

تجارت الکترونیکی این امکان را فراهم می‌کند که کالا‌ها و سرویس یطور الکترونیکی معامله و مبادله شوند. طبیعتاّ این امر نیازمند نگهداری اطلاعات مهمی چون کلمات رمز و صورت حساب‌های خصوصی بانک هاست. رمزگشایی و امضاهای دیجیتالی بر اساس الگوریتم‌های عددی و نظریه اعداد می‌باشند.

نقشه جاده ها که در آن فاصله بین هر جفت تقاطع همجوار مشخص شده‌است. تعداد مسیر‌های ممکن می‌تواند بسیار زیاد باشد؛ هدف ما این است که کوتاه ترین مسیر از یک تقاطع به تقاطع دیگر را بیابیم. این عمل همان مسئله یافتن کوتاه ترین مسیر از یک رأس به رأس دیگر در گراف می‌باشد.

منابع

Introduction to Algorithms (CLRS)-Second Edition - The MIT Press

Babylon dictionary (Persian Computer Encyclopedia) - Computer and IT dictionary for Persian



مشخصات فروشنده

نام و نام خانوادگی : یعقوب ذاکری

شماره تماس : 09017568099 - 07642351068

ایمیل :shopfile95.ir@gmail.com

سایت :shopfile95.sellfile.ir

برای خرید و دانلود فایل و گزارش خرابی از لینک های روبرو اقدام کنید...

پرداخت و دانلودگزارش خرابی و شکایت از فایل

تحقیق در مورد الگوریتم اجتماع مورچه

تحقیق در مورد الگوریتم اجتماع مورچه

لینک پرداخت و دانلود *پایین مطلب*

فرمت فایل:Word (قابل ویرایش و آماده پرینت)

تعداد صفحه: 12
فهرست:

1- معرفی

 

-2- رفتار طبیعی مورچه

 

3بهینه سازی کلونی مورچه ساده(SACO)

 

 

الگوریتم اجتماع مورچه (Ant Colony Algorithm)

1- معرفی

یکی از مسائلی که به­وسیله­ی زیست­شنا­سان مورد مطالعه قرار گرفته است درک این موضوع است که چگونه موجودات تقریبا کور مانند مورچه­ها کوتاه­ترین مسیر را از لانه­ی خود تا منبع غذا و بر عکس پیدا می­کنند.آن­ها پی بردند که یک رسانه برای ابلاغ اطلاعات بین تک­تک مورچه­ها مورد استفاده قرار می­گیرد و برای تصمیم­گیری درمورد این­که کدام مسیر را انتخاب کنند به­کار می­رود که آن رسانه عبارت است از بو(اثر) ماده­ای به­نام فرومون.

 الگوریتم­های لانه­ی مورچه از جمله روش­های فرامکاشفه­ای هستند که برای حل مسایل بهینه­سازی سخت پیشنهاد شده­اند. این الگوریتم­ها در آغاز از رفتارهای اجتماعی پشت سرهم قرار گرفتن و تعقیب کردن الهام گرفته شد، که در جامعه­ی مورچگان مشاهده گردید. یک اجتماع از عامل­های ساده (مورچه­ها) به طور غیر مستقیم از طریق تغییرات پویای (دینامیکی) محیط ارتباط برقرار می­کنند (رد پاهایی از فرومون) و بنابراین بر اساس تجربه­ی اجتماعی آن­ها، یک راه­حل برای یک مسئله ارائه می­دهند.

در این مطالعه مدل کاوش مورچه ها Meta-Heurestic انتخاب شده است و درابتدا الگوریتمهای ساده شرح داده می شود و سپس به مطالعه سیستم AS (ant system) و سیستمACS (ant colony system) وMMAS(max-min ant system) و..... شرح داده می شود.

 

-2- رفتار طبیعی مورچه

یک مورچه در حال حرکت مقداری فرومون دراندازه­های گوناگون از خود بر روی زمین باقی می­گذارد و بدین ترتیب مسیر را به­وسیله­ی بوی این ماده مشخص می­سازد. هنگامی که یک مورچه به­طور تصادفی  و تنها حرکت می­کند با روبه­رو شدن با مسیری که توسط مورچه یا مورچه­های قبلی انتخاب شده و دارای بوی فرومون است به احتمال زیاد آن را  انتخاب می­کند و با فرومونی که خود بر جای می­گذارد بوی آن را در مسیر مذکور تقویت می­نماید.

وقتی رفتار جمعی پدید می­آید، گونه­ای از رفتار خود تقویتی است، یعنی هرچه مورچه ها بو(اثر) ماده­ی مذکور را دنبال کنند آن بو برای مورچه­های پیرو آنها جذاب­تر خواهد بود. فرایند گفته شده به وسیله­ی یک حلقه توصیف می­شود، یعنی احتمال این­که یک مورچه یک مسیر را انتخاب کند متناسب باتعداد مورچه­ها­یی که قبلا آن مسیر را انتخاب کرده­اند افزایش می­یابد.

ایده این است که اگر در یک نقطه معین یک مورچه مجبور است از بین مسیرهای مختلف یکی را انتخاب کند­، مسیرهایی را که توسط مورچه­های قبلی بیش­تر انتخاب شده­اند، به عبارت دیگر سطح بوی آن­ها بالاتر است، با احتمال بیش­تری انتخاب خواهد کرد. به­علاوه سطح فرمون بالاتر معادل مسیر­های کوتاه­تر خواهد بود.

الگوریتم های ACO  بر پایه مدل احتمال پارامتری(مدل فرومون) قرار دارند.

مورچه های مصنوعی به طور افزایشی با اضافه کردن به جا و مناسب مولفه های راه حل تعریف شده به راه حل جزئی مورد نظر راه حلهایی را می سازند.

 

در تصویر بالا مسیرهای متفاوت برای غذایابی دیده می شود.و تعداد مورچه ها و A و B مسیرهای در زمان t جستجو برای یافتن مسیر آغاز و در زمان t+1 مسیر پیدا شده و فرمول مورد استفاده :

 

C کمیتی غیر اکتشافی برای مقدار جذب فرمون است و تحت تاثیر فرمون ذخیره شده در فرآیند است.و باتعداد مورچه ها نسبت مستقیم دارد.در اثر تجربه مقدار برای =2 و c=20 است. اگر پس مسیر A بهتر از B است.

اگر دو مسیر یکسان باشند مسیر بصورت تصادفی و تعداد مورچه ها یکسان باشد در بیشتر موارد مسیر کوتاهتر بعد از مدتی پیدا می شودو مقدار فرمون مسیر کوتاهتر بیشتر از مسیر دیگر است.

و شاخه قویتر مورد استفاده قرار میگیرد.الگوریتم زیر برای ایجاد مسیر کوتاهتر است:

Let r~U(0,1)

     For each potential path A do

       Calculate Pa using ,e.g.,equation (1.1)

             If r<=Pa then

                 Follow path A;

                 Breack ;

           End

End

-3بهینه سازی کلونی مورچه ساده(SACO) :

 

برای انجام این کار، مورچه های مصنوعی یک گام برداری تصادفی را روی گراف همبند کامل G=(C,L) انجام می دهند، که راسهای آن مولفه های راه حل C و مجموعهء L ، اتصالات است.این گراف، گراف ساخت[1] نام دارد.

 

وقتی یک مسئله CO دارای محدودیت را در نظر می گیریم، محدودیتهای مسئله در رویه سازندهء مورچه ها ساخته می شوند به نحوی که در هر مرحله از فرایند ساخت فقط مولفه هایی از راه حل که عملی هستند می توانند به راه حل جزئی فعلی اضافه شوند. مولفه­های ci ЄC با پارامتر ردیابی فرومون Ti متناظر می شوند و اتصالات Lij ЄL می توانند با پارامتر ردیابی فرومون Tij متناظر گردند. مجموعهء کل این پارامترها با T نشان داده می­شود.

مقادیر این پارامترها ( مقادیر فرومون) به ترتیب با نشان داده می شوند.

به علاوه مولفه ها و اتصالات به ترتیب می توانند با مقدار اکتشافی  متناظر گردند.

مجموعهء همه مقادیر را با H نشان می دهیم. . این مقادیر برای تصمیمات احتمالی مورچه ها در مورد چگونگی حرکت در گراف ساخت استفاده می گردند.احتمالات مربوط به گراف ساخت، احتمالات انتقال نامیده می شود.

بعد از مقدار دهی اولیه به مقادیر فرومون ، در هر مرحله ، هر مورچه یک راه حل را می سازد. سپس این راه حلها برای به روزرسانی مقادیر فرومون استفاده می گردند

 

در ابتدا، کلیهء مقادیر فرومون با یک مقدار کوچک مشابه ph>0 مقداردهی می شوند. در فاز ساخت، یک مورچه با افزودن مولفه هایی به راه حل جزئی فعلی ، به تدریج یک راه حل را ایجاد می کند.اگر هیچ نودی وجود نداشته باشد =0 و در غیر اینصورت فرآیند انجام و به می رسد.ودر صورت افتادن در حلقه باید ان مسیر حذف و دوباره عملیات انجام گردد. در مقادیر بالا برای مقدار فرمون را تقویت میکندو دراین حال گره های اصلی بدست آمده وحلقه ها از بین می روند.وبرای فرمون اضافه شده استفاده می گردد.                

وبرای هر مسیر پیموده شده برای K مورچه :

و این بدین معنی است که تعداد عبور ومرور برای هر مسیر طی شده بصورت معمولی باشد در هر بار مقدار F(xk(t)) فرمون بدست می آید و اگر برای همه یکسان باشد بنابراین تنها مسیری متفاوت خواهد بود که کوتاهتر باشد.و همچنین مقدار کاهش فرمون F(xk(t))/1 خواهد بود.

بنا براین مقدار طول مسیرها مقدار F را کاهش داده و مورچه ها مجبور می شوند مسیر کوتاهتر را پیدا نموده وتغییر مسیر دهند و مانع همگرایی قبل از موعد گردند والگوریتم ان بصورت زیر خواهد بود.

  • مقادیر ضمنی : رفتار مورچه ها در طول مسیر متفاوت تحت تاثیر بقیه مورچه ها قرار دارد.
  • مقادیر صریح: مقادیر فرمون تولید شده متناسب با مقدار فرمون محیط است.

   در الگوریتم باید شدت تکرار   قبل از استحکام مسیرهای جدید برای انها محاسبه شود.           با      

مقدار نرخ تغییر فرمون است زیرا برای کنترل یادآوری مسیر قبلی است

در مقادیر بالا فرمون بسرعت رشد می کند و اگر کم شود نرخ رشد کاهش می یابد =1 باشد جستجو کاملا تصادفی خواهد بود.برای مورچه ها انتخاب مسیر بعدی وابسته به اطلاعاتی است که مورچه های دیگر از طریق فرمون بجا گذاشته اند بنابراین در یک محیط محلی انتخاب مسیر بعدی تصادفی نخواهد بود.

SACO:

1)بطور معمول در گرافهای ساده نزدیکترین مسیر انتخاب می شوند.

2) در گرافهای بزرگتر،اگر در پارامترهای انتخابی حساسیت کم باشد کارایی کم می شود :

         الف:همگرایی در مسیرهای کوتاه برای تعداد مشخص مورچه خوب                           است.

       ب:اگر =0 یعنی تغییرات نداریم و الگوریتم همگرا نیست.

         ج:اگر کم باشد در مسیر کوتاه همگرایی داریم برای مقادیر بالا باید رفتار همگرا داشته باشد.

 

 

ص 374

 

 

 

 

Early ant algorithm:

در مطالعه الگوریتم ACO تصمیم گیری برای طول مسیر بود که با افزایش طول مسیر کارایی آن پایین می امدو تغییراتی نیز برای اضافه شدن اطلاعات(فرمون) و اکتشاف لینکهاو حافظه برای هر دوره و بروز زسانی لینکها باید داشته باشیم.

Ant system:

اولین الگوریتم پیشرفته بوسیله دوریگو مورد مطالعه قرار گرفت و این پیشرفت روی SACO ،بوسیله تغییرات در وتغییرات در اکتشاف لینکها و اضافه نمودن حافظه می باشد.

در AS تغییرات نود I به j بصورت:

اولویت اثردر محاسبه هیورستیک به هنگام حرکت از نود I به j در مقدار اثرگذار بوده ومقدار کم میگردد.

مقدار تمرکز فرمون در هنگام حرکت باید نگهداری شود.

پس پارامترهای و در حفظ شده و باالگوریتم اکتشافی GREEDY مقدارآنها محاسبه می گردد.

مسائلی که درآنها هزینه و یا فاصله کمینه مورد نیاز است با محاسبه می شوند.

وبرای طی نشدن مسیری خاص می توان یک لیست ممنوع تولید کرد(حلقه مانع که نباید توسط مورچه ها طی شود )ومورچه در هنگام دیدن یک نود جدید آن را با لیست ممنوع مقایسه وسپس تصمیم می گیرد که انرا طی کند یا نه؟

و فرمول محاسبه حلقه مانع:

 

پارامتر مقدار فرمون در اتصال  با مقدار است.و برای مقادیر کم ، و پارامتر باید از آن بیرون رود.

 

 

برای مورچه بعدی با مقدار محاسبه می گردد.برای تشخیص سیکل:

 

در چرخه پیاده سازی شده فرمون با مقدار در توابع اصلی بروز رسانی میشود و Q مقدار مثبت ان است. اگر سیکلی وجود دارد مقدار فرمون را بروز برسان.

 

برای آنکه بتوانیم تراکم مورچه ها را در سیکل محاسبه کنیم.

 

فرمون در مسیر با تراکم بالا محاسبه می گرددو برای کمیت مورچه ها نیز چون اطلاعات بصورت محلی ذخیره می گردندباید بروز زسانی شوند

 

در این الگوریتم تمامی مکانها به مورچه ها اعلام گردید و جایگاه مورچه ها نیز بصورت تصادفی قرار گرفت و کوتاهترین مسیر نیز اعلام شد.

ص 379

T=0

Initialize all parameters i.e.                                        

Place all ants k=1 ,…, nk    

For each link (I,j) do

 

End

Repeat

For each ant k= 1,….,nk do

xk (t)=0

repeat

from current node I , select next node j with probability as defined in equation (23.6)

xk (t) = xk (t) {(I,j)}

until full path has been constructed;

compute f(xk (t));

end

for each link (I,j) do

apply evaporation using equation (23.5);

calculate using equation(23.10)

update pheromone using equation (23.4)

end

for each link ( I,j) do

ti,j (t +1) = t I,j (t);

end

t= t+1;

until stopping condition is true;

return xk (t) : f(xk (t)) = min k=1,…,nk {f(x(t))};

 

تفاوت ACS با AS :

1)افزایش مسیرهای متفاوت برای پیمودن

2)در مسیرها فرمون متفاوت تولید می گردد.

3)مکان فرمون محلی بروز می شود.

4)لیست کاندید برای هر نود تعریف می شود.

در ACS قانون افزایشی موجب انجام پردازش تصادفی متناسب با مسیر می شود.توانایی اکتشاف واستخراج نودها بالا می رود.K مورچه در مکان نود جاری هستند پس به نود بعدی حرکت می کنند.

 

قانون افزایش برای ایجاد نود بعدی مقدار فرمون بیشتر است پس انتخاب نود بعدی بصورت تصادفی خواهد بود.

 

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

 

1)بهترین تکرار ،جائیکه بدست اورده و بهترین مسیر در زمان تکرار در نقطه بدست امده است.

2)بهترین ناحیه سراسری ، جائیکه بدست اورده است.

فرمون با مقدار برای مسیرهای کوتاه مناسب بود پس مقدار قبلی با جدید اضافه می گردد.

 

ACS نزدیکترین همسایگی را نیز پیدا میکند و شرایط نودها در اولین برخورد قرار می دهد.در لیست شرایط بوسیله کاهش فاصله نود بعدی را انتخاب می کند و اگر لیست کاندید خالی بود نود بعدی انتخاب می گردد.و شرایط جدید نزدیکترین شرایط به قبلی باشد.

 

 

الگوریتم MAX-MIN    

سیستم مورچه برای مسائل پیچیده ایستا استفاده می شود که ایستایی در اینجا برای همه مورچه ها مسیر یکسان را تعریف می کند و در هنگام استخراج اکتشاف مقدار فرومون بالا می رود . (استاتزل و هاس) سیستم مورچه

max-min را نا م MMAS برای حل مسئله ارائه دادند و تفاوت آن با AS

شدت فرومون تطبیق داده شده در فاصله محدود است که مقدار بهترین فرومون با بیشترین مقدار را تایید می کندو در آن از مکانیسم هموار سازی فرومون استفاده می گردد.

ایستایی در نقطه تمرکز فرومون ti,j در بیشتریم مقدار و بهترین تکرار مسیر با فاکتور شاخه با مقدار 0.05   هست. در نقطه ایستاییکاهش می یابد.

زیرا به وسیله تعداد لینک های نود تعریف می شود.

خروجی الگوریتم max-min تغییر رنج برای همه ti,j   گسترش می دهد. و در این نسخه tmin , , t max پارامترهای استاتیک وابسته هستندو مقدار جدید برای تابع فرومون تمرکز یافته در مقادیر بالاست و همچنین به رشد سریع فرومون و بهترین همگرایی کمک می کندو کاهش تغییرات در لینکهای پایین تئوری کاهش توانایی نامیده می شودو فرایند جستجوی سراسری در الگوریتم های بعدی مورد استفاده قرار می گیرد.

 

 


[1] Construction graph

 

 

 



مشخصات فروشنده

نام و نام خانوادگی : یعقوب ذاکری

شماره تماس : 09017568099 - 07642351068

ایمیل :shopfile95.ir@gmail.com

سایت :shopfile95.sellfile.ir

برای خرید و دانلود فایل و گزارش خرابی از لینک های روبرو اقدام کنید...

پرداخت و دانلودگزارش خرابی و شکایت از فایل

مقاله الگوریتم های ژنتیک در 36 صفحه ورد قابل دانلود میباشد توضیحات و قسمتی از متن در ادامه و توضیحات بیشتر

مقاله الگوریتم های ژنتیک
مقاله الگوریتم های ژنتیک - مقاله الگوریتم های ژنتیک در 36 صفحه ورد قابل دانلود میباشد توضیحات و قسمتی از متن در ادامه و توضیحات بیشتر



مقاله الگوریتم های ژنتیک
فهرست مطالب
چکیده موضوع ………………………………………………………………………
مقدمه……………………………………………………
الگوریتم ژنتیک چیست؟…………………………………… ……………………………………
ایده اصلی …………………………………………………………………………………
الگوریتم ژنتیک ……………………………………………………………………….
سود و کد الگوریتم………………………………………………………..
روش های نمایش ………………………………………………………….
روش های انتخاب ………………………………………………………..
روش های تغییر ……………………………………………………………..
نقاط قوت الگوریتم های ژنتیک... ……………………………………
نقاط ضعف الگوریتم های ژنتیک. ……………………………………
نمونه هایی از کاربردهای الگوریتم های ژنتیک در دنیای امروز……………………………………..
یک مثال ساده با جزئیات …………………………………….
هایپر هیوریستیک ...................
چکیده
الگوریتم های ژنتیک از اصول انتخاب طبیعی داروین برای یافتن فرمول بهینه جهت پیش بینی یا تطبیق الگو استفاده می کنند.الگوریتم های ژنتیک اغلب گزینه خوبی برای تکنیک های پیش بینی بر مبنای رگرسیون هستند.همان طور ساده،خطی وپارامتری یک گفته می شود،به الگوریتم های ژنتیک می توان غیر پارامتریک گفت.
مختصراً گفته می شود که الگوریتم ژنتیک (یا GA) یک تکنیک برنامه نویسی است که از تکامل ژنتیکی به عنوان یک الگوی حل نمسئله استفاده می کند.مسئله ای که باید حل شود ورودی است و راه حلها طبق یک الگو کد گذاری می شودومتریک که تابع fitness هم نام دارد هر راه حل کاندید را ارزیابی می کندکه اکثر آنها به صورت تصادفی انتخاب می شوند.
کلاً این الگوریتم ها از بخش های زیر تشکیل می شوند :
تابع برازش - نمایش – انتخاب – تغییر
که در ادامه آنها را توضیح خواهیم داد.
مقدمه

مشخصات فروشنده

نام و نام خانوادگی : شادمان روستا ناوی

شماره تماس : 09195145166

ایمیل :mohandesbartar@gmail.com

سایت :fileyar.ir

مشخصات فایل

فرمت : docx

تعداد صفحات : 36

قیمت : برای مشاهده قیمت کلیک کنید

حجم فایل : 87 کیلوبایت

برای خرید و دانلود فایل و گزارش خرابی از لینک های روبرو اقدام کنید...

پرداخت و دانلودگزارش خرابی و شکایت از فایل

مقاله بررسی ماتریس الگوریتم در 23 صفحه ورد قابل ویرایش

مقاله بررسی ماتریس الگوریتم
مقاله بررسی ماتریس الگوریتم - مقاله بررسی ماتریس الگوریتم در 23 صفحه ورد قابل ویرایش



مقاله بررسی ماتریس الگوریتم در 23 صفحه ورد قابل ویرایش
-2) EZW الگوریتم EZW در سال 1993 توسط shapiro ابداع شد نام کامل این واژه به معنای کدینگ تدریجی با استفاده از درخت ضرایب ویولت است. این الگوریتم ضرایب ویولت را به عنوان مجموعه ای از درختهای جهت یابی مکانی در نظر می گیرد هر درخت شامل ضرایبی از تمام زیرباندهای فرکانسی و مکانی است که به یک ناحیه مشخص از تصویر اختصاص دارند. الگوریتم ابتدا ضرایب ویولت با دامنه بزرگتر را کددهی می کند در صورتیکه دامنه یک ضریب بزرگتر یا مساوی آستانه مشخص باشد ضریب به عنوان ضریب معنی دار در نظر گرفته می شود و در غیر اینصورت بی معنی می باشد یک درخت نیز در صورتی معنی دار است که بزرگترین ضریب آن از نظر دامنه بزرگتر یا مساوی با آستانه مورد نظر باشد و در غیراینصورت درخت بی معنی است. مقدار آستانه در هر مرحله از الگوریتم نصف می شود و بدین ترتیب ضرایب بزرگتر زودتر فرستاده می شوند در هر مرحله، ابتدا معنی دار بودن ضرایب مربوط به زیر باند فرکانسی پایین تر ارزیابی می شود اگر مجموعه بی معنی باشد یک علامت درخت صفر استفاده می شود تا نشان دهد که تمامی ضرایب مجموعه صفر می باشند در غیراینصورت مجموعه به چهارزیرمجموعه برای ارزیابی بیشتر شکسته می شود و پس از اینکه تمامی مجموعه ها و ضرایب مورد ارزیابی قرار گرفته اند این مرحله به پایان می رسد کدینگ EZW براساس این فرضیه استوار است که چگالی طیف توان در اکثر تصاویر طبیعی به سرعت کاهش می یابد بدین معنی که اگر یک ضریب در زیر باند فرکانسی پایین تر کوچک باشد به احتمال زیاد ضرایب مربوط به فرزندان آن در زیر باندهای بالاتر نیز کوچک هستند به بیان دیگر اگر یک ضریب والد بی معنی باشد به احتمال زیاد فرزندان آن نیز بی معنی هستند اگر آستانه ها توانهایی از دو باشند میتوان کدینگ EZW را به عنوان یک کدینگ bit-plane در نظر گرفت در این روش در یک زمان، یک رشته بیت که از MSB شروع می شود کددهی می شود با کدینگ تدریجی رشته بیت ها و ارزیابی درختها از زیرباندهای فرکانسی کمتر به زیرباندهای فرکانسی بیشتر در هر رشته بیت میتوان به کدینگ جاسازی دست یافت. الگوریتم EZW بر پایه 4 اصل استوار است [3] 1- جدا کردن سلسله مراتبی زیرباندها با استفاده از تبدیل ویولت گسسته 1-1-2) تبدیل ویولت گسسته تبدیل ویولت سلسله مراتبی که در EZW و SPIHT مورد استفاده قرار می گیرد نظیر یک سیستم تجزیه زیرباند سلسله مراتبی است که در آن فاصله زیرباندها در مبنای فرکانس بصورت لگاریتمی است. در شکل 2-2 یک مثال از تجزیه دو سطحی ویولت روی یک تصویر دو بعدی نشان داده شده است. تصویر ابتدا با بکارگیری فیلترهای افقی و عمودی به چهار زیرباند تجزیه می‌شود. در تصویر (c ) 2-2 هر ضریب مربوط به ناحیه تقریبی 2×2 پیکسل در تصویر ورودی است. پس از اولین مرحله تجزیه سه زیر باند LH1 , HL1 و HH1 بعنوان زیرباندهای فرکانس بالایی در نظر گرفته می شوند که به ترتیب دارای سه موقعیت عمودی، افقی و قطری می باشند اگر Wv , Wh به ترتیب فرکانسهای افقی و عمودی باشند، پهنای باند فرکانسی برای هر زیر باند در اولین سطح تجزیه ویولت در جدول 1-2 آمده است[4] جدول 2-1 ) پهنای باند فرکانسی مربوط به هر زیر باند پس از اولین مرحله تجزیه ویولت با استفاده از فیلترهای مشابه (پایین گذر و بالاگذر) زیر باند LL1 پس از اولین مرحله تجزیه ویولت، مجدداً تجزیه شده و ضرایب ویولت جدیدی به دست می آید جدول 2-2) پهنای باند مربوط به این ضرایب را نشان می دهد. 2-1-2) تبدیل ویولت بعنوان یک تبدیل خطی میتوان تبدیل بالا را یک تبدیل خطی در نظر گرفت [5]. P یک بردار ستونی که درایه هایش نشان دهنده یک اسکن از پیکسلهای تصویر هستند. C یک بردار ستونی شامل ضرایب ویولت به دست آمده است از بکارگیری تبدیل ویولت گسسته روی بردار p است. اگر تبدیل ویولت بعنوان ماتریس W در نظر گرفته شوند که سطرهایش توابع پایه تبدیل هستند میتوان تبدیل خطی زیر را در نظر گرفت. فرمول بردار p را میتوان با تبدیل ویولت معکوس به دست آورد. فرمول اگر تبدیل W متعامد باشد. است و بنابراین فرمول در واقع تبدیل ویولت W نه تنها متعامد بلکه دو متعامدی می باشد. 3-1-2) یک مثال از تبدیل ویولت سلسله مراتبی یک مثال از تبدیل ویولت سلسله مراتبی در این بخش شرح داده شده است. تصویر اولیه 16*16 و مقادیر پیکسلهای مربوط به آن به ترتیب در شکل 3-2 و جدول 3-2 آمده است. یک ویولت چهارلایه روی تصویر اولیه اعمال شده است. فیتلر مورد استفاده فیلتر دو متعامدی Daubechies 9/7 است [6]. جدول 4-2 ضرایب تبدیل گرد شده به اعداد صحیح را نشان می دهد. قابل توجه است که ضرایب با دامنه بیشتر در زیرباندهای با فرکانس کمتر قرار گرفته اند و بسیاری از ضرایب دامنه های کوچکی دارند ویژگی فشرده سازی انرژی در تبدیل ویولت در این مثال به خوبی دیده می شود جدول 5-2 تصویر تبدیل یافته و کمی شده را نشان می دهد چنانکه کمی سازی تنها برای اولین سطح ویولت انجام گرفته است یک ضریب مقیاس 25/0 در هر ضریب فیلتر ویولت ضرب شده و سپس مجموعه فیلتر پاین گذر و بالاگذر روی تصویر اولیه بکار گرفته می شود اندازه گام کمی سازی مربوطه در این حالت 16 است. پس از کمی سازی بیشتر ضرایب در بالاترین زیر باند فرکانسی صفر می شوند تصویربازسازی شده و تبدیل ویولت معکوس در شکل (b) 7-2 و جدول 6-2 آمده است. به علت کمی سازی بازسازی با اتلاف است. 1- ضرایب با دامنه بزرگتر زدوتر ارسال می شوند. 2- بیتهای پرارزش تر ضریب حاوی اطلاعات کمتری هستند و زودتر ارسال میشوند. میتوان نشان داد که چگونه اینکدر SPIHT از این اصلها برای انتقال تدریجی ضرایب ویولت به دیکدر استفاده می کند فرض می شود تبدیل ویولت به تصویر اعمال شده و ضرایب Ci,j در حافظه ذخیره شده اند. این ضرایب بدون در نظر گرفتن علامتشان مرتب شده و اطلاعات مرتب شده در آرایه m قرار گرفته اند و عضو m(k) از این آرایه شامل مختصات (i,j) مربوط به آرایه Ci,j است و بنابراین برای همه مقادیر k داریم فرمول جدول 58-5 مقادیر فرضی 16 ضریب را نشان می دهد که هر کدام بعنوان یک عدد 16 بیتی نشان داده شده است. پرارزشترین بیت،‌بیت علامت است و 15 بیت باقیمانده مربوط به مقدار عدد هستند. اولین ضریب است که برابر با S1aci…r است. ضریب دوم نیز برابر با است و به همین ترتیب اطلاعات مرتب شده ای که اینکدر باید بفرستد دنباله m(k) است که به ترتیب زیر است: علاوه بر آن باید 16 علامت و 16 ضریب را به ترتیب ارزش بفرستد. یک انتقال مستقیم شامل ارسال 16 عدد است. این روش یک روش wastfull است. در الگوریتم SPIHT ، اینکدر وارد یک حلقه می شود که در هر تکرار حلقه دو گام انجام می شود: گام مرتب سازی و گام اصلاح. در اولین تکرار اینکدر عدد 2= L یعنی تعدد ضرایبی را که در فاصله فرمول قرار دارند می فرستد در ادامه دو جفت مختصات ( 3و 2 ) و (4 و 3) و علامت دو ضریب اول فرستاده می شود. این عملیات در نخستین مرحله مرتب سازی انجام می شود. این اطلاعات دیکدر را قادر به تخمین زدن ضرایب به ترتیبی که در ادامه آمده است می کند: ضرایب و بعنوان یک عدد 16 بیتی بصورت و 14 ضریب باقیمانده صفر بازسازی می شوند. این نشان می دهد که چگونه پرارزش ترین بیتهای مربوط به بزرگترین ضرایب ابتدا به دیکدر فرستاده می شوند. گام بعدی مرحله اصلاح می باشد که در تکرار اول انجام نمی شود. در تکرار دوم (حلقه دوم) اینکدر هر دو گام را انجام می دهد. در مرحله مرتب سازی عدد 4= L بعنوان تعداد ضرایبی که در فاصله فرمول قرار دارند در ادامة آن چهار مختصات ( 2و 3) ، (4 و 4) ، (2 و 1) و (1 و3) و علامت چهار ضریب فرستاده می شود. در گام اصلاح دو بیت b , a بعنوان چهاردهمین بیت با ارزش ضرایب مربوطه به حلقه قبلی فرستاده می شود. اطلاعات به دست آمده دیکدر را قادر به اصلاح ضرایب تقریبی که از مرحله قبل بدست آمده اند می کند و شش ضریب اول به شکل زیر در می آید: فرمول و ده ضریب باقیمانده تغییری نمی کند. 2-2-2) دسته بندی ضرایب در الگوریتم SPIHT به منظور کاهش تعداد تصمیم گیری ها در مقایسه میان بیتها و نیز کاهش حجم داده های خروجی در الگوریتم SPIHT از ساختار سلسله مراتبی استفاده می شود. در اینجا هدف اصلی دسته بندی ضرایب در مجموعه ها به گونه ای است که تعداد عضوهای یک مجموعه بی معنی حداکثر باشد و هر مجموعه معنی دار تنها یک عضو را شامل شود.

مشخصات فروشنده

نام و نام خانوادگی : علیرضا دهقان

شماره تماس : 09120592515 - 02634305707

ایمیل :iranshahrsaz@yahoo.com

سایت :urbanshop.ir

مشخصات فایل

فرمت : doc

تعداد صفحات : 23

قیمت : برای مشاهده قیمت کلیک کنید

حجم فایل : 38 کیلوبایت

برای خرید و دانلود فایل و گزارش خرابی از لینک های روبرو اقدام کنید...

پرداخت و دانلودگزارش خرابی و شکایت از فایل

مقاله بررسی ماتریس الگوریتم در 23 صفحه ورد قابل ویرایش

مقاله بررسی ماتریس الگوریتم
مقاله بررسی ماتریس الگوریتم - مقاله بررسی ماتریس الگوریتم در 23 صفحه ورد قابل ویرایش



مقاله بررسی ماتریس الگوریتم در 23 صفحه ورد قابل ویرایش
-2) EZW الگوریتم EZW در سال 1993 توسط shapiro ابداع شد نام کامل این واژه به معنای کدینگ تدریجی با استفاده از درخت ضرایب ویولت است. این الگوریتم ضرایب ویولت را به عنوان مجموعه ای از درختهای جهت یابی مکانی در نظر می گیرد هر درخت شامل ضرایبی از تمام زیرباندهای فرکانسی و مکانی است که به یک ناحیه مشخص از تصویر اختصاص دارند. الگوریتم ابتدا ضرایب ویولت با دامنه بزرگتر را کددهی می کند در صورتیکه دامنه یک ضریب بزرگتر یا مساوی آستانه مشخص باشد ضریب به عنوان ضریب معنی دار در نظر گرفته می شود و در غیر اینصورت بی معنی می باشد یک درخت نیز در صورتی معنی دار است که بزرگترین ضریب آن از نظر دامنه بزرگتر یا مساوی با آستانه مورد نظر باشد و در غیراینصورت درخت بی معنی است. مقدار آستانه در هر مرحله از الگوریتم نصف می شود و بدین ترتیب ضرایب بزرگتر زودتر فرستاده می شوند در هر مرحله، ابتدا معنی دار بودن ضرایب مربوط به زیر باند فرکانسی پایین تر ارزیابی می شود اگر مجموعه بی معنی باشد یک علامت درخت صفر استفاده می شود تا نشان دهد که تمامی ضرایب مجموعه صفر می باشند در غیراینصورت مجموعه به چهارزیرمجموعه برای ارزیابی بیشتر شکسته می شود و پس از اینکه تمامی مجموعه ها و ضرایب مورد ارزیابی قرار گرفته اند این مرحله به پایان می رسد کدینگ EZW براساس این فرضیه استوار است که چگالی طیف توان در اکثر تصاویر طبیعی به سرعت کاهش می یابد بدین معنی که اگر یک ضریب در زیر باند فرکانسی پایین تر کوچک باشد به احتمال زیاد ضرایب مربوط به فرزندان آن در زیر باندهای بالاتر نیز کوچک هستند به بیان دیگر اگر یک ضریب والد بی معنی باشد به احتمال زیاد فرزندان آن نیز بی معنی هستند اگر آستانه ها توانهایی از دو باشند میتوان کدینگ EZW را به عنوان یک کدینگ bit-plane در نظر گرفت در این روش در یک زمان، یک رشته بیت که از MSB شروع می شود کددهی می شود با کدینگ تدریجی رشته بیت ها و ارزیابی درختها از زیرباندهای فرکانسی کمتر به زیرباندهای فرکانسی بیشتر در هر رشته بیت میتوان به کدینگ جاسازی دست یافت. الگوریتم EZW بر پایه 4 اصل استوار است [3] 1- جدا کردن سلسله مراتبی زیرباندها با استفاده از تبدیل ویولت گسسته 1-1-2) تبدیل ویولت گسسته تبدیل ویولت سلسله مراتبی که در EZW و SPIHT مورد استفاده قرار می گیرد نظیر یک سیستم تجزیه زیرباند سلسله مراتبی است که در آن فاصله زیرباندها در مبنای فرکانس بصورت لگاریتمی است. در شکل 2-2 یک مثال از تجزیه دو سطحی ویولت روی یک تصویر دو بعدی نشان داده شده است. تصویر ابتدا با بکارگیری فیلترهای افقی و عمودی به چهار زیرباند تجزیه می‌شود. در تصویر (c ) 2-2 هر ضریب مربوط به ناحیه تقریبی 2×2 پیکسل در تصویر ورودی است. پس از اولین مرحله تجزیه سه زیر باند LH1 , HL1 و HH1 بعنوان زیرباندهای فرکانس بالایی در نظر گرفته می شوند که به ترتیب دارای سه موقعیت عمودی، افقی و قطری می باشند اگر Wv , Wh به ترتیب فرکانسهای افقی و عمودی باشند، پهنای باند فرکانسی برای هر زیر باند در اولین سطح تجزیه ویولت در جدول 1-2 آمده است[4] جدول 2-1 ) پهنای باند فرکانسی مربوط به هر زیر باند پس از اولین مرحله تجزیه ویولت با استفاده از فیلترهای مشابه (پایین گذر و بالاگذر) زیر باند LL1 پس از اولین مرحله تجزیه ویولت، مجدداً تجزیه شده و ضرایب ویولت جدیدی به دست می آید جدول 2-2) پهنای باند مربوط به این ضرایب را نشان می دهد. 2-1-2) تبدیل ویولت بعنوان یک تبدیل خطی میتوان تبدیل بالا را یک تبدیل خطی در نظر گرفت [5]. P یک بردار ستونی که درایه هایش نشان دهنده یک اسکن از پیکسلهای تصویر هستند. C یک بردار ستونی شامل ضرایب ویولت به دست آمده است از بکارگیری تبدیل ویولت گسسته روی بردار p است. اگر تبدیل ویولت بعنوان ماتریس W در نظر گرفته شوند که سطرهایش توابع پایه تبدیل هستند میتوان تبدیل خطی زیر را در نظر گرفت. فرمول بردار p را میتوان با تبدیل ویولت معکوس به دست آورد. فرمول اگر تبدیل W متعامد باشد. است و بنابراین فرمول در واقع تبدیل ویولت W نه تنها متعامد بلکه دو متعامدی می باشد. 3-1-2) یک مثال از تبدیل ویولت سلسله مراتبی یک مثال از تبدیل ویولت سلسله مراتبی در این بخش شرح داده شده است. تصویر اولیه 16*16 و مقادیر پیکسلهای مربوط به آن به ترتیب در شکل 3-2 و جدول 3-2 آمده است. یک ویولت چهارلایه روی تصویر اولیه اعمال شده است. فیتلر مورد استفاده فیلتر دو متعامدی Daubechies 9/7 است [6]. جدول 4-2 ضرایب تبدیل گرد شده به اعداد صحیح را نشان می دهد. قابل توجه است که ضرایب با دامنه بیشتر در زیرباندهای با فرکانس کمتر قرار گرفته اند و بسیاری از ضرایب دامنه های کوچکی دارند ویژگی فشرده سازی انرژی در تبدیل ویولت در این مثال به خوبی دیده می شود جدول 5-2 تصویر تبدیل یافته و کمی شده را نشان می دهد چنانکه کمی سازی تنها برای اولین سطح ویولت انجام گرفته است یک ضریب مقیاس 25/0 در هر ضریب فیلتر ویولت ضرب شده و سپس مجموعه فیلتر پاین گذر و بالاگذر روی تصویر اولیه بکار گرفته می شود اندازه گام کمی سازی مربوطه در این حالت 16 است. پس از کمی سازی بیشتر ضرایب در بالاترین زیر باند فرکانسی صفر می شوند تصویربازسازی شده و تبدیل ویولت معکوس در شکل (b) 7-2 و جدول 6-2 آمده است. به علت کمی سازی بازسازی با اتلاف است. 1- ضرایب با دامنه بزرگتر زدوتر ارسال می شوند. 2- بیتهای پرارزش تر ضریب حاوی اطلاعات کمتری هستند و زودتر ارسال میشوند. میتوان نشان داد که چگونه اینکدر SPIHT از این اصلها برای انتقال تدریجی ضرایب ویولت به دیکدر استفاده می کند فرض می شود تبدیل ویولت به تصویر اعمال شده و ضرایب Ci,j در حافظه ذخیره شده اند. این ضرایب بدون در نظر گرفتن علامتشان مرتب شده و اطلاعات مرتب شده در آرایه m قرار گرفته اند و عضو m(k) از این آرایه شامل مختصات (i,j) مربوط به آرایه Ci,j است و بنابراین برای همه مقادیر k داریم فرمول جدول 58-5 مقادیر فرضی 16 ضریب را نشان می دهد که هر کدام بعنوان یک عدد 16 بیتی نشان داده شده است. پرارزشترین بیت،‌بیت علامت است و 15 بیت باقیمانده مربوط به مقدار عدد هستند. اولین ضریب است که برابر با S1aci…r است. ضریب دوم نیز برابر با است و به همین ترتیب اطلاعات مرتب شده ای که اینکدر باید بفرستد دنباله m(k) است که به ترتیب زیر است: علاوه بر آن باید 16 علامت و 16 ضریب را به ترتیب ارزش بفرستد. یک انتقال مستقیم شامل ارسال 16 عدد است. این روش یک روش wastfull است. در الگوریتم SPIHT ، اینکدر وارد یک حلقه می شود که در هر تکرار حلقه دو گام انجام می شود: گام مرتب سازی و گام اصلاح. در اولین تکرار اینکدر عدد 2= L یعنی تعدد ضرایبی را که در فاصله فرمول قرار دارند می فرستد در ادامه دو جفت مختصات ( 3و 2 ) و (4 و 3) و علامت دو ضریب اول فرستاده می شود. این عملیات در نخستین مرحله مرتب سازی انجام می شود. این اطلاعات دیکدر را قادر به تخمین زدن ضرایب به ترتیبی که در ادامه آمده است می کند: ضرایب و بعنوان یک عدد 16 بیتی بصورت و 14 ضریب باقیمانده صفر بازسازی می شوند. این نشان می دهد که چگونه پرارزش ترین بیتهای مربوط به بزرگترین ضرایب ابتدا به دیکدر فرستاده می شوند. گام بعدی مرحله اصلاح می باشد که در تکرار اول انجام نمی شود. در تکرار دوم (حلقه دوم) اینکدر هر دو گام را انجام می دهد. در مرحله مرتب سازی عدد 4= L بعنوان تعداد ضرایبی که در فاصله فرمول قرار دارند در ادامة آن چهار مختصات ( 2و 3) ، (4 و 4) ، (2 و 1) و (1 و3) و علامت چهار ضریب فرستاده می شود. در گام اصلاح دو بیت b , a بعنوان چهاردهمین بیت با ارزش ضرایب مربوطه به حلقه قبلی فرستاده می شود. اطلاعات به دست آمده دیکدر را قادر به اصلاح ضرایب تقریبی که از مرحله قبل بدست آمده اند می کند و شش ضریب اول به شکل زیر در می آید: فرمول و ده ضریب باقیمانده تغییری نمی کند. 2-2-2) دسته بندی ضرایب در الگوریتم SPIHT به منظور کاهش تعداد تصمیم گیری ها در مقایسه میان بیتها و نیز کاهش حجم داده های خروجی در الگوریتم SPIHT از ساختار سلسله مراتبی استفاده می شود. در اینجا هدف اصلی دسته بندی ضرایب در مجموعه ها به گونه ای است که تعداد عضوهای یک مجموعه بی معنی حداکثر باشد و هر مجموعه معنی دار تنها یک عضو را شامل شود.

مشخصات فروشنده

نام و نام خانوادگی : مهدی حیدری

شماره تماس : 09033719795 - 07734251434

ایمیل :info@sellu.ir

سایت :sellu.ir

مشخصات فایل

فرمت : doc

تعداد صفحات : 23

قیمت : برای مشاهده قیمت کلیک کنید

حجم فایل : 38 کیلوبایت

برای خرید و دانلود فایل و گزارش خرابی از لینک های روبرو اقدام کنید...

پرداخت و دانلودگزارش خرابی و شکایت از فایل