ﺳﺎﺧﺘﻤﺎندادهﻫﺎ و ﻣﺒﺎﻧ اﻟ ﻮرﯾﺘﻢﻫﺎ ﻧﯿﻢﺳﺎل دوم ٩۵-٩۴ ﻣﺪرس :دﮐﺘﺮ ﻋﻠ ﺷﺮﯾﻔ داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ ﺗﻤﺮﯾﻦ ﻧﻈﺮی ﺳﻮم ﺗﺤﻠﯿﻞ اﻟ ﻮرﯾﺘﻢ ﻫﺎی ﺑﺎزﮔﺸﺘ و ﺳﺮﺷ ﻦ آرزو ﻓﺎﻃﻤ ﻣﺴﺌﻠﻪی .١ﻣﺮﺗﺒﻪ زﻣﺎﻧ ﻣﺮﺗﺒﻪ زﻣﺎﻧ راﺑﻄﻪﻫﺎی ﺑﺎزﮔﺸﺘ زﯾﺮ را ﻣﺤﺎﺳﺒﻪ ﮐﻨﯿﺪ. n log n 1. T (n) = T ( n2 ) + 2. T (n) = 2T ( n2 ) + logn n √ 3. T (n) = T ( n2 + n) + T ( n2 ) + 1 4. T (n) = T (n/4) + lg3 n ∑ ∑k )5. T (n) = ki T (αi n) + O(n k > 1, i αi = 1 √ n 6. T (n) = nT ( ) + 1 2 )7. T (n) = 2T (n − 1) + 2T (n − 2) + ... + 2T (1 √ √ )8. 3 − T (n) = nT ( n) + Θ(n ﻋﺒﺎرت ) (۶و ) (٧را ﺑﺎ ﻫﻢ ﻣﻘﺎﯾﺴﻪ ﮐﻨﯿﺪ. ﻣﺴﺌﻠﻪی .٢ﮐﺘﺎب ﺳﻮاﻻت زﯾﺮ را از ﮐﺘﺎب درﺳ )ﮐﺘﺎب دﮐﺘﺮ ﻗﺪﺳ ( ﺣﻞ ﮐﻨﯿﺪ. • • • • • • ۴ .٢-۴-٣ ١ .۵-٣ ۶ .۵-٣ ٩ .۵-٣ ٢ .۶-٣ ٣ .۶-٣ ﻣﺴﺌﻠﻪی .٣اﺷﺘﺒﺎه! اﺷﺘﺒﺎه ﺗﺤﻠﯿﻞ زﯾﺮ را ﭘﯿﺪا ﮐﻨﯿﺪ: ﻣﯿﺨﻮاﻫﯿﻢ ﺛﺎﺑﺖ ﮐﻨﯿﻢ اﻟ ﻮرﯾﺘﻢ ﻣﺮﺗﺐ ﺳﺎزی ادﻏﺎﻣ از ) O(nاﺳﺖ! »روی nاﺳﺘﻘﺮا ﻣﯿﺰﻧﯿﻢ ،ﺑﺮای n = ١ﮐﻪ ﺣ ﻢ درﺳﺖ اﺳﺖ .ﻓﺮض ﮐﻨﯿﺪ ادﻋﺎی ﻣﺎ ﺑﺮای ﻫﻤﻪ ی آراﯾﻪ ﻫﺎی ﺑﺎ اﻧﺪازه ی ﮐﻤﺘﺮ از nدرﺳﺖ ﺑﺎﺷﺪ ،ﯾ آراﯾﻪ ی nﻋﻨﺼﺮی دارﯾﻢ ،ﻃﺒﻖ اﻟ ﻮرﯾﺘﻢ آراﯾﻪ ﺑﻪ دو ﻗﺴﻤﺖ n٢ﺗﺎﯾﯽ ﺗﻘﺴﯿﻢ ﻣﯿﺸﻮد، ﻫﺮ ﮐﺪام از اﯾﻦ دو ﻗﺴﻤﺖ ﻣﺮﺗﺐ ﻣﯿﺸﻮد و ﺑﻌﺪ ﺑﺎ ) O(nادﻏﺎم ﻣﯿﺸﻮد .ﻃﺒﻖ ﻓﺮض اﺳﺘﻘﺮا ﻫﺮ ﮐﺪام از دو ﻗﺴﻤﺖ در ) O( n٢ﻣﺮﺗﺐ ﻣﯿﺸﻮﻧﺪ ﭘﺲ در ﮐﻞ دارﯾﻢ O( n٢ ) + O( n٢ ) + O(n) :ﮐﻪ از ) O(nاﺳﺖ«. ١ ﻣﺴﺌﻠﻪی .۴ﺷﻤﺎرﻧﺪه ی ﭘﺮﻫﺰﯾﻨﻪ ﯾ ﺷﻤﺎرﻧﺪه دودوﯾﯽ nﺑﯿﺘ در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ ﮐﻪ در آن ﻫﺰﯾﻨﻪ ی ﻋﻮض ﮐﺮدن ﺑﯿﺖ iام i ،ﺑﺎﺷﺪ ،ﺑﻪ ﻃﻮر ﻣﺌﺎل اﮔﺮ ﺷﻤﺎرﻧﺪه ١٠٠١١١ﺑﺎﺷﺪ ﻫﺰﯾﻨﻪ ی اﻓﺰاﯾﺶ آن ﺑﻪ ) ١٠١٠٠٠ﯾﻌﻨ ﻋﺪد ﺑﻌﺪی( ١+٢+٣+۴=١٠اﺳﺖ. اﻟﻒ( ﺛﺎﺑﺖ ﮐﻨﯿﺪ ﻫﺰﯾﻨﻪ ی ﺳﺮﺷ ﻦ ﻫﺮ اﻓﺰاﯾﺶ از ) O(١ﺧﻮاﻫﺪ ﺑﻮد. ب( ﻓﺮض ﮐﻨﯿﺪ ﻫﺰﯾﻨﻪ ی ﻋﻮض ﮐﺮدن ﺑﯿﺖ iام ﺑﻪ ﺟﺎی ٢i ،iﺑﺎﺷﺪ .آﯾﺎ ﻫﻨﻮز ﻫﻢ ﻫﺰﯾﻨﻪ ی ﺳﺮﺷ ﻦ ﻫﺮ اﻓﺰاﯾﺶ از ) O(١اﺳﺖ؟ اﮔﺮ ﻧﻪ ﻫﺰﯾﻨﻪ ی ﺳﺮﺷ ﻦ آن را ﺣﺴﺎب ﮐﻨﯿﺪ. ﻣﺴﺌﻠﻪی .۵ﺟﺎﯾ ﺸﺖ ﺗﻤﺎم ﺟﺎﯾ ﺸﺖ ﻫﺎی اﻋﺪاد ١ﺗﺎ nرا در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ و آﻧﻬﺎ را ﻣﺎﻧﻨﺪ ﻓﺮﻫﻨﮓ ﻟﻐﺖ ﻣﺮﺗﺐ ﮐﻨﯿﺪ. ﻣﺜﻼ ﺑﺮای n = ٣دارﯾﻢ: >3 >2 >3 >1 >2 >1 2, 3, 1, 3, 1, 2, <1, <1, <2, <2, <3, <3, ﻓﺮض ﮐﻨﯿﺪ ﯾ از اﯾﻦ ﺟﺎﯾ ﺸﺖ ﻫﺎ را دارﯾﻢ و از روی آن ﻣﯿﺨﻮاﻫﯿﻢ ﺟﺎﯾ ﺸﺖ ﺑﻌﺪی را ﺑﺴﺎزﯾﻢ .ﺑﻪ ﻃﻮر ﻣﺜﺎل ﺑﺮای ﺳﺎﺧﺘﻦ ﺟﺎﯾ ﺸﺖ ﭼﻬﺎرم از روی ﺟﺎﯾ ﺸﺖ ﺳﻮم ،ﻋﻨﺼﺮ دوم و ﺳﻮم را ﻋﻮض ﻣﯿ ﻨﯿﻢ. ﻣﯿﺨﻮاﻫﯿﻢ از ﺟﺎﯾ ﺸﺖ اول ﺷﺮوع ﮐﻨﯿﻢ و ﯾ ﯾ ﺟﺎﯾ ﺸﺖ ﻫﺎی ﺑﻌﺪی را ﺗﻮﻟﯿﺪ ﮐﻨﯿﻢ .ﺛﺎﺑﺖ ﮐﻨﯿﺪ ﻫﺰﯾﻨﻪ ی ﺳﺮﺷ ﻦ رﺳﯿﺪن از ﯾ ﺟﺎﯾ ﺸﺖ ﺑﻪ ﺟﺎﯾ ﺸﺖ ﺑﻌﺪی آن از ) O(١اﺳﺖ. ﻣﺴﺌﻠﻪی .۶آراﯾﻪ ی ﭘﻮﯾﺎ ﻣ ﺧﻮاﻫﯿﻢ ﯾ آراﯾﻪ ی ﭘﻮﯾﺎ )آراﯾﻪ ای ﺑﺎ ﻗﺎﺑﻠﯿﺖ ﺗﻐﯿﯿﺮ اﻧﺪازه( ﺑﺎ اﺳﺘﻔﺎده از آراﯾﻪ ﻫﺎی ﻋﺎدی ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﻢ. ﺑﺮای اﯾﻦ ﮐﺎر اﺑﺘﺪا ﯾ آراﯾﻪ ﺑﺎ اﻧﺪازه ی ١در ﻧﻈﺮ ﻣﯿ ﯿﺮﯾﻢ ﮐﻪ ﭼﯿﺰی در آن ﻧﯿﺴﺖ .ﺑﻌﺪ ﺑﺮای ﻫﺮ ﻋﻤﻠﯿﺎت درج اﮔﺮ آراﯾﻪ ی ﻓﻌﻠ ﺟﺎ داﺷﺖ ﻋﻨﺼﺮ ﺟﺪﯾﺪ را ﺑﻪ اﻧﺘﻬﺎی آن اﺿﺎﻓﻪ ﻣﯿ ﻨﯿﻢ و اﮔﺮ ﻧﺪاﺷﺖ ﯾ آرا ﯾﻪ ی ﺟﺪﯾﺪ ﺑﺎ اﻧﺪازه ی ٢ﺑﺮاﺑﺮ آراﯾﻪ ی ﻗﺒﻠ ﻣﯿﺴﺎزﯾﻢ ،ﺗﻤﺎم ﻋﻨﺎﺻﺮ آراﯾﻪ ی ﻗﺒﻠ را ﺑﻪ اﯾﻦ آراﯾﻪ ﻣﻨﺘﻘﻞ ﻣﯿ ﻨﯿﻢ و ﻋﻨﺮ ﺟﺪﯾﺪ را ﺑﻪ اﻧﺘﻬﺎی آن اﺿﺎﻓﻪ ﻣﯿ ﻨﯿﻢ. ﻫﺰﯾﻨﻪ ی اﻧﺘﻘﺎل nﻋﻨﺼﺮ از آراﯾﻪ ای ﺑﻪ آراﯾﻪ ی دﯾ ﺮ ) O(nاﺳﺖ(. اﻟﻒ( ﻓﺮض ﮐﻨﯿﺪ ﺑﺮای ﻋﻤﻠﯿﺎت ﺣﺬف ،ﻋﻨﺼﺮ آﺧﺮ را از آراﯾﻪ ی ﻓﻌﻠ ﺣﺬف ﻣﯿ ﻨﯿﻢ و ﺑﻌﺪ اﮔﺮ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ﺑﺎﻗﯿﻤﺎﻧﺪه ﮐﻤﺘﺮ ﻣﺴﺎوی ﻧﺼﻒ اﻧﺪازه ی آراﯾﻪ ی ﻓﻌﻠ ﺑﻮد ﯾ آراﯾﻪ ﺑﺎ اﻧﺪازه ی ﻧﺼﻒ آراﯾﻪ ی ﻓﻌﻠ ﻣﯿﺴﺎزﯾﻢ و ﻫﻤﻪ ی ﻋﻨﺎﺻﺮ ﺑﺎﻗﯿﻤﺎﻧﺪه را ﺑﻪ آن ﻣﻨﺘﻘﻞ ﻣﯿ ﻨﯿﻢ. ﻧﺸﺎن دﻫﯿﺪ ﻫﺰﯾﻨﻪ ی ﺳﺮﺷ ﻦ اﻋﻤﺎل ) O(١ﻧﺨﻮاﻫﺪ ﺑﻮد. )راﻫﻨﻤﺎﯾﯽ :دﻧﺒﺎﻟﻪ ای از اﻋﻤﺎل درج و ﺣﺬف ﭘﯿﺪا ﮐﻨﯿﺪ ﮐﻪ ﻫﺰﯾﻨﻪ ی ﺳﺮﺷ ﻦ آن ﺑﯿﺸﺘﺮ ﺑﺎﺷﺪ(. ب( ﺣﺎﻻ ﻓﺮض ﮐﻨﯿﺪ ﺑﻪ ﺟﺎی اﯾﻨﮑﻪ وﻗﺘ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ﺑﺎﻗﯿﻤﺎﻧﺪه ﺑﻪ ﻧﺼﻒ اﻧﺪازه رﺳﯿﺪ آراﯾﻪ را ﻧﺼﻒ ﮐﻨﯿﻢ ،وﻗﺘ اﯾﻦ ﺗﻌﺪاد ﺑﻪ ١۴رﺳﯿﺪ اﯾﻦ ﮐﺎر را اﻧﺠﺎم دﻫﯿﻢ. ﻧﺸﺎن دﻫﯿﺪ در اﯾﻦ ﺻﻮرت ﻫﺰﯾﻨﻪ ی ﺳﺮﺷ ﻦ ﺑﺮای ﻫﺮ دﻧﺒﺎﻟﻪ از اﻋﻤﺎل درج و ﺣﺬف ) O(١ﺧﻮاﻫﺪ ﺑﻮد. ٢ ﻣﺴﺌﻠﻪی .٧ﺗﮏ ﻧﻤﺎ ﺑﻪ آراﯾﻪ ] A[١, ..., nﺗﮏ ﻧﻤﺎ ﻣﯿ ﻮﯾﯿﻢ اﮔﺮ اﻧﺪﯾﺲ xدر آن وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ﺑﻪ ﻃﻮرﯾ ﻪ: ] A[i] < A[i + ١ﺑﺮای ١ ⩽ i ⩽ xو ] A[i] > A[i + ١ﺑﺮای x ⩽ i < n ﯾﻌﻨ ] A[mﻋﻨﺼﺮ ﺑﯿﺸﯿﻨﻪ ی آراﯾﻪ اﺳﺖ .اﻟ ﻮرﯾﺘﻤ از ) O(lgnاراﺋﻪ دﻫﯿﺪ ﮐﻪ اﯾﻦ ﻋﻨﺼﺮ را در ﯾ ﮐﻨﺪ. ٣ آراﯾﻪ ﺗﮏ ﻧﻤﺎ ﭘﯿﺪا
© Copyright 2025 Paperzz