Assignment5.pdf

‫‪ ‬‬
‫‪ ‬ﺑﻪ ﻧﺎم ﺧﺪاوﻧﺪ زﻳﺒﺎﻳﻲﻫﺎ ‪ ‬‬
‫‪ ‬‬
‫داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ‬
‫ﺳﺎﺧﺘﻤﺎن دادهﻫﺎ و اﻟﮕﻮرﻳﺘﻢﻫﺎ‬
‫‪Data Structures and Algorithms‬‬
‫‪ ‬داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫‪ ‬‬
‫ﺗﻤﺮﻳﻦ ﺳﺮي ‪5‬‬
‫‪ (1‬ﻧﺸﺎن دﻫﻴﺪ در ﻳﻚ درﺧﺖ ﻗﺮﻣﺰ‪ -‬ﺳﻴﺎه‪ ،‬ﺑﻠﻨﺪﺗﺮﻳﻦ ﻣﺴﻴﺮ ﺳﺎده اي ﻛﻪ از ﮔﺮه ‪ x‬ﺑﻪ ﻳﻚ ﺑﺮگ در زﻳﺮدرﺧﺖ ﮔﺮه ‪ x‬وﺟﻮد دارد‪ ،‬ﺣﺪاﻛﺜﺮ دو‬
‫ﺑﺮاﺑﺮ ﻛﻮﺗﺎه ﺗﺮﻳﻦ ﻣﺴﻴﺮ ﺳﺎده اﻳﺴﺖ ﻛﻪ از ﮔﺮه ‪ x‬ﺑﻪ ﻳﻚ ﺑﺮگ در زﻳﺮدرﺧﺖ ﮔﺮه ‪ x‬وﺟﻮد دارد‪ .‬‬
‫‪ (2‬ﻳﻚ درﺧﺖ ﺟﺴﺘﺠﻮي دودوﻳﻲ ‪ T1‬راﺳﺖ‪-‬ﺗﻐﻴﻴﺮ ﭘﺬﻳﺮ ﺑﻪ درﺧﺖ ﺟﺴﺘﺠﻮي دودوﻳﻲ ‪ T2‬اﺳﺖ‪ ،‬اﮔﺮ ﺑﺘﻮان ﺑﺎ ﭼﻨﺪ ﺑﺎر ﺻﺪا ﻛﺮدن ﺗﺎﺑﻊ‬
‫‪ T2 Right‐Rotate‬را از ‪ T1‬ﺑﻪ دﺳﺖ آورد‪ .‬‬
‫‪‬‬
‫دو درﺧﺖ ﺟﺴﺘﺠﻮي دودوﻳﻲ ‪ T1‬و ‪ T2‬ﻣﺜﺎل ﺑﺰﻧﻴﺪ ﻛﻪ ‪ T1‬ﺑﻪ ‪ T2‬راﺳﺖ‪-‬ﺗﻐﻴﻴﺮﭘﺬﻳﺮ ﻧﺒﺎﺷﺪ‪ .‬‬
‫‪‬‬
‫‪2‬‬
‫ﻧﺸﺎن دﻫﻴﺪ ﻛﻪ اﮔﺮ ‪ T1‬راﺳﺖ‪-‬ﺗﻐﻴﻴﺮ ﭘﺬﻳﺮ ﺑﻪ ‪ T2‬ﺑﺎﺷﺪ‪ ،‬ﺑﺮاي ﺗﺒﺪﻳﻞ ‪ T1‬ﺑﻪ ‪ T2‬ﻛﺎﻓﻲ اﺳﺖ ) ‪ O(n‬ﺑﺎر ‪ Right‐Rotate‬را‬
‫ﺻﺪا ﻛﻨﻴﻢ‪ .‬‬
‫‪ (3‬ﻓﺮض ﻛﻨﻴﺪ ﻛﻠﻴﺪﻫﺎي ‪ 41،38،31،12،19،8‬را ﺑﻪ ﺗﺮﺗﻴﺐ از ﭼﭗ ﺑﻪ راﺳﺖ ﺑﻪ ﻳﻚ درﺧﺖ ﻗﺮﻣﺰ‪ -‬ﺳﻴﺎه ﻛﻪ در اﺑﺘﺪا ﺧﺎﻟﻲ اﺳﺖ اﺿﺎﻓﻪ ﻣﻲ‬
‫ﻛﻨﻴﻢ‪ .‬ﺷﻜﻞ درﺧﺖ ﻗﺮﻣﺰ‪-‬ﺳﻴﺎه ﺣﺎﺻﻞ را ﺑﻌﺪ از اﺿﺎﻓﻪ ﻛﺮدن ﻫﺮ ﻛﻠﻴﺪ ﻧﺸﺎن دﻫﻴﺪ‪ .‬‬
‫‪ (4‬درﺧﺖ ﺑﺎزه ي ‪ T‬و ﺑﺎزه ي ‪ i‬داده ﺷﺪه اﻧﺪ‪ .‬‬
‫‪‬‬
‫اﻟﮕﻮرﻳﺘﻤﻲ ﻃﺮاﺣﻲ ﻛﻨﻴﺪ ﻛﻪ ﺗﻤﺎم ﺑﺎزه ﻫﺎﻳﻲ در ‪ T‬را ﻛﻪ ﺑﺎ ‪ i‬ﺗﺪاﺧﻞ دارﻧﺪ‪ ،‬ﭘﻴﺪا ﻛﻨﺪ و از ﻣﺮﺗﺒﻪ ي‬
‫‪, lg ‬‬
‫‪min ‬‬
‫ﺑﺎﺷﺪﻛﻪ ‪ k‬ﺗﻌﺪاد ﺑﺎزه ﻫﺎي ﺧﺮوﺟﻲ اﺳﺖ‪) .‬ﻣﻲ ﺗﻮاﻧﻴﺪ ‪ T‬را ﺗﻐﻴﻴﺮ دﻫﻴﺪ اﻣﺎ ﺳﺎﺧﺘﺎر آن ﻫﻤﻮاره ﺑﺎﻳﺪ درﺧﺖ ﺑﺎزه ﺑﺎﺷﺪ ﻳﻌﻨﻲ‬
‫ﻣﺜﻼ ﻓﻴﻠﺪي ﺑﻪ ﮔﺮه ﻫﺎ اﺿﺎﻓﻪ ﻧﻜﻨﻴﺪ‪ (.‬‬
‫‪‬‬
‫ﺛﺎﺑﺖ ﻛﻨﻴﺪ ﻛﻪ اﻟﮕﻮرﻳﺘﻢ ﺷﻤﺎ درﺳﺖ و از ﻣﺮﺗﺒﻪ ي ﺧﻮاﺳﺘﻪ ﺷﺪه اﺳﺖ‪ .‬‬
‫‪ (5‬دو درﺧﺖ ‪ T1 ِ AVL‬و ‪ T2‬داده ﺷﺪه اﻧﺪ‪ ‬ﺑﻪ ﻃﻮري ﻛﻪ ﺑﺰرﮔﺘﺮﻳﻦ ﻛﻠﻴﺪ در ‪ T1‬از ﻛﻮﭼﻜﺘﺮﻳﻦ ﻛﻠﻴﺪ در ‪ T2‬ﻛﻮﭼﻜﺘﺮ اﺳﺖ‪ ،‬ﺗﺎﺑﻊ‬
‫)‪ Join(T1,T2‬درﺧﺖ ‪ AVL‬اي ﺷﺎﻣﻞ اﺟﺘﻤﺎع ﻋﻨﺎﺻﺮ ‪ T1‬و ‪ T2‬ﺑﻪ ﻋﻨﻮان ﺧﺮوﺟﻲ ﻣﻲ دﻫﺪ‪ .‬‬
‫‪‬‬
‫ﺷﺒﻪ ﻛﺪ ﺗﺎﺑﻊ ‪ Join‬را ﺑﻪ ﮔﻮﻧﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﻳﻦ ﺗﺎﺑﻊ از ﻣﺮﺗﺒﻪ ي )‪ O(lg n‬ﺑﺎﺷﺪ‪ n) .‬ﺗﻌﺪاد ﻋﻨﺎﺻﺮ درﺧﺖ ‪ AVL‬ﺧﺮوﺟﻲ‬
‫اﺳﺖ‪ (.‬‬
‫‪‬‬
‫‪(6‬‬
‫ﺛﺎﺑﺖ ﻛﻨﻴﺪ ﻛﻪ ﺷﺒﻪ ﻛﺪي ﻛﻪ ﻧﻮﺷﺘﻪ اﻳﺪ درﺳﺖ ﻛﺎر ﻣﻲ ﻛﻨﺪ و از ﻣﺮﺗﺒﻪ ي )‪ O(lg n‬اﺳﺖ‪ .‬‬
‫‪ ‬‬
‫‪‬‬
‫ﺑﻪ درﺧﺖ ‪ 2-3‬ﺷﻜﻞ زﻳﺮ ﻛﻠﻴﺪ ‪ 62‬را اﺿﺎﻓﻪ ﻛﻨﻴﺪ‪ .‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ 1‬‬
‫‪ ‬‬
‫دﺳﺘﺮﺳﻲ ﺑﻪ دﻳﺴﻚ ﻳﻚ ﮔﺮﺮه ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ ﺣﺎﻓﻈﻪ آورده‬
‫ﻲ‬
‫ﺑﺎ ﻓﺮﺮض اﻳﻦ ﻛﻪ اﻳﻦ ددرﺧﺖ در دﻳﺴﻚ ذذﺧﻴﺮه ﺷﺪه اﺳﺖ و در ﻫﺮ‬
‫دﻳﺴﻚ ﻻزم اﺳﺖ؟)ﻫﺮ ﻓﺮﺿﻲ ﻛﻪ ﻛﺮده اﻳﻳﺪ را ﺑﻴﺎن ﻛﻨﻴﺪ‪ (.‬‬
‫ﺷﻮدد‪ ،‬ﺑﺮاي اﺿﺎﻓﻪ ﻛﺮددن اﻳﻦ ﻛﻠﻴﺪ ﭼﻨﺪ دﺳﺘﺮﺳﻲ ﺑﻪ ﻚ‬
‫‪‬‬
‫ﻞ‪ ،‬ﺑﺮاي اﻧﺠﺎم اﻳﻦ ﻋﻤﻠﻴﺎت ﭼﻨﺪ دﺳﺘﺘﺮﺳﻲ ﺑﻪ‬
‫ﻓﺮض ﻫﺎي ﻗﺴﻤﺖ ﻗﺒﻞ‬
‫از ددرﺧﺖ ‪ 2-3‬زﻳﺮ ﻛﻠﻠﻴﺪ ‪ 30‬را ﺣﺬف ﻛﻛﻨﻴﺪ‪ .‬ﺑﺎ ﻫﻤﺎن ض‬
‫ﺴﻚ ﻻزم اﺳﺖ؟ ‪ ‬‬
‫دﻳﺴ‬
‫‪ ‬‬
‫ﻛﻪ در ﻫﺮ ‪ heap‬ﺑﺎ ‪ n ‬ﻋﻨﺼﺮ‪،‬‬
‫ﺮ‬
‫ﺣﺪاﻛﺜﺮ‬
‫‪ (7‬ﻧﺸﺎن دﻫﻴﺪ ﻪ‬
‫ﮔﺮه در ارﺗﻔﺎع ‪ h‬وﺟﻮد داررﻧﺪ‪ .‬‬
‫ﻳﻚ ﭘﺸﺘﻪ‪ 1‬ﭘﻴﺎده ﺳﺎﺎزي ﻛﺮد‪ .‬‬
‫ﻳﻚ ﺻﻒ اوﻟﻮﻳﺖ ﻚ‬
‫‪ (8‬ﻧﺸﺎن دﻫﻴﺪ ﭼﮕﮕﻮﻧﻪ ﻣﻲ ﺗﻮان ﺑﺎ ﻚ‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ stack ‬‬
‫‪1‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ 2‬‬