You are on page 1of 3

‫ﺳﺎﺧﺘﻤﺎﻥﺩﺍﺩەﻫﺎ ﻭ ﻃﺮﺍﺣ ﺍﻟ ﻮﺭﯾﺘﻢﻫﺎ‬

‫ﻧﯿﻢﺳﺎﻝ ﺍﻭﻝ ‪۰۳−۰۲‬‬


‫ﻣﺪﺭﺱ‪ :‬ﺁﺑﺎﻡ⁃ﺑﻬﺮﺍﻣ‬ ‫ﺩﺍﻧﺸ ﺪەﯼ ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ‬

‫ﺯﻣﺎﻥ ﺁﺯﻣﻮﻥ‪ ۲ :‬ﺁﺫﺭ‬ ‫ﻟﯿﺴﺖﭘﯿﻮﻧﺪﯼ‪ ،‬ﺻﻒ‪ ،‬ﭘﺸﺘﻪ‪ ،‬ﺩﺭﺧﺖ‬ ‫ﺗﻤﺮﯾﻦ ﺳﺮﯼ ﺍﻭﻝ‬

‫ﻣﺴﺌﻠەﯼ ‪.۱‬‬

‫ﻧﺸﺎﻥ ﺩﻫﯿﺪ ﯾ ﺻﻒ ﺭﺍ ﺗﻨﻬﺎ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﻭ ﭘﺸﺘﻪ ﻣ ﺗﻮﺍﻥ ﻃﻮﺭﯼ ﭘﯿﺎﺩەﺳﺎﺯﯼ ﮐﺮﺩ ﮐﻪ ﻫﺰﯾﻨﻪ ﺳﺮﺷ ﻦ ﻫﺮ ﻋﻤﻞ ‪ enqueue‬ﻭ‬
‫‪ ⅾequeue‬ﺍﺯ )‪ O(۱‬ﺑﺎﺷﺪ‪.‬‬

‫ﻣﺴﺌﻠەﯼ ‪.۲‬‬

‫ﻟﯿﺴﺖ ﺍﺯ ﺍﻋﻀﺎ ﮐﻪ‬ ‫ﯾ ‪ quaⅽk‬ﺩﺍﺩەﺳﺎﺧﺘﺎﺭﯼ ﺍﺳﺖ ﮐﻪ ﻗﺎﺑﻠﯿﺖ ﺻﻒ ﻭ ﭘﺸﺘﻪ ﺭﺍ ﺑﺎ ﻫﻢ ﺩﺍﺭﺩ‪ .‬ﺩﺭ ﻭﺍﻗﻊ ﺁﻥ ﺭﺍ ﻣ ﺗﻮﺍﻥ ﺑﻪ ﺻﻮﺭﺕ ﯾ‬
‫ﺍﺯ ﭼﭗ ﺑﻪ ﺭﺍﺳﺖ ﻧﻮﺷﺘﻪ ﺷﺪەﺍﻧﺪ‪ ،‬ﻣﺸﺎﻫﺪﻩ ﮐﺮﺩ ﮐﻪ ﺳﻪ ﻋﻤﻞ ﺯﯾﺮ ﺭﺍ ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮐﻨﺪ‪:‬‬

‫ﻋﻀﻮ ﺟﺪﯾﺪ ﺑﻪ ﺍﻧﺘﻬﺎﯼ ﺳﻤﺖ ﭼﭗ ﻟﯿﺴﺖ ﺍﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‪.‬‬ ‫• ‪ Push‬ﯾ‬

‫• ‪ Pop‬ﺳﻤﺖ ﭼﭗ ﺗﺮﯾﻦ ﻋﻀﻮ ﻟﯿﺴﺖ ﺭﺍ ﺣﺬﻑ ﻣ ﮐﻨﺪ‪.‬‬

‫• ‪ Puⅼⅼ‬ﺳﻤﺖ ﺭﺍﺳﺖ ﺗﺮﯾﻦ ﻋﻀﻮ ﻟﯿﺴﺖ ﺭﺍ ﺣﺬﻑ ﻣ ﮐﻨﺪ‪.‬‬

‫ﺍﺯ ﺍﯾﻦ‬ ‫ﺩﺍﺩﻩ ﺳﺎﺧﺘﺎﺭ ‪ quaⅽk‬ﺭﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪ ۳‬ﭘﺸﺘﻪ ﻭ ﺟﺎﻓﻈەﯼ ﺍﺿﺎﻓ )‪ O(۱‬ﻃﻮﺭﯼ ﭘﯿﺎﺩەﺳﺎﺯﯼ ﮐﻨﯿﺪ ﮐﻪ ﺯﻣﺎﻥ ﺳﺮﺷ ﻦ ﻫﺮﯾ‬
‫ﺍﻋﻤﺎﻝ ﺍﺯ )‪ O(۱‬ﺑﺎﺷﺪ‪ .‬ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺗﻨﻬﺎ ﻧﻮﻉ ﺩﺳﺘﺮﺳ ﺑﻪ ﻫﺮ ﮐﺪﺍﻡ ﺍﺯ ﺍﯾﻦ ‪ ۳‬ﭘﺸﺘﻪ ﺍﺯ ﻃﺮﯾﻖ ﺍﻋﻤﺎﻝ ‪ push‬ﻭ ‪ pop‬ﻣ ﺑﺎﺷﺪ‪.‬‬

‫ﻣﺴﺌﻠەﯼ ‪.۳‬‬

‫ﻓﺮﺽ ﮐﻨﯿﺪ ‪ n‬ﻭﺭﻭﺩﯼ ﺑﻪ ﯾ ﭘﺸﺘﻪ ﺑﻪ ﺗﺮﺗﯿﺐ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﭘﺸﺘﻪ ﺩﺭ ﻫﺮ ﻣﺮﺣﻠﻪ ﻣ ﺗﻮﺍﻧﺪ ﻋﻤﻞ ‪ push‬ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﺪ ﻭ ﯾ ﻋﻨﺼﺮ‬
‫ﺍﺯ ﻭﺭﻭﺩﯼ ﺑﺨﻮﺍﻧﺪ ﻭ ﯾﺎ ﻣ ﺗﻮﺍﻧﺪ ﺑﺎ ﻋﻤﻞ ‪ pop‬ﯾ ﻋﻨﺼﺮ ﺭﺍ ﺩﺭ ﺧﺮﻭﺟ ﻗﺮﺍﺭ ﺩﻫﺪ‪ .‬ﺩﺭ ﻧﻬﺎﯾﺖ ﺗﻤﺎﻡ ‪ n‬ﻋﻨﺼﺮ ﺍﺯ ﻭﺭﻭﺩﯼ ﻭﺍﺭﺩ ﭘﺸﺘﻪ‬
‫ﺷﺪﻩ ﻭ ﺩﺭ ﺧﺮﻭﺟ ﻗﺮﺍﺭ ﻣ ﮔﯿﺮﻧﺪ ﻭ ﺩﻧﺒﺎﻟەﯼ ﺧﺮﻭﺟ ﺗﻮﻟﯿﺪ ﻣ ﺷﻮﺩ‪ .‬ﺗﻌﺪﺍﺩ ﺩﻧﺒﺎﻟەﻫﺎﯼ ﺧﺮﻭﺟ ﺭﺍ ﮐﻪ ﭘﺸﺘﻪ ﻣ ﺗﻮﺍﻧﺪ ﺗﻮﻟﯿﺪ ﮐﻨﺪ ﺑﯿﺎﺑﯿﺪ‪.‬‬

‫ﻣﺴﺌﻠەﯼ ‪.۴‬‬

‫ﻣﻨﻈﻮﺭ ﺍﺯ ﻋﻤﻞ ‪ getⅯin‬ﺑﺮﮔﺮﺩﺍﻧﺪﻥ ﮐﻮﭼ ﺘﺮﯾﻦ ﻋﻨﺼﺮ ﻭ ‪ getⅯax‬ﺑﺮﮔﺮﺩﺍﻧﺪﻥ ﺑﺰﺭﮔﺘﺮﯾﻦ ﻋﻨﺼﺮ ﺩﺭ ﺩﺍﺩەﺳﺎﺧﺘﺎﺭ ﺍﺳﺖ‪.‬‬

‫ﺍﻟﻒ( ﺩﺍﺩەﺳﺎﺧﺘﺎﺭﯼ ﺷﺒﯿﻪ ﭘﺸﺘﻪ ﺍﺭﺍﺋﻪ ﺩﻫﯿﺪ ﮐﻪ ﺍﻋﻤﺎﻝ ‪ Push‬ﻭ ‪ Pop‬ﻭ ‪ getⅯin‬ﻭ ‪ getⅯax‬ﺭﺍ ﺩﺭ ﺯﻣﺎﻥ ﺳﺮﺷ ﻦ )‪ O(۱‬ﺍﻧﺠﺎﻡ‬
‫ﺩﻫﺪ‪.‬‬

‫ﺏ( ﺩﺍﺩەﺳﺎﺧﺘﺎﺭﯼ ﺷﺒﯿﻪ ﺻﻒ ﺍﺭﺍﺋﻪ ﺩﻫﯿﺪ ﮐﻪ ﺍﻋﻤﺎﻝ ‪ enqueue‬ﻭ ‪ ⅾequeue‬ﻭ ‪ getⅯin‬ﻭ ‪ getⅯax‬ﺭﺍ ﺩﺭ ﺯﻣﺎﻥ ﺳﺮﺷ ﻦ‬
‫)‪ O(۱‬ﺍﻧﺠﺎﻡ ﺩﻫﺪ‪.‬‬

‫ﻣﺴﺌﻠەﯼ ‪.۵‬‬

‫ﯾ ‪ ⅾeque‬ﺩﺍﺩەﺳﺎﺧﺘﺎﺭﯼ ﻣﺎﻧﻨﺪ ﺻﻒ ﺍﺳﺖ ﺑﺎ ﺍﯾﻦ ﺗﻔﺎﻭﺕ ﮐﻪ ﻋﻤﻞ ﺩﺭﺝ ﻭ ﺣﺬﻑ ﺍﺯ ﻫﺮ ﺩﻭ ﻃﺮﻑ ﺩﺭ ﺁﻥ ﺻﻮﺭﺕ ﻣ ﮔﯿﺮﺩ‪ .‬ﺩﺍﺩﻩ‬
‫ﺳﺎﺧﺘﺎﺭ ‪ ⅾeque‬ﺭﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﯾ ﺁﺭﺍﯾﻪ ﭘﯿﺎﺩەﺳﺎﺯﯼ ﮐﻨﯿﺪ ﺑﺪﯾﻦﺻﻮﺭﺕ ﮐﻪ ﭼﻬﺎﺭ ﺭﻭﯾﻪ ﺑﺎ ﺯﻣﺎﻥ ﺍﺟﺮﺍﯼ )‪ O(۱‬ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﺍﻋﻤﺎﻝ‬
‫ﺩﺭﺝ ﻭ ﺣﺬﻑ ﻋﻨﺼﺮ ﺍﺯ ﺩﻭ ﻃﺮﻑ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﻨﺪ‪.‬‬

‫‪۱‬‬
‫ﻣﺴﺌﻠەﯼ ‪.۶‬‬

‫ﭘﺸﺘﻪ‬ ‫ﻧﺸﺎﻥ ﺩﻫﯿﺪ ﻣ ﺗﻮﺍﻥ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﯾ ﺁﺭﺍﯾﻪ ﻭ ﺣﺎﻓﻈەﯼ ﺍﺿﺎﻓ )‪ O(۱‬ﺩﻭ ﭘﺸﺘﻪ ﺭﺍ ﭘﯿﺎﺩەﺳﺎﺯﯼ ﮐﺮﺩ‪) .‬ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺯﻣﺎﻧ ﯾ‬
‫ﻧﻤ ﺗﻮﺍﻧﺪ ﻋﻤﻞ ‪ Push‬ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﺪ ﮐﻪ ﮐﻞ ﺁﺭﺍﯾﻪ ﭘﺮ ﺷﺪﻩ ﺑﺎﺷﺪ(‬

‫ﻣﺴﺌﻠەﯼ ‪.۷‬‬

‫ﭘﯿﺶ ﭘﺮﺩﺍﺯﺷ ﺍﺯ )‪ O(n log n‬ﺭﻭﯼ ﯾ ﺩﺭﺧﺖ ﺭﯾﺸەﺩﺍﺭ ﺍﺟﺮﺍ ﮐﻨﯿﺪ ﮐﻪ ﺑﺘﻮﺍﻥ ﭘﺮﺳﻤﺎﻥ ﺯﯾﺮ ﺭﺍ ﺩﺭ )‪ O(۱‬ﭘﺎﺳﺦ ﺩﺍﺩ‪:‬‬
‫ﺁﯾﺎ ﮔﺮەﯼ ‪ u‬ﺍﺯ ﺍﺟﺪﺍﺩ ﮔﺮەﯼ ‪ v‬ﻫﺴﺖ ﯾﺎ ﺧﯿﺮ؟‬

‫ﻣﺴﺌﻠەﯼ ‪.۸‬‬

‫ﺩﺭﺧﺖ ﺯﯾﺮ ﺭﺍ ﺑﻪ ﺷ ﻞ ﺩﺭﺧﺖ ﭼﭗﺗﺮﯾﻦ ﻓﺮﺯﻧﺪ⁃ﺑﺮﺍﺩﺭ ﺭﺍﺳﺖ ﺗﻐﯿﯿﺮ ﺩﻫﯿﺪ ﻭ ﺳﭙﺲ ﭘﯿﻤﺎﯾﺶ ﻣﯿﺎﻥﺗﺮﺗﯿﺐ ﺁﻥ ﺭﺍ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﯾﺪ‪ .‬ﺍﯾﻦ‬
‫ﭘﯿﻤﺎﯾﺶ ﻣﺸﺎﺑﻪ ﭼﻪ ﭘﯿﻤﺎﯾﺸ ﺩﺭ ﺩﺭﺧﺖ ﺍﺻﻠ ﺍﺳﺖ؟ ﺍﺩﻋﺎﯼ ﺧﻮﺩ ﺭﺍ ﺩﺭ ﺣﺎﻟﺖ ﮐﻠ ﺛﺎﺑﺖ ﮐﻨﯿﺪ‪.‬‬

‫ﻣﺴﺌﻠەﯼ ‪.۹‬‬

‫ﻫﺮﻡ ﮐﻤﯿﻨﻪ ﺍﯼ ﺷﺎﻣﻞ ‪ n‬ﻋﺪﺩ ﺩﺍﺭﯾﻢ‪ .‬ﺭﻭﺷ ﺍﺭﺍﺋﻪ ﺩﻫﯿﺪ ﮐﻪ ﺑﺘﻮﺍﻧﺪ ﺑﻪ ﭘﺮﺳﺶ ﺯﯾﺮ ﺩﺭ )‪ O(i‬ﭘﺎﺳﺦ ﺑﺪﻫﺪ‪:‬‬
‫ﺁﯾﺎ ‪ i‬ﺍﻣﯿﻦ ﮐﻮﭼ ﺘﺮﯾﻦ ﻋﺪﺩ ﺍﺯ ‪ x‬ﺑﺰﺭﮔﺘﺮ ﺍﺳﺖ ﯾﺎ ﺧﯿﺮ؟‬

‫ﻣﺴﺌﻠەﯼ ‪.۱۰‬‬

‫ﺑﺮﺍﯼ ﻋﺒﺎﺭﺕ ))‪((((ab) ∗ c) + d)((e/g)/h‬‬

‫ﺍﻟﻒ( ﺩﺭﺧﺖ ﻋﺒﺎﺭﺕ ﺭﺳﻢ ﮐﻨﯿﺪ‪.‬‬

‫ﺏ( ﭘﯿﻤﺎﯾﺶ ﭘﯿﺶﺗﺮﺗﯿﺐ‪ ،‬ﻣﯿﺎﻥﺗﺮﺗﯿﺐ ﻭ ﭘﺲﺗﺮﺗﯿﺐ ﺑﻨﻮﯾﺴﯿﺪ‪.‬‬

‫ﻣﺴﺌﻠەﯼ ‪.۱۱‬‬

‫ﺯﺑﺎﻥ ‪ A‬ﺍﺯ ‪ n‬ﮐﻠﻤﻪ ﻭ ﺯﺑﺎﻥ ‪ B‬ﺍﺯ ‪ m‬ﮐﻠﻤﻪ ﺗﺸ ﯿﻞ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﺣﺮﻭﻑ ﺑﻪ ﮐﺎﺭ ﺭﻓﺘﻪ ﺩﺭ ﮐﻠﻤﺎﺕ ﺍﯾﻦ ﺩﻭ ﺯﺑﺎﻥ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﺣﺮﻭﻑ‬
‫ﺍﻟﻔﺒﺎﯼ ﻓﺎﺭﺳ ﺍﺳﺖ‪ .‬ﺑﻨﺎﺑﺮﺍﯾﻦ ﺣﺪﺍﮐﺜﺮ ‪ ۳۲‬ﺣﺮﻑ ﺩﺍﺭﯾﻢ‪ .‬ﻣ ﺩﺍﻧﯿﻢ ﻃﻮﻝ ﻫﺮ ﮐﻠﻤﻪ ﺩﺭ ﻫﺮ ﺩﻭﯼ ﺍﯾﻦ ﺩﻭ ﺯﺑﺎﻥ ﺣﺪﺍﮐﺜﺮ ‪ ۱۰۰‬ﺣﺮﻑ ﺍﺳﺖ‪.‬‬
‫ﻣ ﮔﻮﯾﯿﻢ ﮐﻠﻤەﯼ ‪ w‬ﺩﺭ ﺯﺑﺎﻥ ‪ X‬ﯾﺎﻓﺖ ﻣ ﺷﻮﺩ ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ ﮐﻠﻤەﺍﯼ ﻣﺎﻧﻨﺪ ‪ S‬ﺩﺭ ‪ X‬ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﮐﻪ ‪ w‬ﭘﯿﺸﻮﻧﺪ ‪ S‬ﺑﺎﺷﺪ‪.‬‬
‫ﺍﻟ ﻮﺭﯾﺘﻤ ﺍﺯ ﻣﺮﺗﺒەﯼ )‪ O(m + n‬ﺍﺭﺍﺋﻪ ﺩﻫﯿﺪ ﮐﻪ ﻫﻤەﯼ ﮐﻠﻤﺎﺗ ﺍﺯ ﺯﺑﺎﻥ ‪ B‬ﺭﺍ ﮐﻪ ﺩﺭ ﺯﺑﺎﻥ ‪ A‬ﯾﺎﻓﺖ ﻣ ﺷﻮﻧﺪ‪ ،‬ﭼﺎﭖ ﮐﻨﺪ‪.‬‬

‫‪۲‬‬
‫ﻣﺴﺌﻠەﯼ ‪.۱۲‬‬

‫ﺍﺯ ﭘﯿﻤﺎﯾﺶﻫﺎﯼ ﭘﯿﺶﺗﺮﺗﯿﺐ‪ ،‬ﻣﯿﺎﻥﺗﺮﺗﯿﺐ ﻭ‬ ‫ﺛﺎﺑﺖ ﮐﻨﯿﺪ ﺍﮔﺮ )‪ T (n‬ﺯﻣﺎﻥ ﭘﯿﻤﺎﯾﺶ ﺩﺭﺧﺖ ﺩﻭﺩﻭﯾﯽ ﺑﺎ ‪ n‬ﺭﺃﺱ ﺑﺎﺷﺪ‪ ،‬ﺑﺮﺍﯼ ﻫﺮﯾ‬
‫ﭘﺲﺗﺮﺗﯿﺐ ﺛﺎﺑﺖ ﮐﻨﯿﺪ )‪.T (n) ∈ Θ(n‬‬

‫ﻣﺴﺌﻠەﯼ ‪.۱۳‬‬

‫ﻓﺮﺽ ﮐﻨﯿﺪ ‪ T‬ﯾ ﺩﺭﺧﺖ ﺩﻭﺩﻭﯾﯽ ﮐﺎﻣﻞ ﺑﺎ ‪ n‬ﮔﺮﻩ ﻭ ﺑﻪ ﺍﺭﺗﻔﺎﻉ ‪ log n‬ﺍﺳﺖ‪ .‬ﻣ ﺧﻮﺍﻫﯿﻢ ﻣﺴﯿﺮ ﺳﺎﺩەﺍﯼ ﺑﯿﻦ ﯾ ﺭﺃﺱ ‪ v‬ﺑﻪ ﯾ‬
‫ﺭﺃﺱ ‪ u‬ﭘﯿﺪﺍ ﮐﻨﯿﻢ‪ .‬ﮔﺮەﻫﺎﯼ ‪ u‬ﻭ ‪ v‬ﺩﺍﺩە ﺷﺪەﺍﻧﺪ ﻭ ﻣ ﺩﺍﻧﯿﻢ ﮐﻪ ﻫﺮ ﮔﺮﻩ ﺍﺯ ﺍﯾﻦ ﺩﺭﺧﺖ ﺑﻪ ﮔﺮەﻫﺎﯼ ﻓﺮﺯﻧﺪ ﻭ ﮔﺮەﯼ ﭘﺪﺭ ﺩﺳﺘﺮﺳ ﺩﺍﺭﺩ‪.‬‬
‫ﺍﯾﻦ ﮐﺎﺭ ﺭﺍ ﺑﺎ ﭼﻪ ﻣﺮﺗﺒەﺍﯼ ﻣ ﺗﻮﺍﻥ ﺍﻧﺠﺎﻡ ﺩﺍﺩ؟‬

‫ﻣﺴﺌﻠەﯼ ‪.۱۴‬‬

‫ﺩﺭﺧﺖ ﻣﺒﻨﺎ ﺩﺭﺧﺘ ﺩﻭﺩﻭﯾﯽ ﺍﺳﺖ ﮐﻪ ﻣﺎﻧﻨﺪ ﺗﺮﺍﯼ‪ ،‬ﻣﺠﻤﻮﻋەﺍﯼ ﺍﺯ ﺭﺷﺘەﻫﺎﯼ ﺳﺎﺧﺘﻪ ﺷﺪﻩ ﺍﺯ ‪ ۰‬ﻭ ‪ ۱‬ﺭﺍ ﻧﺸﺎﻥ ﻣ ﺩﻫﺪ‪ .‬ﺩﺭ ﺍﯾﻦ ﺩﺭﺧﺖ‪،‬‬
‫ﻫﺮ ﮔﺮﻩ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﯾ ﺭﺷﺘﻪ ﺍﺳﺖ‪ :‬ﺑﺮﺍﯼ ﺭﯾﺸﻪ ﺍﯾﻦ ﺭﺷﺘﻪ ﺗﻬ ﺍﺳﺖ‪ .‬ﺭﺷﺘەﯼ ﻫﺮ ﮔﺮﻩ ﺑﺮﺍﺑﺮ ﺭﺷﺘەﯼ ﭘﺪﺭ ﺍﯾﻦ ﮔﺮﻩ ﺑﻪ ﺍﺿﺎﻓەﯼ ﯾ ﺣﺮﻑ‬
‫ﺍﺳﺖ؛ ﺍﯾﻦ ﺣﺮﻑ ﺑﺮﺍﺑﺮ ‪ ۱‬ﺍﺳﺖ ﺍﮔﺮ ﻓﺮﺯﻧﺪ ﺭﺍﺳﺖ ﺑﺎﺷﺪ ﻭ ‪ ۰‬ﺍﺳﺖ ﺍﮔﺮ ﻓﺮﺯﻧﺪ ﭼﭗ ﺑﺎﺷﺪ‪ .‬ﻫﺮ ﮔﺮﻩ ﻋﻼﻭﻩ ﺑﺮ ﺍﺷﺎﺭەﮔﺮ ﺑﻪ ﻓﺮﺯﻧﺪﺍﻥ ﺭﺍﺳﺖ‬
‫ﻭ ﭼﭗ ﺣﺎﻭﯼ ﯾ ﻣﺘﻐﯿﺮ ﻣﻨﻄﻘ ﺍﺳﺖ‪ .‬ﺍﮔﺮ ﺭﺷﺘەﯼ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﺍﯾﻦ ﮔﺮﻩ ﺩﺭ ﻣﺠﻤﻮﻋەﯼ ﺭﺷﺘەﻫﺎﯼ ﺩﺭﺧﺖ ﻣﺒﻨﺎ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﺍﯾﻦ‬
‫ﻣﺘﻐﯿﺮ ‪ ۱‬ﺍﺳﺖ‪.‬‬

‫ﺩﺭﺧﺖ ﻣﺒﻨﺎﯼ ﺗﻬ ﺩﺭﺝ ﻣ ﮐﻨﯿﻢ‪.‬‬ ‫ﺍﻟﻒ( ﺭﺷﺘەﻫﺎﯼ ‪ ۱۰۰۰ ،۰۰۰۱ ،۰۰۱۰ ،۰۰۱۱ ،۰۱۰۰ ،۱۱۰۱‬ﻭ ‪ ۱۰۰۱‬ﺭﺍ ﺑﻪ ﺗﺮﺗﯿﺐ ﺩﺭ ﯾ‬
‫ﺩﺭﺧﺖ ﺣﺎﺻﻞ ﺭﺍ ﺭﺳﻢ ﮐﻨﯿﺪ‪.‬‬

‫ﺏ( ﺍﻟ ﻮﺭﯾﺘﻤ ﻃﺮﺍﺣ ﮐﻨﯿﺪ ﮐﻪ ﺑﺎ ﮔﺮﻓﺘﻦ ﻣﺠﻤﻮﻋەﺍﯼ ﺍﺯ ‪ n‬ﺭﺷﺘﻪ ﺍﺯ ‪ ۰‬ﻭ ‪ ،۱‬ﺩﺭﺧﺖ ﻣﺒﻨﺎ ﺭﺍ ﺑﺴﺎﺯﺩ‪.‬‬

‫ﻣﺴﺌﻠەﯼ ‪.۱۵‬‬

‫ﯾ ﺩﺭﺧﺖ ﺩﻭﺩﻭﯾﯽ )‪ T = (V, E‬ﺑﻪ ﻣﺎ ﺩﺍﺩﻩ ﺷﺪﻩ )ﺑﻪ ﺷ ﻞ ﻟﯿﺴﺖ ﻣﺠﺎﻭﺭﺕ( ﻭ ﺭﺃﺱ ﭘﺪﺭ ﺁﻥ ﺭﺍ ﻧﯿﺰ ﺩﺍﺭﯾﻢ‪ .‬ﻫﻤﭽﻨﯿﻦ ﯾ ﺁﺭﺍﯾەﯼ‬
‫‪ x‬ﻧﯿﺰ ﺩﺍﺭﯾﻢ ﮐﻪ ﺑﻪ ﻫﺮ ﮔﺮەﯼ ﺩﺭﺧﺖ ﯾ ﻋﺪﺩ ﻧﺴﺒﺖ ﻣ ﺩﻫﺪ‪ .‬ﺁﺭﺍﯾەﯼ ﺟﺪﯾﺪ ‪ z‬ﺭﺍ ﺍﯾﻦﮔﻮﻧﻪ ﺑﺴﺎﺯﯾﺪ ﮐﻪ ﺑﺮﺍﯼ ﻫﺮ ‪ z[u] ،u ∈ V‬ﺑﺮﺍﺑﺮ‬
‫ﻣﺎﮐﺴﯿﻤﻢ ﻣﻘﺎﺩﯾﺮ ‪ x‬ﺑﺮﺍﯼ ﻧﻮﺍﺩﮔﺎﻥ ‪ (descendants) u‬ﺍﺳﺖ‪ .‬ﺍﻟ ﻮﺭﯾﺘﻤ ﺧﻄ ))‪ (O(n‬ﺍﺭﺍﺋﻪ ﺩﻫﯿﺪ ﺗﺎ ﺁﺭﺍﯾەﯼ ‪ z‬ﺭﺍ ﺗﻤﺎﻣﺎﹰ ﺣﺴﺎﺏ‬
‫ﮐﻨﺪ‪.‬‬

‫‪۳‬‬

You might also like