Professional Documents
Culture Documents
ﻫﺪﻑ ﺍﺯ ﺗﺪﻭﻳﻦ ﺍﻳﻦ ﻣﺠﻤﻮﻋﻪ ﺑﺮﺭﺳﻲ ﻧﻜﺎﺕ ﻣﻬﻢ ﻣﺮﺑﻮﻁ ﺑﻪ ﺳﻮﺍﻻﺕ ﻛﻨﻜﻮﺭ ﺩﺭﺱ ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩ ﺩﺭ ﺳﺎﻝﻫﺎﻱ ﺍﺧﻴﺮ
ﺍﺳﺖ.
ﺍﻳﺪﻩ ﺍﺻﻠﻲ ﻃﺮﺍﺣﺎﻥ ﺳﻮﺍﻝ ﺩﺭ ﭼﻨﺪ ﺳﺎﻝ ﮔﺬﺷﺘﻪ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻣﺴﺎﺋﻞ ﻛﺘﺎﺏ "ﻣﻘﺪﻣﻪﺍﻱ ﺑﺮ ﺍﻟﮕﻮﺭﻳﺘﻢﻫﺎ" ﻧﻮﺷﺘﻪ ﺗﻮﻣﺎﺱ ﻛﺮﻣﻦ
ﺍﻣﻴﺪ ﺍﺳﺖ ﺍﻳﻦ ﻣﺠﻤﻮﻋﻪ ﺑﺘﻮﺍﻧﺪ ﻛﻤﻜﻲ ﺩﺭ ﺟﻬﺖ ﻣﻮﻓﻘﻴﺖ ﺷﻤﺎ ﺩﺭ ﺁﺯﻣﻮﻥ ﻛﺎﺭﺷﻨﺎﺳﻲ ﺍﺭﺷﺪ ﺑﺎﺷﺪ.
ﻣﻮﻟﻒ
در ﺟﺪول ذﯾﻞ دروس ﺑﻪ ﺳﺮﻓﺼﻠﻬﺎي ﻣﻬﻢ آن ﻃﺒﻘﻪ ﺑﻨﺪي ﺷﺪه و ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ ﮐﻪ در ﻫﺮ ﺳﺎل از ﻫﺮ ﻣﺒﺤﺚ ﭼﻨﺪ ﺗﺴﺖ ﺳﻮال
ﺷﺪه اﺳﺖ و داﻧﺸﺠﻮي ﻣﺤﺘﺮم ﻣﯽ ﺗﻮاﻧﺪ زﻣﺎن ﺑﺎﻗﯿﻤﺎﻧﺪه ﺗﺎ ﮐﻨﮑﻮر را ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﻫﻤﯿﺖ ﻣﺒﺎﺣﺚ ﻣﺪﯾﺮﯾﺖ ﻧﻤﺎﯾﺪ.
ﺍﻳﻦ ﺭﻭﺵ ﺗﻜﻨﻴﻜﻲ ﺑﺮﺍﻱ ﻣﺤﺎﺳﺒﻪ ﻣﺮﺗﺒﻪ ﺯﻣﺎﻧﻲ ﺭﻭﺍﺑﻂ ﺑﺎﺯﮔﺸﺘﻲ ﺑﻪ ﻓﺮﻡ ﺯﻳﺮ ﺍﺳﺖ:
ænö
) T ( n ) = aT ç ÷ + f ( n
èbø
ﮐﻪ ﺩﺭ ﺁﻥ:
b³2 a ³1 üﻭ
) f ( nﻧﺸﺎﻧﮕﺮ ﺯﻣﺎﻥ ﺍﺟﺮﺍﻱ ﺍﻟﮕﻮﺭﻳﺘﻤﻲ ﺍﺳﺖ ﮐﻪ ﺯﻣﺎﻥ ﺣﻞ ﻳﮏ ﻧﻤﻮﻧﻪ ﻣﺴﺌﻠﻪ ﺑﻪ ﻃﻮﻝ nﺩﺭ ﺁﻥ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ ﺯﻣﺎﻥ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺑﺮﺍﻱ ü
ænö
aﻣﺴﺌﻠﻪ ﺑﻪ ﺍﻧﺪﺍﺯﻩ ÷ T ç ﺣﻞ
èbø
a
ﻗﻀﻴﻪ ﺍﺻﻠﯽ:ﻣﺮﺗﺒﻪ ﺯﻣﺎﻧﻲ ﺭﺍﺑﻄﻪ ﺑﺎﺯﮔﺸﺘﻲ ﺑﺎ ﻣﻘﺎﻳﺴﻪ ) f ( nﻭ n log bﺑﻪ ﻳﻜﻲ ﺍﺯ ﺣﺎﻟﺘﻬﺎﻱ ﺯﻳﺮ ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﺷﻮﺩ:
(I) : (
if f ( n ) = O n log b a -e ) e> 0
¾¾¾¾¾¾¾¾¾® T ( n ) = q n log b a ( )
a
)ﺍﮔﺮ n log bﺑﺰﺭﮔﺘﺮ ﺑﺎﺷﺪ ( ·
ﺩﻗﺖ ﻛﻨﻴﺪ:
log ab
، nﻫﺪﻑ ﺍﺯ ﺫﻛﺮ ﺛﺎﺑﺖ eﺁﻥ ﺍﺳﺖ ﻛﻪ ﻧﺸﺎﻥ ﺩﻫﻴﻢ ﺗﺎﺑﻊ ) f ( nﺑﺎﻳﺪ ﺑﺼﻮﺭﺕ ﭼﻨﺪ ﺟﻤﻠﻪ ﺍﻱ ﻛﻮﭼﻜﺘﺮ )ﺣﺎﻟﺖ ) ( ( I ﻫﻨﮕﺎﻡ ﻣﻘﺎﻳﺴﻪ ﺗﺎﺑﻊ ) f ( nﻭ
ﻳﺎ ﺑﺰﺭﮔﺘﺮ)ﺣﺎﻟﺖ ) ( ( IIIﺍﺯ n log bﺑﺎﺷﺪ .ﺑﻪ ﺍﻳﻦ ﻣﻌﻨﻲ ﻛﻪ ﻣﺮﺗﺒﻪ ﺑﺰﺭﮔﻲ ﻳﺎ ﻛﻮﭼﻜﻲ ﺑﺎﻳﺪ ﺍﺯ n eﺑﺎﺷﺪ ﻭ ﻧﻪ ﺍﺯ ﻣﺮﺗﺒﻪ ﻫﺎﻱ log nﻳﺎ cos nﻳﺎ ...ﭼﺮﺍ ﻛﻪ
a
ìïf(n) = nlogn
í logab
case III : e > 0
¾¾¾¾¾¾¾¾¾¾ )® T(n) = θ ( f(n) ) = θ(nlogn
¾
ïî n
3
= n log4 f ( n ) = W n logba+ε ( )
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۳
ﺩﺭﺧﺖ:
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻱ ﻏﻴﺮ ﺧﻄﻲ ·
ﻧﻤﺎﻳﺶ ﺩﺭﺧﺖ :ﻟﻴﺴﺖ ﭘﻴﻮﻧﺪﻱ ،ﺁﺭﺍﻳﻪ ·
ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ kﺗﺎﻳﻲ ﺩﻟﺨﻮﺍﻩ ﺑﺎ nﮔﺮﻩ ﻭ ﺍﺭﺗﻔﺎﻉ hﺩﺍﺭﻳﻢ:
ﺍﺗﺼﺎﻻﺕ ﺧﺎﻟﻲ ﻛﻞ ﺍﺗﺼﺎﻻﺕ ﺍﺗﺼﺎﻻﺕ ﭘﺮ ۱ـ
)nk - ( n - 1 n -1 nk
n +1 n -1 2n ): ( k = 2 ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ
۶ـ ﻛﺮﺍﻥ ﭘﺎﺋﻴﻦ ﻭ ﺑﺎﻻﻱ ﺍﺭﺗﻔﺎﻉ ﻳﻚ ﺩﺭﺧﺖ kﺗﺎﻳﻲ ﺑﺎ nﮔﺮﻩ ﺑﺮﺍﺑﺮ ﺍﺳﺖ:
ê log n ( k -1) ú + 1 £ h £ n )ﺑﺎ ﻓﺮﺽ ﺳﻄﺢ ﺭﻳﺸﺔ ﻳﻚ(
êë k úû
ê n ( k -1) ú £ h £ n - 1 )ﺑﺎ ﻓﺮﺽ ﺳﻄﺢ ﺭﻳﺸﺔ ﺻﻔﺮ(
êë log k úû ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۴ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
۷ـ ﻛﺮﺍﻥ ﭘﺎﺋﻴﻦ ﻭ ﺑﺎﻻﻱ ﺗﻌﺪﺍﺩ ﮔﺮﻩ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ kﺗﺎﻳﻲ ﺑﺎ ﺍﺭﺗﻔﺎﻉ :h
h
1- k
h£n£ )ﺳﻄﺢ ﺭﻳﺸﺔ ﻳﻚ(
1- k
1 - k h +1
h +1 £ n £ )ﺳﻄﺢ ﺭﻳﺸﺔ ﺻﻔﺮ(
k -1
ﺣﺎﻟﺖ ﺧﺎﺹ :ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ) : ( k = 2
h
h £ n £ 2 -1 )ﺳﻄﺢ ﺭﻳﺸﺔ ﻳﻚ( .
h + 1 £ n £ 2h +1 - 1 )ﺳﻄﺢ ﺭﻳﺸﺔ ﺻﻔﺮ(
۸ـ ﻛﺮﺍﻥ ﭘﺎﺋﻴﻦ ﻭ ﺑﺎﻻﻱ ﺗﻌﺪﺍﺩ ﮔﺮﻩ ﺩﺭ ﺳﻄﺢ iﺍﻡ m) :ﺗﻌﺪﺍﺩ ﮔﺮﻩ(
i -1
1£ m £ k )ﺳﻄﺢ ﺭﻳﺸﺔ ﻳﻚ(
1 £ m £ ki )ﺳﻄﺢ ﺭﻳﺸﺔ ﺻﻔﺮ(
ﺣﺎﻟﺖ ﺧﺎﺹ :ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ) : ( k = 2
i -1
1£ m £ 2 )ﺳﻄﺢ ﺭﻳﺸﺔ ﻳﻚ(
1 £ m £ 2i )ﺳﻄﺢ ﺭﻳﺸﺔ ﺻﻔﺮ(
۹ـ ﺗﻌﺪﺍﺩ ﺩﺭﺧﺖﻫﺎﻱ ﺩﻭﺩﻭﻳﻲ ﻣﺘﻔﺎﻭﺕ ﺑﺎ nﮔﺮﻩ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
1 æ 2n ö 4n æ æ 1 öö
= = å bk bn -1-kﺗﻌﺪﺍﺩ ﺩﺭﺧﺖﻫﺎﻱ ﺩﻭﺩﻭﻳﻲ ﻣﺘﻔﺎﻭﺕ ﺑﺎ nﮔﺮﻩ =÷ ç ÷ ÷ ç1 + O ç
n +1 è n ø 3
è è n øø
pn 2
۱۰ـ ﺗﻌﺪﺍﺩ ﺩﺭﺧﺖﻫﺎﻱ ﺩﻭﺩﻭﻳﻲ ﺑﺎ nﮔﺮﻩ ﺑﺎ ﺍﺭﺗﻔﺎﻉ ) : n - 1ﺣﺘﻤﺎﹰ ﻭ ﺣﺘﻤﺎﹰ ﺑﺎ ﻓﺮﺽ ﺳﻄﺢ ﺭﻳﺸﺔ ﺻﻔﺮ(
2n -1
۱۱ـ ﺗﻌﺪﺍﺩ ﺩﺭﺧﺘﺎﻥ ﺩﻭﺩﻭﻳﻲ ﻣﺘﻤﺎﻳﺰ ﻣﺤﺾ ﺑﺎ nﮔﺮﻩ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
æ 2k ö
÷ ç
k
n = 2k + 1 Þ è ø
k +1
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۵
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۷
ﻧﻜﺘﻪ :ﺍﺯ ﺁﻧﺠﺎ ﻛﻪ ﺩﺭ ﭘﻴﻤﺎﻳﺶ ﺩﺭﺧﺖ ،ﻫﺮ ﮔﺮﻩ ﺣﺪﺍﻗﻞ ﻳﻚﺑﺎﺭ ﺑﺮﺭﺳﻲ ﻣﻲﺷﻮﺩ ،ﺍﻟﮕﻮﺭﻳﺘﻤﻲ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ ﻛﻪ ﻳﻚ ﺩﺭﺧﺖ ﺭﺍ ﺩﺭ ﺯﻣﺎﻥ ﻛﻤﺘﺮ ﺍﺯ
) q ( nﭘﻴﻤﺎﻳﺶ ﻛﻨﺪ.
ìinorder ìinorder ìinorder
íﻣﻲﺗﻮﺍﻥ ﻫﺮ ﺩﺭﺧﺖ ﺩﻟﺨﻮﺍﻩ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ. ،í ،í ۲ـ ﺑﺎ ﻫﺮ ﻳﻚ ﺍﺯ ﺯﻭﺝ ﭘﻴﻤﺎﻳﺶﻫﺎﻱ
îlevelorder îpostorder îpreorder
ﻛﻪ ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺍﺑﺘﺪﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻫﺮ ﻳﻚ ﺍﺯ ﭘﻴﻤﺎﻳﺶﻫﺎﻱ postorder ،preorderﻭ levelorderﻣﻲﺗﻮﺍﻥ ﺭﻳﺸﻪ ﺭﺍ ﻣﺸﺨﺺ ﻛﺮﺩ .ﺳﭙﺲ ﺑﺎ
ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﭘﻴﻤﺎﻳﺶ inorderﺯﻳﺮ ﺩﺭﺧﺖﻫﺎﻱ ﭼﭗ ﻭ ﺭﺍﺳﺖ ﺭﻳﺸﻪ ﻣﺸﺨﺺ ﻣﻲﺷﻮﻧﺪ .ﺍﻳﻦ ﺭﻭﻧﺪ ﻣﺠﺪﺩﺍﹰ ﺑﻪﺻﻮﺭﺕ ﺑﺎﺯﮔﺸﺘﻲ ﺑﺮﺍﻱ ﺯﻳﺮ ﺩﺭﺧﺖﻫﺎﻱ
ﭼﭗ ﻭ ﺭﺍﺳﺖ ﺭﻳﺸﻪ ﺗﻜﺮﺍﺭ ﻣﻲﺷﻮﺩ.
۳ـ ﺩﺭ ﺻﻮﺭﺗﻲﻛﻪ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﺑﺎﺷﺪ ،ﺍﺯ ﺁﻧﺠﺎ ﻛﻪ ﺷﻜﻞ ﺩﺭﺧﺖ ﻣﺸﺨﺺ ﺍﺳﺖ ،ﺑﺎ ﻫﺮ ﭘﻴﻤﺎﻳﺸﻲ ﻣﻲﺗﻮﺍﻥ ﺁﻥ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ.
۴ـ ﺑﺎ ﻫﺮ ﭘﻴﻤﺎﻳﺶ postorder ،preorderﻭ levelorderﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﻣﻲﺗﻮﺍﻥ ﺁﻥ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ.
۵ـ ﭘﻴﻤﺎﻳﺶ inorderﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ،ﻛﻠﻴﺪﻫﺎ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺑﺮﻣﻲﮔﺮﺩﺍﻧﺪ.
۶ـ ﺍﺯ ﺁﻧﺠﺎﻛﻪ Heapﻳﻚ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﺍﺳﺖ ،ﺑﺎ ﻫﺮ ﭘﻴﻤﺎﻳﺸﻲ ،ﻣﻲﺗﻮﺍﻥ ﺁﻥ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ.
۷ـ ﻫﻴﭻ ﭘﻴﻤﺎﻳﺸﻲ ﺍﺯ Heapﺍﻟﺰﺍﻣﺎﹰ ﮔﺮﻩﻫﺎ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻣﺮﺗﺐ ﺑﺮﻧﻤﻲﮔﺮﺩﺍﻧﺪ.
۸ـ ﺩﺭ ﭘﻴﻤﺎﻳﺶ ،preorderﺭﻳﺸﻪ ﺍﻭﻟﻴﻦ ﻭ ﺳﻤﺖ ﺭﺍﺳﺖﺗﺮﻳﻦ ﺑﺮﮒ ،ﺁﺧﺮﻳﻦ ﮔﺮﻩﺍﻱ ﺍﺳﺖ ﻛﻪ ﻣﻼﻗﺎﺕ ﻣﻲﺷﻮﻧﺪ.
ﺩﺭ ﭘﻴﻤﺎﻳﺶ ،postorderﺳﻤﺖ ﭼﭗﺗﺮﻳﻦ ﺑﺮﮒ ﺍﻭﻟﻴﻦ ﻭ ﺭﻳﺸﻪ ﺁﺧﺮﻳﻦ ﮔﺮﻩﺍﻱ ﺍﺳﺖ ﻛﻪ ﻣﻼﻗﺎﺕ ﻣﻲﺷﻮﻧﺪ.
۹ـ ﺩﺭ ﺷﺮﺍﻳﻄﻲ ﻛﻪ ﺩﺭ ﻫﺮ ﺳﻄﺢ ﻳﻚ ﺩﺭﺧﺖ ﺗﻨﻬﺎ ﻳﻚ ﮔﺮﻩ ﺑﺎﺷﺪ ،ﻳﻌﻨﻲ ﺍﺭﺗﻔﺎﻉ ﻳﻚ ﺩﺭﺧﺖ ﺑﺎ nﮔﺮﻩ n ،ﺑﺎﺷﺪ ،ﺁﻥﮔﺎﻩ ﺍﻭﻟﻴﻦ ﮔﺮﻩﺍﻱ ﻛﻪ ﺩﺭ
ﭘﻴﻤﺎﻳﺶ Postorderﻣﻼﻗﺎﺕ ﻣﻲﺷﻮﺩ ﺑﺎ ﺁﺧﺮﻳﻦ ﮔﺮﻩﺍﻱ ﻛﻪ ﺩﺭ ﭘﻴﻤﺎﻳﺶ Preorderﻣﻼﻗﺎﺕ ﻣﻲﺷﻮﺩ ،ﺑﺮﺍﺑﺮ ﺍﺳﺖ
۱۰ـ ﺗﺮﺗﻴﺐ ﻣﻼﻗﺎﺕ ﺑﺮﮒﻫﺎ ﺩﺭ ﻫﺮ ﺳﻪ ﭘﻴﻤﺎﻳﺶ inorder ،Preorderﻭ Postorderﻳﻜﻲ ﺍﺳﺖ.
n
۱۱ـ ﺗﻌﺪﺍﺩ ﺩﺭﺧﺖﻫﺎﻱ ﺩﻭﺩﻭﻳﻲ ﻛﻪ ﭘﻴﻤﺎﻳﺶ Preorderﻭ Postorderﺁﻥﻫﺎ ﺑﺮﺍﺑﺮ ﺑﺎ ﺭﺷﺘﻪﻫﺎﻱ ﻣﺸﺨﺺ ﺑﺎﺷﺪ ،ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ 2 1ﻛﻪ ﺩﺭ ﺁﻥ
n1ﺗﻌﺪﺍﺩ ﮔﺮﻩ ﻫﺎﻱ ﺗﻚ ﻓﺮﺯﻧﺪﻱ ﺩﺭ ﺩﺭﺧﺖ ﺍﺳﺖ.
ﺑﺮﺍﻱ ﺑﻪﺩﺳﺖ ﺁﻭﺭﺩﻥ ﮔﺮﻩﻫﺎﻱ ﺗﻚ ﻓﺮﺯﻧﺪﻱ ﺑﺪﻳﻦ ﺻﻮﺭﺕ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ :ﺍﺯ ﺳﻤﺖ ﭼﭗ ﻳﻜﻲ ﺍﺯ ﭘﻴﻤﺎﻳﺶﻫﺎ )ﺑﺮﺍﻱ ﻣﺜﺎﻝ (Preorderﺣﺮﻛﺖ
ﻣﻲﻛﻨﻴﻢ ﻭ ﻫﺮ ﺗﺮﺗﻴﺐ ﺩﻭﺗﺎﻳﻲ ﺍﺯ ﮔﺮﻩﻫﺎ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ )ﺗﺮﺗﻴﺐﻫﺎﻱ ﺩﻭﺗﺎﻳﻲ ﺩﻗﻴﻘﺎﹰ ﻛﻨﺎﺭ ﻫﻢ( ﻭ ﺩﺭ ﭘﻴﻤﺎﻳﺶ ﺩﻳﮕﺮ ﺑﺮﺭﺳﻲ ﻣﻲﻛﻨﻴﻢ ،ﺍﮔﺮ ﻫﻤﻴﻦ
ﺗﺮﺗﻴﺐ ﺩﻭﺗﺎﻳﻲ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻣﻌﻜﻮﺱ ﻋﻴﻨﺎﹰ ﻣﺸﺎﻫﺪﻩ ﻛﺮﺩﻳﻢ ،ﮔﺮﺓ ﺍﻭﻝ ﺗﺮﺗﻴﺐ ﺍﻧﺘﺨﺎﺑﻲ ﺗﻚ ﻓﺮﺯﻧﺪﻱ ﺍﺳﺖ.
ﻫﻢﭼﻨﻴﻦ ﺑﺮﺍﻱ ﭘﻴﺪﺍ ﻛﺮﺩﻥ ﺑﺮﮒﻫﺎ ،ﺑﺎ ﺩﻭ ﭘﻴﻤﺎﻳﺶ preorderﻭ postorderﺍﺑﺘﺪﺍ ﮔﺮﻩﻫﺎﻱ ﺗﻚ ﻓﺮﺯﻧﺪﻱ ﺭﺍ ﻣﺸﺨﺺ ﻣﻲﻛﻨﻴﻢ .ﺳﭙﺲ ،ﺍﺯ ﺁﻧﺠﺎ ﻛﻪ
ﺗﺮﺗﻴﺐ ﻣﻼﻗﺎﺕ ﺑﺮﮒﻫﺎ ﺩﺭ ﺩﻭ ﭘﻴﻤﺎﻳﺶ ﻳﻜﻲ ﺍﺳﺖ ،ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﻭ ﭘﻴﻤﺎﻳﺶ ﺳﻤﺖ ﺭﺍﺳﺖﺗﺮﻳﻦ ﻭ ﺳﻤﺖ ﭼﭗﺗﺮﻳﻦ ﺑﺮﮒ ﺭﺍ ﻣﺸﺨﺺ ﻣﻲﻛﻨﻴﻢ.
ﮔﺮﻩﻫﺎﻱ ﻗﺒﻞ ﺍﺯ ﺳﻤﺖ ﭼﭗﺗﺮﻳﻦ ﺑﺮﮒ )ﺩﺭ ﭘﻴﻤﺎﻳﺶ (Preorderﻭ ﮔﺮﻩﻫﺎﻱ ﺑﻌﺪ ﺍﺯ ﺳﻤﺖ ﺭﺍﺳﺖﺗﺮﻳﻦ ﺑﺮﮒ )ﺩﺭ ﭘﻴﻤﺎﻳﺶ (Postorderﻗﻄﻌﺎﹰ ﺑﺮﮒ
ﻧﻴﺴﺘﻨﺪ .ﻟﺬﺍ ﺑﻪ ﺭﺍﺣﺘﻲ ﺑﺮﮒﻫﺎ ﻣﺸﺨﺺ ﻣﻲﺷﻮﻧﺪ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۸ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۹
ﻧﺘﻴﺠﻪ :ﺯﻣﺎﻥ ﺳﺎﺧﺘﻦ ﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻟﺨﻮﺍﻩ ﺑﺎ nﻛﻠﻴﺪ ﺣﺘﻤﺎﹰ ﺍﺯ ﻣﺮﺗﺒﻪ ) Ω(nlog 2nﻳﺎ ) O(n 2ﻣﻲ ﺑﺎﺷﺪ.
ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﺩﺭﺧﺘﻲ:
ﺑﺮﺍﻱ ﻣﺮﺗﺐﺳﺎﺯﻱ nﻛﻠﻴﺪ ،ﺍﺑﺘﺪﺍ ﺁﻧﻬﺎ ﺭﺍ ﺩﺭ ﻳﻚ BSTﺗﻬﻲ ﺩﺭﺝ ﻣﻲﻛﻨﻴﻢ .ﺳﭙﺲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﭘﻴﻤﺎﻳﺶ inorderﻛﻠﻴﺪﻫﺎ ﺭﺍ ﻣﺮﺗﺐ ﻣﻲﻛﻨﻴﻢ.
ﺑﻨﺎﺑﺮﺍﻳﻦ ،ﻛﻠﻴﺪﻫﺎ ﺩﺭ ﺯﻣﺎﻥ ) O ( nhﻣﺮﺗﺐ ﻣﻲﺷﻮﻧﺪ.
) O ( nh ) + q ( n ) = O ( nh
) (
ﻛﻪ ﺩﺭ ﺣﺎﻟﺖ ﻣﺘﻮﺳﻂ ) O ( n log nﻭ ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ O n 2ﺍﺳﺖ.
ﻧﻜﺘﻪ :ﺑﺪﻭﻥ ﺗﻮﺟﻪ ﺑﻪ ﺍﻳﻨﻜﻪ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺑﺎ ﺍﺭﺗﻔﺎﻉ hﺍﺯ ﭼﻪ ﮔﺮﻩﺍﻱ ﺷﺮﻭﻉ ﻛﻨﻴﻢ k ،ﻓﺮﺍﺧﻮﺍﻧﻲ ﻣﻮﻓﻘﻴﺖ ﺁﻣﻴﺰ
TREE – SUCCESSORﺯﻣﺎﻥ ) O ( k + hﺭﺍ ﺻﺮﻑ ﻣﻲﻛﻨﺪ.
ﺩﺭ ﻳﻚ BSTﻫﻤﻮﺍﺭﻩ:
] a = key [ x
] b = key [ y
] c = key [ z
ﻧﻜﺘﻪ :ﭘﻴﻤﺎﻳﺶ inorderﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺭﺍ ﻣﻲﺗﻮﺍﻥ ﺍﺑﺘﺪﺍ ﺑﺎ ﻳﻚ ﻓﺮﺍﺧﻮﺍﻧﻲ TREE – MINIMUMﻭ ﺳﭙﺲ n - 1ﻓﺮﺍﺧﻮﺍﻧﻲ
TREE SUCCESSORﭘﻴﺎﺩﻩﺳﺎﺯﻱ ﻛﺮﺩ ﻛﻪ ﺯﻣﺎﻥ ﺁﻥ ) q ( nﺍﺳﺖ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۱۰ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
AVL(0) = 1
AVL(1) = 2
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۱۱
:Heap
:Max – Heapﻳﻚ ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ﻛﺎﻣﻞ ﻛﻪ ﻛﻠﻴﺪ ﻫﺮ ﮔﺮﻩ ﺍﺯ ﻓﺮﺯﻧﺪﺍﻧﺶ ﺑﺰﺭﮒﺗﺮ ﺍﺳﺖ.
:Min – Heapﻳﻚ ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ﻛﺎﻣﻞ ﻛﻪ ﻛﻠﻴﺪ ﻫﺮ ﮔﺮﻩ ﺍﺯ ﻓﺮﺯﻧﺪﺍﻧﺶ ﻛﻮﭼﻚﺗﺮ ﺍﺳﺖ.
ﺍﺯ ﺁﻧﺠﺎ Heapﻳﻚ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﺍﺳﺖ ﺩﺍﺭﻳﻢ:
۱ـ ﺍﺭﺗﻔﺎﻉ Heap
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۱۲ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﺍﻟﮕﻮﺭﻳﺘﻢﻫﺎ:
) MAX - HEAPIFY ( A , i -۱ﺍﻟﮕﻮﺭﻳﺘﻢ
ﺍﻳﻦ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺑﺎ ﻓﺮﺽ ﺍﻳﻨﻜﻪ ﺯﻳﺮ ﺩﺭﺧﺖﻫﺎﻱ ﭼﭗ ﻭ ﺭﺍﺳﺖ ﮔﺮﻩ iﺍﻡ ﺩﺭ ﺁﺭﺍﻳﺔ ،Aﻫﺮ ﻛﺪﺍﻡ ﻳﻚ Max – Heapﻫﺴﺘﻨﺪ ،ﻋﻨﺎﺻﺮ ﺁﺭﺍﻳﻪ Aﺭﺍ ﺑﻪ
ﮔﻮﻧﻪﺍﻱ ﺟﺎﺑﻪﺟﺎ ﻣﻲﻛﻨﺪ ﻛﻪ ﺯﻳﺮ ﺩﺭﺧﺖ ﻣﺸﺘﻖ ﺷﺪﻩ ﺍﺯ ] ، A [iﻳﻚ Max – Heapﺷﻮﺩ .ﺍﻳﻦ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺩﺭﺟﺎ ﺍﺳﺖ ﻭ ﻣﺮﺗﺒﺔ ﺯﻣﺎﻧﻲ ﺁﻥ
) O ( log nﺍﺳﺖ .
)ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﻫﺮ ﮔﺮﻩ ﺭﺍ ﺑﺎ ﻓﺮﺯﻧﺪﺍﻧﺶ ﻣﻘﺎﻳﺴﻪ ﻛﺮﺩﻩ ﻭ ﺩﺭ ﺻﻮﺭﺗﻲﻛﻪ ﻛﻮﭼﻚﺗﺮ ﺑﺎﺷﺪ ﺑﺎ ﻓﺮﺯﻧﺪ ﺑﺰﺭﮒﺗﺮ ﺟﺎﺑﻪﺟﺎ ﻣﻲﻛﻨﺪ ﻭ ﻣﺠﺪﺩﺍﹰ ﺍﻟﮕﻮﺭﻳﺘﻢ
ﺑﻪﺻﻮﺭﺕ ﺑﺎﺯﮔﺸﺘﻲ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻣﻲﺷﻮﺩ(.
)ﺍﻟﮕﻮﺭﻳﺘﻢ ،MIN – HEAPIFYﻣﺸﺎﺑﻪ ﺑﺎﻻ ﺍﺳﺖ(.
)BUILD - MAX - HEAP(A -۲ﺍﻟﮕﻮﺭﻳﺘﻢ
ﺍﻳﻦ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺑﻪﺻﻮﺭﺕ ﺩﺭﺟﺎ ﻳﻚ ﺁﺭﺍﻳﺔ ﻭﺭﻭﺩﻱ Aﺭﺍ ﺑﻪ ﻛﻤﻚ ﺍﻟﮕﻮﺭﻳﺘﻢ MAX – HEAPIFYﺑﻪ Max – Heapﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ .ﻛﻪ ﻣﺮﺗﺒﺔ
ﺯﻣﺎﻧﻲ ﺁﻥ ) O ( nﺍﺳﺖ .ﺑﻨﺎﺑﺮﺍﻳﻦ ﺩﺭ ﺯﻣﺎﻥ ) O ( nﻣﻲﺗﻮﺍﻥ ﻣﺸﺨﺺ ﻛﺮﺩ ﺁﻳﺎ ﻳﻚ ﺁﺭﺍﻳﻪ Max – Heap ،ﺍﺳﺖ ﻳﺎ ﺧﻴﺮ) .ﺑﻪ ﻃﻮﺭ ﻣﺸﺎﺑﻪ ﺑﺮﺍﻱ – Min
Heapﻧﻴﺰ ﺻﺎﺩﻕ ﺍﺳﺖ(.
-۳ﺟﺴﺘﺠﻮ :ﺑﺮﺍﻱ ﺟﺴﺘﺠﻮ ﺩﺭ ،Heapﺑﺎﻳﺪ ﺍﺯ ﺟﺴﺘﺠﻮﻱ ﺧﻄﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ ﻛﻪ ﻣﺮﺗﺒﺔ ﺯﻣﺎﻧﻲ ﺁﻥ ) O ( nﺍﺳﺖ.ﺩﺭ ﻋﻴﻦ ﺣﺎﻝ ﺍﺯ ﺁﻧﺠﺎﺋﻴﻜﻪ ﻋﻨﺼﺮ
n + 1ú
êêﺍﺳﺖ ﺯﻣﺎﻥ ﺟﺴﺘﺠﻮﻱ ﺁﻧﻬﺎ ﻧﻴﺰ ) O ( nﺍﺳﺖ. ﻣﻴﻨﻴﻤﻢ ﺩﺭ MAXHEAPﻭ ﻣﺎﻛﺰﻳﻤﻢ ﺩﺭ MINHEAPﺩﺭ ﺑﺮﮔﻬﺎ ﻗﺮﺍﺭﺩﺍﺭﻧﺪ ﻭ ﺗﻌﺪﺍﺩ ﺑﺮﮔﻬﺎ ú
ë 2 û
-۴ﺩﺭﺝ :ﺍﺑﺘﺪﺍ ﮔﺮﻩ ﺩﺭ ﺁﺧﺮﻳﻦ ﺧﺎﻧﺔ ﺁﺭﺍﻳﻪ ﺍﺿﺎﻓﻪ ﻣﻲﺷﻮﺩ ﺳﭙﺲ ﺗﺎ ﺭﻳﺸﻪ ،ﭘﺸﺖ ﺳﺮ ﻫﻢ ﺑﺎ ﺍﺟﺪﺍﺩﺵ ﻣﻘﺎﻳﺴﻪ ﻣﻲﺷﻮﺩ ﻭ ﺩﺭ ﺻﻮﺭﺗﻲﻛﻪ ﺍﺯ ﺁﻧﻬﺎ
ﺑﺰﺭﮒﺗﺮ ﺑﺎﺷﺪ،ﺟﺎﺑﻪﺟﺎ ﻣﻲﺷﻮﻧﺪ ﻛﻪ ﺯﻣﺎﻥ ) O ( log nﺍﺳﺖ.
: MAXIMUM(A) -۵ﻋﻨﺼﺮ ﻱ ﺍﺯ Aﺑﺎ ﺑﺰﺭﮔﺘﺮﻳﻦ ﻛﻠﻴﺪﻳﻌﻨﻲ ﺭﻳﺸﻪ ﺭﺍ )ﺩﺭ (MAXHEAPﺑﺮ ﻣﻲ ﮔﺮﺩﺍﻧﺪ ﻛﻪ ﺯﻣﺎﻥ ) O (1ﺻﺮﻑ ﻣﻲﻛﻨﺪ.
:MINIMUM(A) -۶ﻋﻨﺼﺮ ﻱ ﺍﺯ Aﺑﺎ ﻛﻮﭼﻜﺘﺮﻳﻦ ﻛﻠﻴﺪ ﻳﻌﻨﻲ ﺭﻳﺸﻪ ﺭﺍ )ﺩﺭ (MINHEAPﺑﺮ ﻣﻲ ﮔﺮﺩﺍﻧﺪ ﻛﻪ ﺯﻣﺎﻥ ) O (1ﺻﺮﻑ ﻣﻲﻛﻨﺪ.
:EXTRACT_MAX(A) -۷ﻋﻨﺼﺮ ﻱ ﺍﺯ Aﺑﺎ ﺑﺰﺭﮔﺘﺮﻳﻦ ﻛﻠﻴﺪ ﺭﺍ )ﺩﺭ (MAXHEAPﺣﺬﻑ ﻛﺮﺩﻩ ﻭ ﺑﺮ ﻣﻲ ﮔﺮﺩﺍﻧﺪ ﻛﻪ ﺯﻣﺎﻥ ) O ( log nﺻﺮﻑ ﻣﻲﻛﻨﺪ
:EXTRACT_MIN(A) -۸ﻋﻨﺼﺮ ﻱ ﺍﺯ Aﺑﺎﻛﻮﭼﻜﺘﺮﻳﻦ ﻛﻠﻴﺪ ﺭﺍ )ﺩﺭ (MINHEAPﺣﺬﻑ ﻛﺮﺩﻩ ﻭ ﺑﺮ ﻣﻲ ﮔﺮﺩﺍﻧﺪ ﻛﻪ ﺯﻣﺎﻥ ) O ( log nﺻﺮﻑ ﻣﻲﻛﻨﺪ
:INCREASE(A , x , k)-۹ﻣﻘﺪﺍﺭ ﻛﻠﻴﺪ ﻋﻨﺼﺮ xﺭﺍ ﺑﻪ ﻣﻘﺪﺍﺭ ﺟﺪﻳﺪ kﺍﻓﺰﺍﻳﺶ ﻣﻲﺩﻫﺪ ﻛﻪ ﺯﻣﺎﻥ ) O ( log nﺻﺮﻑ ﻣﻲﻛﻨﺪ) .ﻛﻪ ﻓﺮﺽ ﺷﺪﻩ
ﻣﻘﺪﺍﺭ xﺣﺪﺍﻗﻞ ﺑﻪ ﺑﺰﺭﮔﻲ ﻣﻘﺪﺍﺭ ﻓﻌﻠﻲ ﻛﻠﻴﺪ ﻋﻨﺼﺮ xﺍﺳﺖ(
:DECREASE(A , x , k) -۱۰ﻣﻘﺪﺍﺭ ﻛﻠﻴﺪ ﻋﻨﺼﺮ xﺭﺍ ﺑﻪ ﻣﻘﺪﺍﺭ ﺟﺪﻳﺪ kﻛﺎﻫﺶ ﻣﻲﺩﻫﺪ ﻛﻪ ﺯﻣﺎﻥ ) O ( log nﺻﺮﻑ ﻣﻲﻛﻨﺪ) .ﻛﻪ ﻓﺮﺽ ﺷﺪﻩ
ﻣﻘﺪﺍﺭ xﺣﺪﺍﻗﻞ ﺑﻪ ﻛﻮﭼﻜﻲ ﻣﻘﺪﺍﺭ ﻓﻌﻠﻲ ﻛﻠﻴﺪ ﻋﻨﺼﺮ xﺍﺳﺖ(
ﻧﻜﺘﻪ Heap :ﻳﻚ ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﺓ ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ ﻧﻴﺴﺖ ﻭ ﺩﺭ ﻣﺮﺗﺐﺳﺎﺯﻱ ﺁﺭﺍﻳﻪ ،ﺻﻒ ﺍﻭﻟﻮﻟﻴﺖ ﻭ ﺍﺩﻏﺎﻡ ﻟﻴﺴﺖﻫﺎﻱ ﻣﺮﺗﺐ )ﺑﻪ ﻛﻤﻚ ﺩﺭﺧﺖ
ﺍﻧﺘﺨﺎﺑﻲ (Min – Heapﻛﺎﺭﺑﺮﺩ ﺩﺍﺭﺩ.
-۱۱ﻣﺮﺗﺐ ﺳﺎﺯﻱ :Heapﺍﺑﺘﺪﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺭﻭﺍﻝ BUILD - MAX – HEAPﺁﺭﺍﻳﻪ ﺑﻪ Heapﺗﺒﺪﻳﻞ ﻣﻲﺷﻮﺩ )ﺩﺭ ﺯﻣﺎﻥ ) ( O ( nﺳﭙﺲ
ﻋﻨﺎﺻﺮ ﻳﻜﻲﻳﻜﻲ ﺍﺯ Heapﺣﺬﻑ ﻣﻲﺷﻮﺩ ﻛﻪ ﺣﺬﻑ nﻋﻨﺼﺮ ﺯﻣﺎﻥ ) O ( n log nﺻﺮﻑ ﻣﻲﻛﻨﺪ .ﭘﺲ ﺯﻣﺎﻥ ﻛﻞ ) O ( n log nﺍﺳﺖ.
-۱۲ﺍﺩﻏﺎﻡ kﻟﻴﺴﺖ ﻣﺮﺗﺐ :ﻛﻪ ﺍﮔﺮ ﻣﺠﻤﻮﻉ ﻋﻨﺎﺻﺮ ﻫﻤﺔ ﻟﻴﺴﺖﻫﺎ nﺑﺎﺷﺪ ،ﺩﺭ ﺯﻣﺎﻥ ) O ( n log kﺍﻧﺠﺎﻡ ﻣﻲﺷﻮﺩ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۱۳
: Treap
ﻳﻚ ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺁﻥ ﻫﺮ ﻧﻮﺩ ﻳﻚ ﻛﻠﻴﺪﻭ ﻳﻚ ﺍﻭﻟﻮﻳﺖ ﺩﺍﺭﺩ .ﺩﺭ ﺍﻳﻦ ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩ ﻓﺮﺽ ﻣﻲﻛﻨﻴﻢ ﻫﻤﺔ ﺍﻭﻟﻮﻳﺖﻫﺎ ﻭ ﻛﻠﻴﺪﻫﺎ
ﻣﺘﻤﺎﻳﺰ ﻫﺴﺘﻨﺪ .ﻳﻌﻨﻲ ﺍﻭﻟﻮﻳﺖ ﻳﺎ ﻛﻠﻴﺪ ﻫﻴﭻ ﺩﻭ ﮔﺮﻩﺍﻱ ﻳﻜﺴﺎﻥ ﻧﻴﺴﺖ .ﭘﻴﻤﺎﻳﺶ ﻣﻴﺎﻥ ﺗﺮﺗﻴﺐ ﺑﺮ ﺭﻭﻱ ﻛﻠﻴﺪﻫﺎﻱ ﮔﺮﻩﻫﺎﻱ ﻳﻚ ، treapﻛﻠﻴﺪﻫﺎ ﺭﺍ ﺑﻪ
ﺻﻮﺭﺕ ﻣﺮﺗﺐ ﺷﺪﻩ ﺑﺮ ﻣﻲﮔﺮﺩﺍﻧﺪ ﻭ ﺍﻭﻟﻮﻳﺖ ﻫﺮ ﮔﺮﻩ ﺍﺯ ﺍﻭﻟﻮﻳﺖ ﻓﺮﺯﻧﺪﺍﻧﺶ ﺑﺰﺭﮔﺘﺮ ﺍﺳﺖ ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ ،ﻛﻠﻴﺪﻫﺎﻱ ﻳﻚ treapﺍﺯ ﻭﻳﮋﮔﻲ ﺩﺭﺧﺖ
ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﻭ ﺍﻭﻟﻮﻳﺖ ﻳﻚ treapﺍﺯ ﻭﻳﮋﮔﻲ Heapﭘﻴﺮﻭﻱ ﻣﻲﻛﻨﻨﺪ ). (Max Heap
ﺩﺭ treapﮔﺮﻩﻫﺎ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﺯﻭﺝ ﻣﺮﺗﺐ ) (k,pﻧﺸﺎﻥ ﺩﺍﺩﻩ ﻣﻲﺷﻮﻧﺪ ﻛﻪ Kﻧﺸﺎﻥ ﺩﻫﻨﺪﺓ ﻛﻠﻴﺪ ﻭ Pﺍﻭﻟﻮﻳﺖ ﺍﺳﺖ) .ﺍﮔﺮ Max Heap ، Heap
ﺑﺎﺷﺪ(.
) ( k 2 , p2
) ( k1 , p1 ) ( k3 , p 3
ìp > p
í 2 1ﺍﺳﺖ. ﺗﺮﺗﻴﺐ ﻛﻠﻴﺪﻫﺎ k1 < k 2 < k 3 :ﻭ ﺗﺮﺗﻴﺐ ﺍﻭﻟﻮﻳﺘﻬﺎ :
î p 2 > p3
ﺍﺯ ﺁﻥ ﺟﺎ ﻛﻪ ﻓﺮﺽ ﻛﺮﺩﻳﻢ ﻛﻪ ﻫﻤﺔﻛﻠﻴﺪﻫﺎ ﻭ ﺍﻭﻟﻮﻳﺖ ﻣﺘﻤﺎﻳﺰ ﻫﺴﺘﻨﺪ ،ﺷﻜﻞ treapﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩ ﺧﻮﺍﻫﺪ ﺑﻮﺩ .ﺷﻜﻞ treapﺗﻨﻬﺎ ﺑﻪ ﻛﻠﻴﺪﻫﺎ ﻭ
ﺍﻭﻟﻮﻳﺖ ﺑﺴﺘﮕﻲ ﺩﺍﺭﺩ ﻭ ﺑﻪﺗﺮﺗﻴﺐ ﺩﺭﺝ ﻭ ﺣﺬﻑ ﻛﻠﻴﺪ ﻭﺍﺑﺴﺘﻪ ﻧﻴﺴﺖ .ﺑﻴﺸﺘﺮ ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ﺍﻳﻦ ﻭﻳﮋﮔﻲ ﺭﺍ ﻧﺪﺍﺭﺩ ﻭ ﺳﺎﺧﺘﺎﺭ ﺁﻥﻫﺎ ﺑﻪ ﺗﺮﺗﻴﺐ ﺩﺭﺝ
ﻭ ﺣﺬﻑ ﻋﻨﺎﺻﺮ ﺑﺴﺘﮕﻲ ﺩﺍﺭﺩ
ﻛﺎﺭﺑﺮﺩ :ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ treapﻣﻲﺗﻮﺍﻥ ﻣﺸﺨﺺ ﻛﺮﺩ،ﺍﮔﺮ Aﻭ Bﺩﻭ ﻣﺠﻤﻮﻋﻪ ﺑﺎﺷﻨﺪ ،ﺁﻳﺎ A=Bﺍﺳﺖ ﻳﺎ ﺧﻴﺮ .ﺑﺮﺍﻱ ﺍﻳﻦ ﻛﺎﺭ ﺑﺮﺍﻱ ﻋﻨﺎﺻﺮ ﺩﺭ
ﻣﺠﻤﻮﻋﺔ B , Aﺑﻪ ﻃﻮﺭ ﺟﺪﺍﮔﺎﻧﻪ treapﻣﻲﺳﺎﺯﻳﻢ .ﻭ ﺳﭙﺲ ﺑﺎ ﻫﻢ ﻣﻘﺎﻳﺴﻪ ﻣﻲﻛﻨﻴﻢ ﺍﮔﺮ treapﻫﺎ ﻳﻜﺴﺎﻥ ﺑﻮﻧﺪ ،ﺁﻥ ﮔﺎﻩ ﻣﺠﻤﻮﻋﻪﻫﺎ ﻳﻜﻲﺍﻧﺪ.
ﺟﺴﺘﺠﻮ(Search) :
ﺟﺴﺘﺠﻮ ﺩﺭ treapﻣﺎﻧﻨﺪ ﺟﺴﺘﺠﻮ ﺩﺭ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺍﺳﺖ .ﺯﻣﺎﻥ ﺑﺮﺍﻱ ﺟﺴﺘﺠﻮﻱ ﻣﻮﻓﻖ ﻳﻚ ﮔﺮﻩ ﺑﺎ ﻋﻤﻖ ﺁﻥ ﮔﺮﻩ ﻣﺘﻨﺎﺳﺐ ﺍﺳﺖ
ﺯﻣﺎﻥ ﺑﺮﺍﻱ ﻳﻚ ﺟﺴﺘﺠﻮﻱ ﻧﺎﻣﻮﻓﻖ ﺑﺎ ﻋﻤﻖ ﻋﻨﺼﺮ ﻣﺎﺑﻌﺪ ﻳﺎ ﻋﻨﺼﺮ ﻣﺎﻗﺒﻞ ﺁﻥ ﻣﺘﻨﺎﺳﺐ ﺍﺳﺖ.
ﺩﺭﺝ(INSERT) :
ﺑﺮﺍﻱ ﺩﺭﺝ ﻋﻨﺼﺮ ﺟﺪﻳﺪ ، zﺍﺑﺘﺪﺍ ﻣﺎﻧﻨﺪ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﺩﺭﺝ ﻋﻨﺼﺮ ﺩﺭ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﻋﻤﻞ ﻛﺮﺩﻩ ﻭ ﻋﻨﺼﺮ ﺭﺍ ﺩﺭ ﭘﺎﻳﻴﻦ ﺩﺭﺧﺖ
ﺩﺭﺝ ﻣﻲﻛﻨﻴﻢ .ﺣﺎﻝ ﺩﺭﺧﺖ ﺣﺎﺻﻞ ﻣﻤﻜﻦ ﺍﺳﺖ ﻭﻳﮋﮔﻲ Heapﺭﺍ ﺣﻔﻆ ﻧﻜﻨﺪ ،ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺯﻣﺎﻧﻲ ﻛﻪ ﮔﺮﺓ zﻣﺎﻧﻨﺪ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ
ﺩﻭﺩﻭﻳﻲ ﺩﺭﺝ ﺷﺪ ،ﺍﮔﺮ ﺍﻭﻟﻮﻳﺖ ﺁﻥ ﮔﺮﻩ ﺍﺯ ﭘﺪﺭﺵ ﺑﻴﺸﺘﺮ ﺑﺎﺷﺪ،ﺁﻥ ﮔﺎﻩ ﻳﻚ ﺩﻭﺭﺍﻥ ﺭﻭﻱ ﮔﺮﺓ zﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﻴﻢ
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۱۴ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﺟﺪﻭﻝ ﺩﺭﻫﻢﺳﺎﺯﻱ:
ﺟﺪﻭﻝ ﺩﺭﻫﻢﺳﺎﺯﻱ ﻳﻚ ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﺓ ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ ﻧﻴﺴﺖ ﻭ ﺗﻨﻬﺎ ﺑﺮﺍﻱ ﺫﺧﻴﺮﺓ ﺍﻃﻼﻋﺎﺕ ﺑﻪ ﻛﺎﺭ ﻣﻲﺭﻭﺩ ﻭ ﺍﻋﻤﺎﻝ ﻗﺎﺑﻞ ﺍﺟﺮﺍ ﺭﻭﻱ ﺁﻥ ﺩﺭﺝ ،ﺣﺬﻑ
ﻭ ﺟﺴﺘﺠﻮ ﺍﺳﺖ.
ﻫﺮ ﻛﻠﻴﺪ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻳﻚ ﺗﺎﺑﻊ ﺩﺭﻫﻢﺳﺎﺯﻱ ﺑﻪ ﻳﻚ ﻣﻜﺎﻥ ﺩﺭﻫﻢﺳﺎﺯﻱ ﻣﻲﺷﻮﺩ .ﻛﻠﻴﺪ kﺑﻪ ﻣﻜﺎﻥ ) h ( kﺩﺭﻫﻢﺳﺎﺯﻱ ﻣﻲﺷﻮﺩ.
ﻣﻌﺎﻳﺐ :ﺯﻣﺎﻧﻲ ﻛﻪ ﺩﻭ)ﺑﻴﺸﺘﺮ( ﻋﻨﺼﺮ ﺑﻪ ﻳﻚ ﻣﻜﺎﻥ ﺩﺭﻫﻢﺳﺎﺯﻱ ﺷﻮﻧﺪ .ﺗﺼﺎﺩﻡ ﺭﺥ ﻣﻲﺩﻫﺪ ﻛﻪ ﺑﺮﺍﻱ ﺣﻞ ﺍﻳﻦ ﻣﺸﻜﻞ ﺩﻭ ﺭﺍﻩ ﺯﻳﺮ ﭘﻴﺸﻨﻬﺎﺩ ﻣﻲﺷﻮﺩ:
۱ـ ﺣﻞ ﺗﺼﺎﺩﻡ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺯﻧﺠﻴﺮﻩﺳﺎﺯﻱ
۲ـ ﺣﻞ ﺗﺼﺎﺩﻡ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺁﺩﺭﺱﺩﻫﻲ ﺑﺎﺯ
ﺩﺭ ﺗﺤﻠﻴﻞ ﺟﺪﻭﻝ ﺩﺭﻫﻢﺳﺎﺯﻱ ﺍﺯ ﻓﺎﻛﺘﻮﺭ ﻟﻮﺩ aﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ ﻛﻪ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
n ﺗﻌﺪﺍﺩ ﻋﻨﺎﺻﺮ ﺫﺧﻴﺮﻩ ﺷﺪﻩ
=a =
m ﺗﻌﺪﺍﺩ ﻛﻞ ﻋﻨﺎﺻﺮ ﺟﺪﻭﻝ ﺩﺭﻫﻢﺳﺎﺯﻱ
ﺩﺭ ﺗﻮﺯﻳﻊ ﻳﻜﻨﻮﺍﺧﺖ ﻛﻠﻴﺪﻫﺎ ﺑﻪ mﻣﻜﺎﻥ:
1
= ﺍﺣﺘﻤﺎﻝ ﺣﻀﻮﺭ ﻫﺮ ﻛﻠﻴﺪ ﺩﺭ ﻳﻚ ﻣﻜﺎﻥ
m
n
= ﻣﻴﺎﻧﮕﻴﻦ ﺗﻌﺪﺍﺩ ﺧﺎﻧﻪﻫﺎﻱ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺑﺮﺍﻱ nﻛﻠﻴﺪ =a
m
ﺩﺭﻫﻢﺳﺎﺯﻱ ﻳﻜﻨﻮﺍﺧﺖ ﺳﺎﺩﻩ :ﻫﺮ ﻛﻠﻴﺪ ﺑﺎ ﺍﺣﺘﻤﺎﻝ ﻣﺴﺎﻭﻱ ﻣﻲﺗﻮﺍﻧﺪ ﺩﺭ ﻳﻜﻲ ﺍﺯ ﺧﺎﻧﻪﻫﺎﻱ ﺟﺪﻭﻝ ﺩﺭﻫﻢﺳﺎﺯﻱ ﺷﻮﺩ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۱۵
. q æç
nö
÷ ﻗﻀﻴﻪ :ﺑﺎ ﻓﺮﺽ ﺩﺭﻫﻢﺳﺎﺯﻱ ﻳﻜﻨﻮﺍﺧﺖ ﺳﺎﺩﻩ ،ﻣﺘﻮﺳﻂ ﺯﻣﺎﻥ ﺟﺴﺘﺠﻮﻱ ﻣﻮﻓﻖ ﻭ ﻧﺎﻣﻮﻓﻖ ) q ( a + 1ﺍﺳﺖ .ﻳﻌﻨﻲ
m
è ø
)q (1 (۱ üﺑﻬﺘﺮﻳﻦ ﺣﺎﻟﺖ :ﻫﺮ ﻋﻨﺼﺮ ﺑﻪ ﻳﻚ ﻣﻜﺎﻥ ﺩﺭﻫﻢﺳﺎﺯﻱ ﺷﻮﺩ.
ï
ænö ï
÷ qç ۲ـ ﺣﺎﻟﺖ ﻣﺘﻮﺳﻂ: ïï
èmø ý ﺯﻣﺎﻥ ﺟﺴﺘﺠﻮ
۳ـ ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ :ﻫﻤﺔ ﻋﻨﺎﺻﺮ ﺑﻪ ﻳﻚ ﻣﻜﺎﻥ ﺩﺭﻫﻢﺳﺎﺯﻱ ﺷﻮﻧﺪ ﻛﻪ ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ﺯﻣﺎﻥ ﺟﺴﺘﺠﻮ ﻳﻚ ﻋﻨﺼﺮ ﻣﺘﻨﺎﺳﺐ ﺑﺎ ï
ï
ﺯﻣﺎﻥ ﺟﺴﺘﺠﻮﻱ ﻳﻚ ﻋﻨﺼﺮ ﺩﺭ ﻳﻚ ﻟﻴﺴﺖ ﭘﻴﻮﻧﺪﻱ nﻋﻨﺼﺮﻱ ﺍﺳﺖq ( n ) . ï
ïþ
ﺍﮔﺮ ﻟﻴﺴﺖ ﭘﻴﻮﻧﺪﻱ ،ﻳﻚﻃﺮﻓﻪ ﺑﺎﺷﺪ ﺯﻣﺎﻥ ﺣﺬﻑ ﺑﺎ ﺟﺴﺘﺠﻮ ﺑﺮﺍﺑﺮ ﻣﻲﺷﻮﺩ .ﺍﮔﺮ ﻟﻴﺴﺖ ﭘﻴﻮﻧﺪﻱ ﺩﻭﻃﺮﻓﻪ ﺑﺎﺷﺪ ،ﺯﻣﺎﻥ ﺣﺬﻑ ) q (1ﻣﻲﺷﻮﺩ.
ﺯﻣﺎﻥ ﺩﺭﺝ ،ﻫﻤﻮﺍﺭﻩ ) q (1ﺍﺳﺖ) .ﺩﺭﺝ ﺍﺑﺘﺪﺍﻱ ﻟﻴﺴﺖ ﭘﻴﻮﻧﺪﻱ(
ﺩﺭ ﺭﻭﺵ ﺯﻧﺠﻴﺮﻩﺳﺎﺯﻱ ،ﺍﺯ ﺁﻧﺠﺎﻛﻪ ﻫﺮ ﻋﻨﺼﺮ ﺧﺎﺭﺝ ﺍﺯ ﺟﺪﻭﻝ ﻧﮕﻪﺩﺍﺭﻱ ﻣﻲﺷﻮﺩ ،ﺑﻨﺎﺑﺮﺍﻳﻦ ﻓﺎﻛﺘﻮﺭ ﻟﻮﺩ ، a ،ﻣﻲﺗﻮﺍﻧﺪ ﺑﻴﺸﺘﺮ ،ﻣﺴﺎﻭﻱ ﻳﺎ ﻛﻤﺘﺮ ﺍﺯ 1
ﺑﺎﺷﺪ.
1
ﺍﺳﺖ. ﺩﺭ ﺭﻭﺵ ﺁﺩﺭﺱﺩﻫﻲ ﺑﺎﺯ ﺑﺎ ﻓﺮﺽ ﺗﺎﺑﻊ ﺩﺭﻫﻢﺳﺎﺯﻱ ﻳﻜﻨﻮﺍﺧﺖ ﺳﺎﺩﻩ ،ﻣﺘﻮﺳﻂ ﺑﺮﺭﺳﻲﻫﺎ ﺩﺭ ﻳﻚ ﺟﺴﺘﺠﻮﻱ ﻧﺎﻣﻮﻓﻖ ﺣﺪﺍﻛﺜﺮ
1- a
1
ﺑﺮﺭﺳﻲ ﺩﺭ ﺭﻭﺵ ﺁﺩﺭﺱﺩﻫﻲ ﺑﺎﺯ ﺑﺎ ﻓﺮﺽ ﺗﺎﺑﻊ ﺩﺭﻫﻢﺳﺎﺯﻱ ﻳﻜﻨﻮﺍﺧﺖ ﺳﺎﺩﻩ ،ﺩﺭﺝ ﻳﻚ ﻋﻨﺼﺮ ﺑﺎ ﻓﺎﻛﺘﻮﺭ ﻟﻮﺩ ، aﺣﺎﻟﺖ ﻣﻴﺎﻧﮕﻴﻦ ﺣﺪﺍﻛﺜﺮ ﺑﻪ
1- a
ﻧﻴﺎﺯ ﺩﺍﺭﺩ.
ﺩﺭ ﺭﻭﺵ ﺁﺩﺭﺱﺩﻫﻲ ﺑﺎﺯ ﺑﺎ ﻓﺮﺽ ﺗﺎﺑﻊ ﺩﺭﻫﻢﺳﺎﺯﻱ ﻳﻜﻨﻮﺍﺧﺖ ﺳﺎﺩﻩ ﻭ ، a < 1ﺗﻌﺪﺍﺩ ﺑﺮﺭﺳﻲﻫﺎ ﺩﺭ ﻳﻚ ﺟﺴﺘﺠﻮﻱ ﻣﻮﻓﻖ ﺣﺪﺍﻛﺜﺮ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ
1 1
. Ln
a 1- a
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۱۶ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﻣﺮﺗﺐﺳﺎﺯﻱ
ﺗﻮﺿﻴﺤﺎﺕ ﺗﻌﺪﺍﺩ ﮔﺬﺭ ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ ﺣﺎﻟﺖ ﻣﺘﻮﺳﻂ ﺑﻬﺘﺮﻳﻦ ﺣﺎﻟﺖ ﺭﻭﺵ ﻣﺮﺗﺐﺳﺎﺯﻱ
ﻣﺘﻌﺎﺩﻝ ـ ﺩﺭﺟﺎ
) (
O n2
) (
O n 2 ) (
O n2
-۱ﺣﺒﺎﺑﻲ
n -1
ﺁﺭﺍﻳﻪﻱ ﻭﺭﻭﺩﻱ ﻣﺮﺗﺐ ﻣﻌﻜﻮﺱ ﺁﺭﺍﻳﻪﻱ ﻭﺭﻭﺩﻱ ﻣﺮﺗﺐ
ﻧﺎﻣﺘﻌﺎﺩﻝ ـ ﺩﺭﺟﺎ
) (
O n2
) (
O n 2 ) (
O n2
-۲ﺍﻧﺘﺨﺎﺑﻲ
n -1
ﺁﺭﺍﻳﻪﻱ ﻭﺭﻭﺩﻱ ﻣﺮﺗﺐ ﻣﻌﻜﻮﺱ ﺁﺭﺍﻳﻪﻱ ﻭﺭﻭﺩﻱ ﻣﺮﺗﺐ
ﻣﺘﻌﺎﺩﻝ ـ ﺩﺭﺟﺎ
) (
O n2
) (
O n2
)O(n
-۳ﺩﺭﺟﻲ
n -1 ﺁﺭﺍﻳﻪﻱ ﻭﺭﻭﺩﻱ ﻣﺮﺗﺐ
ﺁﺭﺍﻳﻪﻱ ﻭﺭﻭﺩﻱ ﻣﺮﺗﺐ ﻣﻌﻜﻮﺱ
ﺑﺮﺍﻱ ﺁﺭﺍﻳﻪﻫﺎﻱ ﻛﻮﭼﻚ ﻭ ﺗﻘﺮﻳﺒﺎﹰ ﻣﺮﺗﺐ ،ﻣﺮﺗﺐﺳﺎﺯﻱ ﺩﺭﺟﻲ ﺑﻬﺘﺮﻳﻦ ﺣﺎﻟﺖ ﺍﺳﺖ. ·
ﺣﺎﻟﺖ ﺭﻭﺵ
ﺗﻮﺿﻴﺤﺎﺕ ﻣﻌﺎﺩﻟﻪ ﺑﺎﺯﮔﺸﺘﻲ ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ ﺑﻬﺘﺮﻳﻦ ﺣﺎﻟﺖ
ﻣﺘﻮﺳﻂ ﻣﺮﺗﺐﺳﺎﺯﻱ
ﻏﻴﺮ ﺩﺭﺟﺎ ـ ) O ( n log n
ænö ) O ( n log n ) O ( n log n
ﻣﺘﻌﺎﺩﻝ ) T ( n ) = 2T ç ÷ + O ( n n -۴ﺍﺩﻏﺎﻣﻲ
è2ø n log n - n + 1 ﺗﻌﺪﺍﺩ ﻣﻘﺎﻳﺴﻪ: log n ﺗﻌﺪﺍﺩ ﻣﻘﺎﻳﺴﻪ:
ﺗﻘﺴﻴﻢ ﻭ ﻏﻠﺒﻪ 2
ﺩﺭﺟﺎ ـ
) (
O n2 ) O ( n log n
) T ( n ) = T ( n - 1) + O ( n ) O ( n log n ænö
ﻣﺘﻌﺎﺩﻝ ) T ( n ) = 2T ç ÷ + O ( n -۵ﺳﺮﻳﻊ
ﺁﺭﺍﻳﻪﻱ ﻭﺭﻭﺩﻱ ﻣﺮﺗﺐ ﻳﺎ ﻣﺮﺗﺐ è2ø
ﺗﻘﺴﻴﻢ ﻭ ﻏﻠﺒﻪ
ﻣﻌﻜﻮﺱ
ﺩﺭ ﺣﺎﻟﺖ ﻣﺘﻮﺳﻂ ﻣﺮﺗﺐﺳﺎﺯﻱ ﺳﺮﻳﻊ ﺍﺯ ﻣﺮﺗﺐﺳﺎﺯﻱ ﺍﺩﻏﺎﻣﻲ ﺑﻬﺘﺮ ﺍﺳﺖ. ·
ﺍﺯ ﻣﺮﺗﺐﺳﺎﺯﻱ ﺍﺩﻏﺎﻣﻲ ﻣﻲﺗﻮﺍﻥ ﺑﺮﺍﻱ ﻟﻴﺴﺖ ﻭﺭﻭﺩﻱ ﻳﻜﻄﺮﻓﻪ ﻭ ﺩﻭﻃﺮﻓﻪ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ ﻛﻪ ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ﻣﺮﺗﺒﻪﻱ ﺯﻣﺎﻧﻲ ﺁﻥ ·
) O ( n log nﻣﻲﺑﺎﺷﺪ.
ﺩﺭ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻣﺮﺗﺐﺳﺎﺯﻱ ﺳﺮﻳﻊ ﺍﺯ PARTITIONﻭ ﺩﺭ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻣﺮﺗﺐﺳﺎﺯﻱ ﺍﺩﻏﺎﻣﻲ ﺍﺯ MERGEﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ ﻛﻪ ﻣﺮﺗﺒﻪﻱ ·
ﺯﻣﺎﻧﻲ ﻫﺮ ﺩﻭ ) O ( nﺍﺳﺖ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۱۷
ﺩﺭ ﻣﺮﺗﺐﺳﺎﺯﻱ ﻣﺒﻨﺎﻳﻲ ،ﻣﺮﺗﺐﺳﺎﺯﻱ ﻣﻴﺎﻧﻲ ﺣﺘﻤﺎﹰ ﺑﺎﻳﺪ ﭘﺎﻳﺪﺍﺭ ﺑﺎﺷﺪ ،ﻟﺬﺍ ﻣﺮﺗﺐﺳﺎﺯﻱ ﺷﻤﺎﺭﺷﻲ ﺍﻧﺘﺨﺎﺏ ﻣﻨﺎﺳﺒﻲ ﻫﺴﺘﻨﺪ. ·
ﻣﺮﺗﺐﺳﺎﺯﻱﻫﺎ 1ﺗﺎ ،5ﻣﺮﺗﺐﺳﺎﺯﻱ ﻣﻘﺎﻳﺴﻪﺍﻱ ﻫﺴﺘﻨﺪ ،ﻳﻌﻨﻲ ﺑﺮﺍﻱ ﻣﺮﺗﺐ ﻛﺮﺩﻥ ﻋﻨﺎﺻﺮ ﻭﺭﻭﺩﻱ ﺍﺯ ﻋﻤﻠﮕﺮ ﻣﻘﺎﻳﺴﻪ ﺍﺳﺘﻔﺎﺩﻩ ·
) W ( n log n ﻣﻲﺷﻮﺩ .ﺛﺎﺑﺖ ﻣﻲﺷﻮﺩ ﻛﻪ ﺣﺪ ﭘﺎﻳﻴﻦ ﺗﻌﺪﺍﺩ ﻣﻘﺎﻳﺴﻪ ،ﺩﺭ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻫﺎﻱ ﻣﺮﺗﺐﺳﺎﺯﻱ ﻣﻘﺎﻳﺴﻪﺍﻱ ﺩﺭ ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ
ﺍﺳﺖ .ﺍﻣﺎ ﻣﺮﺗﺐﺳﺎﺯﻱﻫﺎﻱ 8 ،7 ،6ﻣﺮﺗﺐﺳﺎﺯﻱ ﻣﻘﺎﻳﺴﻪﺍﻱ ﻧﻴﺴﺘﻨﺪ ﺍﻳﻦ ﻣﺮﺗﺐﺳﺎﺯﻱﻫﺎ ﺍﺯ ﻋﻤﻠﻲ ﻏﻴﺮ ﺍﺯ ﻣﻘﺎﻳﺴﻪ ،ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻨﺪ،
ﻟﺬﺍ ﻗﺎﺑﻞ ﺍﺟﺮﺍ ﺩﺭ ﺯﻣﺎﻥ ﺧﻄﻲ ﻫﺴﺘﻨﺪ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۱۸ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﺩﺭﺧﺖ ﻭ ﮔﺮﺍﻑ
۱ـ ﺩﺭ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ،Tﺍﮔﺮ xﮔﺮﻩﻱ ﺑﺮﮒ ﻭ yﭘﺪﺭ xﺑﺎﺷﺪ ،ﻛﺪﺍﻡ ﮔﺰﻳﻨﻪ ﺩﺭ ﻣﻮﺭﺩ ] b = key [ y ] , a = key [ xﺻﺤﻴﺢ ﺍﺳﺖ؟
a (۲ﻛﻮﭼﻚﺗﺮﻳﻦ ﻛﻠﻴﺪ ﺩﺭ Tﺍﺳﺖ ﻛﻪ ﺑﺰﺭﮒﺗﺮ ﺍﺯ bﺑﺎﺷﺪ. b (۱ﺑﺰﺭﮒﺗﺮﻳﻦ ﻛﻠﻴﺪ ﺩﺭ Tﺍﺳﺖ ﻛﻪ ﻛﻮﭼﻚﺗﺮ ﺍﺯ aﺑﺎﺷﺪ.
(۴ﻫﻴﭻﻛﺪﺍﻡ ﺍﺯ ﮔﺰﻳﻨﻪﻫﺎﻱ ﺑﺎﻻ ﻫﻤﻮﺍﺭﻩ ﺻﺤﻴﺢ ﻧﻴﺴﺖ. b (۳ﻛﻮﭼﻚﺗﺮﻳﻦ ﻛﻠﻴﺪ ﺩﺭ Tﺍﺳﺖ ﻛﻪ ﺑﺰﺭﮒﺗﺮ ﺍﺯ aﺑﺎﺷﺪ.
ﺣﻞ :ﮔﺰﻳﻨﻪ ۴ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺯﻳﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ.
ﺍﮔﺮ ﮔﺮﻩ xﻓﺮﺯﻧﺪ ﺭﺍﺳﺖ ﺑﺎﺷﺪ ﺁﻧﮕﺎﻩ ﮔﺰﻳﻨﻪ ﻫﺎﻱ ۱ﻭ ۲ﺻﺤﻴﺢ ﺧﻮﺍﻫﻨﺪ ﺑﻮﺩ ﻭ ﺍﮔﺮ ﮔﺮﻩ xﻓﺮﺯﻧﺪ ﭼﭗ ﺑﺎﺷﺪ ﮔﺰﻳﻨﻪ ۳ﺻﺤﻴﺢ ﺧﻮﺍﻫﺪ ﺑﻮﺩ ،ﺣﺎﻝ ﺍﺯ
ﺁﻧﺠﺎﺋﻴﻜﻪ ﺩﺭ ﺳﻮﺍﻝ ﻣﻮﻗﻌﻴﺖ ﮔﺮﻩ xﻧﺴﺒﺖ ﺑﻪ ﭘﺪﺭ ﻣﺸﺨﺺ ﻧﻴﺴﺖ ﺟﻮﺍﺏ ﺻﺤﻴﺢ ﮔﺰﻳﻨﻪ ۴ﺍﺳﺖ
۲ـ ﮔﺰﻳﻨﺔ ﻧﺎﺩﺭﺳﺖ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﺪ؟
(۱ﺑﺎ ﺩﺍﺷﺘﻦ ﭘﻴﻤﺎﻳﺶ inorderﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﻣﻲﺗﻮﺍﻥ ﺁﻥ ﺩﺭﺧﺖ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ.
(۲ﺑﺎ ﺩﺍﺷﺘﻦ ﻫﺮ ﻳﻚ ﺍﺯ ﭘﻴﻤﺎﻳﺶﻫﺎﻱ preorderﻳﺎ postorderﻳﻚ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ،ﻣﻲﺗﻮﺍﻥ ﺁﻥ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ.
(۳ﺑﺎ ﺩﺍﺷﺘﻦ ﭘﻴﻤﺎﻳﺶﻫﺎﻱ inorderﻭ preorderﻫﺮ ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ﻣﻲﺗﻮﺍﻥ ﺁﻥ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ.
(۴ﺑﺎ ﺩﺍﺷﺘﻦ ﻫﺮ ﻳﻚ ﺍﺯ ﭘﻴﻤﺎﻳﺶﻫﺎﻱ Preorderﻳﺎ Postorderﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ،ﻣﻲﺗﻮﺍﻥ ﺁﻥ ﺩﺭﺧﺖ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ
ﻛﺮﺩ.
ﺣﻞ :ﮔﺰﻳﻨﻪ ۱ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺑﻪ ﻃﻮﺭ ﻛﻠﻲ ﺑﺎ ﺩﺍﺷﺘﻦ ﻫﺮ ﻳﻚ ﺍﺯ ﺟﻔﺖ ﭘﻴﻤﺎﻳﺶﻫﺎﻱ ) (inorder , preorderﻳﺎ ) (Postorder , inorderﻳﺎ ) (levelorder , inorderﻳﻚ ﺩﺭﺧﺖ
ﺩﻭﺩﻭﻳﻲ ﻣﻲﺗﻮﺍﻥ ﺁﻥ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ.
ﺩﺭ ﺻﻮﺭﺗﻲﻛﻪ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﺑﺎﺷﺪ .ﺍﺯ ﺁﻧﺠﺎ ﻛﻪ ﺷﻜﻞ ﺩﺭﺧﺖ ﻣﺸﺨﺺ ﺍﺳﺖ ﺑﺎ ﻫﺮ ﭘﻴﻤﺎﻳﺸﻲ ﻣﻲﺗﻮﺍﻥ ﺩﺭﺧﺖ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ.
ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺑﻪ ﺟﺰ ﭘﻴﻤﺎﻳﺶ ،inorderﺑﺎ ﻫﺮ ﭘﻴﻤﺎﻳﺶ ﺩﻳﮕﺮ ﻣﻲﺗﻮﺍﻥ ﺩﺭﺧﺖ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ.
ﻧﻜﺘﻪ :ﺩﺭ ﻫﺮ ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ﺗﻨﻬﺎ ﺑﺎ ﺩﺍﺷﺘﻦ ﭘﻴﻤﺎﻳﺶﻫﺎﻱ Preorderﻭ Postorderﺑﺪﻭﻥ ﻫﻴﭻ ﺍﻃﻼﻉ ﺍﺿﺎﻓﻲ ﻧﻤﻲﺗﻮﺍﻥ ﺩﺭﺧﺖ ﺭﺍ ﺑﻪﺻﻮﺭﺕ
ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۱۹
۳ـ ﺑﻪ ﭼﻨﺪ ﺣﺎﻟﺖ ﻋﻨﺎﺻﺮ ﺑﺎ ﻛﻠﻴﺪﻫﺎﻱ a < b < c < dﺭﺍ ﻣﻲﺗﻮﺍﻥ ﻭﺍﺭﺩ ﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺗﻬﻲ ﻛﺮﺩ ﺗﺎ ﺩﺭﺧﺘﻲ ﺑـﻪ ﺷـﻜﻞ ﺯﻳـﺮ
ﺍﻳﺠﺎﺩ ﺷﻮﺩ؟
1 (۱
2 (۲
3 (۳
4 (۴
ﺣﻞ :ﮔﺰﻳﻨﻪ ۳ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺷﻜﻞ ﻛﻠﻲ ﺩﺭﺧﺖ ﺑﺎ ﭼﻬﺎﺭ ﻛﻠﻴﺪ a < b < c < dﺑﻪ ﺍﻳﻦ ﺻﻮﺭﺕ ﺍﺳﺖ:
ﺩﺭ ﻭﺭﻭﺩﻱﻫﺎﻱ ﻣﺠﺎﺯ ﺑﺮﺍﻱ ﺳﺎﺧﺘﻦ ﻫﺮ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮ ،ﮔﺮﻩ ﻭﺍﻟﺪ ﺑﺎﻳﺪ ﺯﻭﺩﺗﺮ ﺍﺯ ﻓﺮﺯﻧﺪﺍﻧﺶ ﺩﺭ ﻭﺭﻭﺩﻱ ﻗﺮﺍﺭ ﮔﻴﺮﺩ ،ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ ﺩﺭ ﺍﻳﻨﺠﺎ ﮔﺮﻩ
bﺑﺎﻳﺪ ﻗﺒﻞ ﺍﺯ ﮔﺮﻩ ﻫﺎﻱ a,dﻭ ﮔﺮﻩ dﺑﺎﻳﺪ ﻗﺒﻞ ﺍﺯ ﮔﺮﻩ cﺩﺭ ﻭﺭﻭﺩﻱ ﻗﺮﺍﺭ ﮔﻴﺮﺩ.
ﻭﺭﻭﺩﻱﻫﺎﻱ ﻣﺠﺎﺯ:
b,a,d,c
b,d,a,c
b,d,c,a
۴ـ ﻛﺪﺍﻡ ﮔﺰﻳﻨﻪ ﺗﻌﺪﺍﺩ ﺩﺭﺧﺖﻫﺎﻱ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺑﺎ nﮔﺮﻩ ﺭﺍ ﻧﺸﺎﻥ ﻧﻤﻲﺩﻫﺪ؟ ) bnﺗﻌﺪﺍﺩ ﺩﺭﺧﺘﺎﻥ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺍﺳﺖ(.
n -1
æ 2n ö 1
÷ bn = ç
è n ø n +1
(۲ = bn å bk bn -1-k (۱
k =0
4n æ æ 1 öö
(2
)n -1
(۴ = bn
3 ÷ ÷ ç1 + O ç (۳
è è n øø
pn 2
ﺣﻞ :ﮔﺰﻳﻨﻪ ۴ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺍﻭﻻ :ﺗﻌﺪﺍﺩ ﺩﺭﺧﺘﺎﻥ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺑﺎ nﮔﺮﻩ ﺑﺎ ﺗﻌﺪﺍﺩ ﺩﺭﺧﺘﺎﻥ ﺩﻭﺩﻭﻳﻲ ﺑﺎ nﮔﺮﻩ ﺑﺮﺍﺑﺮ ﺍﺳﺖ.
n -1
ﺛﺎﻧﻴﺎ :ﻣﻲﺗﻮﺍﻥ ﺛﺎﺑﺖ ﻛﺮﺩ ﺗﻌﺪﺍﺩ ﺩﺭﺧﺘﺎﻥ ﺩﻭﺩﻭﻳﻲ ﺑﺎ nﮔﺮﻩ bn = å bk bn -1-kﺍﺳﺖ.
k =0
æ 2n ö 1
÷ bn = ç ﻛﻪ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﺎﺑﻊ ﻣﻮﻟﺪ ﻭ ﺑﺴﻂ ﺗﻴﻠﻮﺭ ﺛﺎﺑﺖ ﻣﻲﺷﻮﺩ:
è n ø n +1
4n æ æ 1 öö
= bn
3 ç
÷÷ 1+ Oç ﻫﻢﭼﻨﻴﻦ ﺛﺎﺑﺖ ﻣﻲﺷﻮﺩ:
è è n øø
pn 2
۵ـ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺑﺎ nﮔﺮﻩ ﻭ ﺍﺭﺗﻔﺎﻉ hﮔﺰﻳﻨﺔ ﻧﺎﺩﺭﺳﺖ ﻛﺪﺍﻡ ﺍﺳﺖ؟
(۱ﻣﺮﺗﺒﺔ ﺯﻣﺎﻧﻲ ﻫﺮ ﻳﻚ ﺍﺯ ﭘﻴﻤﺎﻳﺶﻫﺎﻱ Preorder ،inorderﻭ q ( n ) ،Postorderﺍﺳﺖ.
(۲ﭘﻴﻤﺎﻳﺶ inorderﺭﺍ ﻣﻲﺗﻮﺍﻥ ﺍﺑﺘﺪﺍ ﺑﺎ ﻳﻚ ﻓﺮﺍﺧﻮﺍﻧﻲ TREE - MINIMUMﻭ ﺳﭙﺲ n - 1ﻓﺮﺍﺧﻮﺍﻧﻲ TREE - SUCCESSOR
ﭘﻴﺎﺩﻩﺳﺎﺯﻱ ﻛﺮﺩ ﻛﻪ ﻣﺮﺗﺒﺔ ﺁﻥ ) q ( n log nﺍﺳﺖ.
(۳ﻣﺮﺗﺒﺔ ﺯﻣﺎﻧﻲ ﻫﺮ ﻳﻚ ﺍﺯ ﻋﻤﻠﻴﺎﺕ ﺟﺴﺘﺠﻮ ،ﺣﺬﻑ ،ﺩﺭﺝ ،ﻋﻨﺼﺮ ﻣﺎ ﺑﻌﺪ ﻭ ﻋﻨﺼﺮ ﻣﺎ ﻗﺒﻞ ﻳﻚ ﮔﺮﻩﻱ O ( h ) ،xﺍﺳﺖ.
(۴ﻣﻲﺗﻮﺍﻥ ﺑﺮﺍﻱ ﻣﺮﺗﺐﺳﺎﺯﻱ nﻛﻠﻴﺪ ،ﺍﺑﺘﺪﺍ ﺁﻥﻫﺎ ﺭﺍ ﻳﻜﻲﻳﻜﻲ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺗﻬﻲ ﺩﺭﺝ ﻛﺮﺩﻩ ﻭ ﺳﭙﺲ ﺍﺯ ﭘﻴﻤﺎﻳﺶ inorder
ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﻢ.
ﺣﻞ :ﮔﺰﻳﻨﻪ ۲ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺍﺑﺘﺪﺍ ﺑﻪ ﺗﻮﺿﻴﺢ ﮔﺰﻳﻨﻪﻫﺎﻱ ۳ ،۱ﻭ ۴ﻣﻲﭘﺮﺩﺍﺯﻳﻢ:
ﮔﺰﻳﻨﺔ :۱ﻣﺮﺗﺒﺔ ﺯﻣﺎﻧﻲ ﻫﺮ ﻳﻚ ﺍﺯ ﺍﻟﮕﻮﺭﻳﺘﻢﻫﺎﻱ ﭘﻴﻤﺎﻳﺶ preorder ،inorderﻭ q ( n ) ،postorderﺍﺳﺖ.
ﮔﺰﻳﻨﺔ :۳ﻣﺮﺗﺒﺔ ﺯﻣﺎﻧﻲ ﻫﺮ ﻳﻚ ﺍﺯ ﺍﻋﻤﺎﻝ ﺟﺴﺘﺠﻮ ،ﺣﺬﻑ ،ﺩﺭﺝ ،ﻋﻨﺼﺮ ﻣﺎﺑﻌﺪ ﻭ ﻋﻨﺼﺮ ﻣﺎﻗﺒﻞ ﻳﻚ ﮔﺮﺓ O ( h ) ،xﻛﻪ hﺍﺭﺗﻔﺎﻉ ﺩﺭﺧﺖ ﺍﺳﺖ.
)ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ ﺩﺭ ﻫﺮ ﻳﻚ ﺍﺯ ﺍﻋﻤﺎﻝ ﻓﻮﻕ ،ﻳﻚ ﻣﺴﻴﺮ ﺍﺯ ﺭﻳﺸﻪ ﺗﺎ ﺣﺪﺍﻛﺜﺮ ﻳﻚ ﺑﺮﮒ ﻃﻲ ﻣﻲﺷﻮﺩ ﺑﻨﺎﺑﺮﺍﻳﻦ ﻣﺮﺗﺒﺔ ﺯﻣﺎﻧﻲ ﺁﻥﻫﺎ ) O ( h
ﺍﺳﺖ ﺩﺭ ﺣﺎﻟﻲﻛﻪ ﺩﺭ ﺍﻟﮕﻮﺭﻳﺘﻢﻫﺎﻱ ﭘﻴﻤﺎﻳﺶ ﺩﺭﺧﺖ ،ﻫﺮ ﮔﺮﻩ ﺣﺪﺍﻗﻞ ﻳﻚﺑﺎﺭ ﺑﺮﺭﺳﻲ ﻣﻲﺷﻮﺩ ﭘﺲ ﻣﺮﺗﺒﺔ ﺁﻥ ) q ( nﺍﺳﺖ(
ﮔﺰﻳﻨﺔ :۴ﺑﺮﺍﻱ ﻣﺮﺗﺐﺳﺎﺯﻱ nﻛﻠﻴﺪ ،ﻣﻲﺗﻮﺍﻥ ﺍﺑﺘﺪﺍ ﺁﻥﻫﺎ ﺭﺍ ﻳﻜﻲﻳﻜﻲ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﺗﻬﻲ ﺩﺭﺝ ﻛﺮﺩ ﻛﻪ ﻣﺮﺗﺒﺔ ﺯﻣﺎﻧﻲ ﺁﻥ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
) n O ( h ) = O ( nh
) O ( n log n ﺍﺯ ﻃﺮﻓﻲ ﭼﻮﻥ ﺍﺭﺗﻔﺎﻉ ﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺩﺭ ﺣﺎﻟﺖ ﻣﺘﻮﺳﻂ ) O ( log nﺍﺳﺖ ،ﺩﺭﺝ nﻛﻠﻴﺪ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
ﺩﺭ ﺍﺩﺍﻣﻪ ﻣﻲﺗﻮﺍﻥ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﭘﻴﻤﺎﻳﺶ ،inorderﻛﻠﻴﺪﻫﺎ ﺭﺍ ﻣﺮﺗﺐ ﻛﺮﺩ .ﻛﻪ ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ﻣﺮﺗﺒﺔ ﺯﻣﺎﻧﻲ ﺁﻥ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
) O ( n log n ) + q ( n ) = O ( n log n
ﻛﻪ ﺑﻪ ﺍﻳﻦ ﻣﺮﺗﺐﺳﺎﺯﻱ ،ﻣﺮﺗﺐﺳﺎﺯﻱ ﺩﺭﺧﺘﻲ ﻧﻴﺰ ﮔﻔﺘﻪ ﻣﻲﺷﻮﺩ.
ﮔﺰﻳﻨﺔ :۲ﭘﻴﻤﺎﻳﺶ inorderﺭﺍ ﻣﻲﺗﻮﺍﻥ ﺍﺑﺘﺪﺍ ﺑﺎ ﻳﻚ ﻓﺮﺍﺧﻮﺍﻧﻲ TREE – MINIMUMﻭ ﺳﭙﺲ n - 1ﻓﺮﺍﺧﻮﺍﻧﻲ TREE – SUCCESSOR
ﭘﻴﺎﺩﻩﺳﺎﺯﻱ ﻛﺮﺩ ،ﻛﻪ ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ﻣﺮﺗﺒﻪﻱ ﺯﻣﺎﻧﻲ ﺁﻥ ) q ( nﺧﻮﺍﻫﺪ ﺑﻮﺩ ﻧﻪ ) . q ( n log n
۶ـ ﺗﺎﺑﻊ ﺯﻳﺮ ﭼﻚ ﻣﻲﻛﻨﺪ ﻛﻪ ﺁﻳﺎ ﻳﻚ ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ﺑﺎ ﻋﻨﺎﺻﺮ ﺻﺤﻴﺢ ) (intﻭ ﻣﺘﻤﺎﻳﺰ ﻭ ﺑﺎ ﺭﻳﺸﺔ rootﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺍﺳـﺖ
ﻳﺎ ﺧﻴﺮ؟
) Bool IsBST ( tree * t
{
; ) Re turn IsBST ( t, MININT , MAXINT
}
Int ) IsBST ( tree * t , int min , int max
{
if ( t = = Null ) return ;TRUE
if ( t ® data < min ;t ® data > max ) return FALSE
Re turn IsBST æç t ® Left Child , ............. B ö & & IsBST æ t ® Right Child C , .............
A , ............. ;D ö
÷ ç ............. ÷
è ø è ø
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۲۱
ﻛﺪﺍﻡ ﮔﺰﻳﻨﻪ ﺑﺎﻳﺪ ﺩﺭ ﺟﺎﻱ ﺧﺎﻟﻲ Aﻭ Bﻭ Cﻭ Dﻗﺮﺍﺭ ﺩﺍﺩﻩ ﺷﻮﺩ؟
A = max B = t ® data C = t ® data + 1 D = min (۱
A = min B = t ® data C = t ® data + 1 D = max (۲
A = t ® data B = max C = min D = t ® data + 1 (۳
A = t ® data B = min C = max D = t ® data + 1 (۴
ﺣﻞ :ﮔﺰﻳﻨﻪ ۲ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ:
ﺍﻳﻦ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺑﺎﺯﮔﺸﺘﻲ ﺍﺳﺖ .ﺍﺑﺘﺪﺍ ﺑﺮﺭﺳﻲ ﻣﻲﺷﻮﺩ ﻛﻪ ﺭﻳﺸﻪ ﺗﻬﻲ ﻧﺒﺎﺷﺪ .ﻣﺘﻐﻴﺮﻫﺎﻱ minﻭ maxﺑﻪ
ﺗﺮﺗﻴﺐ ﺣﺎﻭﻱ ﻛﻮﭼﻚﺗﺮﻳﻦ ﻛﻠﻴﺪ ﻭ ﺑﺰﺭﮒﺗﺮﻳﻦ ﻛﻠﻴﺪ ﻫﺴﺘﻨﺪ .ﺯﻣﺎﻧﻲ ﻛﻪ ﺍﺯ ﺭﻳﺸﻪ ﺑﻪ ﺯﻳﺮ ﺩﺭﺧﺖ ﭼﭗ
ﻣﻲﺭﻭﻳﻢ ﺑﻨﺎ ﺑﻪ ﺧﺎﺻﻴﺖ min ،BSTﺑﺎﻳﺪ ﻫﻤﺎﻥ minintﺑﺎﻗﻲ ﺑﻤﺎﻧﺪ ﺩﺭ ﺣﺎﻟﻲﻛﻪ maxﺑﺎﻳﺪ ﺭﻳﺸﻪ ﺷﻮﺩ
ﻭ ﺯﻣﺎﻧﻲ ﻛﻪ ﺍﺯ ﺭﻳﺸﻪ ﺑﻪ ﺯﻳﺮ ﺩﺭﺧﺖ ﺭﺍﺳﺖ ﻣﻲﺭﻭﻳﻢ ﺑﻨﺎ ﺑﻪ ﺧﺎﺻﻴﺖ max ،BSTﺑﺎﻳﺪ ﻫﻤﺎﻥ maxint
ﺑﺎﻗﻲ ﺑﻤﺎﻧﺪ ﺩﺭ ﺣﺎﻟﻲﻛﻪ minﺑﺎﻳﺪ ﺭﻳﺸﻪ ﺷﻮﺩ .ﺳﭙﺲ ﺑﻪﺻﻮﺭﺕ ﺑﺎﺯﮔﺸﺘﻲ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺑﺮﺍﻱ ﺩﻭ ﺯﻳﺮ
ﺩﺭﺧﺖ ،ﭼﭗ ﻭ ﺭﺍﺳﺖ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻣﻲﺷﻮﺩ .ﺑﻪ ﮔﻮﻧﻪﺍﻱ ﻓﺮﺯﻧﺪ ﭼﭗ ﺭﻳﺸﻪ ﺑﻪ ﻋﻨﻮﺍﻥ ﺭﻳﺸﺔ ﺯﻳﺮ ﺩﺭﺧﺖ
ﭼﭗ ﻭ ﻓﺮﺯﻧﺪ ﺭﺍﺳﺖ ﺭﻳﺸﻪ ﺑﻪ ﻋﻨﻮﺍﻥ ﺭﻳﺸﺔ ﺯﻳﺮ ﺩﺭﺧﺖ ﺭﺍﺳﺖ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮﻧﺪ.
ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ،ﺍﺯ ﺁﻧﺠﺎ ﻛﻪ ﻓﺮﺽ ﺷﺪﻩ ﻛﻠﻴﺪﻫﺎ ﻣﺘﻤﺎﻳﺰ ﻫﺴﺘﻨﺪ ،ﺯﻣﺎﻧﻲﻛﻪ ﺑﻪ ﺯﻳﺮ ﺩﺭﺧﺖ ﭼﭗ ﺭﻳﺸﻪ ﻣﻲﺭﻭﻳﻢ max ،ﻣﻲﺗﻮﺍﻧﺪ ﺑﻪ ﺟﺎﻱ ،data
t ® data - 1ﺷﻮﺩ ﻳﺎ ﺯﻣﺎﻧﻲ ﻛﻪ ﺑﻪ ﺯﻳﺮ ﺩﺭﺧﺖ ﺭﺍﺳﺖ ﻣﻲﺭﻭﻳﻢ Min .ﻣﻲﺗﻮﺍﻧﺪ t ® min + 1ﺷﻮﺩ.
۷ـ ﻛﺪﺍﻡ ﮔﺰﻳﻨﻪ ﻳﻚ ﺗﺮﺗﻴﺐ ﺩﺭﺳﺖ ﺍﺯ ﺭﺃﺱﻫﺎﻱ ﮔﺮﺍﻑ ﺯﻳﺮ ﺭﺍ ﻛﻪ ﺩﺭ ﺟﺴﺘﺠﻮﻱ ﺍﻭﻝ ـ ﻋﻤﻖ ) (Depth-First Searchﻋﻼﻣﺖ ﻣﻼﻗـﺎﺕ ﺷـﺪﻥ
) (Visitedﻣﻲﺧﻮﺭﻧﺪ ،ﻧﺸﺎﻥ ﻧﻤﻲﺩﻫﺪ؟
ABEDFC (۲ ABCDEF (۱
ADEFBC (۴ ABDFEC (۳
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۲۲ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﮔﺰﻳﻨﻪ :۳
1 A
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۲۳
ﮔﺰﻳﻨﻪ :۴
1 A
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۲۴ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﮔﺰﻳﻨﻪ :۱
1 A
ﻳﺎ
Preorder : 40 , 30 , 10 , 20 , 80 , 70 , 50 , 60
Postorder : 20 , 10 , 30 , 60 , 50 , 70 , 80 , 40
ﺭﺍﻩ ﺣﻞ ﺗﺴﺘﻲ :ﺩﺭ ﺭﻭﺵ ﭘﺲﺗﺮﺗﻴﺐ ﺭﻳﺸﻪ ﺁﺧﺮﻳﻦ ﮔﺮﻩﺍﻱ ﺍﺳﺖ ﻛﻪ ﻣﻼﻗﺎﺕ ﻣﻲﺷﻮﺩ ،ﺍﺯ ﻃﺮﻓﻲ ﺩﺭ ﭘﻴﻤﺎﻳﺶ ﭘﻴﺶﺗﺮﺗﻴﺐ ﺍﻭﻟﻴﻦ ﮔﺮﻩﺍﻱ ﺍﺳﺖ ﻛﻪ
ﺩﺭ ﺍﺑﺘﺪﺍ ﻣﻼﻗﺎﺕ ﻣﻲﺷﻮﺩ ﺑﻨﺎﺑﺮﺍﻳﻦ 40ﺭﻳﺸﻪ ﺍﺳﺖ ،ﭘﺲ ﺑﺎﻳﺪ ﺩﺭ ﮔﺰﻳﻨﻪﻫﺎ ،ﺁﻥ ﮔﺰﻳﻨﻪﺍﻱ ﻛﻪ 40ﺩﺭ ﺁﺧﺮ ﺩﻳﺪﻩ ﻣﻼﻗﺎﺕ ﺷﺪﻩ ﺍﺳﺖ ،ﺍﻧﺘﺨﺎﺏ ﺷﻮﺩ.
۹ـ ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﺍﻱ ﺭﺍ ﺑﺮ ﺭﻭﻱ ﻣﺠﻤﻮﻋﺔ Aﺍﺯ ﺍﻋﺪﺍﺩ ﺻﺤﻴﺢ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳـﺪ .ﻛـﻪ ﺍﻋﻤـﺎﻝ ﺩﺭﺝ ) ،(insertﺣـﺬﻑ ) (deleteﻭ ﭘﻴـﺪﺍ ﻛـﺮﺩﻥ
ﻧﺰﺩﻳﻚﺗﺮﻳﻦ ) (Find closestﺭﺍ ﻓﺮﺍﻫﻢ ﻣﻲﺁﻭﺭﺩ .ﻣﻨﻈﻮﺭ ﺍﺯ Find closestﭘﻴﺪﺍ ﻛﺮﺩﻥ y Î Aﺍﺳﺖ ﻛﻪ ) ( x - yﻧﺴﺒﺖ ﺑﻪ ﺑﻘﻴﻪ yﻫﺎ ﻛﻤﻴﻨـﻪ
ﺑﺎﺷﺪ .ﻓﺮﺽ ﻛﻨﻴﺪ Tﺑﻴﺸﺘﺮﻳﻦ ﺯﻣﺎﻥ ﺍﺟﺮﺍﻱ ﺍﻋﻤﺎﻝ ﻓﻮﻕ ﺩﺭ ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ ﺑﺎﺷﺪ ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ﻛﺪﺍﻡ ﺳـﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩ ﻛـﻢﺗـﺮﻳﻦ ﻣﻘـﺪﺍﺭ T
ﺧﻮﺍﻫﺪ ﺩﺍﺷﺖ؟
(۲ﻟﻴﺴﺖ ﻧﺎﻣﺮﺗﺐ (۱ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﻣﺘﻮﺍﺯﻥ
heap (۴ (۳ﻟﻴﺴﺖ ﻣﺮﺗﺐ
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۲۵
ﺑﺮﮒﻫﺎ ﺩﺭ ﻳﻚ heapﺑﺎ nﻋﻨﺼﺮ êê úú + 1 , êê úú + 2 , . . . , nﺍﺳﺖ .ﻟﺬﺍ ﺗﻨﻬﺎ ﺑﺎﻳﺪ ﺑﻴﻦ ﺧﺎﻧﻪﻫﺎﻱ ﺁﺭﺍﻳﻪ ﺑﺎ ﺍﻳﻦ ﺍﻧﺪﻳﺲﻫﺎ ﻣﻘﺎﻳﺴﻪ ﺍﻧﺠﺎﻡ ﺷﻮﺩ
n n
ë2û ë2û
n
ﻣﻘﺎﻳﺴﻪ ﻋﻨﺼﺮ ﻣﻴﻨﻤﻢ ﭘﻴﺪﺍ ﻣﻲﺷﻮﺩ. ﺑﻨﺎﺑﺮﺍﻳﻦ ﺗﻨﻬﺎ ﺩﺭ
2
۱۱ـ ﺩﺭ ﻳﻚ Min – Heapﺑﺎ Nﻋﻨﺼﺮ ﻣﺘﻤﺎﻳﺰ ،ﻛﻪ ﺑﺎ ﻳﻚ ﺁﺭﺍﻳﻪ ﭘﻴﺎﺩﻩﺳﺎﺯﻱ ﺷﺪﻩ ﺍﺳـﺖ ،ﺳـﻮﻣﻴﻦ ﻛﻮﭼـﻚﺗـﺮﻳﻦ ﻋﻨﺼـﺮ ﺩﺭ ﻛـﺪﺍﻡ ﻳـﻚ ﺍﺯ
ﺩﺭﺍﻳﻪﻫﺎﻱ ﺯﻳﺮ ﻧﻤﻲﺗﻮﺍﻧﺪ ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ؟
3,5, 7 (۴ 2,3,7 (۳ 4,5,7 (۲ 6,7,8 (۱
ﺣﻞ :ﮔﺰﻳﻨﻪ ۱ﺩﺭﺳﺖ ﺍﺳﺖ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۲۶ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﺑﻪ ﻃﻮﺭ ﻛﻠﻲ ﺩﺭ ﻳﻚ Min – Heapﺑﺎ ﺍﺭﺗﻔﺎﻉ ) hﻳﺎ ﻳﻚ Max – Heapﺑﺎ ﺍﺭﺗﻔﺎﻉ (hﻣﻴﻨﻤﻢ rﺍﻡ )ﻳﺎ ﻣﺎﻛﺰﻳﻤﻢrﺍﻡ( ﻣﻲﺗﻮﺍﻧﺪ ﺩﺭ ﺧﺎﻧﻪﻫﺎﻱ
éë 2 . . . 2r - 1ùûﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ.
ﺑﻨﺎﺑﺮﺍﻳﻦ ﻃﺒﻖ ﺳﺆﺍﻝ ،ﺳﻮﻣﻴﻦ ﻛﻮﭼﻚﺗﺮﻳﻦ ﻋﻨﺼﺮ ﻣﻲﺗﻮﺍﻧﺪ ﺩﺭ ﺧﺎﻧﻪﻫﺎﻱ éë 2 . . . 23 - 1ùûﻳﻌﻨﻲ ] [ 2 . . . 7ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۲۷
: Postorder : 20 , 10 , 40 , 30 , 50ﭘﻴﻤﺎﻳﺶ
ﺭﺍﻩﺣﻞ ﺗﺴﺘﻲ :ﭘﺲ ﺍﺯ ﺩﺭﺝ ﻛﻞ ﻛﻠﻴﺪﻫﺎ ،ﺩﺭﺧﺖ ﺣﺎﺻﻞ Max-Heapﺧﻮﺍﻫﺪ ﺑﻮﺩ .ﺣﺬﻑ ﻫﺮ ﻛﻠﻴﺪ ﺍﺯ ﺩﺭﺧﺖ ،ﺭﻳﺸﻪ )ﺑﺰﺭﮒﺗﺮﻳﻦ ﻛﻠﻴﺪ( ﺭﺍ ﺣﺬﻑ
ﻣﻲﻛﻨﺪ ﺩﺭ ﻧﺘﻴﺠﻪ ﭘﺲ ﺍﺯ ﻋﻤﻞ ﺣﺬﻑ 3 ،ﺗﺎ ﻋﻨﺼﺮ ﺑﺰﺭﮒﺗﺮﻳﻦ ﺑﻪﺗﺮﺗﻴﺐ ﺣﺬﻑ ﻣﻲﺷﻮﺩ ﻭ ﭼﻬﺎﺭﻣﻴﻦ ﺑﺰﺭﮒﺗﺮﻳﻦ ﻋﻨﺼﺮ ﺩﺭ ﺭﻳﺸﻪ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ .ﺍﺯ
ﺍﻧﺠﺎ ﻛﻪ ﺩﺭ ﭘﻴﻤﺎﻳﺶ ﭘﺲﺗﺮﺗﻴﺐ ﺭﻳﺸﻪ ﺁﺧﺮﻳﻦ ﮔﺮﻩﺍﻱ ﺍﺳﺖ ﻛﻪ ﻣﻼﻗﺎﺕ ﻣﻲﺷﻮﺩ ﭘﺲ ﭼﻬﺎﺭﻣﻴﻦ ﺑﺰﺭﮒﺗﺮﻳﻦ ﻋﻨﺼﺮ ،ﺑﺎﻳﺪ ﺁﺧﺮﻳﻦ ﮔﺮﻩﺍﻱ ﺑﺎﺷﺪ ﻛﻪ
ﻣﻼﻗﺎﺕ ﻣﻲﺷﻮﺩ .ﻳﻌﻨﻲ ﺑﺎﻳﺪ ﺩﺭ ﮔﺰﻳﻨﻪﻫﺎ ،ﺁﻧﺠﺎ ﻛﻪ ) 50ﭼﻬﺎﺭﻣﻴﻦ ﺑﺰﺭﮒﺗﺮﻳﻦ ﻋﻨﺼﺮ( ،ﺩﺭ ﺁﺧﺮ ﺁﻣﺪﻩ )ﮔﺰﻳﻨﺔ (۳ﺍﻧﺘﺨﺎﺏ ﻣﻲﻛﻨﻴﻢ.
۱۴ـ ﮔﺰﻳﻨﺔ ﻧﺎﺩﺭﺳﺖ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﺪ؟
(۱ﺑﺎ ﺩﺍﺷﺘﻦ ﻫﺮ ﭘﻴﻤﺎﻳﺸﻲ ﺍﺯ ﻳﻚ heapﻣﻲﺗﻮﺍﻥ ﺁﻥ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ.
(۲ﺍﮔﺮ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺗﻬﻲ ،ﻋﻨﺎﺻﺮ ﺑﻪ ﺗﺮﺗﻴﺐ ﺻﻌﻮﺩﻱ ﻳﺎ ﻧﺰﻭﻟﻲ ﺩﺭﺝ ﺷﻮﻧﺪ ،ﺍﺭﺗﻔﺎﻉ ﺩﺭﺧﺖ ﺑﺮﺍﺑﺮ ﺑﺎ ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﻱ ﺩﺭﺧﺖ
ﻣﻲﺷﻮﺩ.
(۳ﺍﻋﻤﺎﻝ ﺩﺭﺝ ﻭ ﺣﺬﻑ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﻣﻲﺗﻮﺍﻧﺪ ﺩﺭ ﺯﻣﺎﻥ ) O (1ﺍﻧﺠﺎﻡ ﺷﻮﺩ.
(۴ﺩﺭ ﻳﻚ ،heapﺧﺮﻭﺟﻲ ﻳﻜﻲ ﺍﺯ ﭘﻴﻤﺎﻳﺶﻫﺎﻱ ﻣﻴﺎﻥ ﺗﺮﺗﻴﺐ ،ﭘﺲﺗﺮﺗﻴﺐ ،ﺳﻄﺢ ﺗﺮﺗﻴﺐ ﻳﺎ ﭘﻴﺶﺗﺮﺗﻴﺐ ﺣﺘﻤﺎﹰ ﺑﻪﺻﻮﺭﺕ ﻣﺮﺗﺐ ﺍﺳﺖ.
ﺣﻞ :ﮔﺰﻳﻨﻪ ۴ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺍﺯ ﺁﻧﺠﺎ ﻛﻪ heapﻳﻚ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﺍﺳﺖ .ﺑﺎ ﻫﺮ ﭘﻴﻤﺎﻳﺸﻲ ﻣﻲﺗﻮﺍﻥ ﺩﺭﺧﺖ ﺁﻥ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ .ﺑﻪﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ :ﺍﮔﺮ ﭘﻴﻤﺎﻳﺶ
ﭘﻴﺶﺗﺮﺗﻴﺐ ﺯﻳﺮ )ﺍﺯ ﭼﭗ ﺑﻪ ﺭﺍﺳﺖ( ﻣﺮﺑﻮﻁ ﺑﻪ ﻳﻚ Max – Heapﺑﺎﺷﺪ ،ﺁﻥﮔﺎﻩ ﻣﻲﺩﺍﻧﻴﻢ ﺷﻜﻞ ﻳﻚ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﺑﺎ 6ﮔﺮﻩ ﺑﻪﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ:
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۲۸ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﻫﻤﺎﻥﻃﻮﺭ ﻛﻪ ﻣﺸﺨﺺ ﺍﺳﺖ ﺧﺮﻭﺟﻲ ﻫﻴﭻﻛﺪﺍﻡ ﺍﺯ 4ﭘﻴﻤﺎﻳﺶ ،ﻛﻠﻴﺪﻫﺎ ﺭﺍ ﺑﻪﺻﻮﺭﺕ ﻣﺮﺗﺐ ﺗﺤﻮﻳﻞ
ﻧﻤﻲﺩﻫﺪ .ﺩﺭ ﻧﺘﻴﺠﻪ ﮔﺰﻳﻨﺔ 4ﻧﺎﺩﺭﺳﺖ ﺍﺳﺖ.
ﺍﮔﺮ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺗﻬﻲ ﻋﻨﺎﺻﺮ ﺩﺭ ﺗﺮﺗﻴﺐ ﺻﻌﻮﺩﻱ ﻳﺎ ﻧﺰﻭﻟﻲ ﺩﺭﺝ ﺷﻮﻧﺪ ،ﺍﺯ ﺁﻧﺠﺎ
ﻫﺮ ﻛﻠﻴﺪ ﺍﺯ ﻛﻠﻴﺪ ﻭ ﻛﻠﻴﺪﻫﺎﻱ ﻗﺒﻠﻲ ﻫﻤﻮﺍﺭﻩ ﺑﺰﺭﮒﺗﺮ ﻳﺎ ﻛﻮﭼﻚﺗﺮ ﺍﺳﺖ ،ﭘﺲ ﻫﺮ ﻛﻠﻴﺪ ﻫﻤﻴﺸﻪ ﻳﺎ ﺩﺭ
ﺯﻳﺮ ﺩﺭﺧﺖ ﺭﺍﺳﺖ ﻳﺎ ﺩﺭ ﺯﻳﺮ ﺩﺭﺧﺖ ﭼﭗ ﺩﺭﺝ ﻣﻲﺷﻮﺩ ،ﭘﺲ ﺷﻜﻞ ﺩﺭﺧﺖ ﺑﻪﺻﻮﺭﺕ ﺯﻳﺮ ﺧﻮﺍﻫﺪ ﺑﻮﺩ
ﻛﻪ ﺩﺭ ﺍﻳﻦﺻﻮﺭﺕ ﺍﺭﺗﻔﺎﻉ ﺩﺭﺧﺖ ) n ، q ( nﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﻱ ﺩﺭﺧﺖ ﺧﻮﺍﻫﺪ ﺷﺪ.
ﺩﺭ ﺩﺭﺧﺖﻫﺎﻱ ﺍﺭﻳﺐ ﺣﺬﻑ ﺭﻳﺸﻪ ) O (1ﺍﺳﺖ .ﻫﻤﭽﻨﻴﻦ ﺩﺭﺝ ﻳﻚ ﮔﺮﺓ ﺑﺰﺭﮒﺗﺮ ﺍﺯ ﺭﻳﺸﻪ ﺩﺭ BSTﺍﺭﻳﺐ ﺑﻪ ﭼﭗ ،ﻭ ﺩﺭﺝ ﻳﻚ ﮔﺮﺓ ﻛﻮﭼﻚﺗﺮ ﺍﺯ
ﺭﻳﺸﻪ ﺩﺭ BSTﺍﺭﻳﺐ ﺑﻪ ﺭﺍﺳﺖ ) O (1ﺍﺳﺖ.
۱۵ـ ﻫﻴﭗ ﺯﻳﺮ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ:
A [1...18] = 20 15 18 7 9 14 16 3 6 8 4 13 10 12 11 1 2 5
ﻋﻤﻞ ) Change(i,kﻛﻠﻴﺪ ] A [iﺭﺍ ﺑﻪ kﺗﻐﻴﻴﺮ ﻣﻲﺩﻫﺪ ﻭ ﺑﺎ ﺍﻧﺠﺎﻡ ﺗﻌﺪﺍﺩ ﺟﺎﺑﻪﺟﺎﻳﻲ ﻛﺎﺭﻱ ﻣﻲﻛﻨﺪ ﻛﻪ ﺁﺭﺍﻳﻪ ﻣﺠﺪﺩﺍﹰ ﺑﻪﺻﻮﺭﺕ ﻫﻴﭗ
ﺩﺭﺁﻳﺪ .ﻣﺎ ﺍﻳﻦ 2ﻋﻤﻞ ﺭﺍ ﺑﻪﺗﺮﺗﻴﺐ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﻴﻢ:
) Change (11,16 ) Change ( 2, 4
ﻣﺠﻤﻮﻉ ﺗﻌﺪﺍﺩ ﺟﺎﺑﻪﺟﺎﻳﻲ )(swapﻫﺎ ﭼﻨﺪ ﺗﺎﺳﺖ؟
6 (۴ 5 (۳ 4 (۲ 3 (۱
ﺣﻞ :ﮔﺰﻳﻨﻪ ٢ﺩﺭﺳﺖ ﺍﺳﺖ
ﺩﺭ ﺻﻮﺭﺗﻴﻜﻪ ﺩﺭﺧﺖ ﺭﺍ ﺭﺳﻢ ﻛﻨﻴﻢ ﺟﺎﺑﺠﺎﻳﻲ ﻫﺎ ﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﺍﻧﺠﺎﻡ ﺧﻮﺍﻫﺪ ﺷﺪ:
¾¾¾¾¾¾ )change(11,16
A[11]=4 change to 16
)® swap : (16 ,9) and (16,15
¾¾¾¾¾¾ ) change(2, 4
A[2]=16 change to 4
)® swap : (4 ,15) and (4,9
ﺩﺭﺣﻘﻴﻘﺖ ﺑﺎ ﺗﻐﻴﻴﺮ ﺍﻭﻝ ﻛﻠﻴﺪ ۱۶ﺑﻪ ﺧﺎﻃﺮ ﺍﻓﺰﺍﻳﺶ ﻣﻘﺪﺍﺭ ﺑﺎ ﻣﻘﺎﻳﺴﻪ ﺑﺎ ﺍﺟﺪﺍﺩﺵ ﺑﻪ ﺳﻤﺖ ﺑﺎﻻ ﻣﻲ ﺭﻭﺩ ﻭ ﺑﺎ ﺗﻐﻴﻴﺮ ﺩﻭﻡ ﻛﻠﻴﺪ ۴ﺑﻪ ﺧﺎﻃﺮ ﻛﺎﻫﺶ
ﻣﻘﺪﺍﺭ ﺑﺎ ﻣﻘﺎﻳﺴﻪ ﺑﺎ ﻓﺮﺯﻧﺪﺍﻧﺶ ﺑﻪ ﺳﻤﺖ ﭘﺎﺋﻴﻦ ﻣﻲ ﺭﻭﺩ
۱۶ـ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ﻛﺎﻣﻞ ﺑﺎ ﺍﺭﺗﻔﺎﻉ ،hﭼﻨﺪ ﮔﺮﻩ ﻭﺟﻮﺩ ﺩﺍﺭﺩ؟
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۲۹
ﻳﻚ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﺑﻪ ﺍﺭﺗﻔﺎﻉ ،hﺣﺘﻤﺎﹰ ﺗﺎ ﺍﺭﺗﻔﺎﻉ h - 1ﭘﺮ ﺍﺳﺖ .ﺍﺯ ﻃﺮﻓﻲ ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﭘﺮ ﺑﺎ ﺍﺭﺗﻔﺎﻉ hﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
n = 2h - 1
ﺑﻨﺎﺑﺮﺍﻳﻦ ،ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﻱ ﺩﺭﺧﺖ ﺗﺎ ﺍﺭﺗﻔﺎﻉ 2h -1 - 1 ، h - 1ﺍﺳﺖ .ﻟﺬﺍ ﺑﺎ ﺍﺿﺎﻓﻪ ﺷﺪﻥ ﻳﻚ ﮔﺮﻩ ﺑﻪ ﺩﺭﺧﺖ ،ﺍﺭﺗﻔﺎﻉ ﺩﺭﺧﺖ hﻣﻲﺷﻮﺩ .ﭘﺲ ﻛﺮﺍﻥ
ﭘﺎﻳﻴﻦ ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﻱ ﻳﻚ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﺑﺎ ﺍﺭﺗﻔﺎﻉ hﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
2h -1 - 1 + 1 = 2h -1
ﺍﺯ ﻃﺮﻓﻲ ﺑﻴﺸﺘﺮﻳﻦ ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﻱ ﻳﻚ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﺑﺎ ﺍﺭﺗﻔﺎﻉ hﺑﺮﺍﺑﺮ ﺑﺎ ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﻱ ﻳﻚ ﺩﺭﺧﺖ ﭘﺮ ﺑﺎ ﺍﺭﺗﻔﺎﻉ hﺍﺳﺖ .ﭘﺲ ﻛﺮﺍﻥ ﺑﺎﻻﻱ ﺗﻌﺪﺍﺩ
n = 2h - 1 ﮔﺮﻩﻫﺎﻱ ﻳﻚ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﺍﺭﺗﻔﺎﻉ hﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
£ 2h - 1ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﻱ ﻳﻚ ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ﻛﺎﻣﻞ ﺑﺎ ﺍﺭﺗﻔﺎﻉ 2h -1 £ h
ﺑﻨﺎﺑﺮﺍﻳﻦ ﮔﺰﻳﻨﺔ ۴ﺩﺭﺳﺖ ﺍﺳﺖ.
۱۷ـ ﻛﺪﺍﻡﻳﻚ ﺍﺯ ﮔﺰﻳﻨﻪﻫﺎﻱ ﺯﻳﺮ ﺩﺭ ﻣﻮﺭﺩ ﻳﻚ ﺩﺭﺧﺖ 5ﺗﺎﻳﻲ ﻛﺎﻣﻞ ﺑﺎ 95ﮔﺮﻩ ﺻﺤﻴﺢ ﺍﺳﺖ؟ )ﺳﻄﺢ ﺭﻳﺸﻪ ﺭﺍ ﻳﻚ ﻓﺮﺽ ﻛﻨﻴﺪ ﻭ ﺩﺭ ﻫﺮ ﺳـﻄﺢ
ﮔﺮﻩﻫﺎ ﺍﺯ ﭼﭗ ﺑﻪ ﺭﺍﺳﺖ ﭘﺮ ﻣﻲﺷﻮﺩ(.
(۱ﺍﻳﻦ ﺩﺭﺧﺖ 76ﺑﺮﮒ ﺩﺍﺭﺩ ﻭ ﮔﺮﺓ ﭘﺎﻧﺰﺩﻫﻢ ﺁﻥ ﭘﺪﺭ ﮔﺮﺓ ﻫﻔﺘﺎﺩ ﻭ ﺩﻭﻡ ﺁﻥ ﺍﺳﺖ.
(۲ﺍﻳﻦ ﺩﺭﺧﺖ 76ﺑﺮﮒ ﺩﺍﺭﺩ ﻭ ﮔﺮﺓ ﭼﻬﺎﺭﺩﻫﻢ ﺁﻥ ﭘﺪﺭ ﮔﺮﺓ ﻫﻔﺘﺎﺩ ﻭ ﺩﻭﻡ ﺁﻥ ﺍﺳﺖ.
(۳ﺍﻳﻦ ﺩﺭﺧﺖ 77ﺑﺮﮒ ﺩﺍﺭﺩ ﻭ ﮔﺮﺓ ﭼﻬﺎﺭﺩﻫﻢ ﺁﻥ ﭘﺪﺭ ﮔﺮﺓ ﻫﻔﺘﺎﺩ ﻭ ﺩﻭﻡ ﺁﻥ ﺍﺳﺖ.
(۴ﺍﻳﻦ ﺩﺭﺧﺖ 77ﺑﺮﮒ ﺩﺍﺭﺩ ﻭ ﮔﺮﺓ ﭘﺎﻧﺰﺩﻫﻢ ﺁﻥ ﭘﺪﺭ ﮔﺮﺓ ﻫﻔﺘﺎﺩ ﻭ ﺩﻭﻡ ﺁﻥ ﺍﺳﺖ.
ﺣﻞ :ﮔﺰﻳﻨﻪ ۱ﺩﺭﺳﺖ ﺍﺳﺖ.
ê n ( k - 1) + 1 ú
n0 = ê ú ﺗﻌﺪﺍﺩ ﺑﺮﮒﻫﺎ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ kﺗﺎﻳﻲ ﺑﺎ nﮔﺮﻩ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
ëê k ûú
ê 95 ( 5 - 1) + 1 ú
n0 = ê ú = 76 ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺳﺆﺍﻝ:
ëê 5 ûú
ﺍﺯ ﻃﺮﻓﻲ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ kﺗﺎﻳﻲ ﻛﺎﻣﻞ ﻳﺎ ﭘﺮ:
é i -1ù
parent ( i ) = ê ú ﺍﻧﺪﻳﺲ ﭘﺪﺭ ﮔﺮﺓ iﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
ê k ú
ﺍﻧﺪﻳﺲ ﻓﺮﺯﻧﺪﺍﻥ ﮔﺮﺓ iﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ) :ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﺍﺯ nﻛﻮﭼﻚﺗﺮ ﺑﺎﺷﻨﺪ(
. . . . . . . , ki - 2 , ki - 1 , ki , ki + 1
kﺗﺎ
ﺑﻨﺎﺑﺮﺍﻳﻦ ﭘﺪﺭ ﮔﺮﺓ 72ﺍﻡ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
é 72 - 1 ù
parent ( 72 ) = ê ú = 15
ê 5 ú
ﺑﻨﺎﺑﺮﺍﻳﻦ ﮔﺰﻳﻨﺔ ۱ﺩﺭﺳﺖ ﺍﺳﺖ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۳۰ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
۱۸ـ ﺗﻌﺪﺍﺩ ﺩﺭﺧﺖﻫﺎﻱ ﺩﻭﺩﻭﻳﻲ ﺟﺴﺘﺠﻮﻳﻲ ﻛﻪ ﻣﻲﺗﻮﺍﻥ ﺑﺎ 36ﻛﻠﻴﺪ ﻣﺘﻤﺎﻳﺰ ﺩﺍﺩﻩ ﺷﺪﻩ ﺑﻪﺻﻮﺭﺕ ﻣﺠﺰﺍ ﺳﺎﺧﺖ ﺑﻪﻃـﻮﺭﻱﻛـﻪ ﺍﺧـﺘﻼﻑ ﻋﻤـﻖ
ﺑﺮﮒﻫﺎﻱ ﺁﻥ ﺩﺭﺧﺖ ﺣﺪﺍﻛﺜﺮ 1ﺑﺎﺷﺪ ،ﭼﻨﺪ ﺗﺎﺳﺖ؟
æ 36 ö æ 3ö æ 32 ö æ16 ö
ç ÷ 51 (۴ ÷ ç (۳ ÷ ç (۲ ÷ ç (۱
è 32 ø è5ø è5ø è5ø
ﺣﻞ :ﮔﺰﻳﻨﻪ ۲ﺩﺭﺳﺖ ﺍﺳﺖ.
ﻣﻲﺩﺍﻧﻴﻢ ﺗﻌﺪﺍﺩ ﺩﺭﺧﺖﻫﺎﻱ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﻣﺘﻤﺎﻳﺰ ﺑﺎ nﮔﺮﻩ ﺑﺎ ﺗﻌﺪﺍﺩ ﺩﺭﺧﺖﻫﺎﻱ ﺩﻭﺩﻭﻳﻲ ﺑﺎ nﮔﺮﻩ ﺑﺮﺍﺑﺮ ﺍﺳﺖ.
ﺑﺮﺍﻱ ﺁﻥ ﻛﻪ ﺍﺧﺘﻼﻑ ﻋﻤﻖ ﺑﺮﮒﻫﺎﻱ ﺍﻳﻦ ﺩﺭﺧﺖ ﺣﺪﺍﻛﺜﺮ 1ﺑﺎﺷﺪ ،ﺷﻜﻞ ﺩﺭﺧﺖ ﺑﺎﻳﺪ ﺷﺒﻴﻪ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﺑﺎﺷﺪ ،ﻳﻌﻨﻲ ﺍﮔﺮ ﺍﺭﺗﻔﺎﻉ ﺭﺍ hﻓﺮﺽ
ﻛﻨﻴﻢ ،ﺩﺭﺧﺖ ﺑﺎﻳﺪ ﺗﺎ ﺍﺭﺗﻔﺎﻉ h - 1ﭘﺮ ﺑﻮﺩﻩ ﻭ ﺩﺭ ﺳﻄﺢ ﺁﺧﺮ ﮔﺮﻩﻫﺎﻱ ﺑﺎﻗﻲﻣﺎﻧﺪﻩ ﺩﺭ ﻫﺮ ﻣﻜﺎﻥ ﺩﻟﺨﻮﺍﻩ ﻗﺮﺍﺭ ﺑﮕﻴﺮﻧﺪ .ﺑﻨﺎﺑﺮﺍﻳﻦ ﺍﺭﺗﻔﺎﻉ ﺍﻳﻦ ﺩﺭﺧﺖ ﺑﺎ
ﺍﺭﺗﻔﺎﻉ ﻳﻚ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﺑﺎ 36ﮔﺮﻩ ﺑﺮﺍﺑﺮ ﺍﺳﺖ .ﭘﺲ:
h = êlog n2 ú + 1 = ê log36 ú +1 = 6
ë û ë 2 û
n = 25 - 1 = 32 - 1 = 31 ﭘﺲ ﺩﺭﺧﺖ ﺑﺎﻳﺪ ﺗﺎ ﺍﺭﺗﻔﺎﻉ 5ﭘﺮ ﺑﺎﺷﺪ .ﻛﻪ ﺗﻌﺪﺍﺩ ﺍﻳﻦ ﮔﺮﻩﻫﺎ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
ﮔﺮﻩﻫﺎﻱ ﺑﺎﻗﻴﻤﺎﻧﺪﻩ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
36 - 31 = 5
ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎ ﺩﺭ ﺳﻄﺢ hﺍﻡ
ﺗﻌﺪﺍﺩ ﮔﺮﻩ ﺗﺎ ﺍﺭﺗﻔﺎﻉ ﻛﻞ ﮔﺮﻩﻫﺎ
h -1
2i -1 ﺍﺯ ﻃﺮﻓﻲ ﺩﺭ ﺳﻄﺢ ،iﺗﻌﺪﺍﺩ ﻣﻜﺎﻥﻫﺎﻱ ﻣﻮﺟﻮﺩ ﺑﺮﺍﻱ ﮔﺮﻩﻫﺎ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
ﻟﺬﺍ ﺩﺭ ﺳﻄﺢ ﺷﺸﻢ ) hﺍﻡ( 26-1 = 32ﻣﻜﺎﻥ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺑﺎﻳﺪ ﺍﺯ ﺑﻴﻦ ﺁﻥﻫﺎ 5ﺗﺎ ﺑﺮﺍﻱ ﮔﺮﻩﻫﺎﻱ ﺑﺎﻗﻲﻣﺎﻧﺪﻩ ﺍﻧﺘﺨﺎﺏ ﺷﻮﺩ .ﭘﺲ ﺗﻌﺪﺍﺩ ﻛﻞ
æ 32 ö
÷ ç ﺩﺭﺧﺖﻫﺎﻱ ﻣﺘﻤﺎﻳﺰ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺷﺮﺍﻳﻂ ﺳﺆﺍﻝ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
è5ø
۱۹ـ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ، n - aryﻫﺮ ﮔﺮﻩ ﺣﺪﺍﻛﺜﺮ nﻓﺮﺯﻧﺪ ﻣﻲﺗﻮﺍﻧﺪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﺩﺭ ﺩﺭﺧﺖ n - aryﺑﺎ kﮔﺮﻩ ﻭ ﺍﺭﺗﻔﺎﻉ ،hﻛﺪﺍﻡﻳـﻚ ﺍﺯ ﺭﻭﺍﺑـﻂ
ﺯﻳﺮ ﺣﺪ ﺑﺎﻻﻳﻲ ﺑﺮﺍﻱ ﺗﻌﺪﺍﺩ ﺑﺮﮒﻫﺎﻱ ﺩﺭﺧﺖ ﻣﻲﺑﺎﺷﺪ؟
k
(۴ log kh (۳ nh (۲ hn (۱
log kn
ﺣﻞ :ﮔﺰﻳﻨﻪ ۲ﺩﺭﺳﺖ ﺍﺳﺖ.
= n i -1ﺑﺎ ﻓﺮﺽ ﺳﻄﺢ ﺭﻳﺸﻪ ﻳﻚ ﺣﺪﺍﻛﺜﺮ ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎ ﺩﺭ ﺳﻄﺢ iﺍﻡ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
= n iﺑﺎ ﻓﺮﺽ ﺳﻄﺢ ﺭﻳﺸﻪ ﺻﻔﺮ
ﺑﻨﺎﺑﺮﺍﻳﻦ ﺣﺪﺍﻛﺜﺮ ﺗﻌﺪﺍﺩ ﺑﺮﮒﻫﺎ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ n - aryﺑﺎ ﺍﺭﺗﻔﺎﻉ hﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
= n h -1ﺑﺎ ﻓﺮﺽ ﺳﻄﺢ ﺭﻳﺸﻪ ﻳﻚ
= n hﺑﺎ ﻓﺮﺽ ﺳﻄﺢ ﺭﻳﺸﻪ ﺻﻔﺮ
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۳۱
۲۰ـ ﻳﻚ ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ﺑﻪ ﻧﺎﻡ Tﺑﺎ nﮔﺮﻩ ﺩﺍﺭﻳﻢ .ﺍﮔﺮ ﺍﻭﻟﻴﻦ ﮔﺮﻩ ﺩﺭ ﭘﻴﻤﺎﻳﺶ Postorderﺩﺭﺧﺖ ﺑﺎ ﺁﺧﺮﻳﻦ ﮔﺮﻩ ﺍﺯ ﭘﻴﻤﺎﻳﺶ Preorderﺩﺭﺧﺖ
ﻳﻜﺴﺎﻥ ﺑﺎﺷﺪ ،ﻛﺪﺍﻡ ﮔﺰﻳﻨﻪ ﺭﺍ ﻣﻲﺗﻮﺍﻥ ﻧﺘﻴﺠﻪ ﮔﺮﻓﺖ؟
(۲ﺩﺭﺧﺖ Tﺣﺪﺍﻛﺜﺮ 3ﮔﺮﻩ ﺩﺍﺭﺩ. (۱ﺯﻳﺮ ﺩﺭﺧﺖ ﭼﭗ Tﺧﺎﻟﻲ ﺍﺳﺖ.
(۴ﺍﺭﺗﻔﺎﻉ ﺩﺭﺧﺖ Tﺑﺮﺍﺑﺮ nﺍﺳﺖ. (۳ﺯﻳﺮ ﺩﺭﺧﺖ ﺭﺍﺳﺖ Tﺧﺎﻟﻲ ﺍﺳﺖ.
ﺣﻞ :ﮔﺰﻳﻨﻪ ۴ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺩﺭ ﭘﻴﻤﺎﻳﺶ Preorderﺍﻭﻟﻴﻦ ﮔﺮﻩﺍﻱ ﻛﻪ ﻣﻼﻗﺎﺕ ﻣﻲﺷﻮﺩ ﺭﻳﺸﻪ ﻭ ﺁﺧﺮﻳﻦ ﮔﺮﻩ ،ﺳﻤﺖ ﺭﺍﺳﺖﺗﺮﻳﻦ ﺑﺮﮒ ﺍﺳﺖ.
ﺩﺭ ﭘﻴﻤﺎﻳﺶ Postorderﺍﻭﻟﻴﻦ ﮔﺮﻩﺍﻱ ﻛﻪ ﻣﻼﻗﺎﺕ ﻣﻲﺷﻮﺩ ﺳﻤﺖ ﭼﭗﺗﺮﻳﻦ ﺑﺮﮒ ﻭ ﺁﺧﺮﻳﻦ ﮔﺮﻩ ،ﺭﻳﺸﻪ ﺍﺳﺖ.
ﺑﻨﺎﺑﺮﺍﻳﻦ ﺯﻣﺎﻧﻲ ﺁﺧﺮﻳﻦ ﮔﺮﻩ ﺩﺭ ﭘﻴﻤﺎﻳﺶ Preorderﺑﺎ ﺍﻭﻟﻴﻦ ﮔﺮﻩ ﺩﺭ ﭘﻴﻤﺎﻳﺶ Postorderﺑﺮﺍﺑﺮ ﻣﻲﺷﻮﺩ ﻛﻪ ﺗﻨﻬﺎ ﻳﻚ ﺑﺮﮒ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﻭ
ﺍﻳﻦ ﺩﺭ ﺻﻮﺭﺗﻲ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﻫﺮ ﺳﻄﺢ ﺗﻨﻬﺎ ﻳﻚ ﮔﺮﻩ ﺑﺎﺷﺪ .ﻛﻪ ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ﺍﺭﺗﻔﺎﻉ ﺩﺭﺧﺖ nﻣﻲﺷﻮﺩ.
۲۱ـ ﺩﺭ ﮔﺮﺍﻑ ﺯﻳﺮ ﺟﺴﺘﺠﻮﻱ ﺍﻭﻝ ﻋﻤﻖ ) (Depth – first – Searchﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﻴﻢ .ﺟﺴﺘﺠﻮ ﺭﺍ ﺍﺯ ﮔﺮﻩﻱ 1ﺷﺮﻭﻉ ﺷﺪﻩ ﻭ ﮔﺮﻩﻫﺎ ﺑـﻪ ﺗﺮﺗﻴـﺐ
ﻋﺪﺩﻱ ﻣﻼﻗﺎﺕ ﻣﻲﺷﻮﻧﺪ .ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ،ﻛﺪﺍﻡ ﮔﺰﻳﻨﻪ ﺍﻳﻦ ﺟﺴﺘﺠﻮ ﺭﺍ ﻧﺸﺎﻥ ﻣﻲﺩﻫﺪ؟
1, 2,5,8,3,9, 6, 4,10, 7,11 (۱
1, 2,8,5,3,9, 6, 4,11,10, 7 (۲
1, 2,3, 4,11,5, 6, 7,10,8,9 (۳
1, 2,3, 4,5, 6, 7,8,9,10,11 (۴
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۳۲ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﮔﺰﻳﻨﺔ : ۲
ﺍﻓﺰﺍﻳﺶ ﻭ ﻛﺎﻫﺶ ﻛﻠﻴﺪ ﻳﻚ ﻋﻨﺼﺮ ﺣﺬﻑ ﺑﺰﺭﮔﺘﺮﻳﻦ ﻋﻨﺼﺮ ﺩﺭﺝ ﺳﺎﺧﺖ ﺩﺭﺧﺖ
) O ( log n ) O ( log n ) O ( log n )O(n heap
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۳۳
۲۴ـ ﻣﻲﺩﺍﻧﻴﻢ ﻛﻪ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ،ﺳﻄﺢ )ﻳﺎ ﻋﻤﻖ( ﻳﻚ ﮔﺮﻩ ﺑﺮﺍﺑﺮ ﻃﻮﻝ ﻣﺴـﻴﺮ ﺍﺯ ﺁﻥ ﮔـﺮﻩ ﺗـﺎ ﺭﻳﺸـﻪ ﺍﺳـﺖ .ﺍﺭﺗﻔـﺎﻉ ﺩﺭﺧـﺖ ﻫـﻢ
ﺑﺰﺭﮒﺗﺮﻳﻦ ﺳﻄﺢ ﮔﺮﻩﻫﺎ ﺩﺭ ﺁﻥ ﺩﺭﺧﺖ ﺍﺳﺖ» .ﭘﻬﻨﺎﻱ« ﻳﻚ ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ Tﺭﺍ ﺑﺮﺍﺑﺮ ﺑﻴﺶﺗﺮﻳﻦ ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﻱ ﻫﻢﺳـﻄﺢ ﺩﺭ Tﺗﻌﺮﻳـﻒ
ﻣﻲﻛﻨﻴﻢ .ﺁﻳﺎ ﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ﺑﺎ nﮔﺮﻩ ﻭ ﺍﺭﺗﻔﺎﻉ ﻭ ﭘﻬﻨﺎﻱ ﺯﻳﺮ ﻭﺟﻮﺩ ﺩﺍﺭﺩ؟
Q .IVﺍﺭﺗﻔﺎﻉ ) Q ( log nﻭ ﭘﻬﻨﺎﻱ ) ( n .IIIﺍﺭﺗﻔﺎﻉ ) Q ( nﻭ ﭘﻬﻨﺎﻱ ) Q ( n
. Iﺍﮔﺮ ﺩﺭﺧﺘﻲ ﺩﺭ ﻫﺮ ﺳﻄﺢ ﻳﻚ ﮔﺮﻩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﺩﺍﺭﺍﻱ ﺍﺭﺗﻔﺎﻉ ) q ( nﺧﻮﺍﻫﺪ ﺑﻮﺩ .ﻣﺎﻧﻨﺪ ﺩﺭﺧﺖ ﺍﺭﻳﺐ ﺑﻪ ﭼﭗ ﻳﺎ ﺍﺭﻳﺐ ﺑﻪ ﺭﺍﺳﺖ.
. IIﺩﺭﺧﺘﺎﻥ ﻛﺎﻣﻞ ﻭ ﻳﺎ ﭘﺮ ﻧﻤﻮﻧﻪ ﺑﺴﻴﺎﺭ ﻋﺎﻟﻲ ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻮﺭﺩ ﺍﺳﺖ .ﺍﺭﺗﻔﺎﻉ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﻭ ﻳﺎ ﭘﺮ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
) êë log n úû + 1 = q ( log n
n +1
.ﺩﺭ ﺩﺭﺧﺖ ﻛﺎﻣﻞ ﻧﻴﺰ ﺑﻴﺸﺘﺮﻳﻦ ﭘﻬﻨﺎ ﻳـﺎ ﻣﺮﺑـﻮﻁ ﺑـﻪ ﺳـﻄﺢ ﺁﺧـﺮ ﻳـﺎ ﺍﺯ ﻃﺮﻓﻲ ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎ ﺩﺭ ﺳﻄﺢ ﺁﺧﺮ )ﺑﺮﮒﻫﺎ( ﺩﺭﺧﺖ ﭘﺮ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ ) = q ( n
2
ﻣﺮﺑﻮﻁ ﺑﻪ ﺳﻄﺢ ﻳﻜﻲ ﻣﺎﻧﺪﻩ ﺑﻪ ﺁﺧﺮ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﻫﺮ ﺩﻭ ﺣﺎﻟﺖ ﭘﻬﻨﺎ ) q ( nﺍﺳﺖ.
. IIIﺑﻪ ﻧﻈﺮ ﻣﻲﺁﻳﺪ ﭼﻨﻴﻦ ﺩﺭﺧﺘﻲ ﻭﺟﻮﺩ ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ .ﺯﻳﺮﺍ ﺑﺮﺍﻱ ﺭﺳﻴﺪﻥ ﺑﻪ ﭘﻬﻨﺎﻱ ) q ( nﺩﺭﺧﺖ ﺑﺎﻳﺪ ﺣﺪﺍﻗﻞ ﻫﻢ ﻣﺮﺗﺒﻪ ﺑﺎ ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﻱ ﻳﻚ ﺩﺭﺧﺖ ﭘﺮ،
ﮔﺮﻩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﺎ ﭘﻬﻨﺎﻱ ) q ( nﺍﺭﺗﻔﺎﻉ ﺩﺭﺧﺖ ) q ( log nﺑﺎﻳﺪ ﺑﺎﺷﺪ.
ﻣﺎ ﺍﻳﻨﮕﻮﻧﻪ ﻧﻴﺴﺖ .ﺯﻳﺮﺍ ﻣﻲﺗﻮﺍﻥ ﺑﻪ ﻳﻜﻲ ﺍﺯ ﮔﺮﻩﻫﺎﻱ ﺳﻄﺢ ﺁﺧﺮ ﺩﺭﺧﺖ ﻓﻮﻕ ﻳﻚ ﺩﺭﺧﺖ ﺑﺎ ﺗﻌﺪﺍﺩ ﮔﺮﻩ ) q ( nﻭ ﺍﺭﺗﻔﺎﻉ ) ) q ( nﻣﺎﻧﻨﺪ ﺩﺭﺧﺖ ﺍﺭﻳﺐ ﺑﻪ ﭼﭗ ﻳـﺎ
ﺑﻪ ﺭﺍﺳﺖ( ﺍﺿﺎﻓﻪ ﻛﺮﺩ.
ﺩﺭ ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ ﻭ ﺳﭙﺲ ﺛﺎﺑﺖ ﻣـﻲﻛﻨـﻴﻢ ﺍﺭﺗﻔـﺎﻉ ﺍﻳـﻦ ﺩﺭﺧـﺖ . IVﺑﺮﺍﻱ ﺍﺛﺒﺎﺕ ﺍﻳﻨﻜﻪ ﭼﻨﻴﻦ ﺩﺭﺧﺘﻲ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ ،ﺍﺑﺘﺪﺍ ﺑﻬﺘﺮﻳﻦ ﺩﺭﺧﺖ ﺭﺍ ﺑﺎ ﭘﻬﻨﺎﻱ n
ﻧﻤﻲﺗﻮﺍﻧﺪ ) q ( log nﺑﺎﺷﺪ.
( )
ﺑﺮﮒ ﺍﺳﺖ .ﺍﺭﺗﻔﺎﻉ ﺍﻳﻦ ﺩﺭﺧﺖ ﭘﺮ ) q log n = q ( log nﺍﺳﺖ. ﭘﺮ ﮔﺮﻩﺗﺮﻳﻦ ﺩﺭﺧﺖ ﺑﺎ ﭘﻬﻨﺎﻱ ، nﺩﺭﺧﺖ ﭘﺮﻱ ﺑﺎ n
2 n - 1 = qﮔـﺮﻩ ﺩﺍﺭﺩ ﻭ ﻧـﻪ ) n = q ( n ﺑﻪ ﻧﻈﺮ ﻣﺸﻜﻠﻲ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ ﻭﻟﻲ ﺑﺎ ﺷﻤﺎﺭﺵ ﮔﺮﻩﻫﺎﻱ ﺩﺭﺧﺖ ﻣﻲﺗﻮﺍﻥ ﺩﺭﻳﺎﻓﺖ ﻛﻪ ﺍﻳﻦ ﺩﺭﺧﺖ ﺣـﺪﺍﻛﺜﺮ ) ( n
ﮔﺮﻩ ﭘﻬﻨﺎ ﻗـﺮﺍﺭ ﮔﻴﺮﻧـﺪ) .ﺍﻟﺒﺘـﻪ ﺑـﻪ n ﮔﺮﻩ .ﺑﻨﺎﺑﺮﺍﻳﻦ ﺍﺭﺗﻔﺎﻉ ﺍﻳﻦ ﺩﺭﺧﺖ ) q ( log nﻧﻴﺴﺖ ،ﭼﺮﺍ ﻛﻪ ﺗﻌﺪﺍﺩ ) n - ( 2 n - 1ﮔﺮﻩ ﺩﻳﮕﺮ ﺑﺎﻳﺪ ﺩﺭ ﺑﺮﮒﻫﺎﻱ
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۳۴ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
( )
ﺍﺯ ﺁﻧﺠﺎ ﻛﻪ ) n - 2 n - 1 = q ( n؛ ﻣﻲﺗﻮﺍﻥ ﺩﺭﺧﺘﻲ ﺭﺍ ﺑـﺎ ﭘﻬﻨـﺎﻱ n
( ) ) ( n ) = q( n
q log n + qﺧﻮﺍﻫﺪ ﺑﻮﺩ ﻧﻪ ) . q ( log n
۲۵ـ ﭘﻴﻤﺎﻳﺶ preorderﺩﺭﺧﺖ ﺩﻭﺩﻭﻳﻲ ) Tﺍﺯ ﭼﭗ ﺑﻪ ﺭﺍﺳﺖ( ﺑﻪ ﺻﻮﺭﺕ acbdhigefﻣﻲﺑﺎﺷﺪ .ﻫﻤﭽﻨﻴﻦ ﻣﻲﺩﺍﻧﻴﻢ ﺭﺃﺱﻫـﺎﻱ f ،e ،d ،bﻭ iﺩﺭ
ﺩﺭﺧﺖ Tﺑﺮﮒ ﻫﺴﺘﻨﺪ .ﭘﻴﻤﺎﻳﺶ postorderﺩﺭﺧﺖ Tﻛﺪﺍﻡ ﺍﺳﺖ؟IT
bd ci ef g h a (۴ bdcef gih a (۳ bcdaih egf (۲ (۱
bci h ef g d a
ﺣﻞ :ﮔﺰﻳﻨﻪ ٤ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺩﺭ ﭘﻴﻤﺎﻳﺶ ، preorderﺗﺮﺗﻴﺐ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻦ ﮔﺮﻩﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ:
V L R
۲۶ـ ﻫﻔﺘﻤﻴﻦ ﻛﻠﻴﺪ ﺩﺭ ﭘﻴﻤﺎﻳﺶ preorderﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ) (BSTﻛﻪ ﭘﻴﻤﺎﻳﺶ postorderﺁﻥ ﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﺍﺳﺖ )ﺍﺯ ﭼﭗ ﺑـﻪ
Postorder :5, 6,15,10, 23, 24, 22, 26, 20 ﺭﺍﺳﺖ( ،ﻛﺪﺍﻡ ﮔﺰﻳﻨﻪ ﺍﺳﺖ؟
15 (۴ 22 (۳ 26 (۲ 24 (۱
ﺣﻞ :ﮔﺰﻳﻨﻪ ٣ﺩﺭﺳﺖ ﺍﺳﺖ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۳۵
ﺑﺎ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﺩﺍﺷﺘﻦ ﭘﻴﻤﺎﻳﺶ ) postorderﻳﺎ ( preorderﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭ ﺩﻭﻳﻲ ﻣﻲﺗﻮﺍﻥ ﺁﻥ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻳﻜﺘﺎ ﺭﺳﻢ ﻛﺮﺩ.
postorder : 5 , 6 , 15 , 10 , 23 , 24 , 22 , 26 , 20
preorder : 20 , 10 , 6 , 5 , 15 , 26 , 22 , 24 , 23
ﻫﻔﺘﻤﻴﻦ ﻛﻠﻴﺪ 22 ،ﺍﺳﺖ.
۲۷ـ ﻓﺮﺽ ﻛﻨﻴﺪ ﺻﺪ ﻛﻠﻴﺪ ﻳﻚ ﺗﺎ ﺻﺪ ﺭﺍ ﺑﻪ ﻳﻚ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺍﺿﺎﻓﻪ ﻛﺮﺩﻩﺍﻳﻢ .ﺗﺮﺗﻴﺐ ﺍﺿﺎﻓﻪ ﺷﺪﻥ ﻛﻠﻴﺪﻫﺎ ﻣﺸﺨﺺ ﻧﻴﺴﺖ ﺍﻣـﺎ
ﺍﺣﺘﻤﺎﻝ ﺗﻤﺎﻡ ﺣﺎﻻﺕ ﺗﺮﺗﻴﺐﻫﺎﻱ ﺍﺿﺎﻓﻪ ﺷﺪﻥ ﻛﻠﻴﺪﻫﺎ )ﺗﻤﺎﻡ Permutationﻫﺎﻱ ﻣﻤﻜﻦ ﻳﻚ ﺗﺎ ﺻﺪ( ﺑﺎ ﻫﻢ ﺑﺮﺍﺑﺮ ﺍﺳﺖ .ﺑـﺎ ﭼـﻪ ﺍﺣﺘﻤـﺎﻟﻲ ﺩﺭ
ﺭﻭﻧﺪ ﺍﺿﺎﻓﻪ ﺷﺪﻥ ﻛﻠﻴﺪﻫﺎ ﺑﻪ ﺩﺭﺧﺖ ﻛﻠﻴﺪ 4ﻭ ﻛﻠﻴﺪ 9ﺑﺎ ﻫﻢ ﻣﻘﺎﻳﺴﻪ ﻣﻲﺷﻮﻧﺪ ،ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﺍﻭﻟﻴﻦ ﻛﻠﻴﺪ ﺍﺿﺎﻓﻪ ﺷﺪﻩ ﻛﻠﻴﺪ 43ﺑﺎﺷﺪ؟
43 1 1 1 1
´ (۴ (۳ (۲ (۱
100 4 4 2 3
ﺣﻞ :ﮔﺰﻳﻨﻪ ١ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺑﺎﻳﺪ ﺍﺣﺘﻤﺎﻝ ﻣﻘﺎﻳﺴﻪ ﺷﺪﻥ ﻛﻠﻴﺪﻫﺎﻱ ، 9 , 4ﻳﻌﻨﻲ ﺍﺣﺘﻤﺎﻝ ﺍﻳﻨﻜﻪ ﻳﺎ 4ﺩﺭ ﺯﻳﺮ ﺩﺭﺧﺖ 9ﻭ ﻳﺎ 9ﺩﺭ ﺯﻳﺮ ﺩﺭﺧﺖ 4ﺑﺎﺷﺪ ﺭﺍ ،ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﻢ.
ﺍﻳﻦ ﺍﺣﺘﻤﺎﻝ ﺩﻭ ﺣﺎﻟﺖ ﺩﺍﺭﺩ :ﻳﺎ ﺍﻳﻨﻜﻪ 4ﺩﺭ ﺩﺭﺧﺖ ﺑﺎﺷﺪ ﻭ 9ﺑﺨﻮﺍﻫﺪ ﺩﺭﺝ ﺷﻮﺩ ﻭ ﺑﺎ 4ﻣﻘﺎﻳﺴﻪ ﺷﻮﺩ ﻭ ﻳﺎ ﺍﻳﻨﻜﻪ 9ﺩﺭ ﺩﺭﺧﺖ ﺑﺎﺷﺪ ﻭ 4
ﺑﺨﻮﺍﻫﺪ ﺩﺭﺝ ﺷﻮﺩ ﻭ ﻣﺴﻴﺮ ﭘﻴﻤﻮﺩﻩﺷﺪﻩ ﺗﺎ ﺑﺮﮒ ﺗﻮﺳﻂ 9 ،4ﺭﺍ ﻧﻴﺰ ﺩﺭﺑﺮﮔﻴﺮﺩ.
ﻛﻠﻴﺪﻫﺎﻱ 1 , 2 , 3 , 10 42 , 44 100ﺩﺭ ﻫﺮ ﻓﺮﻡ ﺍﺯ ﺩﺭﺧﺖ ﻭ ﺩﺭ ﻫﺮ ﺯﻣﺎﻧﻲ ﻣﻲﺗﻮﺍﻧﻨﺪ ﺩﺭﺝ ﺷﻮﻧﺪ ﺑﺪﻭﻥ ﺍﻳﻨﻜﻪ ﺩﺭ ﻭﻗﻮﻉ ﻣﻘﺎﻳﺴﻪ 9 , 4
ﺗﺄﺛﻴﺮﻱ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ .ﺑﺮﺍﻱ ﻣﺜﺎﻝ:
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۳۶ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﺎﻳﺪ ﺍﻳﻦ ﺍﺣﺘﻤﺎﻝ ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻛﺮﺩ ﻛﻪ ﭼﻬﺎﺭ ﻛﻠﻴﺪ 5 , 6 , 7 , 8ﻗﺒﻞ ﺍﺯ 4ﻳﺎ 9ﻧﻴﺎﻳﺪ .ﺍﻳﻦ ﺍﺣﺘﻤﺎﻝ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ ﺍﻳﻨﻜﻪ 4ﻳﺎ 9ﻗﺒﻞ ﺍﺯ
8ﻳﺎ 7ﻳﺎ 6ﻳﺎ 5ﺑﻴﺎﻳﺪ.
ﭘﻴﺸﺎﻣﺪ ﺍﻳﻦﻛﻪ 4ﺍﻭﻝ ﺑﻴﺎﻳﺪ A : ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ ﺍﺣﺘﻤﺎﻝ ﺍﻳﻨﻜﻪ ﺍﺯ ﺑﻴﻦ 6ﻋﺪﺩ ﻳﺎ 4ﺍﻭﻝ ﺑﻴﺎﻳﺪ ﻳﺎ . 9
۲۸ـ ﺩﺭﺧﺖﻫﺎﻱ ﺩﻭﺩﻭﻳﻲ ﻛﻪ Preorderﻭ Postorderﺁﻥﻫﺎ ﺩﺭ ﺯﻳﺮ ﺫﻛﺮ ﺷﺪﻩ ﺍﺳﺖ ،ﭼﻪ ﺗﻌﺪﺍﺩ ﺍﺳﺖ؟
Pre:a b d e f g c h i j 4 (۱
Post:d g f e b i jh c a
8 (۲
1 (۳
(۴ﻫﻴﭻ ﺩﺭﺧﺘﻲ ﺭﺍ ﻧﻤﻲﺗﻮﺍﻥ ﭘﻴﺪﺍ ﻛﺮﺩ.
ﺣﻞ :ﮔﺰﻳﻨﻪ ٢ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺗﻌﺪﺍﺩ ﺩﺭﺧﺖﻫﺎﻱ ﺩﻭ ﺩﻭﻳﻲ ﻛﻪ ﭘﻴﻤﺎﻳﺶﻫﺎﻱ preorderﻭ postorderﺁﻥﻫﺎ ﺑﺮﺍﺑﺮ ﺑﺎ ﺭﺷﺘﻪﻫﺎﻱ ﻣﺸﺨﺺ ﺯﻳﺮ ﺑﺎﺷﺪ ،ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ 2n1ﻛﻪ ﺩﺭ ﺁﻥ
n1ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﻱ ﺗﻚﻓﺮﺯﻧﺪﻱ ﺩﺭ ﺩﺭﺧﺖ ﺍﺳﺖ.
ﺑﺮﺍﻱ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﺩﻥ ﮔﺮﻩﻫﺎﻱ ﺗﻚ ﻓﺮﺯﻧﺪﻱ ﺑﻪ ﺍﻳﻦ ﺻﻮﺭﺕ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ :ﺍﺯ ﺳﻤﺖ ﭼﭗ ﻳﻜﻲ ﺍﺯ ﭘﻴﻤﺎﻳﺶﻫﺎ )ﺑﺮﺍﻱ ﻣﺜﺎﻝ (preorderﺣﺮﻛﺖ
ﻣﻲﻛﻨﻴﻢ ﻭ ﻫﺮ ﺗﺮﺗﻴﺐ ﺩﻭﺗﺎﻳﻲ ﺍﺯ ﮔﺮﻩﻫﺎ )ﺗﺮﺗﻴﺐﻫﺎﻱ ﺩﻭ ﺗﺎﻳﻲ ﺩﻗﻴﻘﺎﹰ ﻛﻨﺎﺭ ﻫﻢ( ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻭ ﺩﺭ ﭘﻴﻤﺎﻳﺶ ﺩﻳﮕﺮ ﺑﺮﺭﺳﻲ ﻣﻲﻛﻨﻴﻢ .ﺍﮔﺮ ﺩﻗﻴﻘﺎﹰ
ﻫﻤﻴﻦ ﺗﺮﺗﻴﺐ ﺩﻭﺗﺎﻳﻲ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻣﻌﻜﻮﺱ ﻋﻴﻨﺎﹰ ﻣﺸﺎﻫﺪﻩ ﻛﺮﺩﻳﻢ ،ﮔﺮﻩ ﺍﻭﻝ ﺗﺮﺗﻴﺐ ﺗﻚﻓﺮﺯﻧﺪﻱ ﺍﺳﺖ.
ﻃﺒﻖ ﺳﻮﺍﻝ ﺩﺍﺭﻳﻢ:
preorder : a b
d e
f g c h i j
ﺗﺮﺗﻴﺐﻫﺎﻱ ﺩﻭﺗﺎﻳﻲ
postorder : d g f e b i j h c a
ﻣﻌﻜﻮﺱ ﺳﻪ ﺗﺮﺗﻴﺐ ﺩﻭﺗﺎﻳﻲ fg ، efﻭ chﺩﺭ ﭘﻴﻤﺎﻳﺶ ، preorderﺩﺭ ﭘﻴﻤﺎﻳﺶ postorderﻭﺟﻮﺩ ﺩﺍﺭﺩ ﭘﺲ 3ﮔﺮﻩ ﺗﻚ ﻓﺮﺯﻧﺪﻱ ﺩﺍﺭﻳﻢ
) ، ( n1 = 3ﺑﻨﺎﺑﺮﺍﻳﻦ ﺗﻌﺪﺍﺩ ﺩﺭﺧﺖﻫﺎﻱ ﺩﻭ ﺩﻭﻳﻲ ﻛﻪ ﭘﻴﻤﺎﻳﺶﻫﺎﻱ preorderﻭ postorderﺁﻥﻫﺎ ﺑﺮﺍﺑﺮ ﺑﺎ ﺭﺷﺘﻪﻫﺎﻱ ﺑﺎﻻ ﺑﺎﺷﺪ 23 = 8 ،ﺗﺎ ﺍﺳﺖ.
۲۹ـ ﻣﺠﻤﻮﻋﻪ ﻭﺯﻥ ﻳﺎﻝﻫﺎﻱ ﺩﺭﺧﺖ ﭘﻮﺷﺎﻱ ﻛﻤﻴﻨﻪ ) (MSTﮔﺮﺍﻑ ﻣﻘﺎﺑﻞ ﭼﻴﺴﺖ؟
2 97 (۲ 91 (۱
15 8 12
85 (4 89 (3
1 7 3
8 10 10
14
5 14
6 11 8
8
4 14 12
15 10 9 15
10
10 15
12
5 4
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۳۷
۳۰ـ ﻳﻚ ﻟﻴﺴﺖ 12ﻋﻨﺼﺮﻱ ﺣﺎﻭﻱ ﻛﻠﻴﺪﻫﺎﻱ ﻳﻚ ﺗﺎ ﺩﻭﺍﺯﺩﻩ ﺑﻪ ﺻﻮﺭﺕ ﺻﻌﻮﺩﻱ ﻣﺮﺗﺐ ﺍﺳﺖ .ﺍﮔﺮ ﺍﻳﻦ ﻟﻴﺴﺖ ﺑﻪ ﺻﻮﺭﺕ ﺩﺭﺟﺎ ﺗﺒﺪﻳﻞ ﺑـﻪ ﻳـﻚ
Max Heapﺷﻮﺩ ،ﻋﻨﺼﺮ ﭘﻨﺠﻢ ﻟﻴﺴﺖ ﻛﺪﺍﻡ ﮔﺰﻳﻨﻪ ﺍﺳﺖ؟
8 (۴ 9 (۳ 11 (۲ 10 (۱
ﺣﻞ :ﮔﺰﻳﻨﻪ ١ﺩﺭﺳﺖ ﺍﺳﺖ.
ﻛﺎﻓﻲ ﺍﺳﺖ ﺍﻋﺪﺍﺩ ﻓﻮﻕ ﺭﺍ ﺩﺭ ﻳﻚ ﺩﺭﺧﺖ ﺩﻭ ﺩﻭﻳﻲ ﻛﺎﻣﻞ ﻗﺮﺍﺭ ﺩﺍﺩﻩ ﻭ ﭘﺲ ﺍﺯ ﺍﺟﺮﺍﻱ ﺍﻟﮕﻮﺭﻳﺘﻢ ، BUILD - MAX - HEAPﮔﺮﻩ ﭘﻨﺠﻢ ﺩﺭﺧﺖ ﺭﺍ
ﺑﺎﺯﺧﻮﺍﻧﻲ ﻛﻨﻴﻢ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۳۸ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﺑﺎﺯﮔﺸﺘﻲ
ænö
۳۲ـ ﺟﻮﺍﺏ ﺭﺍﺑﻄﺔ ﺑﺎﺯﮔﺸﺘﻲ T ( n ) = 8T ç ÷ + nlognﻛﺪﺍﻡﻳﻚ ﺍﺯ ﮔﺰﻳﻨﻪﻫﺎﻱ ﺯﻳﺮ ﺍﺳﺖ؟
9
è ø
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۳۹
۳۳ـ ﻣﺮﺗﺒﻪ ﺯﻣﺎﻧﻲ ﺍﻟﮕﻮﺭﻳﺘﻤﻲ ﺑﺎ ﺗﺎﺑﻊ ﺯﻣﺎﻧﻲ ﺯﻳﺮ ،ﻛﺪﺍﻡ ﮔﺰﻳﻨﻪ ﺍﺳﺖ؟
ì 0 n=0
ï
T (n) = í 1 n =1
) ï3T ( n - 1) + 4T ( n - 2 otherwise
î
n 4 logn (۴ 2n logn (۳ 4n (۲ (۱
n2
ﺣﻞ :ﮔﺰﻳﻨﻪ ۲ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻣﻌﺎﺩﻟﺔ ﻣﺸﺨﺼﻪ ﺣﻞ ﻣﻲﻛﻨﻴﻢ:
T ( n ) - 3T ( n - 1) - 4T ( n - 2 ) = 0
r1 = 4
r 2 - 3r - 4 = 0 Þ ( r - 4 )( r + 1) = 0 Þ r2 = -1
)Þ T ( n ) = C1 ( 4 ) + C2 ( -1
n 2
) (
Þ T ( n ) = q 4n
ïîm
4
= m log2 = m 2 (
f ( m ) =O m logba-e)
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۴۰ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﮔﺰﻳﻨﻪﻫﺎ ،ﺭﺍﺑﻄﺔ ) T ( nﺑﺎﻳﺪ ﺷﻜﻠﻲ ﺑﻪ ﻓﺮﻡ ﺯﻳﺮ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ:
T ( n ) = C1 ( logn ) + C2
2
T ( 2 ) = 1 Þ C1 + C2 = 1
ﻛﻪ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﮔﺰﻳﻨﻪﻫﺎ ،ﺗﻨﻬﺎ ﮔﺰﻳﻨﺔ ۳ﺩﺭ ﻣﻌﺎﺩﻟﺔ ﺑﺎﻻ ﺻﺪﻕ ﻣﻲﻛﻨﺪ.
) R = Re c ( 5, 0 return1
)R = Re c ( 5,1
125
ﻣﺸﺎﻫﺪﻩ ﻣﻲﺷﻮﺩ ﻛﻪ ﺑﺎ ) Re c ( 5,3ﻣﻘﺪﺍﺭ 125ﺑﻪ ﻋﻨﻮﺍﻥ ﺟﻮﺍﺏ ﺑﺎﺯﮔﺸﺘﻲ ﺩﺭﻳﺎﻓﺖ ﻣﻲﺷﻮﺩ.
-ﺭﺍﺑﻄﻪﻱ ﺑﺎﺯﮔﺸﺘﻲ ﺯﻳﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ:
F ( x , 0 ) = F ( x + 1, 0 ) + F ( x + 1,1) , if x < n
F ( x ,1) = 2F ( x + 1, 0 ) + F ( x + 1,1) , if x < n
F ( n , 0) = 1
F ( n ,1) = 0
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۴۱
۳۶ـ ﺍﮔﺮ ﺍﺯ ﺍﻳﻦ ﺭﺍﺑﻄﻪ ﺑﺨﻮﺍﻫﻴﻢ ﻣﻘﺪﺍﺭ ) F (1,1ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻛﺎﺭﺍ ﺣﺴﺎﺏ ﻛﻨﻴﻢ ،ﭼﻨﺪ ﺑﺎﺭ ﻋﻤﻞ »ﺟﻤﻊ« )ﻫﻤﺎﻥ +ﺩﺭ ﺭﺍﺑﻄﻪﻫﺎﻱ ﻓﻮﻕ( ﺭﺍ ﺑﺎﻳـﺪ
ﺍﻧﺠﺎﻡ ﺩﻫﻴﻢ؟
(
O 2n -1 ) (۴ )O(n (۳ ( ) (۲
O n2 ( ) (۱
O 2n
ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﻣﺤﺎﺳﺒﺎﺕ ﺩﺭ ﺳﻄﻮﺡ ﺩﺭﺧﺖ ﺗﻜﺮﺍﺭﻱ ﻫﺴﺘﻨﺪ .ﺑﻨﺎﺑﺮﺍﻳﻦ ﻳﻚ ﻣﺤﺎﺳﺒﻪ ﻛﺎﺭﺍ ﺑﻪ ﮔﻮﻧﻪﺍﻱ ﺍﺳﺖ ﻛﻪ ﺍﺯ ﺍﻳﻦ ﻣﺤﺎﺳﺒﺎﺕ ﺗﻜﺮﺍﺭﻱ ﺻﺮﻑﻧﻈﺮ
ﺷﻮﺩ .ﻫﻤﺎﻥ ﻃﻮﺭ ﻛﻪ ﻣﺸﺎﻫﺪﻩ ﻣﻲﺷﻮﺩ ﺩﺭ ﻫﺮ ﺳﻄﺢ ،ﻣﺤﺎﺳﺒﻪ ﺣﺪﺍﻛﺜﺮ 2ﻋﺒﺎﺭﺕ ﻛﺎﻓﻲ ﺍﺳﺖ.
۳۷ـ ﺩﺭ ﻳﻚ ﺯﻣﺴﺘﺎﻥ ﺳﺮﺩ ،ﺧﺮﺱ ﻗﻄﺒﻲ nﻗﻄﻌﻪ ﮔﻮﺷﺖ ﺩﻗﻴﻘﺎﹰ ﺑﻪ ﺍﻧﺪﺍﺯﻩﻫﺎﻱ ،2 ،1ﺗﺎ nﺭﺍ ﺩﺭ ﻏﺎﺭﻱ ﺫﺧﻴﺮﻩ ﻛﺮﺩﻩ ﺍﺳﺖ .ﺍﻭ ﻫـﺮ ﺭﻭﺯ ﻳﻜـﻲ ﺍﺯ
ﺍﻳﻦ ﻗﻄﻌﻪ ﮔﻮﺷﺖﻫﺎ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﺗﺼﺎﺩﻓﻲ ﺍﻧﺘﺨﺎﺏ ﻣﻲﻛﻨﺪ .ﺍﮔﺮ ﺍﻧﺪﺍﺯﻩﻱ ﮔﻮﺷﺖ ﻋﺪﺩ ﻓﺮﺩﻱ ﺑﻮﺩ ،ﺁﻥ ﺭﺍ ﻛﺎﻣﻼﹰ ﻣﻲﺧﻮﺭﺩ .ﺍﮔﺮ ﺯﻭﺝ ﺑـﻮﺩ ،ﺁﻥ ﺭﺍ
ﺩﻗﻴﻘﺎﹰ ﻧﺼﻒ ﻣﻲﻛﻨﺪ ،ﻳﻚ ﻧﺼﻒ ﺁﻥ ﺭﺍ ﻣﻲﺧﻮﺭﺩ ﻭ ﻧﺼﻒ ﺩﻳﮕﺮ ﺭﺍ ﻣﺠﺪﺩﺍﹰ ﺩﺭ ﻏﺎﺭ ﻗﺮﺍﺭ ﻣﻲﺩﻫﺪ .ﺍﮔﺮ ﮔﻮﺷﺘﻲ ﻣﻮﺟﻮﺩ ﻧﺒﺎﺷﺪ ،ﺧﺮﺱ ﻣﻲﻣﻴﺮﺩ .ﺑﺎ
ﺍﻳﻦ ﺍﻟﮕﻮﺭﻳﺘﻢ ،ﺑﺮﺍﻱ nﻫﺎﻱ ﺧﻴﻠﻲ ﺑﺰﺭﮒ ﺭﻭﺯﻫﺎﻱ ﺑﺎﻗﻴﻤﺎﻧﺪﻩ ﺍﺯ ﻋﻤﺮ ﺧﺮﺱ ﻣﺎ ﺗﺎﺑﻊ ﻛﺪﺍﻡﻳﻚ ﺍﺯ ﮔﺰﻳﻨﻪﻫﺎ ﺧﻮﺍﻫﺪ ﺑﻮﺩ؟
( ) (۴
q n2 ) q ( n log n (۳ ) q ( log n (۲ )q(n (۱
ﺣﻞ :ﮔﺰﻳﻨﻪ ١ﺩﺭﺳﺖ ﺍﺳﺖ.
ﻋﻤﺮ ﺧﺮﺱ ﺑﻪ ﺗﻌﺪﺍﺩ ﻗﻄﻌﺎﺕ ﮔﻮﺷﺘﻪ ﻭﺍﺑﺴﺘﻪ ﺍﺳﺖ ﻧﻪ ﻣﺠﻤﻮﻉ ﺁﻥﻫﺎ .ﺍﺯ ﺁﻧﺠﺎ ﻛﻪ ﻋﻤﺮ ﺧﺮﺱ ﺯﻣﺎﻧﻲ ﺑﻪ ﭘﺎﻳﺎﻥ ﻣﻲﺭﺳﺪ ﻛﻪ ﺗﻤﺎﻡ ﻗﻄﻌﺎﺕ ﺧﻮﺭﺩﻩ
ﺷﻮﻧﺪ ﺑﺎﻳﺪ ﻣﺮﺗﺒﻪ ﺯﻣﺎﻧﻲ ﺧﻮﺭﺩﻩ ﺷﺪﻥ ﻫﻤﻪ ﻗﻄﻌﺎﺕ ﺭﺍ ﺣﺴﺎﺏ ﻛﻨﻴﻢ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۴۲ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
:ﻣﺮﺣﻠﻪ ﺩﻭﻡ 1 , 2, 3 , 4, 5 , 6, , n )ﻓﺮﺩﻫﺎ ﺣﺬﻑ ﺷﺪﻩ ﻭ ﺯﻭﺝﻫﺎ ﻧﺼﻒ ﻣﻲﺷﻮﻧﺪ(
n n
1, 2,3, , = ﺗﻌﺪﺍﺩ ﻗﻄﻌﻪ ﮔﻮﺷﺖ
2 2
n n
1, 2,3, , = ﺗﻌﺪﺍﺩ ﻗﻄﻌﻪ ﮔﻮﺷﺖ
4 4
ﭼﻮﻥ ﻋﻤﺮ ﺧﺮﺱ ﺯﻣﺎﻧﻲ ﺑﻪ ﭘﺎﻳﺎﻥ ﻣﻲﺭﺳﺪ ﻛﻪ ﺗﻤﺎﻡ ﻗﻄﻌﺎﺕ ﺧﻮﺭﺩﻩ ﺷﻮﻧﺪ ،ﺍﻳﻦ ﺭﻭﻧﺪ ﺑﺎﻳﺪ ﺗﺎ ﺑﻪ ﭘﺎﻳﺎﻥ ﺭﺳﻴﺪﻥ ﻫﻤﻪ ﻗﻄﻌﺎﺕ ﺍﺩﺍﻣﻪ ﭘﻴﺪﺍ ﻛﻨﺪ.
æ ö
n n n æ 1 1 1ö ç n ÷
:ﺗﻌﺪﺍﺩ ﻗﻄﻌﺎﺕ ﮔﻮﺷﺖ n + + + + = n ç1 + + + + ÷ = n ç ) ÷ = 2n = q ( n
2 4 8 è 2 4 8ø çç n - 1 ÷÷
è 2 ø
ﻧﻜﺘﻪ :ﺩﺭ ﺍﻳﻦ ﺭﻭﺵ ﺯﻣﺎﻥ ﺧﻮﺭﺩﻩ ﺷﺪﻥ ﻳﻚ ﻗﻄﻌﻪ ﻣﻬﻢ ﻧﻴﺴﺖ ﺑﻠﻜﻪ ﻣﻬﻢ ،ﺧﻮﺭﺩﻩ ﺷﺪﻥ ﻳﻚ ﻗﻄﻌﻪ ﺍﺳﺖ.
۳۸ـ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﺎﺑﻊ ﺭﻭﺑﻪﺭﻭ ﻭ ﻟﻴﺴﺖ ﺣﻠﻘﻮﻱ ﻣﺬﻛﻮﺭ ﺑﻪ ﺍﺯﺍﻱ ﻣﻘﺎﺩﻳﺮ nﺑﺮﺍﺑﺮ 729ﻭ 2200ﺧﺮﻭﺟﻲ ﺑﻪ ﺗﺮﺗﻴﺐ ﺑﺮﺍﺑﺮ ﭼﻨﺪ ﺧﻮﺍﻫﺪ ﺑﻮﺩ؟
{ ) int SO ( LIST* L 1 (۱ﻭ 40
{ ) while ( L - > next ! = L
L ® next = L - > next - > next 1 (۲ﻭ 1
;L = L ® next 729 (۳ﻭ 2200
}
;return L ® data (۴ﻫﻴﭻﻛﺪﺍﻡ
}
( )
: 2 ´ n - 2êëlog n úû + 1ﺧﺮﻭﺟﻲ
ﺑﻨﺎﺑﺮﺍﻳﻦ:
n = 729 Þﺍﮔﺮ (
= 2 ´ 729 - 2ëêlog 729ûú + 1ﺧﺮﻭﺟﻲ )
512
(
= 2 ´ 729 - 2 + 1 = 435
9
)
217
(
) O n 2 log ( log n ) (۴ (
) O n 2 ( log n
2
) (۳ ( ) (۲
O n3 (
O n 2 log n ) (۱
ﺣﻞ :ﮔﺰﻳﻨﻪ ٣ﺩﺭﺳﺖ ﺍﺳﺖ.
æ n ö
f ( n ) = 4f ç ÷ + 22 log n
è 2ø
ﻃﺒﻖ ﻗﻀﻴﻪ ﺍﺻﻠﻲ ﺑﺮﺍﻱ b = 2 ، a = 4ﻭ f ( n ) = n 2 log nﺩﺍﺭﻳﻢ:
log ba = 2
ﺑﻨﺎﺑﺮﺍﻳﻦ ﻣﺮﺗﺒﻪ ﺯﻣﺎﻧﻲ ﺍﻳﻦ ﺗﺎﺑﻊ ﺑﺎﺯﮔﺸﺘﻲ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
(
O n 2 log 2 n )
÷T ( n ) = æç n log b ( log n ) ö ﻫﺮﮔﺎﻩ ÷ f ( n ) = q æç n log b ( log n )k öﺑﺮﺍﻱ k ³ 0ﺁﻥﮔﺎﻩ
a
k +1 a
ﺩﺭﻫﻢ ﺳﺎﺯﻱ
۴۰ـ ﺩﺭ ﺟﺪﻭﻝ ﺩﺭﻫﻢﺳﺎﺯﻱ ) (hashingﺑﺎ ﻭﺍﺭﺳﻲ ﺧﻄﻲ ) (linear probingﺍﮔﺮ ﺗﺎﺑﻊ ﺩﺭﻫﻢﺳﺎﺯﻱ ﺑﺮﺍﻱ 7ﻋﻀﻮ ﻭﺭﻭﺩﻱ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺑﺎﺷﺪ.
key A B C D E F G
hash 3 5 3 4 5 6 3
ﻛﺪﺍﻡﻳﻚ ﺍﺯ ﮔﺰﻳﻨﻪﻫﺎﻱ ﺯﻳﺮ ﻧﻤﻲﺗﻮﺍﻧﺪ ﺣﺎﺻﻞ ﺩﺭﺝ ﺍﻳﻦ ﻋﻨﺎﺻﺮ ﺑﺎ ﻫﺮ ﺗﺮﺗﻴﺐ ﺩﻟﺨﻮﺍﻩ ﺩﺭ ﺁﺭﺍﻳﻪﻱ 7ﺗﺎﻳﻲ )ﻛﻪ ﺩﺭ ﺍﺑﺘﺪﺍ ﺗﻬﻲ ﺍﺳﺖ (.ﺑﺎﺷﺪ؟
H [ 0...6] = [ C E B (۲
G F ]D A H [ 0...6] = [ E F G A C (۱ B ]D
H [ 0...6] = [ C G B A D E F ] (۴ H [ 0...6] = [ B D F A C E G ] (۳
ﺣﻞ :ﮔﺰﯾﻨﻪ 2درﺳﺖ اﺳﺖ.
ﮔﺰﻳﻨﻪ :۱ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﺗﺮﺗﻴﺐ ﺩﺭﺝ ﻋﻨﺎﺻﺮ )ﺍﺯ ﭼﭗ ﺑﻪ ﺭﺍﺳﺖ( A B C D E F Gﺑﺎﺷﺪ ﺁﻥﮔﺎﻩ:
0 1 2 3 4 5 6
H: E F G A C B D
ﮔﺰﻳﻨﻪ :۳ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﺗﺮﺗﻴﺐ ﺩﺭﺝ ﻋﻨﺎﺻﺮ )ﺍﺯ ﭼﭗ ﺑﻪ ﺭﺍﺳﺖ( A E C G B D Fﺑﺎﺷﺪ ﺁﻥﮔﺎﻩ:
0 1 2 3 4 5 6
H: B D F A C E G
ﮔﺰﻳﻨﻪ :۴ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﺗﺮﺗﻴﺐ ﺩﺭﺝ ﻋﻨﺎﺻﺮ )ﺍﺯ ﭼﭗ ﺑﻪ ﺭﺍﺳﺖ( A D E F C G Bﺑﺎﺷﺪ ﺁﻥﮔﺎﻩ:
0 1 2 3 4 5 6
H: C G B A D E F
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۴۴ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﮔﺰﻳﻨﻪ :۲ﺍﺑﺘﺪﺍ Gﺩﺭﺝ ﺷﺪﻩ ﺍﺳﺖ )ﺯﻳﺮﺍ Gﺩﺭ ﻣﻜﺎﻥ ﺩﺭ ﻫﻢﺳﺎﺯﻱ ﺧﻮﺩ ﻗﺮﺍﺭ ﺩﺍﺭﺩ (.ﺍﮔﺮ ﺑﻌﺪ ﺍﺯ ﺁﻥ Fﺩﺭﺝ ﺷﻮﺩ ،ﺑﺎﻳﺪ ﺩﺭ ﺧﺎﻧﻪ 6ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ ﻭ
ﺍﮔﺮ ﺑﻌﺪ ﺍﺯ A ، Gﻳﺎ Cﺩﺭﺝ ﺷﻮﻧﺪ ،ﻃﺒﻖ linear probingﺑﺎﻳﺪ ﺩﺭ ﺧﺎﻧﻪ 4ﻗﺮﺍﺭ ﺑﮕﻴﺮﻧﺪ .ﺩﺭ ﻧﺘﻴﺠﻪ ﮔﺰﻳﻨﻪ 2ﻏﻠﻂ ﺍﺳﺖ.
ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﺗﺮﺗﻴﺐ ﺩﺭﺟﻲ ﻛﻪ ﺑﺮﺍﻱ ﮔﺰﻳﻨﻪﻫﺎﻱ ۱ﻭ ۳ﻭ ۴ﻣﺜﺎﻝ ﺯﺩﻩ ﺷﺪ ،ﺗﻨﻬﺎ ﺣﺎﻟﺖ ﻣﻤﻜﻦ ﻧﻴﺴﺖ ﻭ ﺑﻪ ﺍﺯﺍﻱ ﺟﺎﻳﮕﺸﺖﻫﺎﻱ ﺩﻳﮕﺮﻱ ﺍﺯ
ﻋﻨﺎﺻﺮ ﻧﻴﺰ ﻣﻲﺗﻮﺍﻥ ﺑﻪ ﭼﻨﻴﻦ ﺁﺭﺍﻳﻪﻫﺎﻳﻲ ﺭﺳﻴﺪ .ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺩﺭ ﮔﺰﻳﻨﻪ ،۱ﺍﮔﺮ ﺗﺮﺗﻴﺐ ﺩﺭﺝ ﻋﻨﺎﺻﺮ )ﺍﺯ ﭼﭗ ﺑﻪ ﺭﺍﺳﺖ( B A C D E F G
ﺑﺎﺷﺪ ،ﻧﺘﻴﺠﻪ ﺁﺭﺍﻳﻪ ﮔﺰﻳﻨﻪ ۱ﻣﻲﺷﻮﺩ.
۴۱ـ ﻓﺮﺽ ﻛﻨﻴﺪ ﻛﻪ ﻳﻚ ﺟﺪﻭﻝ ﺩﺭﻫﻢ ﺳﺎﺯﻱ ﺑﻪ ﺍﻧﺪﺍﺯﻩ ) 80ﻫﺸﺘﺎﺩ( ﺍﺯ ﺭﻭﺵ ﺁﺩﺭﺱﺩﻫﻲ ﺧﻄﻲ ﺑﺎﺯ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﺪ .ﺍﺑﺘﺪﺍ ﺟﺪﻭﻝ ﺧﺎﻟﻲ ﺑـﻮﺩﻩ
ﺍﺳﺖ ﻭ ﺗﻨﻬﺎ ﻋﻤﻠﻴﺎﺕ ﺍﺿﺎﻓﻪ ﻛﺮﺩﻥ ﻭ ﺟﺴﺘﺠﻮ ﺭﻭﻱ ﺟﺪﻭﻝ ﺍﻧﺠﺎﻡ ﺷﺪﻩ ﺍﺳﺖ .ﺩﺭ ﺣﺎﻝ ﺣﺎﺿﺮ ﻭﺿﻌﻴﺖ ﺩﺭﺍﻳﻪﻫﺎﻱ 45ﺗﺎ 56ﺟﺪﻭﻝ ﺑﻪ ﺻـﻮﺭﺕ
ﺯﻳﺮ ﺍﺳﺖ .ﺍﻋﺪﺍﺩ ﺑﺎﻻﻱ ﺁﺭﺍﻳﻪ ،ﺍﻧﺪﻳﺲ ﺩﺭﺍﻳﻪﻫﺎ ﻭ ﺍﻋﺪﺍﺩ ﭘﺎﻳﻴﻦ ﺁﺭﺍﻳﻪ ﺧﺮﻭﺟﻲ ﺗﺎﺑﻊ ﺩﺭﻫﻢ ﺳﺎﺯﻱ ﺍﺳﺖ .ﺍﮔﺮ ﻳﻜﺒﺎﺭ ﺩﻳﮕﺮ ﺍﺯ ﺟﺪﻭﻝ ﺩﺭﻫﻢ ﺳﺎﺯﻱ
ﺧﺎﻟﻲ ﺷﺮﻭﻉ ﻛﻨﻴﻢ ﻭ ﻫﻤﺎﻥ ﻋﻤﻠﻴﺎﺕ ﺭﺍ ﺑﻪ ﻏﻴﺮ ﺍﺯ ﺍﺿﺎﻓﻪ ﻛﺮﺩﻥ ﻛﻠﻴﺪ eﺩﻭﺑﺎﺭﻩ ﺍﻧﺠﺎﻡ ﺩﻫﻴﻢ .ﺩﺭ ﺩﺭﺍﻳﻪﻱ 50ﭼﻪ ﻛﻠﻴﺪﻱ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ؟
45 46 47 48 49 50 51 52 53 54 55 56 i (۲ h (۱
a b c d e f g h i j g (۲ f (۱
46 46 46 47 46 51 47 46 48 49
ﺣﻞ :ﮔﺰﻳﻨﻪ ٤ﺩﺭﺳﺖ ﺍﺳﺖ.
ﭘﺲ ﺍﺯ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻦ ﻛﻠﻴﺪ aﺩﺭ ﺧﺎﻧﻪ ، 46ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺭﻭﺵ ﺁﺩﺭﺱﺩﻫﻲ ﺧﻄﻲ ﺑﺎﺯ ﻛﻠﻴﺪﻫﺎﻱ d , c , bﺑﻪ ﺗﺮﺗﻴﺐ ﺩﺭ ﺧﺎﻧﻪﻫﺎﻱ 49 , 48 , 47
ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﻧﺪ .ﺳﭙﺲ ﻛﻠﻴﺪ fﺩﺭ ﺧﺎﻧﻪ 51ﻛﻪ ﺧﺎﻟﻲ ﺍﺳﺖ ﻣﻲﻧﺸﻴﻨﺪ .ﺧﺮﻭﺟﻲ ﺗﺎﺑﻊ ﺩﺭﻫﻢﺳﺎﺯﻱ ﺑﻪ ﺍﺯﺍﻱ gﺧﺎﻧﻪ 47ﺍﺳﺖ؛ ﺍﻣﺎ ﺍﺯﺁﻧﺠﺎﻛﻪ ﻗﺒﻼﹰ
ﻳﻚ ﻋﻨﺼﺮ ﺑﻪ ﺍﻳﻦ ﺧﺎﻧﻪ ﺩﺭ ﻫﻢﺳﺎﺯﻱ ﺷﺪﻩ ﺍﺳﺖ g ،ﺑﺎ ﺭﻭﺵ ﺁﺩﺭﺱﺩﻫﻲ ﺧﻄﻲ ﺑﺎﺯ ﺩﺭ ﺧﺎﻧﻪ 50ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ .ﺟﺪﻭﻝ ﺩﺭﻫﻢﺳﺎﺯﻱ ﺑﺪﻭﻥ ﺍﺿﺎﻓﻪ
ﻛﺮﺩﻥ ﻛﻠﻴﺪ eﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﺧﻮﺍﻫﺪ ﺑﻮﺩ.
45 46 47 48 49 50 51 52 53 54 55 56
a b c d g f h i j
46 46 46 47 47 51 46 48 49
۴۲ـ ﻓﺮﺽ ﻛﻨﻴﺪ ﻛﻪ ﺩﺭ ﺳﺎﺧﺖ ﺟﺪﻭﻝ ﺩﺭﻫﻢ ﺳﺎﺯﻱ ﺯﻳﺮ ﺍﺯ ﺭﻭﺵ ﺁﺩﺭﺱﺩﻫﻲ ﺧﻄﻲ ﺑﺎﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺷـﺪﻩ ﺍﺳـﺖ .ﺍﮔـﺮ ﺗـﺎﺑﻊ Hashﺑـﻪ ﺻـﻮﺭﺕ
ﺑﺎﻗﻴﻤﺎﻧﺪﻩ ﺗﻘﺴﻴﻢ ﺑﺮ 5ﺗﻌﺮﻳﻒ ﺷﺪﻩ ﺑﺎﺷﺪ ،ﻛﺪﺍﻡ ﮔﺰﻳﻨﻪ ﻧﻤﻲﺗﻮﺍﻧﺪ ﺗﺮﺗﻴﺐ ﺻﺤﻴﺢ ﺩﺭﺝ ﻋﻨﺎﺻﺮ ﺩﺭ ﺟﺪﻭﻝ ﺑﺎﺷﺪ؟ ﺗﺮﺗﻴﺐ ﺍﺯ ﭼـﭗ ﺑـﻪ ﺭﺍﺳـﺖ
ﺍﺳﺖ.
0 10 11 ،6 ،7 ،10 ،15 (۱
1 11 11 ،6 ،10 ،7 ،15 (۲
2 6
10 ،11 ،6 ،7 ،15 (۳
3 7
11 ،10 ،6 ،15 ،7 (۴
4 15
ﺣﻞ :ﮔﺰﻳﻨﻪ ٤ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺩﺭ ﺻﻮﺭﺕ ﺳﺆﺍﻝ ﺗﻮﺿﻴﺤﻲ ﺩﺭﺑﺎﺭﻩ ﭼﮕﻮﻧﮕﻲ ﺗﺮﺗﻴﺐ ﺩﺭﺝ ﻋﻨﺎﺻﺮ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ .ﺍﻣﺎ ﺍﺯ ﺁﻧﺠﺎ ﻛﻪ ﺟﺪﻭﻝ ﻋﻨﺎﺻﺮ ﺑﻪ ﺻﻮﺭﺕ ﻣﺮﺗﺐ ﻫﺴﺘﻨﺪ ،ﺍﺣﺘﻤﺎﻻﹰ
ﻣﻨﻈﻮﺭ ﻃﺮﺍﺡ ﺗﺮﺗﻴﺐ ﺩﺭﺝ ﻋﻨﺎﺻﺮ ﺑﻪ ﺻﻮﺭﺕ ﻣﺮﺗﺐﺳﺎﺯﻱ ﺍﺳﺖ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۴۵
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۴۶ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
n
= aﺍﺳﺖ ﺑﺎ ﺗﻮﺟـﻪ ﺑـﻪ ﺩﻭ ﺭﻭﺵ ۴۳ـ ﺩﺭ ﻳﻚ ﺗﺎﺑﻊ ﺩﺭﻫﻢﺳﺎﺯﻱ ﻓﺎﻛﺘﻮﺭﻟﻮﺩ ﻋﺒﺎﺭﺕ ﺍﺳﺖ ﺍﺯ ﺩﺭﻫﻤﺴﺎﺯﻱ nﻛﻠﻴﺪ ﺑﻪ mﻣﻜﺎﻥ ﻛﻪ ﺑﻪ ﺻﻮﺭﺕ
m
ﺯﻧﺠﻴﺮﻩﺳﺎﺯﻱ ﻭ ﺁﺩﺭﺱﺩﻫﻲ ﺑﺎﺯ ،ﻣﻘﺎﺩﻳﺮﻱ ﻛﻪ aﻣﻲﺗﻮﺍﻧﺪ ﺩﺭ ﺍﻳﻦ ﺩﻭ ﺭﻭﺵ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﭼﻴﺴﺖ؟
(۲ﺩﺭ ﻫﺮ ﺩﻭ ﺭﻭﺵ aﺣﺪﺍﻛﺜﺮ ﻣﻲﺗﻮﺍﻧﺪ 1ﺑﺎﺷﺪ. (۱ﺯﻧﺠﻴﺮﻩﺳﺎﺯﻱ :ﺑﻴﺸﺘﺮ ،ﻣﺴﺎﻭﻱ ﻳﺎ ﻛﻤﺘﺮ ﺍﺯ 1
ﺁﺩﺭﺱﺩﻫﻲ ﺑﺎﺯ :ﺣﺪﺍﻛﺜﺮ 1
(۴ﺯﻧﺠﻴﺮﻩﺳﺎﺯﻱ :ﻫﻤﻴﺸﻪ ﺑﺮﺍﺑﺮ 1ﺍﺳﺖ. (۳ﺯﻧﺠﻴﺮﻩﺳﺎﺯﻱ :ﺣﺪﺍﻛﺜﺮ 1
ﺁﺩﺭﺱﺩﻫﻲ ﺑﺎﺯ :ﺣﺪﺍﻛﺜﺮ 1 ﺁﺩﺭﺱﺩﻫﻲ ﺑﺎﺯ :ﻫﻤﻴﺸﻪ ﺑﺮﺍﺑﺮ ﺑﺎ 1ﺍﺳﺖ.
ﺣﻞ :ﮔﺰﻳﻨﻪ ۱ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺍﺯ ﺁﻧﺠﺎ ﻛﻪ ﺩﺭ ﺭﻭﺵ ﺯﻧﺠﻴﺮﻩﺳﺎﺯﻱ ﻋﻨﺎﺻﺮ ﺧﺎﺭﺝ ﺍﺯ ﺟﺪﻭﻝ ﺩﺭﻫﻢﺳﺎﺯﻱ ﺫﺧﻴﺮﻩ ﻣﻲﺷﻮﻧﺪ a ،ﻣﻲﺗﻮﺍﻧﺪ ﺑﻴﺸﺘﺮ ،ﻣﺴﺎﻭﻱ ﻳﺎ ﻛﻤﺘﺮ ﺍﺯ 1ﺑﺎﺷﺪ .ﺩﺭ ﺭﻭﺵ
ﺁﺩﺭﺱﺩﻫﻲ ﺑﺎﺯ ﭼﻮﻥ ﻫﻤﻪﻱ ﻋﻨﺎﺻﺮ ﺩﺭ ﺟﺪﻭﻝ ﺫﺧﻴﺮﻩ ﻣﻲﺷﻮﻧﺪ a ،ﻣﻲﺗﻮﺍﻧﺪ ﺣﺪﺍﻛﺜﺮ 1ﺑﺎﺷﺪ.
n
= ، aﻓﺎﻛﺘﻮﺭﻟﻮﺩ( ۴۴ـ ﺩﺭ ﻳﻚ ﺟﺪﻭﻝ ﺩﺭﻫﻢﺳﺎﺯﻱ ﺑﺎ ﺭﻭﺵ ﺯﻧﺠﻴﺮﻩﺳﺎﺯﻱ ﺯﻣﺎﻥ ﺟﺴﺘﺠﻮﻱ ﻳﻚ ﻋﻨﺼﺮ ﺩﺭ ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ ﭼﻘﺪﺭ ﺍﺳﺖ؟)
m
) Q ( log n (۴ )Q(n (۳ )Q (1 (۲ ( ) (۱
Q n2
ﻣﺮﺗﺐ ﺳﺎﺯﻱ
۴۵ـ ﺑﺮ ﺍﺳﺎﺱ ﻗﻄﻌﻪ ﻛﺪ ﺯﻳﺮ ،ﻛﺪﺍﻡﻳﻚ ﺍﺯ ﮔﺰﻳﻨﻪﻫﺎﻱ ﺯﻳﺮ ﺩﺭ ﻣﺤﻞ Aﺩﺭﺳﺖ ﺍﺳﺖ؟
) for ( item = n ;item > 1;item - -
{
; ]int Large = a [1
;int index =1
) for ( i = 2;i <= item;i + +
{
; ] L arg e = a [i
;index = i
}
; ] a [index ] = a [item
;a [item ] = L arg e
// A
}
a [ j] < a [ j + 1] ، item < j <= n (۲ﺑﺮﺍﻱ ﺗﻤﺎﻡ jﻫﺎﻳﻲ ﻛﻪ a [ j] < a [ j - 1] ، 1 < j <= item (۱ﺑﺮﺍﻱ ﺗﻤﺎﻡ jﻫﺎﻳﻲ ﻛﻪ
(۴ﺑﺮﺍﻱ ﺗﻤﺎﻡ jﻫﺎﻳﻲ ﻛﻪ a [ j] < a [ j + 1] ، item <= j < n (۳ﺑﺮﺍﻱ ﺗﻤﺎﻡ jﻫﺎﻳﻲ ﻛﻪ a [ j] <= a [ j + 1] ، item <= j < n
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۴۷
) (
O n2 ) O(n2
)O(n Binary Insertion Sort
۴۷ـ ﻳﻚ ﺁﺭﺍﻳﻪ ﺑﺎ 8ﻋﻨﺼﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ .ﻣﺮﺗﺐﺳﺎﺯﻱ ﺍﺩﻏﺎﻣﻲ ﺑﺮﺍﻱ ﻣﺮﺗﺐﺳﺎﺯﻱ ﺍﻳﻦ ﺁﺭﺍﻳﻪ ﺣﺪﺍﻛﺜﺮ ﭼﻨﺪ ﻣﻘﺎﻳﺴﻪ ﺍﻧﺠﺎﻡ ﺧﻮﺍﻫﺪ ﺩﺍﺩ؟
33 (۴ 17 (۳ 13 (۲ 31 (۱
ﺣﻞ :ﮔﺰﻳﻨﻪ ۳ﺩﺭﺳﺖ ﺍﺳﺖ.
n
ﻣﻘﺎﻳﺴﻪ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﺪ. ﻣﺮﺗﺐﺳﺎﺯﻱ ﺍﺩﻏﺎﻣﻲ ﺩﺭ ﻳﻚ ﺁﺭﺍﻳﻪ ﻭﺭﻭﺩﻱ ﺑﻪ ﻃﻮﻝ ،nﺣﺪﺍﻛﺜﺮ n log n - n + 1ﻣﻘﺎﻳﺴﻪ ﻭ ﺣﺪﺍﻗﻞ log n
2
ﻣﻘﺎﻳﺴﻪ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﺪ. ﺑﻨﺎﺑﺮﺍﻳﻦ ﻣﺮﺗﺐﺳﺎﺯﻱ ﺍﺩﻏﺎﻣﻲ ﺩﺭ ﻳﻚ ﺁﺭﺍﻳﻪ 8ﻋﻨﺼﺮﻱ ،ﺣﺪﺍﻛﺜﺮ n log n - n + 1 = 8 ´ 3 - 8 + 1 = 24 - 7 = 17
۴۸ـ ﻣﻲﺩﺍﻧﻴﻢ ﻛﻪ ﻫﺰﻳﻨﻪﻱ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻣﺮﺗﺐﺳﺎﺯﻱ ﺩﺭﺟﻲ ) (Insertion Sortﺑﺮﺍﻱ ﻣﺮﺗﺐﺳﺎﺯﻱ ﻳﻚ ﺁﺭﺍﻳﻪﻱ Aﺑﺎ nﻋﻨﺼﺮ ﻣﺘﻨﺎﺳﺐ ﺑـﺎ ﺗﻌـﺪﺍﺩ
»ﻭﺍﺭﻭﻧﮕﻲ« )(inversionﻫﺎﻱ ﻋﻨﺎﺻﺮ ﺁﻥ ﺁﺭﺍﻳﻪ ﺍﺳﺖ .ﺯﻭﺝ ) ( i , jﺭﺍ ﻳﻚ ﻋﺪﺩ ﻭﺍﺭﻭﻧﮕﻲ ﻣﻲﮔـﻮﻳﻴﻢ ﺍﮔـﺮ i < jﻭ ] A [i ] > A [ jﺑـﺎ ﻓـﺮﺽ
ﺍﺣﺘﻤﺎﻝ ﺍﻳﻦﻛﻪ ﻳﻚ ﺯﻭﺝ ﺍﻧﺪﻳﺲ ﺩﻟﺨﻮﺍﻩ ﺍﺯ Aﻳﻚ ﻭﺍﺭﻭﻧﮕﻲ ﺑﺎﺷﺪ ﺑﺮﺍﺑﺮ 1/ 2ﺍﺳﺖ ،ﻣﻴﺎﻧﮕﻴﻦ ﺗﻌﺪﺍﺩ ﻭﺍﺭﻭﻧﮕﻲﻫﺎﻱ ﻳﻚ ﺁﺭﺍﻳﻪﻱ Aﺑﺎ ﻋﻨﺎﺻـﺮ
ﻣﺘﻤﺎﻳﺰ ﭼﮕﻮﻧﻪ ﺍﺳﺖ؟
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۴۸ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۴۹
n
2 ´4 )= q(n
4
n
3 ´8 )= q(n
8
n n
log )´ b = q(n
b b
ﺍﺩﻏﺎﻡ ﺩﺭ ﺳﻄﻮﺡ ﭘﺎﻳﻴﻦﺗﺮ ﺍﺯ bﻳﻌﻨﻲ ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﺍﻧﺪﺍﺯﻩ ﺯﻳﺮ ﺁﺭﺍﻳﻪﻫﺎ ﺍﺯ bﻛﻮﭼﻚﺗﺮ ﻣﻲﺷﻮﺩ ،ﻫﺰﻳﻨﻪﺍﻱ ﻧﺪﺍﺭﺩ .ﺑﻨﺎﺑﺮﺍﻳﻦ ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﻳﻲ ﻛﻪ ﺩﺭ
. q æç logﺍﺯ ﻃﺮﻓﻲ ﻫﺰﻳﻨﻪ ﺍﺩﻏﺎﻡ ﺩﺭ ﻫﺮ
n ö n
ﺍﺳﺖ ﻭ ﺍﺭﺗﻔﺎﻉ ﺩﺭﺧﺖ ﺗﺎ ﺳﻄﺤﻲ ﻛﻪ ﻫﺰﻳﻨﻪﺑﺮ ﻣﻲﺑﺎﺷﺪ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ ﺁﺧﺮﻳﻦ ﺳﻄﺢ ﻫﺰﻳﻨﻪﺑﺮﻧﺪ
è b ÷ø b
ﺳﻄﺢ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ ) . q ( nﺩﺭ ﻧﺘﻴﺠﻪ ﻫﺰﻳﻨﻪ ﻛﻞ ﻣﺮﺗﺐﺳﺎﺯﻱ ﺍﺩﻏﺎﻣﻲ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ:
æ n ö æ n ö
÷ q ( n ) ´ q ç log ÷ = q ç n log
è b ø è b ø
۵۰ـ ﺁﺭﺍﻳﻪﻱ ﻧﺎﻣﺮﺗﺐ nﻋﻨﺼﺮﻱ Aﺷﺎﻣﻞ nﻋﺪﺩ ﺻﺤﻴﺢ ﻣﺠﺰﺍ ﺑﻴﻦ 0ﺗﺎ nﺍﺳﺖ .ﺑﻪ ﺟﺰ ﻳﻚ ﻋﺪﺩ ،xﻣﻲﺧﻮﺍﻫﻴﻢ ﺑﺎ ﻳﻚ ﺍﻟﮕـﻮﺭﻳﺘﻢ ﻛـﺎﺭﺍ xﺭﺍ
ﭘﻴﺪﺍ ﻛﻨﻴﻢ .ﻛﺪﺍﻡﻳﻚ ﺍﺯ ﮔﺰﻳﻨﻪﻫﺎﻱ ﺯﻳﺮ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺩﺭﺳﺖ ﻭ ﺍﺯ ﺑﻘﻴﻪ ﺳﺮﻳﻊﺗﺮ ﻭ ﻣﻨﺎﺳﺐﺗﺮ ﺑﺮﺍﻱ ﺍﻳﻦ ﻛﺎﺭ ﺍﺳﺖ؟
A (۱ﺭﺍ ﻣﺮﺗﺐ ﻛﻨﻴﻢ ﻭ ﺳﭙﺲ ﺑﺎ ﭘﻴﻤﺎﻳﺶ ﺁﺭﺍﻳﻪﻱ ﻣﺮﺗﺐ x ،ﺭﺍ ﭘﻴﺪﺍ ﻛﻨﻴﻢ.
(۲ﻳﻚ heapﺑﺮ ﺭﻭﻱ Aﺑﺴﺎﺯﻳﻢ .ﺍﺯ ﺭﻳﺸﻪ ﺣﺮﻛﺖ ﻣﻲﻛﻨﻴﻢ ﻭ ﺑﻪ ﻳﻜﻲ ﺍﺯ ﺯﻳﺮﺩﺭﺧﺖﻫﺎﻱ ﺁﻥ ﻣﻲﺭﻭﻳﻢ .ﻛﺎﺭ ﺟﺴﺘﺠﻮ ﺭﺍ ﺩﻧﺒﺎﻝ ﻣﻲﻛﻨﻴﻢ.
(۳ﻣﻴﺎﻧﻪﻱ Aﺭﺍ ﭘﻴﺪﺍ ﻛﻨﻴﻢ ﻭ ﺑﺮ ﺍﺳﺎﺱ ﺁﻥ ﺑﻪ ﻋﻨﻮﺍﻥ ﻋﻨﺼﺮﻣﺤﻮﺭ ) Partition ،(pivotﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﻴﻢ ﻭ ﺑﺮ ﺍﻳﻦ ﺍﺳﺎﺱ ﻛﺎﺭ ﺟﺴﺘﺠﻮ ﺭﺍ
ﺍﺩﺍﻣﻪ ﻣﻲﺩﻫﻴﻢ.
(۴ﺍﺯ ﻳﻚ ﺁﺭﺍﻳﻪ ﻛﻤﻲ n + 1ﻋﻨﺼﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ .ﺍﺑﺘﺪﺍ ﺗﻤﺎﻡ ﺧﺎﻧﻪﻫﺎﻱ ﺁﻥ ﺭﺍ ﺻﻔﺮ ﻣﻲﻛﻨﻴﻢ .ﺳﭙﺲ ﺩﺭ ﻃﻮﻝ ﺁﺭﺍﻳﻪﻱ ﺍﺻﻠﻲ ﺣﺮﻛﺖ
ﻣﻲﻛﻨﻴﻢ ﻭ ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ﻋﺪﺩﻱ ﻛﻪ ﺩﺭ Aﺩﻳﺪﻳﻢ ،ﺩﺭ ﺁﺭﺍﻳﻪﻱ ﻛﻤﻜﻲ ،ﺧﺎﻧﻪ ﺑﺎ ﺍﻧﺪﻳﺲ ﺁﻥ ﻋﺪﺩ ﺭﺍ 1ﻣﻲﻛﻨﻴﻢ .ﺍﻳﻦ ﻛﺎﺭ ﺭﺍ ﺑﺮﺍﻱ ﺗﻤﺎﻡ ﻋﻨﺎﺻﺮ
ﺩﺭ Aﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﻴﻢ ،ﺩﺭ ﺍﻧﺘﻬﺎ ﺍﺯ ﺁﺭﺍﻳﻪ ﻛﻤﻜﻲ xﺭﺍ ﭘﻴﺪﺍ ﻣﻲﻛﻨﻴﻢ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۵۰ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
ﻭ 4ﻭ 5ﺗﺒﺪﻳﻞ ﻛﻨﻴﻢ .ﺗﻨﻬﺎ ﻋﻤﻠﻴﺎﺕ ﻣﺠﺎﺯ ﺟﺎﺑﺠﺎ ﻛﺮﺩﻥ ﺩﺭﺍﻳﻪﻫﺎﻱ ﻣﺘﻮﺍﻟﻲ )ﭘﺸﺖ ﺳﺮ ﻫﻢ( ﺑﺎ ﻳﻜﺪﻳﮕﺮ ﺍﺳﺖ .ﺣـﺪﺍﻗﻞ ﭼﻨـﺪ ﺟﺎﺑﺠـﺎﻳﻲ ﻻﺯﻡ
ﺍﺳﺖ؟
7 (۴ 6 (۳ 5 (۲ 4 (۱
ﺣﻞ :ﮔﺰﻳﻨﻪ ٣ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺑﺮﺍﻱ ﺗﺒﺪﻳﻞ ﻟﻴﺴﺖ 1,3,5, 4, 2ﺑﻪ ﻟﻴﺴﺖ ﻧﺰﻭﻟﻲ ،ﻳﻚ ﺭﺍﻩ ﺣﻞ ﺧﻮﺏ ﺭﺳﺎﻧﺪﻥ ﺑﺰﺭﮒﺗﺮﻳﻦ ﻳﺎ ﻛﻮﭼﻚﺗﺮﻳﻦ ﻋﺪﺩ ﺑﻪ ﻣﻜﺎﻥ ﻣﻨﺎﺳﺐ ﺧﻮﺩ ﺍﺳﺖ.
ﺩﺭ ﻭﺍﻗﻊ ﺣﺪﺍﻗﻞ ﺗﻌﺪﺍﺩ ﺟﺎﺑﻪﺟﺎﻳﻲﻫﺎﻱ ﺧﺎﻧﻪﻫﺎﻱ ﻣﺠﺎﻭﺭ ﺑﺮﺍﺑﺮ ﺍﺳﺖ ﺑﺎ
ﺗﻌﺪﺍﺩ ﺟﺎﺑﻪﺟﺎﻳﻲﻫﺎ ﺩﺭ ، Insertion Sortﭼﺮﺍ ﻛﻪ ﺩﺭ ﻫﺮ ﻣﺮﺣﻠﻪ ﺩﻭ
ﻋﺪﺩ ﻣﺘﻮﺍﻟﻲ ﺟﺎﺑﻪﺟﺎ ﻣﻲﺷﻮﻧﺪ.
۵۲ـ ﺩﺭ ﻛﺪ ﺯﻳﺮ ،x++ﭼﻨﺪ ﺑﺎﺭ ﺗﻜﺮﺍﺭ ﻣﻲﺷﻮﺩ؟ )ﻓﺮﺽ ﻛﻨﻴﺪ n >= 3ﺍﺳﺖ(
) for ( i = 3;i <= n ;i = i * 2
;x + +
ê ( log n + 1) ú ê n ú ê ( log n ) ú ê nú
ê ú (۴ ê log 3 + 1ú (۳ ê ú (۲ ê log 3 ú (۱
ëê 3 ûú ë û ëê 3 ûú ë û
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۵۱
۵۴ـ ﺗﻮﺍﺑﻊ g ( n ) = lg lg n n ، f ( n ) = 4lg nﻭ h ( n ) = lg 2 nﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ .ﻛﺪﺍﻡ ﻳﻚ ﺍﺯ ﮔﺰﺍﺭﻩﻫﺎﻱ ﺯﻳﺮ ﺻﺤﻴﺢ ﺍﺳﺖ؟
) ) f ( n ) Î Q ( h ( n ) ) , g ( n )Î W ( f ( n (۲ ) ) f ( n ) Î O ( g ( n ) ) , f ( n )Î W ( h ( n (۱
) ) h ( n ) Î O ( g ( n ) ) , f ( n )Î Q ( g ( n (۴ ) ) g ( n ) Î W ( h ( n ) ) , h ( n )Î W ( f ( n (۳
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۵۲ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
(
)) W O ( f ( n ) g ( n ) = W ( f ( n ) ) ® g ³ f . h ( n ) = O ( f ( n ) ) Þ h £ fﺑﻨﺎﺑﺮﺍﻳﻦ ¬ g ³ f ³ h ﮔﺰﻳﻨﻪ :۴
ﻣﺘﻔﺮﻗﻪ
¬
۵۶ـ ﺍﮔﺮ ﺭﺷﺘﺔ ﺍﻋﺪﺍﺩ )ﺍﺯ ﺭﺍﺳﺖ ﺑﻪ ﭼﭗ( 5 , 4 , 3 , 2 , 1ﺭﺍ ﺑﻪﺗﺮﺗﻴﺐ ﺩﺭ ﻳﻚ STACKﻭﺍﺭﺩ ﻛﻨﻴﻢ ،ﻛﺪﺍﻡﻳﻚ ﺍﺯ ﺧﺮﻭﺟـﻲﻫـﺎﻱ ﺯﻳـﺮ ﺍﺯ ﺍﻳـﻦ
STACKﺍﻣﻜﺎﻥﭘﺬﻳﺮ ﺧﻮﺍﻫﺪ ﺑﻮﺩ؟ )ﺧﺮﻭﺟﻲﻫﺎﻱ STACKﺭﺍ ﺍﺯ ﭼﭗ ﺑﻪ ﺭﺍﺳﺖ ﺑﺨﻮﺍﻧﻴﺪ(.
5 -1- 3 - 2 - 4 (۴ 1- 3- 5 - 4 - 2 (۳ 5 - 4 - 3 -1- 2 (۲ (۱
2 - 3 - 5 -1-4
ﺣﻞ :ﮔﺰﻳﻨﻪ ۳ﺩﺭﺳﺖ ﺍﺳﺖ.
®
: 1 , 2 , 3 , 4 , 5ﻭﺭﻭﺩﻱ
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۵۳
ﮔﺰﻳﻨﺔ :۱
5
ﻭﺭﻭﺩ 1 ﻭﺭﻭﺩ 2 ﺧﺮﻭﺝ 2 ﻭﺭﻭﺩ 3 ﺧﺮﻭﺝ 3 ﻭﺭﻭﺩ 4 ﻭﺭﻭﺩ 5 ﺧﺮﻭﺝ 5
2 3 4 4 4
1 1 1 1 1 1 1 1
: 2ﺧﺮﻭﺟﻲ : 2 - 3ﺧﺮﻭﺟﻲ : 2 - 3 - 5ﺧﺮﻭﺝ
ﺧﺮﻭﺝ 1
´
ﮔﺰﻳﻨﺔ :۲
5
4 4 4
3 3 3 3 3
ﻭﺭﻭﺩ 1 ﻭﺭﻭﺩ 2 ﻭﺭﻭﺩ 3 ﻭﺭﻭﺩ 4 ﻭﺭﻭﺩ 5 ﺧﺮﻭﺟﻲ5 ﺧﺮﻭﺟﻲ4 ﺧﺮﻭﺝ 3
2 2 2 2 2 2 2
1 1 1 1 1 1 1 1
: 5ﺧﺮﻭﺟﻲ : 5 - 4ﺧﺮﻭﺟﻲ : 5 - 4ﺧﺮﻭﺟﻲ
ﺧﺮﻭﺝ 3 2 ﺧﺮﻭﺝ 1
´
1
: 5 - 4 - 3ﺧﺮﻭﺟﻲ
ﮔﺰﻳﻨﺔ :۳
5
ﻭﺭﻭﺩ 1 ﺧﺮﻭﺝ 1 ﻭﺭﻭﺩ 2 ﻭﺭﻭﺩ 3 ﺧﺮﻭﺟﻲ3 ﻭﺭﻭﺩﻱ 4 ﻭﺭﻭﺩﻱ 5 ﺧﺮﻭﺝ 5
3 4 4
1 2 2 2 2 2
:1ﺧﺮﻭﺟﻲ
:1 - 3ﺧﺮﻭﺟﻲ
ﮔﺰﻳﻨﺔ :۴
5
4 4 4
3 3 3 3
ﻭﺭﻭﺩ 1 ﻭﺭﻭﺩ 2 ﻭﺭﻭﺩ 3 ﻭﺭﻭﺩ 4 ﻭﺭﻭﺩ 5 ﺧﺮﻭﺟﻲ5 ﺧﺮﻭﺟﻲ1
2 2 2 2 2 ´
1 1 1 1 1 1
: 5ﺧﺮﻭﺟﻲ
(* A
EF ) B C-D
AB * ( C - D ) + +H (۲ )+ E (F / G + H (۱
G
)) AB * C - D + E / ( F / ( G + H (۴ AB * C - D + E / F / G + H (۳
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
۵۴ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ
) ) ((( A - B) * C ) - D ) + E / ( F / ( G + H
)) AB * C - D + E / ( F / ( G + H
۵۸ـ ﺍﮔﺮ ﺗﺨﺼﻴﺺ ﺣﺎﻓﻈﻪ ﺑﺮﺍﻱ ﺁﺭﺍﻳﻪﻫﺎ ﺳﻄﺮﻱ ﺑﺎﺷﺪ ،ﺩﺭ ﺁﻥ ﺻﻮﺭﺕ ﺑﺮﺍﻱ ﺁﺭﺍﻳﺔ ﺳﻪ ﺑﻌـﺪﻱ A éë1..n1 ,1..n 2 ,1..n 3 ùûﻣﺆﻟﻔـﺔ ] kﻭ jﻭ A [iﺩﺭ
ﭼﻪ ﻣﺤﻠﻲ ﺍﺯ ﺣﺎﻓﻈﻪ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ؟ ) aﺁﺩﺭﺱ ﺍﻭﻟﻴﻦ ﺧﺎﻧﻪ ﺣﺎﻓﻈﻪ ﺁﺭﺍﻳﻪ ﻣﻲﺑﺎﺷﺪ(.
)a + ( i - 1) n 2 n 3 + ( j - 1) n 3 + ( k - 1 (۲ )a + ( i - 1) n1n 2 + ( k - 1 (۱
a + ( k - 1) n 2 n 3 + ( j - 1) n 3 + ( i - 1) (۴ a + ( k - 1) n1n 2 + ( j - 1) n 2 + ( i - 1) (۳
ﺣﻞ :ﮔﺰﻳﻨﻪ ۲ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺍﮔﺮ ﺁﺭﺍﻳﺔ A ëéL1 . . U1 , L2 . . U 2 , L3 . . U3 ûùﺑﻪﺻﻮﺭﺕ ﺳﻄﺮﻱ ﺩﺭ ﺣﺎﻓﻈﻪ ﺫﺧﻴﺮﻩ ﺷﻮﺩ ﻭ aﺁﺩﺭﺱ ﺷﺮﻭﻉ ﺁﺭﺍﻳﻪ ﺑﺎﺷﺪ ﺁﻥﮔﺎﻩ:
A [i , j , k ] = a + éë( i - L1 )( U 2 - L 2 + 1) ( U3 - L3 + 1) + ( j - L 2 ) ( U3 - L3 + 1) + ( K - L3 ) ùû * b
ﻛﻪ bﺍﻧﺪﺍﺯﺓ ﻫﺮ ﺧﺎﻧﻪ ﺣﺎﻓﻈﻪ ﺍﺳﺖ .ﺑﻨﺎ ﺑﻪ ﻓﺮﺿﻴﺎﺕ ﺑﺎﻻ:
ì L1 = 1 ìL 2 = 1 ì L3 = 1
í í í
î U1 = n1 îU2 = n 2 î U3 = n 3
A [i , j , k ] = a + éë( i - 1)( n 2 - 1 + 1) ( n 3 - 1 + 1) + ( j - 1) ( n 3 - 1 + 1) + ( k - 1) ùû ´b
ﻛﻪ : b = 1
A [i , j , k ] = a + éë( i - 1) n 2 n 3 + ( j - 1) ( n 3 ) + ( k - 1) ùû
)A [i , j , k ] = a + ( i - 1) n 2 n 3 + ( j - 1) n 3 + ( k - 1
۵۹ـ -ﻛﺪﺍﻡﻳﻚ ﺍﺯ ﺗﺮﺗﻴﺐ ﻫﺎﻱ ﺯﻳﺮ ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎﻱ ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ ﺑﺮﺍﻱ ﺫﺧﻴﺮﻩ ﻣﺮﺗﺐ ﺍﺷﻴﺎ )ﺑـﺮ ﺍﺳـﺎﺱ ﻣﻘـﺪﺍﺭ ﻛﻠﻴـﺪ( ﺭﺍ ﺑـﻪ ﺗﺮﺗﻴـﺐ ﺍﺯ
ﻛﻨﺪﺗﺮﻳﻦ ﺑﻪ ﺳﺮﻳﻊﺗﺮﻳﻦ ﻟﻴﺴﺖ ﻛﺮﺩﻩ ﺍﺳﺖ؟
(۱ﺟﺪﻭﻝ ﺩﺭﻫﻢﺳﺎﺯﻱ ،ﺁﺭﺍﻳﻪﻫﺎﻱ ﻣﺮﺗﺐ ،ﻟﻴﺴﺖﻫﺎﻱ ﺯﻧﺠﻴﺮﻩﺍﻱ
(۲ﺁﺭﺍﻳﻪﻫﺎﻱ ﻣﺮﺗﺐ ،ﺩﺭﺧﺖ ﻫﺎﻱ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ،ﻟﻴﺴﺖﻫﺎﻱ ﺯﻧﺠﻴﺮﻩﺍﻱheap ،
(۳ﺁﺭﺍﻳﻪﻫﺎﻱ ﻣﺮﺗﺐ ،ﻟﻴﺴﺖﻫﺎﻱ ﺯﻧﺠﻴﺮﻩﺍﻱ ﻣﺮﺗﺐ ،ﺩﺭﺧﺖﻫﺎﻱ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ
(۴ﺁﺭﺍﻳﻪﻫﺎﻱ ﻧﺎﻣﺮﺗﺐ ،ﻟﻴﺴﺖﻫﺎﻱ ﺯﻧﺠﻴﺮﻩﺍﻱ ﻧﺎﻣﺮﺗﺐ ،ﺩﺭﺧﺖﻫﺎﻱ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ
ﺣﻞ :ﮔﺰﻳﻨﻪ ۳ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺟﺪﻭﻝﻫﺎﻱ ﺩﺭﻫﻢﺳﺎﺯﻱ ﻳﻚ ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻱ ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ ﻧﻴﺴﺖ ﻭ ﺗﻨﻬﺎ ﺩﺭ ﺫﺧﻴﺮﻩﺳﺎﺯﻱ ﺩﺍﺩﻩ ﻭ ﺍﻋﻤﺎﻝ ﺩﺭﺝ ،ﺣﺬﻑ ﻭ ﺟﺴﺘﺠﻮ ﻛﺎﺭﺑﺮﺩ ﺩﺍﺭﺩ.
heapﻧﻴﺰ ﻳﻚ ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻱ ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ ﻧﻴﺴﺖ ﻭ ﻛﺎﺭﺑﺮﺩﻫﺎﻱ ﺁﻥ ﺩﺭ ﺻﻒﻫﺎﻱ ﺍﻭﻟﻮﻳﺖ ،ﻣﺮﺗﺐﺳﺎﺯﻱ ،ﺍﺩﻏﺎﻡ ﻟﻴﺴﺖﻫﺎﻱ ﻣﺮﺗﺐ ﺍﺳﺖ.
ﺁﺭﺍﻳﻪﻫﺎﻱ ﻣﺮﺗﺐ ﻭ ﻧﺎﻣﺮﺗﺐ ،ﻟﻴﺴﺖﻫﺎﻱ ﭘﻴﻮﻧﺪﻱ ﻣﺮﺗﺐ ﻭ ﻧﺎﻣﺮﺗﺐ ﻭ ﺩﺭﺧﺖﻫﺎﻱ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ،ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎﻱ ﻫﻤﻪ ﻣﻨﻈﻮﺭ ﺍﺳﺖ.
ﻛﻪ ﺍﺯ ﻧﻈﺮ ﺳﺮﻋﺖ ،ﺍﺑﺘﺪﺍ ﺩﺭﺧﺖﻫﺎﻱ ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺳﭙﺲ ﻟﻴﺴﺖﻫﺎﻱ ﻣﺮﺗﺐ )ﻧﻴﺎﺯ ﺑﻪ ﻣﺮﺗﺐﺳﺎﺯﻱ ﻧﺪﺍﺭﺩ (.ﻭ ﺩﺭ ﺁﺧﺮ ﺁﺭﺍﻳﻪﻫﺎﻱ ﻣﺮﺗﺐ ﺍﺳﺖ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩﻫﺎ ۵۵
۶۰ـ ﺑﺮﺍﻱ ﻣﻌﻜﻮﺱ ﻛﺮﺩﻥ ﻳﻚ ﻟﻴﺴﺖ ﭘﻴﻮﻧﺪﻱ ﺑﺎ nﮔﺮﻩ ،ﺑﻪ ﭼﻪ ﺗﻌﺪﺍﺩ ﺍﺷﺎﺭﻩﮔﺮ ﻧﻴﺎﺯ ﺍﺳﺖ؟ ﻭ ﻣﺮﺗﺒﻪﻱ ﺯﻣﺎﻧﻲ ﺁﻥ ﭼﻴﺴﺖ؟
)O(n n (۲ﺍﺷﺎﺭﻩﮔﺮ ﻭ )O(n 3 (۱ﺍﺷﺎﺭﻩﮔﺮ ﻭ
) O ( n log n 3 (۴ﺍﺷﺎﺭﻩﮔﺮ ﻭ 3 (۳ﺍﺷﺎﺭﻩﮔﺮ ﻭ ) (
O n2
ﺣﻞ :ﮔﺰﻳﻨﻪ ۱ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺑﺮﺍﻱ ﻣﻌﻜﻮﺱ ﻛﺮﺩﻥ ﻳﻚ ﻟﻴﺴﺖ ﭘﻴﻮﻧﺪﻱ ﺑﺎ ﻫﺮ ﺗﻌﺪﺍﺩ ﮔﺮﻩ ﺗﻨﻬﺎ ﺑﻪ ﺳﻪ ﺍﺷﺎﺭﻩﮔﺮ ) (p،q،rﻧﻴﺎﺯ ﺍﺳﺖ.
;p = start
;q = null
w hile p ¹ null do
begin
;1 ) r = q
;2 ) q = p
ﺍﻟﮕﻮﺭﻳﺘﻢ ﺁﻥ ﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﺍﺳﺖ:
;3 ) p = p.link
;4 ) q.link = r
;end
;start = q
ﻛﻪ ﻣﺮﺗﺒﻪﻱ ﺯﻣﺎﻧﻲ ﺁﻥ ) n) ، O ( nﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﻱ ﻟﻴﺴﺖ ﭘﻴﻮﻧﺪﻱ( ﺍﺳﺖ.
ﻳﺎﺩﺩﺍﺷﺖ:
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………