ﺑﺎﺳﻤﻪ ﺗﻌﺎﻟ ﻃﺮاﺣ و ﺗﺤﻠﯿﻞ اﻟ ﻮرﯾﺘﻢﻫﺎ )(۴٠-٣۵۴ Design and Analysis of Algorithms داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﺪرس :ﻣﺤﻤﺪ ﻗﺪﺳ ﻣﻮﻋﺪ ارﺳﺎل١٣٩٠/١٢/١٣ : ﺗﻤﺮﯾﻦ ﮐﺘﺒ -ﺷﻤﺎرهی ١ • ﺗﻤﺮﯾﻦﻫﺎی ﺧﻮد را ﺑﻪ آدرس da90.course@gmail.comﺑﺎ ﻋﻨﻮان » «HW1-STDIDارﺳﺎل ﮐﻨﯿﺪ ﮐﻪ در آن STDID ﺷﻤﺎرهی داﻧﺸﺠﻮﯾ ﺷﻤﺎﺳﺖ. .١ﻓﺮض ﮐﻨﯿﺪ دﻧﺒﺎﻟﻪ ای از nﻋﺪد ﻣﺘﻤﺎﯾﺰ a١ , a٢ , . . . , anدر ﯾ ﻟﯿﺴﺖ ﻗﺮار ﮔﺮﻓﺘﻪ اﻧﺪ .در ﻫﺮﻣﺮﺣﻠﻪ ﯾ درﺧﻮاﺳﺖ ﻣﺸﺎﺑﻪ زﯾﺮ از ﺟﺎﻧﺐ ﮐﺎرﺑﺮ اراﯾﻪ ﻣ ﺷﻮد : ﻋﺪد aiدر ﮐﺠﺎی ﻟﯿﺴﺖ ﻗﺮار دارد. ﮐﺎرﺑﺮ ﺑﺮای ﻫﺮ ﻋﻀﻮ ﺑﻪ ﻫﺮ ﺗﻌﺪادی ﻣ ﺗﻮاﻧﺪ اﯾﻦ درﺧﻮاﺳﺖ را داﺷﺘﻪ ﺑﺎﺷﺪ .اﮔﺮ اﯾﻦ ﻋﻨﺼﺮ در ﺟﺎﯾ ﺎه kﻗﺮار داﺷﺘﻪ ﺑﺎﺷﺪ، ﻫﺰﯾﻨﻪی kﺻﺮف ﭘﺎﺳ ﺑﻪ اﯾﻦ درﺧﻮاﺳﺖ ﻣ ﺷﻮد .ﮐﺎر دﯾ ﺮی ﮐﻪ ﺑﺮروی اﯾﻦ ﻟﯿﺴﺖ ﻣ ﺗﻮان اﻧﺠﺎم داد ،ﺟﺎ ﺑﻪ ﺟﺎﯾ دو ﻋﻀﻮ ﻣﺘﻮاﻟ از اﯾﻦ ﻟﯿﺴﺖ ﺑﺎ ﻫﺰﯾﻨﻪ ی ١واﺣﺪ اﺳﺖ .ﻫﺪف در اﯾﻦ ﻣﺴﺎﻟﻪ اراﯾﻪ اﻟ ﻮرﯾﺘﻤ اﺳﺖ ﮐﻪ ﺑﺎ اﺳﺘﻔﺎده از آن ﻫﺰﯾﻨﻪ ی ﭘﺎﺳ ﺑﻪ ﯾ از آن ﺟﺎﯾ ﮐﻪ اﯾﻦ ﯾ دﻧﺒﺎﻟﻪ دﻟﺨﻮاه از درﺧﻮاﺳﺖ ﻫﺎ و ﻫﺰﯾﻨﻪ ﻫﺎی ﻣﺮﺑﻮط ﺑﻪ ﺟﺎﺑﻪ ﺟﺎﯾ اﻋﺪاد در ﻟﯿﺴﺖ ﮐﻤﯿﻨﻪ ﺷﻮد اﻣﺎ ﻣﺴﺎﻟﻪ ﺑﺮﺧﻂ اﺳﺖ و ﻣﺎ ﺗﺮﺗﯿﺐ درﺧﻮاﺳﺖ ﻫﺎ را ﻧﻤ داﻧﯿﻢ اﯾﻦ اﻟ ﻮرﯾﺘﻢ را ﭘﯿﺸﻨﻬﺎد ﻣ ﮐﻨﯿﻢ : در ﻫﺮ ﻣﺮﺣﻠﻪ اﮔﺮ ﺗﻘﺎﺿﺎی ﯾﺎﻓﺘﻦ ﻋﺪدی ﮐﻪ در ﺟﺎﯾ ﺎه kام ﻟﯿﺴﺖ ﻗﺮار داﺷﺖ از ﺳﻮی ﮐﺎرﺑﺮ اراﯾﻪ ﺷﺪ ،ﺑﻌﺪ از ﭘﺎﺳ ﺑﻪ اﯾﻦ در ﺧﻮاﺳﺖ اﯾﻦ ﻋﺪد را ﺑﺎ k − ١ﺟﺎ ﺑﻪ ﺟﺎﯾ ﻣﺘﻮاﻟ ﺑﻪ اﺑﺘﺪای ﻟﯿﺴﺖ ﻣﻨﺘﻘﻞ ﻣ ﮐﻨﯿﻢ .ﺣﺎل ﺛﺎﺑﺖ ﮐﻨﯿﺪ اﮔﺮ ﻫﺰﯾﻨﻪ ﻣﯿﻨﻤﻢ ﺑﺮای دﻧﺒﺎﻟﻪ ی ﻣﺸﺨﺼ از درﺧﻮاﺳﺖ ﻫﺎ ﺑﺮاﺑﺮ optﺑﺎﺷﺪ ،ﻫﺰﯾﻨﻪ ی ﻧﺎﺷ از اﯾﻦ اﻟ ﻮرﯾﺘﻢ ﺣﺪاﮐﺜﺮ ﺑﺮاﺑﺮ ۴ × optﻣ ﺑﺎﺷﺪ. .٢ﻓﺮض ﮐﻨﯿﺪ nﻋﺪد دودوﯾ دارﯾﺪ ﮐﻪ در اﺑﺘﺪا ﻫﻤﻪی آﻧﻬﺎ ﺑﺮاﺑﺮ ﯾ ﻫﺴﺘﻨﺪ .در ﻫﺮ ﻣﺮﺣﻠﻪ دو ﻋﺪد دﻟﺨﻮاه را اﻧﺘﺨﺎب ﮐﺮده و از ﻣﺠﻤﻮﻋﻪ ﺣﺬف ﻣ ﮐﻨﯿﻢ و ﺑﻪ ﺟﺎی آﻧﻬﺎ ﺣﺎﺻﻞ ﺟﻤﻌﺸﺎن را ﻗﺮار ﻣ دﻫﯿﻢ .اﮔﺮ دو ﻋﺪدی ﮐﻪ ﺣﺬف ﮐﺮدﯾﻢ b١و b٢ﺑﯿﺘ ﺑﺎﺷﻨﺪ ،ﻫﺰﯾﻨﻪ اﯾﻦ ﻋﻤﻞ ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ: ) min(b١ , b٢ﺑﻪ ﻋﻼوهی ﺗﻌﺪاد ﺑﯿﺖﻫﺎی ﻧﻘﻠ در ﺟﻤ ﮐﻪ ﺑﻌﺪ از ﺑﯿﺖ ﺳﻤﺖ ﭼﭗ ﻋﺪد ﮐﻮﭼ ﺘﺮ ﺑﻪ وﺟﻮد ﻣ آﯾﺪ. ﻣﺜﻼ ﻫﺰﯾﻨﻪی ﺟﻤ دو ﻋﺪد ١١٠٠و ١٠١١٠١٠٠ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ ۴ + ٣ = ٧و ﻫﺰﯾﻨﻪی ﺟﻤ دو ﻋﺪد ١٠١و ١٠٠٠٠١ ﺑﺮاﺑﺮ ٣اﺳﺖ .ﺣﺎل ﺛﺎﺑﺖ ﮐﻨﯿﺪ اﮔﺮ mﺑﺎر اﯾﻦ ﻋﻤﻞ را اﻧﺠﺎم دﻫﯿﻢ ﺣﺪاﮐﺜﺮ از ) O(mﻫﺰﯾﻨﻪ ﺻﺮف ﮐﺮدهاﯾﻢ. .٣ﯾ quackﺗﺮﮐﯿﺐ ﯾ ﭘﺸﺘﻪ و ﯾ ﺻﻒ ﻣ ﺑﺎﺷﺪ .در واﻗ آن را ﻣ ﺗﻮان ﺑﻪ ﺻﻮرت ﯾ ﻟﯿﺴﺖ از اﻋﻀﺎ ﮐﻪ از ﭼﭗ ﺑﻪ راﺳﺖ ﻧﻮﺷﺘﻪ ﺷﺪﻧﺪ ،ﻣﺸﺎﻫﺪه ﮐﺮد ﮐﻪ ﺳﻪ ﻋﻤﻞ زﯾﺮ را ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮐﻨﻨﺪ: : Pushﯾ ﻋﻀﻮ ﺟﺪﯾﺪ ﺑﻪ اﻧﺘﻬﺎی ﺳﻤﺖ ﭼﭗ ﻟﯿﺴﺖ اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ. : Popﺳﻤﺖ ﭼﭗ ﺗﺮﯾﻦ ﻋﻀﻮ ﻟﯿﺴﺖ را ﺣﺬف ﻣ ﮐﻨﺪ. : Pullﺳﻤﺖ راﺳﺖ ﺗﺮﯾﻦ ﻋﻀﻮ ﻟﯿﺴﺖ را ﺣﺬف ﻣ ﮐﻨﺪ. داده ﺳﺎﺧﺘﺎر quackرا ﺑﺎ اﺳﻔﺎده از ﺳﻪ ﭘﺸﺘﻪ و ) O(١ﺣﺎﻓﻈﻪ اﺿﺎﻓ ﺑﻪ ﻃﻮری ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ ﮐﻪ زﻣﺎن ﺳﺮﺷ ﻦ ﻫﺮ دﻧﺒﺎﻟﻪ ای از اﯾﻦ اﻋﻤﺎل ﺑﺮاﺑﺮ ) O(١ﺑﺎﺷﺪ .ﺗﻮﺟﻪ ﺷﻮد ﮐﻪ ﺗﻨﻬﺎ ﻧﻮع دﺳﺘﺮﺳ ﺑﻪ ﭘﺸﺘﻪ ﻫﺎ از ﻃﺮﯾﻖ اﻋﻤﺎل push،popﻣ ١ ﺑﺎﺷﺪ. .۴دﻧﺒﺎﻟﻪ ای از ﭘﺸﺘﻪ ﻫﺎی S٠ , S١ , . . .در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ ﮐﻪ ﻇﺮﻓﯿﺖ ﭘﺸﺘﻪ ی iام ﺑﺮاﺑﺮ ٣iاﺳﺖ .از ﻃﺮﻓ ﺳﺎﺧﺘﺎر اﯾﻦ ﭘﺸﺘﻪ ﻫﺎ ﺑﻪ ﮔﻮﻧﻪ ای اﺳﺖ ﮐﻪ ﮐﺎرﺑﺮ ﻓﻘﻂ ﻣ ﺗﻮاﻧﺪ از S٠ﻋﻤﻞ pushو popرا اﻧﺠﺎم دﻫﺪ .ﻋﻼوه ﺑﺮ اﯾﻦ ﻗﺒﻞ از اﯾﻨ ﻪ ﻋﻀﻮی ﺑﺘﻮاﻧﺪ در ﭘﺸﺘﻪ ی iام ﮐﻪ ﭘﺮ ﻣ ﺑﺎﺷﺪ ،ﻗﺮار ﮔﯿﺮد ،ﺑﺎﯾﺪ اﺑﺘﺪا ﺗﻤﺎم اﻋﻀﺎی Siرا popﮐﻨﯿﻢ و در )push S( i + ١ ﮐﻨﯿﻢ ﺗﺎ ﻓﻀﺎی ﺧﺎﻟ اﯾﺠﺎد ﺷﻮد .اﮔﺮ ) S( i + ١ﻫﻢ ﭘﺮ ﺑﻮد ،اﯾﻦ ﮐﺎر را ﺑﺮای آن ﺑﻪ ﺻﻮرت ﺑﺎزﮔﺸﺘ اﻧﺠﺎم ﻣ دﻫﯿﻢ. ﺑﻪ ﺻﻮرت ﻣﺸﺎﺑﻪ ،اﮔﺮ ﻋﻤﻞ popﺑﺨﻮاﻫﺪ ﺑﺮروی ﭘﺸﺘﻪ ی jام اﻧﺠﺎم ﺷﻮد و اﯾﻦ ﭘﺸﺘﻪ ﺧﺎﻟ ﺑﺎﺷﺪ ،اﺑﺘﺪا ﺑﺎﯾﺪ ٣ jﻋﻀﻮ از ﭘﺸﺘﻪ ی j + ١ﺑﻪ اﯾﻦ ﭘﺸﺘﻪ ﻣﻨﺘﻘﻞ ﮐﻨﯿﻢ و ﺳﭙﺲ ﻋﻤﻞ popرا اﻧﺠﺎم دﻫﯿﻢ .ﻣﺸﺎﺑﻪ ﺣﺎﻟﺖ ﻗﺒﻞ اﮔﺮ ﭘﺸﺘﻪ ی j + ١ﻫﻢ ﺧﺎﻟ ﺑﺎﺷﺪ ،اﯾﻦ ﮐﺎر را ﺑﻪ ﺻﻮرت ﺑﺎزﮔﺸﺘ ﺑﺮای آن اﻧﺠﺎم ﻣ دﻫﯿﻢ. ﻫﺰﯾﻨﻪ ی ﻫﺮ ﺗ ﻋﻤﻞ push, popﻧﯿﺰ ﺑﺮاﺑﺮ ) O(١اﺳﺖ .ﺛﺎﺑﺖ ﮐﻨﯿﺪ ﻫﺮ دﻧﺒﺎﻟﻪ ای از اﻋﻤﺎل pushو popﺑﻪ ﺻﻮرت ﺳﺮﺷ ﻦ ﻫﺰﯾﻨﻪ ای ﺑﺮاﺑﺮ ) O(lgnدارد ﮐﻪ nﺑﺮاﺑﺮ ﻣﺎﮐﺴﯿﻤﻢ ﺗﻌﺪاد اﻋﻀﺎﯾ اﺳﺖ ﮐﻪ در اﯾﻦ داده ﺳﺎﺧﺘﺎر در ﻃﻮل اﯾﻦ ﻋﻤﻠﯿﺎت وﺟﻮد داﺷﺘﻪ اﺳﺖ .ﻫﻢ ﭼﻨﯿﻦ در اﺑﺘﺪا داده ﺳﺎﺧﺘﺎر ﺧﺎﻟ ﺑﻮده اﺳﺖ. .۵ﺑﻪ ﮐﻤ اﺳﺘﻘﺮا ﺛﺎﺑﺖ ﮐﻨﯿﺪ ﺑﻪ ازای ﻫﺮ ، n ≥ ١ﯾ ﻋﺪد nرﻗﻤ از ارﻗﺎم ١و ٢وﺟﻮد دارد ﮐﻪ ﺑﺮ ٢nﺑﺨﺶ ﭘﺬﯾﺮ اﺳﺖ. .۶در ﻣﺴﺌﻠﻪ ﮐﺪ ﮔﺮی ﻫﺪف ﮐﻤﯿﻨﻪ ﮐﺮدن اﺧﺘﻼف ﺑﯿﻦ دو ﮐﺪ ﻣﺘﻮاﻟ ﺑﻮد .در ﻣﺴﺌﻠﻪ ”ﺿﺪ-ﮔﺮی” ﻫﺪف ﺑﯿﺸﯿﻨﻪ ﮐﺮدن اﺧﺘﻼف ﺑﯿﻦ ﺑﯿﺖ ﻫﺎی دو ﮐﺪ ﻣﺘﻮاﻟ اﺳﺖ .آﯾﺎ ﻣ ﺗﻮان ﯾ روش ﮐﺪ ﮔﺬاری ﺑﺮای ﺗﻌﺪاد زوﺟ ﺣﺎﻟﺖ ﻃﺮاﺣ ﮐﺪ ﮐﻪ اﺧﺘﻼف ﺑﯿﻦ ﮐﺪﻫﺎی دو ﻋﻨﺼﺮ ﻣﺘﻮاﻟ kﺷﻮد ﮐﻪ kﺗﻌﺪاد ﺑﯿﺖ ﻫﺎی در ﻫﺮ ﮐﺪ اﺳﺖ؟ ﺑﺮای k − ٣ ،k − ٢ ،k − ١و . . .ﺑﯿﺖ اﺧﺘﻼف ﭼﻄﻮر؟ اﮔﺮ اﯾﻦ ﮐﺎر ﻣﻤ ﻦ اﺳﺖ ،اﻟ ﻮرﯾﺘﻢ ﮐﺎرا ﺑﺮای آن اراﺋﻪ دﻫﯿﺪ. .٧ﻣﺎﺗﺮﯾﺴ از اﻋﺪاد داده ﺷﺪه اﺳﺖ .ﻫﺮ ﯾ ﻫﺮ ﯾ .٨در ﯾ از ﺳﻄﺮ ﻫﺎی اﯾﻦ ﻣﺎﺗﺮﯾﺲ را ﺑﻪ ﺻﻮرت ﻣﺴﺘﻘﻞ از ﻫﻢ ﻣﺮﺗﺐ ﻣ ﮐﻨﯿﻢ .ﺳﭙﺲ از ﺳﺘﻮن ﻫﺎی آن را ﺑﻪ ﺻﻮرت ﻣﺴﺘﻘﻞ از ﻫﻢ ﻣﺮﺗﺐ ﻣ ﮐﻨﯿﻢ .ﺛﺎﺑﺖ ﮐﻨﯿﺪ ﮐﻪ ﺳﻄﺮ ﻫﺎ ﻣﺮﺗﺐ ﺑﺎﻗ ﻣ ﻣﺎﻧﻨﺪ. ﻣﺴﯿﺮ داﯾﺮه ای nاﺗﻮﻣﺒﯿﻞ وﺟﻮد دارﻧﺪ .ﺗﻤﺎم آن ﻫﺎ ﺑﺎ ﻫﻢ ﻣﺠﻤﻮﻋﺎ ﺑﻪ اﻧﺪازه ای ﺳﻮﺧﺖ دارﻧﺪ ﮐﻪ ﯾ ﺑﺘﻮاﻧﺪ ﺑﺎ آن ﯾ ﻣﺴﯿﺮ را ﺑﻪ ﻃﻮر ﮐﺎﻣﻞ ﻃ ﮐﻨﺪ .ﻧﺸﺎن دﻫﯿﺪ اﺗﻮﻣﺒﯿﻠ وﺟﻮد دارد ﮐﻪ ﻣ ﺗﻮاﻧﺪ ﺗﻤﺎم ﻣﺴﯿﺮ را ﯾ اﺗﻮﻣﺒﯿﻞ ﺑﺎر ﻃ ﮐﻨﺪ در ﺻﻮرﺗ ﮐﻪ از اﺗﻮﻣﺒﯿﻞ ﻫﺎی دﯾ ﺮ ﺳﻮﺧﺖ ﺑ ﯿﺮد. .٩در ﻓﻀﺎ ٢nﻧﻘﻄﻪ داده ﺷﺪه اﺳﺖ .در ﻣﺠﻤﻮع n٢ + ١ﭘﺎره ﺧﻂ ﺑﯿﻦ آن ﻫﺎ رﺳﻢ ﺷﺪه اﺳﺖ .ﻧﺸﺎن دﻫﯿﺪ ،ﺣﺪاﻗﻞ ﯾ ﻣﺠﻤﻮﻋﻪ از ﺳﻪ ﻧﻘﻄﻪ وﺟﻮد دارﻧﺪ ﮐﻪ دو ﺑﺪو ﺑﻪ وﺳﯿﻠﻪ ﭘﺎره ﺧﻄﻬﺎﯾ ﺑﻪ ﻫﻢ وﺻﻞ ﺷﺪه اﻧﺪ. .١٠ﺛﺎﺑﺖ ﮐﻨﯿﺪ ﻫﺮ ﻋﺪد ﻃﺒﯿﻌ Nﺑﻪ ﻃﻮر ﯾ ﺘﺎ ﺑﻪ ﺻﻮرت ﺟﻤ اﻋﺪاد ﻣﺘﻔﺎوﺗ از دﻧﺒﺎﻟﻪ ﻓﯿﺒﻮﻧﺎﭼ ﮐﻪ ﺷﺎﻣﻞ دو ﺟﻤﻠﻪ ﻣﺘﻮاﻟ ﻧﯿﺴﺘﻨﺪ ،ﻗﺎﺑﻞ ﻧﻤﺎﯾﺶ اﺳﺖ. m ∑ Fi , |i j − i j−١ | ≥ ٢ j =N j =١ F١ = ١, F٢ = ٢, Fn+٢ = Fn+١ + Fn ﻣﺜﺎل: ١٠ = F۵ + F٢ = ١٠٠١٠, ١١ = F۵ + F٣ = ١٠١٠٠, ١٢ = F۵ + F٣ + F١ = ١٠١٠١ ٢
© Copyright 2025 Paperzz