ﺑﺎﺳﻤﻪ ﺗﻌﺎﻟ دادهﺳﺎﺧﺘﺎرﻫﺎ و ﻣﺒﺎﻧ اﻟ ﻮرﯾﺘﻢﻫﺎ )(۴٠-٢۵۴ Data Structures and Fundamentals of Algorithms داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﺪرس :ﻣﺤﻤﺪ ﻗﺪﺳ ﻣﻮﻋﺪ ارﺳﺎل١٣٩٢/٨/١٧ : ﺗﻤﺮﯾﻦ ﺷﻤﺎرهی ٣ .١ﻓﺮض ﮐﻨﯿﺪ دﻧﺒﺎﻟﻪ x١ , x٢ , x٣ , ...., xnداده ﺷﺪه اﺳﺖ .ﻣ ﺧﻮاﻫﯿﻢ ﺑﻪ ﭘﺮﺳﺶﻫﺎﯾ ﻣﺎﻧﻨﺪ ﮐﻮﭼ ﺘﺮﯾﻦ ﻋﺪد ﺑﯿﻦ ،xi , xi+١ , ..., xj ﺑﺮای iو jﻫﺎی ﻣﺨﺘﻠﻒ ﭘﺎﺳ دﻫﯿﻢ. )آ( دادهﺳﺎﺧﺘﺎری ﻃﺮاﺣ ﮐﻨﯿﺪ ﮐﻪ ﺑﺎ ﺣﺎﻓﻈﻪ و ﭘﯿﺶﭘﺮدازش ) O(n٢ﺑﺘﻮاﻧﺪ ﺑﻪ ﻫﺮ ﭘﺮﺳﺶ در ) O(١ﭘﺎﺳ دﻫﺪ. )ب( داده ﺳﺎﺧﺘﺎری ﻃﺮاﺣ ﮐﻨﯿﺪ ﮐﻪ ﺑﺎ ) O(nﺣﺎﻓﻈﻪ و ﭘﯿﺶﭘﺮدازﺷ ﻣﻨﺎﺳﺐ ﺑﺘﻮاﻧﺪ ﺑﻪ ﻫﺮ ﭘﺮﺳﺶ در ) O(lg nﭘﺎﺳ دﻫﺪ )ﺑﺮای ﮔﺮﻓﺘﻦ ﺑﺨﺸ از ﻧﻤﺮه ﻣ ﺗﻮاﻧﯿﺪ داده ﺳﺎﺧﺘﺎری ﺑﺎ ﺣﺎﻓﻈﻪ ) O(n lg nو زﻣﺎن ﭘﺎﺳ ) O(lg nﻃﺮاﺣ ﮐﻨﯿﺪ(. )ج( دادهﺳﺎﺧﺘﺎری ﻃﺮاﺣ ﮐﻨﯿﺪ ﮐﻪ ﺑﺎ ﺣﺎﻓﻈﻪ و ﭘﯿﺶﭘﺮدازش ) O(n lg nﺑﺘﻮاﻧﺪ ﺑﻪ ﻫﺮ ﭘﺮﺳﺶ در ) O(١ﭘﺎﺳ دﻫﺪ. .٢داده ﺳﺎﺧﺘﺎر ”ﺻﻒ اوﻟﻮﯾﺖ ﻣﯿﺎﻧﻪ“ ١ﺷﺎﻣﻞ nﻋﻨﺼﺮ ﻣﺠﺰاﺳﺖ ﮐﻪ اﻋﻤﺎل زﯾﺮ را ﻣ ﺗﻮان روی آن اﻧﺠﺎم داد: • درج ﯾ ﻋﻨﺼﺮ و ﺣﺬف ﻋﻨﺼﺮ ﻣﯿﺎﻧﻪ ،در ﺑﺪﺗﺮﯾﻦ ﺣﺎﻟﺖ در ).O(lg n • ﺳﺎﺧﺖ ﯾ MPQاز nﻋﻨﺼﺮ داده ﺷﺪه در زﻣﺎن ).O(n ﺑﺎ اﺳﺘﻔﺎده از ﻫﺮم داده ﺳﺎﺧﺘﺎر MPQرا ﻃﺮاﺣ ﮐﻨﯿﺪ و ﻧﺤﻮهی اﻧﺠﺎم اﻋﻤﺎل ﻓﻮق را دﻗﯿﻘﺎً ﺗﻮﺿﯿ دﻫﯿﺪ و ﺗﺤﻠﯿﻞ ﻧﻤﺎﯾﯿﺪ. .٣ﯾ دﻧﺒﺎﻟﻪ ﺟﺴﺖ و ﺟﻮ ،ﺑﻪ دﻧﺒﺎﻟﻪای از اﻋﺪاد ﮔﻔﺘﻪ ﻣ ﺷﻮد ﮐﻪ ﻫﻨ ﺎم ﺟﺴﺖ و ﺟﻮی ﯾ ﻋﺪد در د.د.ج ﺑﺎ ﺷﺮوع از رﯾﺸﻪ و ﻧﻮﺷﺘﻦ اﻋﺪاد ﻣﺮﺑﻮط ﺑﻪ راسﻫﺎﯾ ﮐﻪ در ﻣﺴﯿﺮ ﺟﺴﺖ و ﺟﻮ ﻣ ﺑﯿﻨﯿﻢ ﺑﻪ دﺳﺖ ﻣ آﯾﺪ .دﻧﺒﺎﻟﻪای از nﻋﺪد ﻃﺒﯿﻌ داده ﺷﺪه اﺳﺖ ،اﻟ ﻮرﯾﺘﻤ از ) O(nاراﺋﻪ دﻫﯿﺪ ﮐﻪ ﻣﺸﺨﺺ ﮐﻨﺪ آﯾﺎ اﯾﻦ دﻧﺒﺎﻟﻪ ﻣ ﺗﻮاﻧﺪ دﻧﺒﺎﻟﻪی ﺟﺴﺖ و ﺟﻮی ﻣﺮﺑﻮط ﺑﻪ ﯾ درﺧﺖ دﻟﺨﻮاه ﺑﺎﺷﺪ ﯾﺎ ﺧﯿﺮ. د.د.ج ﻣﻌﻤﻮﻟ ﺑﺮای ﻫﺮ ﻋﻀﻮ ﺑﺘﻮاﻧﯿﻢ ﺑﻪ ﻓﺮزﻧﺪ ﭼﭗ ،راﺳﺖ و ﭘﺪر در ) O(١دﺳﺘﺮﺳ .۴ﻓﺮض ﮐﻨﯿﺪ ﻣ ﺧﻮاﻫﯿﻢ در ﯾ داﺷﺘﻪ ﺑﺎﺷﯿﻢ .ﻣﺤﺪودﯾﺘ ﮐﻪ ﺑﺮای ﻣﺴﺎﻟﻪ دارﯾﻢ اﯾﻦ اﺳﺖ ﮐﻪ ﻫﺮ ﮔﺮه ﺗﻨﻬﺎ ﻣ ﺗﻮاﻧﺪ ﯾ ﻣﻘﺪار )ﻣﻘﺪار اﺻﻠ آن ﮔﺮه( و ﺗﻨﻬﺎ دو اﺷﺎرهﮔﺮ داﺷﺘﻪ ﺑﺎﺷﺪ .روﺷ ﺑﺮای ﭘﯿﺎدهﺳﺎزی اﯾﻦ درﺧﺖ ﺗﻮﺿﯿ دﻫﯿﺪ ﮐﻪ ﺷﺮاﯾﻂ ﮔﻔﺘﻪ ﺷﺪه را ﺑﺮآورده ﮐﻨﺪ و ﻫﻤﭽﻨﯿﻦ ﺧﻮاص ﯾ د.د.ج ﻣﻌﻤﻮﻟ را ﻫﻢ داﺷﺘﻪ ﺑﺎﺷﺪ. .۵اﻋﺪاد درون راسﻫﺎی ﯾ درﺧﺖ دودوﯾ ﺟﺴﺖ و ﺟﻮ ﺑﻪ ﺗﺮﺗﯿﺐ ﻋﻤﻖ )در ﻫﺮ ﻋﻤﻖ از ﭼﭗ ﺑﻪ راﺳﺖ( ،ﺑﺎ ﺷﺮوع از ﺑﯿﺸﺘﺮﯾﻦ ﻋﻤﻖ ﭘﺸﺖ ﺳﺮﻫﻢ در ﯾ داﺷﺘﻦ ﻟﯿﺴﺖ ﯾ ﻟﯿﺴﺖ ﻧﻮﺷﺘﻪ ﺷﺪهاﻧﺪ )ﻫﻤﺎن ﻃﻮر ﮐﻪ در ﺷ ﻞ ﻧﺸﺎن داده ﺷﺪه( .آﯾﺎ ﻓﻘﻂ ﺑﺎ در اﺧﺘﯿﺎر درﺧﺖ دودوﯾ ﺟﺴﺖ و ﺟﻮ ﻣ ﺗﻮان آن درﺧﺖ را ﺑﻪ ﺻﻮرت ﯾ ﺘﺎ ﺑﺎزﺳﺎزی ﮐﺮد؟ ﺟﻮاب ﺧﻮد را اﺛﺒﺎت ﮐﻨﯿﺪ. )Median Proiority Queue (MPQ ١ ١ ) .۶اﺧﺘﯿﺎری( ﯾ ﻫﺮم ﮐﻤﯿﻨﻪ ﺑﺎ nﻋﻨﺼﺮ ﻣﺘﻤﺎﯾﺰ از اﻋﺪاد و ﯾ ﮐﻪ ﻣﺸﺨﺺ ﮐﻨﺪ آﯾﺎ kاﻣﯿﻦ ﮐﻮﭼ ﻋﺪد xداده ﺷﺪه اﺳﺖ .اﻟ ﻮرﯾﺘﻤ از ) O(kاراﺋﻪ دﻫﯿﺪ ﺗﺮﯾﻦ ﻋﻨﺼﺮ ﻣﻮﺟﻮد در ﻫﺮم از xﮐﻮﭼ ﺘﺮ اﺳﺖ ﯾﺎ ﺧﯿﺮ )ﻻزم ﻧﯿﺴﺖ ﭘﺎﺳ اﯾﻦ ﺗﻤﺮﯾﻦ را ﺗﺤﻮﯾﻞ دﻫﯿﺪ(. .٧اﻟﻒ( داده ﺳﺎﺧﺘﺎر درﺧﺖ دودوﯾ ﺟﺴﺖ و ﺟﻮ را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ ﮐﻪ دﺳﺘﻮرات درج و ﺟﺴﺖ و ﺟﻮ را ﭘﺸﺘﯿﺒﺎﻧ ﮐﻨﺪ. ورودی و ﺧﺮوﺟ :در ﺧﻂ اول ورودی ﻋﺪد tﺗﻌﺪاد دﺳﺘﻮراﻟﻌﻤﻞﻫﺎﯾ ﮐﻪ ﺑﻪ ﺑﺮﻧﺎﻣﻪی ﺷﻤﺎ داده ﺧﻮاﻫﺪ ﺷﺪ ﻣ آﯾﺪ .در tﺧﻂ ﺑﻌﺪی ،در ﻫﺮ ﺧﻂ ﯾ از دﺳﺘﻮرات زﯾﺮ ﺧﻮاﻫﺪ آﻣﺪ. • ) :add(xﻋﺪد xرا در درﺧﺖ درج ﻣ ﮐﻨﺪ. • ): search(xﻣﺸﺨﺺ ﻣ ﮐﻨﺪ ﮐﻪ آﯾﺎ ﻋﺪد xدر درﺧﺖ وﺟﻮد دارد ﯾﺎ ﺧﯿﺮ. اﯾﻦ داده ﺳﺎﺧﺘﺎر ﺑﺎﯾﺪ اﻋﻤﺎل ﺑﺎﻻ را در ) O(hﮐﻪ hارﺗﻔﺎع درﺧﺖ اﺳﺖ ،اﺟﺮا ﮐﻨﺪ. ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ: stdin stdout No 6 Yes )add(2 )add(5 )add(-3 )search(0 )add(0 )search(2 ب( داده ﺳﺎﺧﺘﺎری ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ ﮐﻪ ﻋﻼوه ﺑﺮ اﻋﻤﺎل ﮔﻔﺘﻪ ﺷﺪه در ﻗﺴﻤﺖ )اﻟﻒ( اﻋﻤﺎل زﯾﺮ را ﻧﯿﺰ ﭘﺸﺘﯿﺒﺎﻧ ﮐﻨﺪ: • ): get(kﻋﻨﺼﺮ kام را در ) O(hﺑﺮ ﻣ ﮔﺮداﻧﺪ. • ): count(x, yﺑﺎ داﺷﺘﻦ ﺑﺎزهی ] [x, yﺗﻌﺪاد اﻋﺪادی ﮐﻪ در اﯾﻦ ﺑﺎزه ﻫﺴﺘﻨﺪ را در ) O(hﺑﺮﻣ ﮔﺮداﻧﺪ. ٢ • ): print(x, yﺑﺎ داﺷﺘﻦ ﺑﺎزهی ] [x, yﺗﻤﺎم ﻋﻨﺎﺻﺮی ﮐﻪ در اﯾﻦ ﺑﺎزه ﻫﺴﺘﻨﺪ را در ) O(k + hﮐﻪ kﺳﺎﯾﺰ ﺧﺮوﺟ اﺳﺖ ،ﺑﻪ ﺗﺮﺗﯿﺐ ﺻﻌﻮدی ﭼﺎپ ﻣ ﮐﻨﺪ. ورودی و ﺧﺮوﺟ :در ﺧﻂ اول ورودی ﻋﺪد tﺗﻌﺪاد دﺳﺘﻮرﻫﺎﯾ ﮐﻪ ﺑﻪ ﺑﺮﻧﺎﻣﻪ داده ﺧﻮاﻫﺪ ﺷﺪ ﻣ آﯾﺪ .در tﺧﻂ ﺑﻌﺪی در ﻫﺮ ﺧﻂ ﯾ از دﺳﺘﻮرات ﺑﺎﻻ ﻣ آﯾﺪ. ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ: stdin stdout 2 10 2 )add(2 -5 2 3 )add(-5 No )add(3 )add(7 )get(2 )add(6 )count(1,5 )add(8 )print(-5,5 )search(1 ﻣﺤﺪودﯾﺖﻫﺎ: ١ ⩽ t ⩽ ١٠۵ ﺗﻤﺎم اﻋﺪاد ورودی اﻋﺪاد ﺻﺤﯿ در ﺑﺎزهی ] [−١٠٩ , ١٠٩ﻫﺴﺘﻨﺪ. ﻓﺮض ﮐﻨﯿﺪ ﺗﻌﺪاد ﺧﺮوﺟ ﻫﺎﯾ ﮐﻪ ﯾ ﺑﺮﻧﺎﻣﻪ ﭼﺎپ ﻣ ﮐﻨﺪ از ۵ ∗ ١٠۶ﺑﯿﺸﺘﺮ ﻧﺨﻮاﻫﺪ ﺑﻮد. ﻣ ﺗﻮاﻧﯿﺪ ﻓﺮض ﮐﻨﯿﺪ ،در ﺻﻮرﺗ ﮐﻪ دﺳﺘﻮر درج را ﻣﻄﺎﺑﻖ ﺑﺎ آﻧﭽﻪ در ﮐﻼس ﺗﻮﺿﯿ داده ﺷﺪه اﺳﺖ ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﺪ، ارﺗﻔﺎع درﺧﺖ از ) O(lg nﻣ ﻣﺎﻧﺪ. ٣
© Copyright 2025 Paperzz