E7.pdf

‫دادهﺳﺎﺧﺘﺎرﻫﺎ و ﻣﺒﺎﻧ اﻟ ﻮرﯾﺘﻢﻫﺎ‬
‫ﻧﯿﻢﺳﺎل دوم ‪٩٣-٩٢‬‬
‫ﻣﺪرس‪ :‬ﻣﺴﻌﻮد ﺻﺪﯾﻘﯿﻦ‬
‫داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ‬
‫ﺗﻤﺮﯾﻦ ﻫﻔﺘﻢ‬
‫ﻣﺴﺌﻠﻪ ‪ .١‬ﺑﺰرگﺗﺮﯾﻦ زﯾﺮ دﻧﺒﺎﻟﻪی ﻏﯿﺮﻧﺰوﻟ‬
‫اﻟ ﻮرﯾﺘﻤ ﺑﺮای ﭘﯿﺪا ﮐﺮدن ﺑﺰرگﺗﺮﯾﻦ زﯾﺮ دﻧﺒﺎﻟﻪی ﻏﯿﺮﻧﺰوﻟ از دﻧﺒﺎﻟﻪی > ‪ X =< x١ , x٢ , ..., xn‬اراﺋﻪ دﻫﯿﺪ‪.‬‬
‫• اﻟﻒ( اﻟ ﻮرﯾﺘﻢ ارﺋﻪ ﺷﺪه از ﻣﺮﺗﯿﻪی ) ‪ O(n٢‬ﺑﺎﺷﺪ‪.‬‬
‫• ب( اﻟ ﻮرﯾﺘﻢ ارﺋﻪ ﺷﺪه از ﻣﺮﺗﯿﻪی )‪ O(n log n‬ﺑﺎﺷﺪ‪.‬‬
‫ﻣﺴﺌﻠﻪ ‪ .٢‬ﺳﺎﺧﺘﻤﺎن ‪ n‬ﻃﺒﻘﻪ و ﻃﺒﻘﻪی ﮐﺸﻨﺪهی آن‬
‫ﯾ ﺳﺎﺧﺘﻤﺎن ‪ n‬ﻃﺒﻘﻪ دارﯾﻢ ﮐﻪ ﯾ از ﻃﺒﻘﺎت آن ﺧﺎﺻﯿﺖ ﮐﺸﻨﺪه دارد‪ .‬ﻣ داﻧﯿﻢ ﮐﻪ اﮔﺮ ﮐﺴ ﺧﻮدش را از ﻃﺒﻘﺎت زﯾﺮ ﻃﺒﻘﻪی ﮐﺸﻨﺪه‬
‫ﭘﺎﯾﯿﻦ ﺑﯿﻨﺪازد زﻧﺪه ﻣ ﻣﺎﻧﺪ وﻟ اﮔﺮ ﺷﺨﺼ ﺧﻮدش را از ﻃﺒﻘﻪی ﮐﺸﻨﺪه ﯾﺎ ﺗﻤﺎﻣ ﻃﺒﻘﺎت ﺑﺎﻻﺗﺮ از آن ﭘﺎﯾﯿﻦ ﺑﻨﺪازد‪ ،‬ﻗﻄﻌﺎ ﺧﻮاﻫﺪ ﻣﺮد‪.‬‬
‫ﻣ ﺧﻮاﻫﯿﻢ ﺑﺎ اﺳﺘﻔﺎده از ﺗﻌﺪادی داوﻃﻠﺐ)!( ﮐﻪ ﺣﺎﺿﺮ ﺑﻪ ﭘﺮت ﮐﺮدن ﺧﻮدﺷﺎن از ﻃﺒﻘﺎت ﻫﺴﺘﻨﺪ‪ ،‬ﺑﻔﻬﻤﯿﻢ ﻃﺒﻘﻪی ﮐﺸﻨﺪه ﮐﺪام اﺳﺖ‪.‬‬
‫• اﻟﻒ( ﻣﺴﺌﻠﻪ را در ﺣﺎﻟﺘ ﺣﻞ ﮐﻨﯿﺪ ﮐﻪ دو داوﻃﻠﺐ دارﯾﻢ‪ .‬اﻟ ﻮرﯾﺘﻤ اراﺋﻪ دﻫﯿﺪ ﮐﻪ ﻣﺸﺨﺺ ﮐﻨﺪ اﯾﻦ دو داوﻃﻠﺐ را از ﮐﺪام‬
‫ﻃﺒﻘﺎت ﭘﺎﯾﯿﻦ ﺑﻨﺪازﯾﻢ‪ .‬ﻣﺮﺗﺒﻪی زﻣﺎﻧ اﻟ ﻮرﯾﺘﻢ ﭼﯿﺴﺖ؟‬
‫• ب( آﯾﺎ اﻟ ﻮرﯾﺘﻢ ﺷﻤﺎ ﺑﻬﯿﻨﻪ اﺳﺖ؟‬
‫• پ( ﻣﺴﺌﻠﻪ را در ﺣﺎﻟﺖ ﮐﻠ ﺣﻞ ﮐﻨﯿﺪ ﮐﻪ ‪ m‬داوﻃﻠﺐ دارﯾﻢ‪.‬‬
‫ﻣﺴﺌﻠﻪ ‪ .٣‬ﺧﻂ اﻓﻖ ﺷﻬﺮ‬
‫در ﯾ ﺷﻬﺮ ‪ n‬ﺳﺎﺧﺘﻤﺎن ﻣﺴﺘﻄﯿﻞ ﺷ ﻞ دارﯾﻢ ﮐﻪ ﻣﺨﺘﺼﺎت ﻗﺮار ﮔﺮﻓﺘﻦ آنﻫﺎ را ﻣ داﻧﯿﻢ‪ .‬ﻣ ﺧﻮاﻫﯿﻢ ﺧﻂ اﻓﻖ اﯾﻦ ﺷﻬﺮ را ﭘﯿﺪا ﮐﻨﯿﻢ‪.‬‬
‫ﺑﺮای ﻣﺜﺎل ﺷ ﻞ زﯾﺮ را در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ‪:‬‬
‫• اﻟﻒ( اﻟ ﻮرﯾﺘﻤ از ﻣﺮﺗﺒﻪی زﻣﺎﻧ ) ‪ O(n٢‬ﺑﺮای اﯾﻦ ﮐﺎر اراﺋﻪ دﻫﯿﺪ‪.‬‬
‫• ب( اﻟ ﻮرﯾﺘﻤ از ﻣﺮﺗﺒﻪی زﻣﺎﻧ )‪ O(n log n‬ﺑﺮای اﯾﻦ ﮐﺎر اراﺋﻪ دﻫﯿﺪ‪.‬‬
‫ﻣﺴﺌﻠﻪ ‪ .۴‬ﮐﻤﯿﻨﻪ ﮐﺮدن ﻣﺠﻤﻮع ﺗﻌﺪاد ﻓﺎﺻﻠﻪﻫﺎ‬
‫ﯾ ﻣﺘﻦ ﺑﺎ ‪ n‬ﮐﻠﻤﻪ دارﯾﻢ‪ .‬ﮐﻠﻤﻪی ‪i‬ام دارای ﻃﻮل ‪ li‬اﺳﺖ‪ .‬ﻫﻢﭼﻨﯿﻦ ﯾ دﻓﺘﺮ ﺑﺎ ﯾ‬
‫ﻧﻮﺷﺖ‪ .‬اﮔﺮ در ﯾ ﺳﻄﺮ ﻫﺮ دو ﮐﻠﻤﻪی ‪i‬ام و ‪i + ١‬ام وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﻨﺪ‪ ،‬ﺑﺎﯾﺪ ﯾ‬
‫‪i‬ام ﺗﺎ ‪j‬ام در ﯾ‬
‫ﺳﺮی ﺳﻄﺮ دارﯾﻢ‪ .‬در ﻫﺮ ﺳﻄﺮ ﻣ ﺗﻮان ‪ M‬ﺣﺮف‬
‫ﻓﺎﺻﻠﻪ ﺑﯿﻦ آنﻫﺎ ﻗﺮار ﺑ ﯿﺮد‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ اﮔﺮ ﮐﻠﻤﺎت‬
‫‪j‬‬
‫∑‬
‫ﺳﻄﺮ ﺑﯿﺎﯾﻨﺪ )‪ (i 6 j‬ﺗﻌﺪاد ﺣﺮوف اﯾﻦ ﺳﻄﺮ ﺑﺮاﺑﺮ ﺧﻮاﻫﺪ ﺑﻮد ﺑﺎ ‪li‬‬
‫‪ .A = j − i +‬ﺗﻌﺪاد ﺣﺮوف ﻫﺮ ﺳﻄﺮ ﻧﺒﺎﯾﺪ‬
‫‪k=i‬‬
‫از ‪ M‬ﺑﯿﺶﺗﺮ ﺷﻮد‪ .‬ﻫﺪف ﮐﻤﯿﻨﻪ ﮐﺮدن ﻣﺠﻤﻮع ﺗﻌﺪاد ﻓﺎﺻﻠﻪﻫﺎی ﺧﺎﻟ اﺳﺖ ﮐﻪ در اﻧﺘﻬﺎی ﺳﻄﺮﻫﺎﯾﯽ ﮐﻪ ﻣﺘﻦ را در آنﻫﺎ ﻧﻮﺷﺘﻪاﯾﻢ ﻗﺮار‬
‫دارد‪ .‬ﻣﺜﻼ اﮔﺮ ﮐﻠﻤﺎت ‪i‬ام ﺗﺎ ‪j‬ام در ﯾ ﺳﻄﺮ ﺑﯿﺎﯾﻨﺪ )‪ (i 6 j‬ﺗﻌﺪاد ﻓﺎﺻﻠﻪﻫﺎی ﺧﺎﻟ آن ﺳﻄﺮ ‪ M − A‬ﺧﻮاﻫﺪ ﺑﻮد‪ .‬اﻟ ﻮرﯾﺘﻤ ﺑﺮای‬
‫ﺑﻬﯿﻨﻪ ﻧﻮﺷﺘﻦ اﯾﻦ ﻣﺘﻦ ﺑﯿﺎﺑﯿﺪ‪.‬‬
‫‪١‬‬
‫ﻣﺴﺌﻠﻪ ‪ .۵‬ﻣﻬﻤﺎﻧ و رﺋﯿﺲ ﺷﺮﮐﺖ‬
‫رﺋﯿﺲ ﯾ ﺷﺮﮐﺖ ﻗﺼﺪ دارد ﯾ ﻣﻬﻤﺎﻧ ﺗﺮﺗﯿﺐ دﻫﺪ‪ .‬ﻫﺮ ﺷﺨﺺ ﺑﻪ ﺟﺰ رﺋﯿﺲ در اﯾﻦ ﺷﺮﮐﺖ ﯾ رﺋﯿﺲ دارد‪ .‬اﮔﺮ ﺷﺨﺺ ‪ x‬ﺑﻪ‬
‫اﯾﻦ ﻣﻬﻤﺎﻧ ﺑﯿﺎﯾﺪ‪ ،‬ﺷﺮﮐﺖ ﺑﻪ اﻧﺪازهی ‪ C.x‬ﭘﯿﺸﺮﻓﺖ ﻣ ﮐﻨﺪ‪ .‬وﻟ رﺋﯿﺲ ﮐﻞ دوﺳﺖ ﻧﺪارد ﻫﯿﭻ ﮐﺎرﻣﻨﺪی ﺑﺎ رﺋﯿﺲش ﺑﻪ ﻣﻬﻤﺎﻧ ﺑﯿﺎﯾﻨﺪ‪.‬‬
‫اﻟ ﻮرﯾﺘﻤ ﺑﯿﺎﺑﯿﺪ ﮐﻪ ﺑﻌﺪ از اﯾﻦ ﻣﻬﻤﺎﻧ ﺷﺮﮐﺖ ﺑﯿﺸﺘﺮﯾﻦ ﭘﯿﺸﺮﻓﺖ را ﺑ ﻨﺪ‪.‬‬
‫ﻣﺴﺌﻠﻪ ‪ .۶‬رﺷﺘﻪ و ﮐﺎﺷ ﻫﺎ‬
‫ﯾ رﺷﺘﻪی ‪ s‬ﺑﻪ ﻃﻮل ‪ n‬و ‪ m‬ﮐﺎﺷ دارﯾﻢ ﮐﻪ روی ﻫﺮ ﮐﺪام ﺗﻌﺪادی ﮐﺎراﮐﺘﺮ ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ‪ .‬اﻟ ﻮرﯾﺘﻤ ﮐﺎرا اراﺋﻪ دﻫﯿﺪ ﮐﻪ ﻣﺸﺨﺺ‬
‫ﮐﻨﺪ آﯾﺎ ﻣ ﺗﻮان اﯾﻦ ﺟﻤﻠﻪ را ﺑﺎ ﮐﻨﺎر ﻫﻢ ﻗﺮار دادن ﺗﻌﺪادی از ﮐﺎﺷ ﻫﺎ ﺳﺎﺧﺖ ﯾﺎ ﻧﻪ؟ زﻣﺎن اﺟﺮای اﻟ ﻮرﯾﺘﻢ ﭼﻪ ﻗﺪر اﺳﺖ؟‬
‫ﺑﺮای ﻣﺜﺎل ﺷ ﻞ زﯾﺮ را در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ‪:‬‬
‫ﻣﺴﺌﻠﻪ ‪ .٧‬ﻣﺪ دﻧﺒﺎﻟﻪ‬
‫ﯾ دﻧﺒﺎﻟﻪی ‪ n‬ﺗﺎﯾﯽ از اﻋﺪاد دارﯾﻢ‪ .‬ﺑﻪ ﻋﺪدی ﻣﺪ ﻣ ﮔﻮﯾﯿﻢ ﮐﻪ ﺑﯿﺶﺗﺮ از ﻧﺼﻒ ﻃﻮل دﻧﺒﺎﻟﻪ‪ ،‬در دﻧﺒﺎﻟﻪ ﻇﺎﻫﺮ ﺷﺪه ﺑﺎﺷﺪ‪ .‬ﻣﺜﻼ دﻧﺒﺎﻟﻪی‬
‫‪ ٢٣۴٢٢۴‬ﻣﺪ ﻧﺪارد وﻟ ﻣﺪ دﻧﺒﺎﻟﻪی ‪ ٢٣٢٢٢۴‬ﺑﺮاﺑﺮ ‪ ٢‬اﺳﺖ‪ .‬اﻟ ﻮرﯾﺘﻤ از ﻣﺮﺗﺒﻪی زﻣﺎﻧ )‪ O(n log n‬اراﺋﻪ دﻫﯿﺪ ﮐﻪ در ﺻﻮرت وﺟﻮد‪،‬‬
‫ﻣﺪ دﻧﺒﺎﻟﻪ را ﭘﯿﺪا ﮐﻨﺪ‪.‬‬
‫‪٢‬‬
‫‪ ١‬ﻣﻼﺣﻈﺎت‬
‫• ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﺗﻤﺮﯾﻦﻫﺎ ﻧﻤﺮهای را در ﺑﺮ ﻧﺨﻮاﻫﻨﺪ داﺷﺖ و ﻓﻘﻂ ﺟﻨﺒﻪی ﯾﺎدﮔﯿﺮی دارﻧﺪ‪.‬‬
‫‪٣‬‬