A1.pdf

‫ﺑﺎﺳﻤﻪ ﺗﻌﺎﻟ‬
‫دادهﺳﺎﺧﺘﺎرﻫﺎ و ﻣﺒﺎﻧ اﻟ ﻮرﯾﺘﻢﻫﺎ )‪(۴٠-٢۵۴‬‬
‫‪Data Structures and Fundamentals of Algorithms‬‬
‫داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ‬
‫ﻣﺪرس‪ :‬ﻣﺤﻤﺪ ﻗﺪﺳ‬
‫ﻣﻮﻋﺪ ارﺳﺎل‪ ٢٠ :‬ﻣﻬﺮ ‪١٣٩٣‬‬
‫ﺗﻤﺮﯾﻦ ﺷﻤﺎرهی ‪١‬‬
‫‪ .١‬رواﺑﻂ ﺑﺎزﮔﺸﺘ زﯾﺮ را ﺣﻞ ﮐﻨﯿﺪ‪) .‬ﻣﺮﺗﺒﻪی زﻣﺎﻧ آنﻫﺎ را ﺑﻪ دﺳﺖ آورﯾﺪ‪(.‬‬
‫اﻟﻒ( ‪T (١) = ١‬‬
‫ب( ﺑﺮای ﻣﻘﺎدﯾﺮ ﮐﻮﭼ‬
‫‪T (i) + ٣n,‬‬
‫‪∑n−١‬‬
‫‪i=١‬‬
‫‪T (n) = ١, n‬‬
‫‪١‬‬
‫‪n‬‬
‫= )‪.T (n‬‬
‫‪lg n ,‬‬
‫√‬
‫‪.T (n) = T ( n٣ ) + T ( n۶ ) + n‬‬
‫ج( )‪T (n) = T (n/٣) + T (٢n/٣) + O(n‬‬
‫√‬
‫د( )‪T (n) = T (n/٢ + n) + O(n‬‬
‫√‬
‫ه( )‪T (n) = n + T (n − ١‬‬
‫و( )‪T (n) = ٢T (n/ lg n) + O(n‬‬
‫ی( )‪T (n) = T (n − ١) + O(lg n‬‬
‫‪ .٢‬اﻟﻒ( آﯾﺎ ﺗﺎﺑ !⌉‪ ⌈lg n‬دارای ﮐﺮان ﭼﻨﺪﺟﻤﻠﻪای اﺳﺖ؟ !⌉‪ ⌈lg lg n‬ﭼﻄﻮر؟‬
‫ب( ﮐﺪام ﺗﺎﺑ ﺑﻪ ﻃﻮر ﻣﺠﺎﻧﺒ ﺑﺰرگﺗﺮ اﺳﺖ‪ lg(lg∗ n) ،‬ﯾﺎ )‪lg∗ (lg n‬؟‬
‫ج( ﺗﺎﺑ ﻫﺎی زﯾﺮ را از ﻧﻈﺮ درﺟﻪ ﭘﯿﭽﯿﺪﮔ ﻣﺠﺎﻧﺒ ﺑﺎ ﻫﻢ ﻣﻘﺎﯾﺴﻪ ﮐﻨﯿﺪ و ﺗﺮﺗﯿﺐ آنﻫﺎ را از ﮐﻮﭼ‬
‫ﺑﻪ ﺑﺰرگ ﻣﺮﺗﺐ‬
‫ﮐﻨﯿﺪ‪) .‬ﻫﻤﺮاه ﺑﺎ ﺗﻮﺿﯿ ﻣﺨﺘﺼﺮ(‬
‫‪n! ٣n lg nlg n n٢ Σnk=١ ١k‬‬
‫‪√ lg n‬‬
‫‪n‬‬
‫‪٨‬‬
‫‪lg n! nlg lg n n lg n‬‬
‫‪lg n‬‬
‫‪ .٣‬درﺳﺘ ﯾﺎ ﻧﺎدرﺳﺘ ﻫﺮﯾ‬
‫از ﻣﻮارد زﯾﺮ را ﺑﺮرﺳ ﮐﻨﯿﺪ ‪.‬‬
‫) )‪) f (n) ∈ o(n) ⇒ 2f (n) ∈ o(2g(n‬اﻟﻒ‬
‫))‪) f (n) ∈ O(f 2 (n‬ب‬
‫)) ‪f (n) ∈ θ(f ( n2‬‬
‫)ج‬
‫))‪f (n) + O(f (n)) ∈ θ(f (n‬‬
‫)د‬
‫)‪f (n) = |n2 sin(n)| ⇒ f (n) ∈ O(n) or f (n) ∈ Ω(n‬‬
‫)ه‬
‫∅ ≠ ))‪o(g(n)) ∩ ω(g(n‬‬
‫)و‬
‫ز( آﯾﺎ ﻫﺮ دو ﺗﺎﺑ )‪ f (n‬و )‪ g(n‬را ﻣﯿﺘﻮان ﺗﻮﺳﻂ ﺗﻮاﺑ ﻣﺠﺎﻧﺒ ﻣﻘﺎﯾﺴﻪ ﮐﺮد ؟‬
‫)‪iff1 (n), f2 (n), ..., fn (n) ∈ θ(n) ⇒ Σni=1 fi (n) ∈ θ(n‬‬
‫)م‬
‫))‪iff1 (n), f2 (n), ..., fn (n) ∈ θ(n) ⇒ Σni=1 fi (n) ∈ O(Maxni=1 fi (n‬‬
‫)ن‬
‫‪١‬‬
‫‪ .۴‬ﻣﺴﺎﺋﻞ زﯾﺮ را از ﮐﺘﺎب درﺳ ﺣﻞ ﮐﻨﯿﺪ‬
‫)آ( ﺻﻔﺤﻪ ‪ ۵٠‬ﺳﻮال ‪١.٢-٢‬‬
‫)ب( ﺻﻔﺤﻪ ‪ ۵٠‬ﺳﻮال ‪۶.٢-٢‬‬
‫)ج( ﺻﻔﺤﻪ ‪ ١٢۶‬ﺳﻮال ‪۵.٣‬‬
‫‪ ١٣٩٣ .۵‬وزﻧﻪ ﺑﺎ وزنﻫﺎی ﻣﺘﻔﺎوت و ﯾ‬
‫ﺗﺮازو در اﺧﺘﯿﺎر دارﯾﻢ‪ .‬ﻣﯿﺨﻮاﻫﯿﻢ ﺑﺎ ﺣﺪاﻗﻞ ﺗﻌﺪاد وزنﮐﺸ ﺳﻨ ﯿﻦﺗﺮﯾﻦ وزﻧﻪ و‬
‫ﻫﻤﭽﻨﯿﻦ دوﻣﯿﻦ ﺳﻨ ﯿﻦﺗﺮﯾﻦ وزﻧﻪ را ﺑﺪﺳﺖ آورﯾﻢ‪ .‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻓﺮضﻫﺎی اﻟﻒ و ب ﺣﺪاﻗﻞ ﺗﻌﺪاد وزنﮐﺸﯿﻬﺎ را ﺑﺪﺳﺖ‬
‫آورﯾﺪ‪.‬‬
‫ﺗﺮازو ﻣﻘﺎﯾﺴﻪ ﮐﺮد‪.‬‬
‫اﻟﻒ( در ﻫﺮ ﻣﺮﺣﻠﻪ ﺗﻨﻬﺎ ﻣﯿﺘﻮان وزن دو وزﻧﻪ را ﺑﻪ ﮐﻤ‬
‫ب( در ﻫﺮ ﻣﺮﺣﻠﻪ ﻣﯿﺘﻮان وزن ﺗﻌﺪاد دﻟﺨﻮاﻫ ورزﻧﻪ را ﺑﻪ ﮐﻤ‬
‫ﺗﺮازو ﻣﻘﺎﯾﺴﻪ ﮐﺮد‪.‬‬
‫در ﻫﺮ ﻓﻘﺮه‪ ،‬روش ﺧﻮد را ﺑﻪ ﻃﻮر ﮐﺎﻣﻞ ﺗﻮﺿﯿ داده و ﺗﻌﺪاد دﻗﯿﻖ ﻣﻘﺎﯾﺴﻪﻫﺎ را ﻣﺤﺎﺳﺒﻪ ﮐﻨﯿﺪ‪.‬‬
‫‪ .۶‬ﮐﺎﺷ ﻫﺎﯾ دارﯾﻢ ﮐﻪ ﻫﺮﯾ‬
‫ﻣﻄﺎﺑﻖ ﺷ ﻞ زﯾﺮ از ﺳﻪ ﻗﻄﻌﻪ ﺑﺎ اﻧﺪازه ‪ ١ × ١‬ﺗﺸ ﯿﻞ ﺷﺪه اﻧﺪ ‪.‬‬
‫اﺗﺎﻗ ﻣﺮﺑﻌ ﺷ ﻞ ﺑﺎ اﺑﻌﺎد ‪ n ) n × n‬ﺗﻮاﻧ از ‪ ٢‬اﺳﺖ( دارﯾﻢ ﮐﻪ ﻣﯿﺨﻮاﻫﯿﻢ ﮐﻒ آن را ﺑﺎ ﭼﻨﯿﻦ ﮐﺎﺷ ﻫﺎﯾ ﺑﭙﻮﺷﺎﻧﯿﻢ‪.‬‬
‫در ﮐﻒ اﯾﻦ اﺗﺎق ﺣﻔﺮه ای ﺑﻪ اﺑﻌﺎد ‪ ١ × ١‬وﺟﻮد دارد ﮐﻪ ﻧﺒﺎﯾﺪ روی آن را ﺑﺎ ﮐﺸ ﺑﭙﻮﺷﺎﻧﯿﻢ ‪.‬‬
‫در ﺷ ﻞ ﻫﺎی زﯾﺮ اﺗﺎﻗ ﺑﺎ اﺑﻌﺎد ‪ ٨ × ٨‬ﻗﺒﻞ و ﺑﻌﺪ از ﮐﺎﺷ ﮐﺎری ﻧﺸﺎن داده ﺷﺪه اﺳﺖ ‪ .‬ﻣﺮﺑ ﺳﯿﺎه ﻣ ﺎن ﺣﻔﺮه ای ﮐﻪ‬
‫ﻧﺒﺎﯾﺪ ﭘﻮﺷﯿﺪه ﺷﻮد را ﻧﺸﺎن ﻣﯿﺪﻫﺪ ‪.‬‬
‫• اﻟﻒ( اﻟ ﻮرﯾﺘﻤ اراﺋﻪ دﻫﯿﺪ ﮐﻪ اﺑﻌﺎد اﺗﺎق )‪(n‬را ﮔﺮﻓﺘﻪ و ﻋﻤﻞ ﮐﺎﺷ ﮐﺎری را اﻧﺠﺎم دﻫﺪ ‪.‬‬
‫• ب( راﺑﻄﻪ ﺑﺎزﮔﺸﺘ اﻟ ﻮرﯾﺘﻢ ﺧﻮد را ﺑﺪﺳﺖ آورده و ﺣﻞ ﻧﻤﺎﯾﯿﺪ و ﻣﺮﺗﺒﻪ زﻣﺎﻧ اﻟ ﻮرﯾﺘﻢ را ﺑﺮ ﺣﺴﺐ ‪ n‬و ﺑﺎ‬
‫اﺳﺘﻔﺎده از ﻧﻤﺎدﻫﺎی ﻣﺠﺎﻧﺒ ﺑﻨﻮﯾﺴﯿﺪ‪.‬‬
‫‪٢‬‬
‫‪ .٧‬ﯾ‬
‫ﺗﻘﺎﻃ ﺑﺎ ‪ n‬ﺧﯿﺎﺑﺎن ﻣﻨﺘﻬ ﺑﻪ آن دارﯾﻢ‪ .‬ﻣ ﺧﻮاﻫﯿﻢ ﺑﻮﺳﯿﻠﻪ ﯾ‬
‫ﭼﺮاغ راﻫﻨﻤﺎی ﭼﻨﺪزﻣﺎﻧﻪ‪ ،‬ﺑﺎر ﺗﺮاﻓﯿ‬
‫ﮐﻨﺘﺮل ﮐﻨﯿﻢ‪ .‬ﺑﺮای ﻫﺮ دو ﺧﯿﺎﺑﺎن ‪ y ، x‬ﻣﻨﺘﻬ ﺑﻪ اﯾﻦ ﺗﻘﺎﻃ ‪ ،‬ﻻزم اﺳﺖ در دﺳﺖﮐﻢ ﯾ‬
‫اﯾﻦ ﺗﻘﺎﻃ را‬
‫از زﻣﺎنﻫﺎی اﯾﻦ ﭼﺮاغ راﻫﻨﻤﺎ‪،‬‬
‫اﻣ ﺎن ﻋﺒﻮر اﻣﻦ ﺑﯿﻦ ‪ y ،x‬وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻋﺒﻮر اﻣﻦ ﻋﺒﻮری اﺳﺖ ﮐﻪ در آن اﺟﺎزه ﻋﺒﻮر از ﺧﯿﺎﺑﺎﻧ ﻣﺜﻞ ‪ z‬ﺑﻪ ﺧﯿﺎﺑﺎﻧ‬
‫ﻣﺜﻞ ‪t‬ﮐﻪ ﻋﺒﻮر ﻫﻤﺰﻣﺎن ﺧﻮدرو از آن ﻣﻨﺠﺮ ﺑﻪ ﺗﺼﺎدف ﺑﺎ ﺧﻮدروی ﻋﺒﻮری از ‪ y ، x‬ﻣﯿﺸﻮد‪ ،‬داده ﻧﺸﺪه ﺑﺎﺷﺪ‪ .‬دﻗﺖ ﮐﻨﯿﺪ‬
‫ﮐﻪ ﺧﯿﺎﺑﺎنﻫﺎی ﻣﻨﺘﻬ ﺑﻪ ﭼﻬﺎرراه دوﻃﺮﻓﻪ ﻫﺴﺘﻨﺪ‪ ،‬ﺑﻨﺎﺑﺮاﯾﻦ ﻋﺒﻮر از ‪ x‬ﺑﻪ ‪ y‬ﻣﻌﺎدل ﻋﺒﻮر از ‪ y‬ﺑﻪ ‪ x‬ﻧﯿﺴﺖ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪای ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﺣﺪاﻗﻞ ﺗﻌﺪاد زﻣﺎنﻫﺎی اﯾﻦ ﭼﺮاغ راﻫﻨﻤﺎ را ﻣﺤﺎﺳﺒﻪ ﮐﻨﺪ‪.‬‬
‫ورودی‪:‬‬
‫در ﺧﻂ اول‪ ،‬ورودی ﺷﺎﻣﻞ )‪ (n‬ﺗﻌﺪاد ﺧﯿﺎﺑﺎن ﻫﺎ و )‪ (m‬ﺗﻌﺪاد ﻋﺒﻮرﻫﺎی ﺣﺎدﺛﻪﺳﺎز اﺳﺖ ‪.‬‬
‫ورودی ﺑﺎ ‪ m‬ﺧﻂ دﻧﺒﺎل ﻣﯿﺸﻮد ﮐﻪ در ﻫﺮ ﺧﻂ ‪ ۴‬ﻋﺪد ‪ t ،z ، y ،x‬داده ﺧﻮاﻫﺪ ﺷﺪ؛ ﺑﺪﯾﻦ ﻣﻌﻨ ﮐﻪ اﮔﺮ ﻫﻤﺰﻣﺎن ﺑﯿﻦ دو‬
‫ﺧﯿﺎﺑﺎن ‪ y،x‬و دو ﺧﯿﺎﺑﺎن ‪ t ،z‬ﻋﺒﻮر اﻧﺠﺎم ﮔﯿﺮد‪ ،‬ﺣﺎدﺛﻪﺳﺎز ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫ﺧﺮوﺟ ‪:‬‬
‫در ﺗﻨﻬﺎ ﺳﻄﺮ ﺧﺮوﺟ ‪ ،‬ﺣﺪاﻗﻞ ﺗﻌﺪاد زﻣﺎنﻫﺎی اﯾﻦ ﭼﺮاغ را ﭼﺎپ ﮐﻨﯿﺪ‬
‫ﻣﺤﺪودﯾﺖﻫﺎ‬
‫‪n ≤ ١٢‬‬
‫‪m ≤ ١٠٠٠‬‬
‫ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ‪:‬‬
‫‪stdout‬‬
‫‪stdin‬‬
‫‪2‬‬
‫‪4 1‬‬
‫‪1 3 2 4‬‬
‫‪stdout‬‬
‫‪stdin‬‬
‫‪4 3‬‬
‫‪2 3 2 1‬‬
‫‪3 2 4 3‬‬
‫‪2 1 3 4‬‬
‫‪٣‬‬
‫‪2‬‬
‫‪.٨‬‬
‫)آ( ﺳﺪ ‪ n‬ﻃﺒﻘﻬﺎی دﯾﻤﻮﻧﺎ‪ ،‬ﺑﺰرﮔﺘﺮﯾﻦ ﺳﺪ ﺑﻨﺎ ﺷﺪه در ﺳﺮزﻣﯿﻦﻫﺎی اﺷﻐﺎﻟ اﺳﺖ‪ .‬ﻣ داﻧﯿﻢ در ﭘﺸﺖ ﻃﺒﻘﻪ ‪i‬ام اﯾﻦ ﺳﺪ‪،‬‬
‫‪ Wi‬ﻟﯿﺘﺮ آب وﺟﻮد دارد‪ .‬ﻫﻤﭽﻨﯿﻦ ﻣ داﻧﯿﻢ ﻃﺒﻘﻪ ‪i‬ام ﻗﺎدر ﺑﻪ ﺗﺤﻤﻞ ‪ Li‬ﻟﯿﺘﺮ آب اﺳﺖ و اﮔﺮ ﻣﯿﺰان آب ﭘﺸﺖ آن‬
‫ﺑﯿﺸﺘﺮ از اﯾﻦ ﺣﺪ ﺷﻮد‪ ،‬آن ﻃﺒﻘﻪ ﺗﺨﺮﯾﺐ ﺷﺪه و ﺗﻤﺎم آبﻫﺎی ﻣﻮﺟﻮد ﭘﺸﺖ آن ﺑﻪ ﻃﺒﻘﻪای ﮐﻪ ﺑﻼﻓﺎﺻﻠﻪ ﭘﺎﯾﯿﻦﺗﺮ ﻗﺮار‬
‫دارد‪ ،‬ﻣﻨﺘﻘﻞ ﻣ ﺷﻮد‪.‬‬
‫ﮔﺮوهﻫﺎی ﻣﺒﺎرز ﻓﻠﺴﻄﯿﻨ ﻗﺼﺪ دارﻧﺪ ﭘﺎﯾﯿﻦﺗﺮﯾﻦ ﻃﺒﻘﻪ اﯾﻦ ﺳﺪ )ﻃﺒﻘﻪ ‪ n‬ام( را ﺗﺨﺮﯾﺐ ﮐﻨﺪ‪ .‬ﻣ داﻧﯿﻢ ﺗﺨﺮﯾﺐ ﻃﺒﻘﻪ‬
‫‪i‬ام ﺳﺪ ﺑﺎ ﻣﻮاد ﻣﻨﻔﺠﺮه‪ Pi ،‬واﺣﺪ ﻫﺰﯾﻨﻪ دارد؛ از ﻃﺮﻓ دوﺳﺘﺎن ﻓﻠﺴﻄﯿﻨ ﻣﺎ ﺑﺎ ﻣﺤﺪودﯾﺖ ﺑﻮدﺟﻪ روﺑﺮو ﻫﺴﺘﻨﺪ‪.‬‬
‫ﺷﻤﺎ ﺑﺮای ﮐﻤ‬
‫ﺑﻪ ﮔﺮوهﻫﺎی ﻣﺒﺎرز ﻓﻠﺴﻄﯿﻨ ﺑﻪ ﻣﻨﺎﻃﻖ اﺷﻐﺎﻟ اﻋﺰام ﺷﺪهاﯾﺪ‪ .‬اﻟ ﻮرﯾﺘﻤ )ﺑﻬﯿﻨﻪ( اراﺋﻪ دﻫﯿﺪ ﮐﻪ‬
‫ﺣﺪاﻗﻞ ﻫﺰﯾﻨﻪ ﻣﻤ ﻦ ﺑﺮای ﺗﺨﺮﯾﺐ ﭘﺎﯾﯿﻦﺗﺮﯾﻦ ﻃﺒﻘﻪ ﺳﺪ را ﺑﯿﺎﺑﺪ‪.‬‬
‫درﺳﺘ اﻟ ﻮرﯾﺘﻢ ﺧﻮد را اﺛﺒﺎت ﮐﻨﯿﺪ‪.‬‬
‫)ب( اﻟ ﻮرﯾﺘﻢ اراﺋﻪ ﺷﺪه در ﻗﺴﻤﺖ ﻗﺒﻞ را ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﺪ ‪:‬‬
‫ورودی‪:‬‬
‫در ﺧﻂ اول‪ ،‬ورودی ﺷﺎﻣﻞ )‪ (n‬ﺗﻌﺪاد ﻃﺒﻘﺎت اﯾﻦ ﺳﺪ اﺳﺖ‪.‬‬
‫در اداﻣﻪ ‪ n‬ﺧﻂ ﻣ آﯾﺪ ﮐﻪ در ﻫﺮ ﺧﻂ ‪ ٣‬ﻋﺪد ‪ Pi ، Li ،Wi‬داده ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫ﺧﺮوﺟ ‪:‬‬
‫در ﺗﻨﻬﺎ ﺳﻄﺮ ﺧﺮوﺟ ‪ ،‬ﺣﺪاﻗﻞ ﻫﺰﯾﻨﻪ ﺑﺮای ﺗﺨﺮﯾﺐ ﭘﺎﯾﯿﻦﺗﺮﯾﻦ ﻃﺒﻘﻪ اﯾﻦ ﺳﺪ را ﭼﺎپ ﮐﻨﯿﺪ‪.‬‬
‫ﻣﺤﺪودﯾﺖﻫﺎ‬
‫‪n ≤ ١٫ ۵ × ١٠۴‬‬
‫‪٠ ≤ Wi , Li , Pi ≤ ١٠۶‬‬
‫ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ‪:‬‬
‫‪stdout‬‬
‫‪stdin‬‬
‫‪3‬‬
‫‪1000 1000 1‬‬
‫‪0 1000 2‬‬
‫‪2 10 100‬‬
‫‪۴‬‬
‫‪3‬‬