طراحی الگوریتم ها 1

فصل اول :

الگوریتـم:

الگوریتم به روش حل هر دسته از مسائل گفته می­شود. الگوریتم باید به صورت رشته­ای از اعمال که حل دسته­ای از مسائل را به دقت تبیین می­نماید، سازماندهی شده باشد؛ این اعمال جزعی باید بدون ابهام باشند و زمان اجرای متناهی داشته باشند.

ارزیابی کارایی الگوریتـم­ها:

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

                            I.    زمان لازم برای اجرای کامل الگوریتم.

                        II.    حداکثر میزان حافظه­ی لازم در زمان اجرای الگوریتم.

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

                          I.      مرتبه­ی زمانی اجرای کامل الگوریتم.

                      II.      مرتبه­ی مکانی اجرای الگوریتم.

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

از این دسته می­توان به موارد زیر اشاره داشت.

1-    تعریف نماد O :

اگر R 0f : N  آنگاه :

یعنی از یک جا به بعد برای هر n داریم                                                 

 

 

 

 

 

 

 

2-    تعریف نماد :

اگر R 0f : N  آنگاه :

نتیجه:

3-    تعریف نماد  :

 

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

نکته : وقتی گفته می­شود زمان اجرای الگوریتم  است یعنی الگوریتم هر جوری اجرا شود مرتبه­ی زمانی اجرای آن n2یا بیشتر از n2 است.

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

4-     تعریف نماد o :

نادرست

نادرست

درست

 

قضیه­ی ماکسیمم­ها :

اگر آنگاه:

اثبات:

 

 

 

 


5- تعریف نماد :

         

 

نکته :                                                                            

 

قضیه : اگر  و  

1- اگر   آنگاه .

2- اگر آنگاه .

3- اگر آنگاه .

 

 

آنالیـزالگوریتم­ها

برای آنالیز هر الگوریتم از سه اصل زیر استفاده می­شود.

1- اصل پایانی : اگر از یک الگوریتم دو پیاده سازی مختلف داشته باشیم که یکی زمان  و دیگری زمان  را نیاز داشته باشد در این صورت:

 

2- اصل ترتیب­گذاری : اگر و  دو قطعه برنامه مستقل باشند، زمان لازم برای اجرای متوالی و  برابر  خواهد بود.

 

3- اصل دستورات اتمی : منظور از یک دستور اتمی، دستورات مقدماتی در سطح ماشین است مثل دستور ، + ، - ، ، مقایسه­، جایگزینی(انتساب) و ... ؛ این دستورات در سطح سخت افزار به زمانی در حد  نیاز دارند.

 

آنالیز حلقه­ی While :

           

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

برای عمل جایگزینی

برای مقایسه

برای

برای جایگزینی

برای goto

بدیهی است که اگر پراکندگی زمانی اجراهای متمایز زیاد باشد در این صورت

نکته : در سطح ماشین، دستور مانند است، لذا آنالیز یکسانی دارند.

 

آنالیز الگوریتم مرتب سازی حبابی (Bubble sort) :

Procedure BubbleSort ( )

           

                       

                                   

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

  I

محاسبه­ی کران پایین:

   II

 

 

چند تعریف :

            

آنالیز الگوریتم مرتب سازی انتخابی (Selection sort) :

Procedure Select (T [1..n])

           

                       

                                   

                                               

                                   

محاسبه­ی کران بالایی:

محاسبه­ی کران پایین:

مرتبه­ی زمانی اجرای الگوریتم انتخابی

از مقایسه­ی دو الگوریتم مرتب سازی حبابی و مرتب سازی انتخابی، درکل فرقی با هم ندارند، ولی الگوریتم مرتب سازی انتخابی، در ضریب بدتر است.

آنالیز الگوریتم مرتب سازی درجی (Insert sort) :

Procedure insertion (T [1..n])

           

                       

                                   

                       

محاسبه­ی کران بالایی:

محاسبه­ی کران پایین:

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

زمان اجرای الگوریتم درجی                                                                          

 

در حالی که کران بالایی و پایینی الگوریتم­ها متفاوت است معمولاً آنالیز هر الگوریتم را در سه حالت زیر انجام می­دهیم.

1- آنالیز در بهترین حالت(Best case analysis)

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

2- آنالیز در بدترین حالت(Worst case analysis)

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

3- آنالیز در حالت متوسط(Average case analysis)

 

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

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

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

اگر متوسط زمان لازم برای قرارگیری عنصر ام در محل واقعی خود از زیر آرایه­ی  باشد در این صورت

  یک جابجایی یا دو جابجایی یا                                         

 

 

 

مرتب سازی لانه کبوتری :

T

2

3

1

2

1

3

2

1

4

           

 

U:

0

0

0

0

 

 

 

1

2

3

4

 

 

 

 

3

3

2

1

1

1

1

2

2

2

3

3

4

1

2

3

4

 

 

 

 

 

 

 

 

 

 

 

Procedure Pigeonhole (T [1..n])

*let , and  are positive integer */

 

U  

                            

           

                                  

           

                                

 

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

 

مرتب سازی مبنا (Radix Sort):

24

15

67

34

12

22

87

85

74

9

 

 

 

 

 

 

 

 

 

 

 

 

رقم یکان

 

 

0

 

 

 

 

1

 

 

 

 

2

121

22

 

 

3

 

 

 

 

4

24

34

74

 

5

15

85

 

 

6

 

 

 

 

7

67

87

 

 

8

 

 

 

 

9

9

 

 

 

 

 

رقم یکان

 

 

0

09

 

 

 

1

12

15

 

 

2

22

24

 

 

3

 

 

 

 

4

 

 

 

 

5

 

 

 

 

6

67

 

 

 

7

74

 

 

 

8

85

87

 

 

9

 

 

 

 

Listnew

List

 

 


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

Procedure RadixSort (int max List[1..n])

/*let ,    */

/*let Pointer */

/*let Pointer */

           

           

                       

                                   

            

 

 


فصل دوم : برگشت­پذیری و الگوریتم­های بازگشتی

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

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

          II.      فرض شود که الگوریتم برای مرحله­ی قبل و یا مراحل قبل کار می­کند و فقط باید آنرا برای این مرحله ارتقاء داد.

مثال :تابع فاکتوریل را بصورت بازگشتی بنویسید.

                  

می­دانیم

       

 

 

           

نکته :دقت شود که در مورد ساختارهای بازگشتی پیچیده، معمولاً Trace کردن برنامه هم زمان­بر است و هم ممکن است با بی­دقتی انجام پذیرد. لذا بهتر است ابتدا رابطه­ی بازگشتی آنها را بدست آوریم.

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

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

 

معادلات بازگشتی :

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

در معادلات همگن صفر است.

                 

برای حل معادلات همگن بازگشتی با ضرایب ثابت به شکل زیر عمل می­کنیم.

ابتدا معادله­ی شاخص را بدست می­آوریم. برای بدست آوردن معادله­ی شاخص، هر  را به  تبدیل می­کنیم، سپس ریشه­های این معادله را بدست می­آوریم.

معادله­ی شاخص یا مفسر یا سرشتنمایی                                                

ممکن است یکی از شرایط زیر رخ دهد:

              I.      معادله دارای k ریشه­ی حقیقی دوبه­دو متمایز باشد. در این صورت جواب معادله به صورت زیر است.

 

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

 

        III.      معادله دارای ریشه­ی موهومی باشد که در اینجا بحث نمی­شود.

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

1- حدس زدن جواب رابطه و اثبات آن به روش استقراء

 

مثال:  حدس                                                                   

 

استقراء

2- جایگزاری متوالی

مثال:                                                                                                              

                          

 

         به نظر می­رسد                                                 

 

مثال: مقدار چیست؟

 


 

                

                                                                                              

 معادله شاخص   

 

 

مثال :

 

 

جهت حل معادلات بازگشتی غیر همگن با فرم عمومی زیر داریم:

که در آن هر چند جمله­ای از درجه­ی است.در این صورت معادله­ی مشخصه به صورت زیر است.

حال ریشه­های معادله­ی فوق را بدست می­آوریم و مانند قبل عمل می­کنیم.

مثال:

                           

 

جهت حل معادلات غیر همگن می­توان از تغییر متغیر نیز استفاده کرد.

 

                      

        

مثال:

تقسیم می­کنیم. n! طرفین معادله را بر

                         

                       

 

 

مثال:

 

بررسی چند الگوریتم بازگشتی :

برج هانوی :

سه میله با نام­های A،BوC داریم. فرض می­شود درون یکی از این میله­ها n دیسک قرار دارد. این دیسک­ها هر­کدام دارای رنگ­ متمایز با دیگری می­باشد. این n دیسک طوری قرار دارند که دیسکی با قطر بیشتر روی دیسکی با قطر کوچکتر قرار نگرفته است. می­خواهیم این دیسک­ها رابه میله­ی دیگری به کمک میله­ی باقیمانده جابجا کنیم. در هر مرحله باید یک دیسک جابجا شود و در این جابجایی نباید دیسک بزرگتر روی دیسک کوچکتر قرارگیرد.

می­خواهیم یک الگوریتم بازگشتی برای

جابجایی این n دیسک بنویسیم.

 

 

 

برای 2 مهره:

برای 3 مهره:

برای n مهره:

Int tower(int n, peg A, peg B, peg C)

                      // BوA جابجایی مهره­های

 

                 

                                 

 

           

 

 

مثال: آرایه­ای به طول n داریم می­خواهیم عناصر و را در این آرایه محاسبه کنیم. حداقل تعداد مقایسه­های لازم برای بدست آوردن عنصر و را بیابید.(طول آرایه را زوج فرض کنید و سپس برای طول فرد محاسبه کنید.)

زوج n:

                               

 

 

 

                                                           

                     : زوج n

 

                                                               : فرد n

                                               

 

1 اول مقایسه با عنصر اول

1 دوم مقایسه با عنصر اول

                                                           

 

 

 

 

مثال: می­خواهیم حاصلضرب ، Dماتریس را حساب کنیم. هر ماتریس است. می­خواهیم این ماتریس­ها را پرانتز­گذاری کنیم تا حاصل ضرب­های مختلفی بدست آید. تعداد حالات مختلف پرانتزگذاری را بدست آورید.

                               

                  

                                                                 با کمک استقراء می­توان ثابت کرد

 

مثال:فرض کنید کدی دهدهی با طول n زمانی معتبر است که تعداد صفرهای ظاهر شده در آن زوج باشد، می­خواهیم رابطه­ی بازگشتی را بدست آوریم که تمام کدهای به طول n که معبتر هستند را بدست آورد.

است.  تعداد ارقام حالات معتبر             9حالت              

 

 

1

2

9

تعداد رشته­های بطول  است که تعداد صفرهایش فرد باشد.

10

10

10

 

 

 

 

1

2

 

 

مثال:

 

                    

      

                             زمان این تابع

 

مثال: تعداد درخت­های دودویی شامل n راس را بیابید.

                                               

                                               

مثال: درخت AVL: درخت دودویی است که اختلاف زیر درختان چپ و راست هرگره آن 0،1یا1- باشد. می­خواهیم رابطه­ای بازگشتی بدست آوریم که حداقل تعداد گره­های یک درخت AVL به ارتفاعH را محاسبه نماید.

حداقل تعداد گره­های یک درختAVL به ارتفاعh

                 

 

 

 

                                                                                                                                                                  

                                                                                                           

 

 

                                                                                   

 

 

 

 

 

 

 

مثال: الگوریتم بازگشتی پیدا کنید که تمام زیر مجموعه­های یک مجموعه­ی n عضوی را پیدا کنید.

فرض می­کنیم مسئله برای n-1 عضو جواب می­دهد، آنرا به n عضو تعمیم می­دهیم. عضو nام را از مجموعه حذف می­کنیم و تمام زیر مجموعه­های زیر مجموعه n-1 عضوی را دوباره می­نویسیم. ودر بار دوم که چاپ می­کنیم عنصر nام را به آن اضافه می­کنیم.

 : تعداد حالات         

                                                                             

                       

                       

      

 

مثال:

 

 

 

 

 

 

 

 

 

 

مثال:


 


فصل سوم : الگوریتم­های حریصانه (Greedy Algorithms) :

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

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

Function greedy(c: set): set;

           

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

ü      مجموعه C: مجموعه­ای ازتمام کاندیداهای ممکن که ممکن است به عنوان جواب مسئله انتخاب شوند.

ü   مجموعه S: مجموعه­ایست که درنهایت قرار است به یک جواب از مسئله منتهی شود. در ابتدا تهی بوده و در نهایت در صورت وجود جواب به یک جواب از مسئله منجر می­شود.

ü      تابع Select: ورودی این تابع مجموعه C و خروجی آن عنصری از مجموعه C می­باشد.

ü   بدیهی است با انتخاب عنصری از C این عنصر از مجموعه­ای از کاندید­ها یعنی C باید حذف شود. تابع Select با توجه به نوع Greedy که در مسئله تعریف می­شود عمل می­نماید.

ü   تابع Solution: بررسی می­کند که مجموعه S یک جواب از مسئله است یا خیر. ورودی آن مجموعه S و خروجی آن یک مقدار Boolean می­باشد.

ü   تابع Feasible: ورودی آن مجموعه S و عنصر انتخاب شده از مجموعه C بوسیله­ی تابع Select است.این تابع بررسی می­کند که ببیند آیا امکان اضافه شدن عنصر به مجموعه S وجود دارد یا خیر. نتیجه­ی این بررسی بصورت Boolean در خروجی تابع ظاهر می­شود.

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

 

بررسی چند مثال:

الگوریتم هافمن(Huffman Algorithm)

یکی از سریعترین الگوریتم­ها که می­تواند یک فایل از علائم را zip کند این الگوریتم است. همچنین اجازه­ی unzip نمودن فایل حاصل را نیز می­دهد. برای این منظور فایل ورودی کاراکتر به کاراکتر خوانده می­شود. فراوانی هرکدام از کاراکترهای بدست آمده در جدولی به صورت صعودی قرار می­گیرد. از روی این جدول درختی ساخته می­شود که برگ­های آن این­ کاراکترها باشد. حال هر دو برگی را که فرکانس کمتری دارد با هم merge می­کنیم تا رأس جدید به عنوان ریشه آنها حاصل آید. فرکانس این نود برابر مجموع فرکانس دو نود جمع شده می­باشد. اینکار را آنقدر ادامه می­دهیم تا به ریشه­ی درخت برسیم. سپس از ریشه­ی درخت شروع کرده و برای فرزندان راست برچسب 1 و برای فرزندان چپ برچسب 0 را روی یالها در نظر می­گیریم. به این ترتیب هر یک از کاراکترها دارای یک برچسب با کد باینری خواهد بود.

 

مثال: فرض کنید متنی شامل 7000 حرف الفبایی داریم که 6200تای آن حرف a، 1800تای آن حرفb، 900تای آن حرف c، 1100تای آن e، 1800تای آن حرف d و 200 تای آن حرف m می­باشد. می­خواهیم بدانیم برای zip کردن این متن حداقل چند بیت لازم حافظه است؟

 

 

 

00

:

a

01

:

b

1000

:

c

1001

:

m

101

:

e

11

:

d

 

 

 

حداقل تعداد بیت­های لازم :

          بدون فشرده­سازش :   

 

الگوریتم­های درخت پوشای مینیمال(Minimum Spanning Tree-MST):

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

بطور کلی دو الگوریتم برای درخت پوشای مینیمم وجود دارد که عبارتند از الگوریتم­های Kruskal و Prim.

           

                       

 

                       

                                   

 

 

مثال:

 

 

 

 

 

 

 

 

Step

Edge Considered

Connected Component

Initialization

---------

1

2

3

4

5

6

7

نحوه­ی کار الگوریتم Kruskal به این صورت است که یک جنگل از درخت­هارا به ترتیب با هم ادغام می­کند تا به یک درخت واحد برسد.

 

 

 

 

 

 

 

الگوریتم prim:

            minimum

           

 

Step

{u,v}

B

initialization

-----

1

2

3

4

5

6

ü      ممکن است درخت­هایی که الگوریتم مذکور تولید می­کنند، از لحاظ شکل ظاهری متفاوت باشند، ولی وزن همه­ی درخت­ها یکسان است.

ü   مرتبه­ی زمانی الگوریتم برابر است. (حلقه­ی دفعه و عمل یافتن از میان لبه­های متصل به یک مجموعه دور خاص دفعه اتفاق می­افتد؛ که در مجموع برابر دفعه می­شود).

ü      مرتبه­ی زمانی الگوریتم برابر می­باشد.(این زمان مربوط به مرتب­سازی لبه­ها می­باشد).

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


مطالب مشابه :


دانلود جزوه طراحی الگوریتم

دانلود جزوات دانشگاهی - دانلود جزوه طراحی الگوریتم - دانلود جزوات دانشگاهی




آموزش طراحی الگوریتم به صورت تصویری

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




طراحی الگوریتم ها 1

فصل اول : الگوریتـم: الگوریتم به روش حل هر دسته از مسائل گفته می­شود. الگوریتم باید به صورت




طراحی الگوريتم ها؛ ويراست نهم - بهار 1394

eBoard - طراحی الگوريتم ها؛ ويراست نهم - بهار 1394 - برد الكترونیكی دروس




طراحی الگوریتم ها 3

مثال : الگوریتم Cycle : فرض کنید گرامر مستقل از متن مفروض باشد که در فرم فرمال چاسکی صدق نماید




طراحی الگوریتم ها جلسه چهارم

مقالات و جزوه های درسی رشته کامپیوتر - طراحی الگوریتم ها جلسه چهارم - جزوه ، مقاله ، پروژه




طراحی الگوریتم

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




برچسب :