You are on page 1of 3

‫ﻃﺮﺍﺣ ﻭ ﺗﺤﻠﯿﻞ ﺍﻟ ﻮﺭﯾﺘﻢﻫﺎ‬

‫ﺩﮐﺘﺮ ﺑﻬﺮﺍﻡ ﺻﺎﺩﻗ ﺑﯽﻏﻢ‬

‫ﺟﺰﻭﻩ ﺟﻠﺴﻪ ﺷﺎﻧﺰﺩﻫﻢ‬

‫‪۹۹۱۳۰۱۱۰۲۱‬‬ ‫ﺯﻫﺮﺍ ﻓﯿﺎﺽﺑﺨﺶ‬


‫‪۹۹۱۳۰۱۱۰۰۸‬‬ ‫ﺷﻘﺎﯾﻖ ﺭﻭﺯﻣﻪ‬

‫ﺗﻌﺮﯾﻒ ‪ .۱‬ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ » ‪« baⅽktraⅽking‬‬


‫ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ‪ ،‬ﯾ ﺭﻭﺵ ﺟﺴﺘﺠﻮﯼ ﻋﻤﻘ ﯾﺎ ‪ ⅮFS‬ﺭﻭﯼ ﺩﺭﺧﺖ ﻓﻀﺎﯼ ﺣﺎﻟﺖ ﺍﺳﺖ‪ .‬ﺩﺭ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ ﻫﺮ ﻭﻗﺖ‬
‫ﺩﺭ ﯾ ﮔﺮﻩ ﻣﯿﺎﻧ ﻣﺘﻮﺟﻪ ﺷﻮﯾﻢ ﮐﻪ ﺍﺩﺍﻣەﯼ ﻣﺴﯿﺮ )ﻋﻤﯿﻖﺗﺮ ﺭﻓﺘﻦ( ﻓﺎﯾﺪەﺍﯼ ﻧﺪﺍﺭﺩ ﻭ ﺑﻪ ﺟﻮﺍﺏ ﻧﺨﻮﺍﻫﯿﻢ ﺭﺳﯿﺪ ﻣ ﺗﻮﺍﻧﯿﻢ ﺑﻪ ﻋﻘﺐ‬
‫)ﯾ ﮔﺎﻡ ﺑﻪ ﺳﻤﺖ ﺭﯾﺸﻪ( ﺑﺮﮔﺮﺩﯾﻢ ﻭ ﺩﺭ ﻭﺍﻗﻊ ﻣﻼﻗﺎﺕ ﺗﻤﺎﻡ ﻧﺴﻞ ﺁﻥ ﮔﺮﻩ )ﻏﯿﺮ ﻭﻋﺪەﮔﺎﻩ ﯾﺎ ‪ ( none proⅿising noⅾe‬ﺭﺍ ﺭﻫﺎ‬
‫ﮐﻨﯿﻢ‪ .‬ﺍﮔﺮ ﮔﺮﻫ ﻫﻤﭽﻨﺎﻥ ﻣﻤ ﻦ ﺍﺳﺖ ﮐﻪ ﺩﺭ ﻣﺴﯿﺮ ﺟﻮﺍﺏ ﺑﺎﺷﺪ ﺁﻥ ﺭﺍ )ﻭﻋﺪەﮔﺎﻩ ﯾﺎ ‪ ( proⅿising noⅾe‬ﻧﺎﻣ ﺬﺍﺭﯼ ﮐﻨﯿﻢ‪.‬‬
‫ﺩﺭ ﺍﯾﻦ ﺍﻟ ﻮﺭﯾﺘﻢ ﺑﯿﺸﺘﺮ ﺑﻪ ﺩﻧﺒﺎﻝ ﺟﻮﺍﺏﻫﺎﯾﯽ ﻫﺴﺘﯿﻢ ﮐﻪ ﺩﺭ ﻫﺮ ﺟﻮﺍﺏ ﺩﻧﺒﺎﻟەﯼ ﺧﺎﺻ ﺍﺯ ﺍﺷﯿﺎ ﻣﻮﺟﻮﺩ ﺑﺎﺷﺪ‪) .‬ﭼﯿﻨﺶ ﺧﺎﺻ‬
‫ﺍﺯ ﺩﺍﺩەﻫﺎ ﻣﻄﺮﺡ ﺑﺎﺷﺪ(‪.‬‬
‫ﻣﺜﺎﻝ ‪ .۱‬ﭼﯿﻨﺶ ﺧﺎﺹ ‪ n‬ﻭﺯﯾﺮ ﺭﻭﯼ ﺻﻔﺤەﯼ ﺷﻄﺮﻧﺞ‬
‫ﻣﺜﺎﻝ ‪ .۲‬ﻣﺴﺌﻠەﯼ ﻣﺠﻤﻮﻉ ﺯﯾﺮﻣﺠﻤﻮﻋﻪ ) ‪( subset suⅿ‬‬

‫ﺩﺭﺧﺖ ﺑﺴﯿﺎﺭ ﺣﺠﯿﻢ ﺭﺳﻢ ﮐﻨﯿﻢ‬ ‫ﻣﺜﺎﻝ ‪ .۳‬ﻣﺴﺌﻠەﯼ ﺭﻧﮓﺁﻣﯿﺰﯼ ﺭﺋﻮﺱ ﮔﺮﺍﻑ ﺑﺎ ‪ k‬ﺭﻧﮓ ﮐﻪ ﻫﻤﺴﺎﯾەﻫﺎ ﻣﺘﻔﺎﻭﺕ ﺑﺎﺷﻨﺪ‪) .‬ﺑﺎﯾﺪ ﯾ‬
‫ﺗﺎ ﺑﻪ ﺟﻮﺍﺏ ﺑﺮﺳﯿﻢ ﻭ ﺍﺩﺍﻣﻪ ﺩﺍﺩﻥ ﺑﻌﻀ ﺭﺃﺱﻫﺎ ﺑﯽﻓﺎﯾﺪﻩ ﺍﺳﺖ‪(.‬‬
‫ﺑﺎﺭ ﺑﺒﯿﻨﺪ‪(.‬‬ ‫ﻣﺜﺎﻝ ‪ .۴‬ﺩﻭﺭ ﻫﻤﯿﻠﺘﻮﻧ )ﭼﺮﺧﻪ ﯾﺎ ﺗﻮﺭ ﻫﻤﯿﻠﺘﻮﻧ ( ﺍﺳﺖ )ﻣﺴﯿﺮ ﺑﺴﺘەﺍﯼ ﮐﻪ ﻫﻤەﯼ ﺭﺋﻮﺱ ﺭﺍ ﺩﻗﯿﻘﺎ ﯾ‬
‫ﻣﺜﺎﻝ ‪ .۵‬ﻣﺴﺌﻠەﯼ ﮐﻮﻟەﭘﺸﺘ ﮐﻪ ﻣ ﺩﺍﻧﯿﻢ ﺩﻭ ﻧﻮﻉ ﺭﺍەﺣﻞ ﺩﺍﺭﺩ ﻭ ﺩﺭ ﺍﯾﻦ ﻓﺼﻞ ﮐﻮﻟەﭘﺸﺘ ‪ ۰−۱‬ﺭﺍ ﺣﻞ ﻣ ﮐﻨﯿﻢ ﻭ ﺑﺎ ﻧﻮﻉ ﮐﺴﺮﯼﺍﺵ‬
‫ﮐﺎﺭﯼ ﻧﺪﺍﺭﯾﻢ‪.‬‬

‫»ﺍﯾﺪﻩ ﻓﺮﺍﺗﺮ ﺍﺯ ﺍﻟ ﻮﺭﯾﺘﻢ ﺍﺳﺖ‪«.‬‬

‫ﺗﻌﺮﯾﻒ ‪ .۲‬ﺷﺎﺧﻪ ﻭ ﮐﺮﺍﻥ » ‪« branⅽh anⅾ bounⅾ‬‬


‫ﺍﯾﺪﻩ ﺍﺳﺖ ﻭ ﻣ ﺩﺍﻧﯿﻢ ﮐﻪ ﺍﯾﺪﻩ ﻓﺮﺍﺗﺮ ﺍﺯ ﺍﻟ ﻮﺭﯾﺘﻢ ﺍﺳﺖ‪ .‬ﺑﺎ ﻫﺮ ﺍﯾﺪﻩ ﻣ ﺷﻮﺩ ﺑﺮﺍﯼ ﻣﺴﺎﯾﻞ ﻣﺨﺘﻠﻒ ﺍﻟ ﻮﺭﯾﺘﻢ‬
‫ﺷﺎﺧﻪ ﻭ ﮐﺮﺍﻥ ﯾ‬
‫ﻫﺎ ﻣﺨﺘﻠﻒ ﺩﺍﺩ‪.‬‬
‫ﺍﯾﺪﻩ ﺷﺎﺧﻪ ﻭ ﮐﺮﺍﻥ ﺑﻪ ﻧﻮﻋ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ ﺍﺳﺖ ﻭ ﻣ ﺗﻮﺍﻥ ﮔﻔﺖ ﺍﯾﺪﻩ ﺷﺎﺧﻪ ﻭ ﮐﺮﺍﻥ ﺑﻬﺒﻮﺩ ﯾﺎﻓﺘﻪ ﺍﯾﺪﻩ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ‬
‫ﺍﺳﺖ‪ .‬ﻭ ﻣﺎﻧﻨﺪ ﺍﯾﺪﻩ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ ﺭﻭﯼ ﺩﺭﺧﺖ ﻓﻀﺎﯼ ﺣﺎﻟﺖ ﺟﺴﺘﺠﻮ ﻣ ﮐﻨﺪ ﻭ ﺩﻧﺒﺎﻝ ﺟﻮﺍﺏ ﻣ ﮔﺮﺩﻧﺪ‪.‬‬
‫ﺗﻔﺎﻭﺕ ﺩﻭ ﺍﯾﺪﻩ ﺷﺎﺧﻪ ﻭ ﮐﺮﺍﻥ ﻭ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ‪:‬‬
‫‪ .۱‬ﺩﺭ ﺷﺎﺧﻪ ﻭ ﮐﺮﺍﻥ ﻣﺤﺪﻭﺩ ﺑﻪ ﻧﻮﻉ ﺧﺎﺻ ﺍﺯ ﭘﯿﻤﺎﯾﺶ ﻧﯿﺴﺘﯿﻢ ﻭ ﻣ ﺗﻮﺍﻧﯿﻢ ﺍﺯ ‪ BFS، ⅮFS‬ﻭ ﺣﺎﻟﺖﻫﺎﯼ ﻣﺨﺘﻠﻒ ﺑﺴﺘﻪ ﺑﻪ‬
‫ﻫﻮﺷ ﮐﻪ ﺍﺯ ﻣﺴﺎﻟﻪ ﻭ ﺍﻟ ﻮﺭﯾﺘﻢ ﺍﻧﺘﻈﺎﺭ ﺩﺍﺭﯾﻢ‪ ،‬ﺗﺼﻤﯿﻢ ﺑ ﯿﺮﯾﻢ ﮐﻪ ﺍﺯ ﮐﺪﻭﻡ ﯾ ﺍﺯ ﺍﯾﻦﻫﺎ ﺭﺍ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﯿﻢ‪ .‬ﺍﻣﺎ ﺩﺭ ﺑﺎﺯﮔﺸﺖ‬
‫ﺑﻪ ﻋﻘﺐ ﻣ ﺩﺍﻧﯿﻢ ﮐﻪ ﺑﺎﯾﺪ ﺍﺯ ‪ ⅮFS‬ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﯿﻢ‪.‬‬

‫‪ .۲‬ﺭﻭﺵ ﺷﺎﺧﻪ ﻭ ﮐﺮﺍﻥ ﺑﺮﺍﯼ ﻣﺴﺎﺋﻞ ﺑﻬﯿﻨﻪ ﺳﺎﺯﯼ ﺍﺳﺘﻔﺎﺩﻩ ﻣ ﺷﻮﺩ ﻭ ﺩﺭ ﻫﺮ ﮔﺮﻩ ﯾ ﺣﺪ ﻭ ﮐﺮﺍﻧ ﺑﺪﺳﺖ ﻣ ﺁﻭﺭﺩ ﮐﻪ ﻧﺸﺎﻥ‬
‫ﻣ ﺩﻫﺪ ﮐﻪ ﺁﯾﺎ ﻣ ﺗﻮﺍﻥ ﺑﻪ ﺁﻥ ﮔﺮﻩ ﻭ ﻧﺴﻞ ﺑﻌﺪﯼ ﺁﻥ ﺍﻣﯿﺪﻭﺍﺭ ﺑﻮﺩ ﯾﺎ ﻧﻪ )ﮔﺮﻩ ﻭﻋﺪەﮔﺎﻩ ﺍﺳﺖ ﯾﺎ ﺧﯿﺮ(‪.‬‬
‫ﺗﻌﺮﯾﻒ ‪ .۳‬ﻣﺴﺎﺋﻞ ﺑﻬﯿﻨەﺳﺎﺯﯼ ﻭ ﺗﺼﻤﯿﻢﮔﯿﺮﯼ ﭼﻪ ﻫﺴﺘﻨﺪ؟‬
‫ﻣﺴﺎﺋﻞ ﺑﻬﯿﻨەﺳﺎﺯﯼ ﻭﯾﮋﻩ ﺑﯿﺸﯿﻨەﺳﺎﺯﯼ ﯾﺎ ﺑﻬﯿﻨەﺳﺎﺯﯼ ﯾ ﺗﺎﺑﻊ ﻫﺪﻑ ﺑﺎ ﺭﻋﺎﯾﺖ ﻗﯿﺪﻫﺎ ﺍﺳﺖ‪ .‬ﺑﻪ ﻃﻮﺭ ﻣﺜﺎﻝ ﺯﻣﺎﻧ ﮐﻪ ﻣ ﺧﻮﺍﻫﯿﻢ‬
‫ﭼﯿﺰﯼ ﺭﺍ ﺑﯿﺸﺘﺮﯾﻦ ﮐﻨﯿﻢ ﻣﺎﻧﻨﺪ ﺳﻮﺩ ﯾﺎ ﻣ ﺧﻮﺍﻫﯿﻢ ﭼﯿﺰﯼ ﺭﺍ ﮐﻤﺘﺮﯾﻦ ﮐﻨﯿﻢ ﻣﺎﻧﻨﺪ ﻃﻮﻝ ﻣﺴﯿﺮ ﻓﺮﻭﺷﻨﺪﻩ ﺩﻭﺭﻩ ﮔﺮﺩ ﯾﺎ ﺯﻣﺎﻧ ﮐﻪ‬
‫ﻣ ﺧﻮﺍﻫﯿﻢ ﺑﻬﺘﺮﯾﻦ ﺣﺎﻟﺖ ﺭﺍ ﭘﯿﺪﺍ ﮐﻨﯿﻢ )ﯾﻌﻨ ﺟﻮﺍﺏ ﻫﺎ ﺭﺍ ﺩﺍﺭﯾﻢ ﺍﻣﺎ ﺍﺯ ﺑﯿﻦ ﺟﻮﺍﺏ ﻫﺎ ﺑﻬﺘﺮﯾﻦ ﺣﺎﻟﺖ ﺭﺍ ﻣ ﺧﻮﺍﻫﯿﻢ ﻭ ﻫﻤەﯼ‬
‫ﺟﻮﺍﺏ ﻫﺎ ﺭﺍ ﻧﻤ ﺧﻮﺍﻫﯿﻢ (‪ .‬ﺑﻪ ﺍﯾﻨﮕﻮﻧﻪ ﻣﺴﺎﺋﻞ‪ ،‬ﻣﺴﺎﺋﻞ ﺑﻬﯿﻨﻪ ﺳﺎﺯﯼ ﻣ ﮔﻮﯾﻨﺪ‪.‬‬
‫ﻣﺴﺎﺋﻞ ﺗﺼﻤﯿﻢ ﮔﯿﺮﯼ ﻫﻢ ﺷﺒﯿﻪ ﻣﺴﺎﺋﻞ ﺑﻬﯿﻨﻪ ﺳﺎﺯﯼ ﺍﻧﺪ ﺍﻣﺎ ﭘﺎﺳﺦ ﻣﺴﺎﺋﻞ ﺗﺼﻤﯿﻢ ‪ yes‬ﯾﺎ ‪ no‬ﺍﺳﺖ‪.‬‬

‫‪۱‬‬
‫ﻣﺜﺎﻝ ‪ .۶‬ﺩﺭ ﻣﺴﺌﻠﻪ ‪) TSP‬ﻓﺮﻭﺷﻨﺪﻩ ﺩﻭﺭﻩ ﮔﺮﺩ( ﯾ ﮔﺮﺍﻑ ﺑﺎ ﻭﺯﻥ ﺭﻭﯼ ﯾﺎﻝﻫﺎﯼ ﺁﻥ ﺭﺍ ﺑﻪ ﻣﺎ ﻣ ﺩﻫﻨﺪ ﻭ ﺍﺯ ﻣﺎ ﻣ ﺧﻮﺍﻫﻨﺪ ﮐﻪ ﮐﻮﺗﺎﻩ‬
‫ﺗﺮﯾﻦ ﺩﻭﺭ ﻓﺮﺍﮔﯿﺮ ﺭﺍ ﭘﯿﺪﺍ ﮐﻨﯿﻢ‪ .‬ﯾﻌﻨ ﺑﻬﺘﺮﯾﻦ ﻣﺴﯿﺮ ﺑﺮﺍﯼ ﻓﺮﻭﺷﻨﺪﻩ ﺩﻭﺭﻩ ﮔﺮﺩ ﺭﺍ ﭘﯿﺪﺍ ﮐﻨﯿﻢ ﻭ ﻣﺎ ﻧﻤ ﺩﺍﻧﯿﻢ ﮐﻪ ﻃﻮﻟﺶ ﭼﻘﺪﺭ ﺧﻮﺍﻫﺪ‬
‫ﺑﻮﺩ‪ .‬ﺩﺭ ﻫﺮ ﺻﻮﺭﺕ ﺑﺎ ﻫﺮ ﺭﻭﺷ ﮐﻪ ﺑﻠﺪﯾﻢ ﻣﺴﺎﻟﻪ ﺭﺍ ﺣﻞ ﻣ ﮐﻨﯿﻢ ﻭ ﮐﻮﺗﺎﻩ ﺗﺮﯾﻦ ﻣﺴﯿﺮ ﺭﺍ ﭘﯿﺪﺍ ﻣ ﮐﻨﯿﻢ ﻭ ﻃﻮﻝ ﺁﻥ ﺭﺍ ﻧﯿﺰ ﭘﯿﺪﺍ‬
‫ﻣ ﮐﻨﯿﻢ‪ .‬ﺑﻪ ﺍﯾﻦ ﻧﻮﻉ ﻣﺴﺎﺋﻞ ‪ ،‬ﻣﺴﺎﺋﻞ ﺑﻬﯿﻨﻪ ﺳﺎﺯﯼ ﯾﺎ ﮔﺎﻫ ﹼﺎ ﺑﻬﯿﻨﻪ ﯾﺎﺑﯽ ﻣﯿ ﻮﯾﯿﻢ‪.‬‬

‫ﻣﺜﺎﻝ ‪ .۷‬ﯾ ﮔﺮﺍﻑ ﻣ ﺩﻫﻨﺪ ﻭ ﻭﺯﻥ ﺭﻭﯼ ﯾﺎﻝ ﻫﺎﯼ ﺁﻥ ﻫﺎ ﺭﺍ ﻧﯿﺰ ﻣ ﺩﻫﻨﺪ ﻭ ﻣ ﮔﻮﯾﻨﺪ ﺁﯾﺎ ﯾ ﻣﺴﯿﺮ ﺑﺮﺍﯼ ﻓﺮﻭﺷﻨﺪﻩ ﺩﻭﺭﻩ ﮔﺮﺩ ﻭﺟﻮﺩ‬
‫ﺩﺍﺭﺩ ﮐﻪ ﻃﻮﻟﺶ ﻣﺜﻼ ﺍﺯ ‪ ۱۸۰‬ﮐﻤﺘﺮ ﺑﺎﺷﺪ؟ ﺳﭙﺲ ﺍﯾﻦ ﻣﺴﺎﻟﻪ ﺭﺍ ﺣﻞ ﻣ ﮐﻨﯿﻢ ﻭ ﺟﻮﺍﺏ ﺁﻥ ‪ yes‬ﯾﺎ ‪ no‬ﺍﺳﺖ‪.‬ﺍﯾﻨﮕﻮﻧﻪ ﻣﺴﺎﺋﻞ ﺭﺍ‬
‫ﻣﺴﺎﺋﻞ ﺗﺼﻤﯿﻢ ﭘﺬﯾﺮﯼ ﻣ ﮔﻮﯾﻨﺪ‪.‬‬

‫ﻧﮑﺘﻪ ‪ .۱‬ﻣﺴﺎﺋﻞ ﺷﺎﺧﻪ ﻭ ﮐﺮﺍﻥ ﻫﻢ ﺩﺭﺧﺖ ﺩﺍﺭﯾﻢ ﮐﻪ ﺍﺯ ﺭﯾﺸﻪ ﺷﺮﻭﻉ ﺷﺪﻩ ﻭ ﻫﻤﯿﻦﺟﻮﺭ ﺩﻧﺒﺎﻝ ﺟﻮﺍﺏ ﻣ ﮔﺮﺩﻩ ﻭ ﺟﻮﺍﺑﯽ ﮐﻪ ﺗﺎ ﺍﻭﻥ‬
‫ﻟﺤﻈﻪ ﭘﯿﺪﺍ ﮐﺮﺩﯾﻢ ﺧﻮﺑﻪ ﺍﻣﺎ ﻧﻤﯿﺪﺍﻧﯿﻢ ﺑﻬﯿﻨﻪ ﺍﺳﺖ ﯾﺎ ﻧﻪ‪ .‬ﭘﺲ ﻫﻤﯿﻦ ﻃﻮﺭ ﺑﻪ ﮔﺸﺘﻦ ﺍﺩﺍﻣﻪ ﻣ ﺩﻫﯿﻢ ﺗﺎ ﺑﺒﯿﻨﯿﻢ ﺟﻮﺍﺏ ﺑﻬﺘﺮﯼ ﭘﯿﺪﺍ ﻣ ﮐﻨﯿﻢ‬
‫ﯾﺎ ﻧﻪ‪ .‬ﺑﻪ ﻃﻮﺭ ﻣﺜﺎﻝ ﯾ ﮔﺮﺍﻑ ﺩﺍﺭﯾﻢ ﻭ ﺑﻪ ﺩﻧﺒﺎﻝ ﮐﻮﺗﺎەﺗﺮﯾﻦ ﻣﺴﯿﺮ ﺑﺮﺍﯼ ﻓﺮﻭﺷﻨﺪﻩ ﺩﻭﺭﻩ ﮔﺮﺩ ﻫﺴﺘﯿﻢ‪ .‬ﻓﺮﺽ ﮐﻨﯿﺪ ﮐﻪ ﺩﺭ ﺑﺎﻻﯼ‬
‫ﺩﺭﺧﺖ ﺷﺮﻭﻉ ﮐﺮﺩﯾﻢ ﺑﻪ ﻋﻮﺽ ﮐﺮﺩﻥ ﮔﺮﻩ ﻫﺎ ﻭ ﺑﻪ ﺟﺎﯾﯽ ﺭﺳﯿﺪﯾﻢ ﮐﻪ ﯾ ﻣﺴﯿﺮﯼ ﺭﺍ ﭘﯿﺪﺍ ﮐﺮﺩەﺍﯾﻢ ﮐﻪ ﺍﺯ ﻫﻤﻪ ﺷﻬﺮﻫﺎ ﻣ ﮔﺬﺭﺩ‬
‫ﻭ ﻃﻮﻟﺶ ‪ ۲۰۰‬ﺍﺳﺖ‪.‬ﻫﻤﯿﻦﻃﻮﺭ ﺍﺩﺍﻣﻪ ﻣ ﺩﻫﯿﻢ ﻭ ﺍﮔﺮ ﺑﻪ ﺟﺎﯾﯽ ﺑﺮﺳﯿﻢ ﮐﻪ ﮔﺮﻩ ﺍﯼ ﻃﻮﻟﺶ ‪ ۲۲۰‬ﺷﻮﺩ ﻭ ﺩﺭ ﻧﺴﻞﻫﺎﯼ ﺑﻌﺪ ﺑﻪ ﺍﯾﻦ‬
‫ﻣﻘﺪﺍﺭ ﺍﺿﺎﻓﻪ ﺷﻮﺩ ﺩﺭ ﺍﯾﻨﺠﺎ ﺑﺎﯾﺪ ﺗﻮﻗﻒ ﮐﻨﯿﻢ ﻭ ﺍﺯ ﺍﻭﻧﺠﺎ ﺑﻪ ﺑﻌﺪ ﺭﺍ ﺣﺬﻑ ﮐﻨﯿﻢ ﻭ ﺍﯾﻦ ﺷﺎﺧﻪ ﺭﺍ ﺩﯾ ﺮ ﺍﺩﺍﻣﻪ ﻧﺪﻫﯿﻢ ‪ .‬ﺍﻣﺎ ﺟﺴﺘﺠﻮ ﺭﺍ‬
‫ﻣﺘﻮﻗﻒ ﻧﻤ ﮐﻨﯿﻢ ﻭ ﺑﺎﯾﺪ ﮐﻞ ﺩﺭﺧﺖ ﺭﺍ ﭘﯿﻤﺎﯾﺶ ﮐﻨﯿﻢ ﻭ ﻣﺴﯿﺮ ﻫﺎﯾﯽ ﮐﻪ ﻃﻮﻝ ﮔﺮﻩ ﺩﺭ ﺁﻥ ﻫﺎ ﺍﺯ ‪ ۲۰۰‬ﺑﯿﺸﺘﺮ ﻣ ﺷﻮﺩ ﺭﺍ ﻫﺮﺱ ﮐﻨﯿﻢ‬
‫ﺗﺎ ﺩﯾ ﺮ ﻭﺍﺭﺩ ﺁﻥ ﻫﺎ ﻧﺸﻮﯾﻢ ﻭ ﺍﯾﻦ ﮐﺎﺭ ﺭﺍ ﺗﺎ ﺟﺎﯾﯽ ﺍﺩﺍﻣﻪ ﻣ ﺩﻫﯿﻢ ﮐﻪ ﻣﺴﯿﺮﯼ ﺑﺎ ﻃﻮﻝ ﮐﻮﺗﺎەﺗﺮ ﭘﯿﺎﺩﻩ ﮐﻨﯿﻢ ﺑﻪ ﻃﻮﺭ ﻣﺜﺎﻝ ‪ . ۱۸۰‬ﭘﺲ‬
‫ﺍﯾﻦ ﻣﺴﯿﺮ‪ ،‬ﻣﺴﯿﺮ ﺑﻬﯿﻨﻪ ﺟﺪﯾﺪ ﻣﺎ ﻣ ﺷﻮﺩ ﻭ ﻣﺴﯿﺮ ﺑﻪ ﻃﻮﻝ ‪ ۲۰۰‬ﺩﯾ ﺮ ﻣﺴﯿﺮ ﺑﻬﯿﻨﻪ ﻣﺎ ﻧﯿﺴﺖ ‪ .‬ﺍﯾﻦ ‪ branⅽh anⅾ bounⅾ‬ﺍﺳﺖ‬
‫ﯾﻌﻨ ﻣﺴﺎﯾﻞ ﺭﺍ ﺑﻬﯿﻨﻪ ﺳﺎﺯﯼ ﻣ ﮐﻨﺪ‪.‬‬
‫ﺩﺭ ﺑﺎﺯﯼ ﺍﯼ ﮐﻪ ﺑﺎﯾﺪ ﺍﻋﺪﺍﺩ ﺑﯿﻦ ‪ ۱‬ﺗﺎ ‪ ۸‬ﺭﺍ ﻣﺮﺗﺐ ﮐﻨﯿﻢ ﻭ ﺩﺭ ﺑﺎﺯﯼ ‪ ۴‬ﻭﺯﯾﺮ ﯾﺎ ‪ ۸‬ﻭﺯﯾﺮ ﮐﻪ ﺑﺎﯾﺪ ﻭﺯﯾﺮﻫﺎ ﺭﺍ ﺑﻪ ﮔﻮﻧﻪ ﺍﯼ ﺑﭽﯿﻨﯿﻢ ﮐﻪ ﺑﻪ‬
‫ﯾ ﺪﯾ ﺮ ﮔﺎﺭﺩ ﻧﺪﻫﻨﺪ ﻭ ﮐﺎﻓ ﺍﺳﺖ ﯾ ﺣﺎﻟﺖ ﺭﺍ ﭘﯿﺪﺍ ﮐﻨﯿﻢ ﮐﻪ ﺟﻮﺍﺏ ﻣﺴﺎﻟﻪ ﺍﺳﺖ ﻭ ﺑﻪ ﺩﻧﺒﺎﻝ ﺟﻮﺍﺏ ﺑﻬﺘﺮ ﻧﻤ ﮔﺮﺩﯾﻢ ﻭ ﺗﻨﻬﺎ ﺍﯾﻦ‬
‫ﮐﻪ ﻣﺴﺌﻠﻪ ﺟﻮﺍﺏ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﺑﺮﺍﯼ ﻣﺎ ﮐﺎﻓ ﺍﺳﺖ ﮐﻪ ﺍﯾﻦ ﺑﺎﺯﯼﻫﺎ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ ﻫﺴﺘﻨﺪ‪.‬‬

‫ﻧﺘﯿﺠﻪ ‪ .۱‬ﺯﻣﺎﻥﻫﺎﯾﯽ ﮐﻪ ﺗﻨﻬﺎ ﺑﻪ ﺩﻧﺒﺎﻝ ﺟﻮﺍﺏ ﻫﺴﺘﯿﻢ ﻭ ﺑﻬﯿﻨﻪ ﺑﻮﺩﻥ ﺁﻥ ﻣﻬﻢ ﻧﯿﺴﺖ‪ ،‬ﺍﯾﻦ ﻣ ﺷﻮﺩ ‪ baⅽk traⅽking‬ﻭ ﺯﻣﺎﻥﻫﺎﯾﯽ ﮐﻪ‬
‫ﯾ ﺟﻮﺍﺏ ﭘﯿﺪﺍ ﮐﺮﺩﯾﻢ ﺍﻣﺎ ﻫﻨﻮﺯ ﺍﻣﯿﺪ ﺩﺍﺭﯾﻢ ﮐﻪ ﺟﻮﺍﺑﯽ ﺑﻬﺘﺮ ﺑﺮﺍﯼ ﺁﻥ ﻣﺴﺎﻟﻪ ﭘﯿﺪﺍ ﮐﻨﯿﻢ ﻭ ﺑﻪ ﺩﻧﺒﺎﻝ ﺑﻬﯿﻨﻪ ﺳﺎﺯﯼ ﻫﺴﺘﯿﻢ‪ ،‬ﺍﯾﻦ ﻣ ﺷﻮﺩ‬
‫‪. branⅽh anⅾ bounⅾ‬‬

‫‪۲‬‬
‫ﻣﻘﺎﯾﺴﻪ ﺩﻭ ﺭﻭﺵ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ ﻭ ﺷﺎﺧﻪ ﻭ ﮐﺮﺍﻥ ‪:‬‬

‫ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ‬ ‫ﺷﺎﺧﻪ ﻭ ﮐﺮﺍﻥ‬

‫ﺟﻮﺍﺏ ﺑﻠﻪ ﯾﺎ ﺧﯿﺮ‬ ‫ﻣﺴﺎﺋﻞ ﺗﺼﻤﯿﻢ ﺭﺍ ﺣﻞ ﻣ ﮐﻨﺪ ﻭ ﺗﻨﻬﺎ ﯾ‬


‫ﻣﺴﺎﺋﻞ ﺑﻬﯿﻨﻪ ﺳﺎﺯﯼ ﺭﺍ ﺣﻞ ﻣ ﮐﻨﺪ‬
‫ﺩﺍﺭﺩ‬

‫ﻧﯿﺎﺯﯼ ﻧﯿﺴﺖ ﻫﻤﻪ ﺟﺎ ﺭﺍ ﺑ ﺮﺩﯾﻢ ﻭ ﺑﻪ ﺍﻭﻟﯿﻦ ﺟﻮﺍﺏ ﮐﻪ ﺑﺮﺳﯿﻢ‬ ‫ﺑﻪ ﺩﻟﯿﻞ ﺑﺎﻻ ﺩﺭ ﺍﯾﻦ ﺭﻭﺵ ﻣﺠﺒﻮﺭﯾﻢ ﺗﻤﺎﻡ ﺩﺭﺧﺖ ﺭﺍ ﺟﺴﺘﺠﻮ‬
‫ﻣﺘﻮﻗﻒ ﻣ ﺷﻮﯾﻢ‬ ‫ﮐﻨﯿﻢ ﺑﻪ ﺍﻣﯿﺪ ﯾﺎﻓﺘﻦ ﺟﻮﺍﺑﯽ ﺑﻬﺘﺮ‬

‫ﻣ ﺗﻮﺍﻥ ﺑﻪ ﻫﺮ ﺭﻭﺷ ‪ BFS ،‬ﯾﺎ ‪ ⅮFS‬ﺩﺭﺧﺖ ﺭﺍ ﭘﯿﻤﺎﯾﺶ ﮐﺮﺩ‬


‫ﺑﻪ ﺭﻭﺵ ‪ ⅮFS‬ﺩﺭﺧﺖ ﺭﺍ ﭘﯿﻤﺎﯾﺶ ﻣ ﮐﻨﺪ‬ ‫ﻭ ﻫﻤﯿﻦ ﺭﻭﺵﻫﺎ ﻣ ﺗﻮﺍﻧﺪ ﺣﺎﻟﺖﻫﺎﯼ ﻣﺨﺘﻠﻒ ‪، preorⅾer‬‬
‫‪ inorⅾer‬ﻭ ‪ postorⅾer‬ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ‬

‫ﮐﺎﺭﺍﯾﯽﺍﺵ ﻧﺴﺒﺖ ﺑﻪ ﺷﺎﺧﻪ ﻭ ﮐﺮﺍﻥ ﺑﯿﺸﺘﺮ ﺍﺳﺖ ﻭ ﺑﯿﺸﺘﺮ‬ ‫ﮐﺎﺭﺍﯾﯽﺍﺵ ﻧﺴﺒﺖ ﺑﻪ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ ﮐﻤﺘﺮ ﺍﺳﺖ ﻭ ﺍﺯ ﺷﺎﺧﻪ‬
‫ﻣﺮﺑﻮﻁ ﺑﻪ ﺳﺮﻋﺖ ﻭ ﻫﺮﺱ ﮐﺮﺩﻥ ﺍﺳﺖ‬ ‫ﻭ ﮐﺮﺍﻥ ﮐﻤ ﺍﻧﺘﻈﺎﺭ ﺑﯿﺸﺘﺮﯼ ﻧﺴﺒﺖ ﺑﻪ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ ﺩﺍﺭﯾﻢ‬

‫ﺑﺮﺍﯼ ﻣﺴﺎﺋﻠ ﻣﺜﻞ ‪) job sⅽheⅾuⅼing‬ﺗﺨﺼﯿﺺ ﮐﺎﺭ(‪،‬‬


‫ﻣﺴﺎﺋﻞ ‪ n‬ﻭﺯﯾﺮ‪ ، subset suⅿ ،‬ﺭﻧﮓﺁﻣﯿﺰﯼ ﮔﺮﺍﻑ‪ ،‬ﺩﻭﺭ‬
‫‪) ⅽpu sheⅾuⅼing‬ﺗﺨﺼﯿﺺ ‪ ⅽpu‬ﺑﻪ ﻣﺴﺎﺋﻞ ﻣﺨﺘﻠﻒ(‪،‬‬
‫ﻫﻤﯿﻠﺘﻮﻧ ‪ ،‬ﮐﻮﻟﻪ ﭘﺸﺘ ‪ ۱−۰‬ﺑﺎ ﻫﺪﻑ ﺑﻬﯿﻨﻪ ﺳﺎﺯﯼ‬
‫ﮐﻮﻟﻪ ﭘﺸﺘ ‪ ۱−۰‬ﺑﺎ ﺍﺭﺯﺵﻫﺎﯼ ﯾ ﺴﺎﻥ ﻭ ‪ TSP‬ﺍﺳﺖ‬

‫ﻫﻤﻪ ﯼ ﺍﯾﻦ ﻣﺴﺎﺋﻠ ﮐﻪ ﺯﺩﻩ ﺷﺪ ﺟﺰﻭ ﻣﺴﺎﺋﻞ ﺳﺨﺖ ) ‪ ( NP harⅾ‬ﻫﺴﺘﻨﺪ ﻭ ﺍﯾﻦ ﺩﻭ ﻓﺼﻞ ﺑﯿﺸﺘﺮ ﺑﻪ ﺩﺭﺩ ﺍﯾﻦ ﻣﺴﺎﺋﻞ‬
‫ﻣﯿﺨﻮﺭﻧﺪ‪ .‬ﺩﺭ ﻣﺴﺎﺋﻞ ﻓﺼﻞ ‪ ،۶‬ﺍﺻﻞ ﺍﻟ ﻮﺭﯾﺘﻢ ﺧﻮﺩ ﻣﺴﺎﺋﻞ ﺳﺎﺩﻩ ﺍﺳﺖ ﻭ ﺩﺭﺧﺖ ﻓﻀﺎﯼ ﺣﺎﻟﺖ ﺭﻭ ﺩﺭﺳﺖ ﻣﯿ ﻨﯿﻢ ﻭ ‪searⅽh‬‬
‫ﻣﯿ ﻨﯿﻢ‪ .‬ﭘﯿﭽﯿﺪﮔ ﺍﯾﻦ ﻣﺴﺎﺋﻞ ﻫﻤﻪ ﮐﻨﺪ ﻭ ﺳﺨﺖ ﺍﻧﺪ ﻭ ‪ NP harⅾ‬ﺍﻧﺪ ﻭ ﺩﺭ ﻭﺍﻗﻊ ﻧﻤﺎﯾﯽ ﺍﻧﺪ‪.‬‬
‫ﺑﻘﯿﻪ ﻣﺴﺎﺋﻞ ﺭﺍ ﮐﻪ ﺩﺭ ﻓﺼﻞ ﻫﺎﯼ ‪ ۲‬ﻭ ‪ ۳‬ﻭ ‪ ۴‬ﺧﻮﺍﻧﺪﯾﻢ ﺭﺍ ﻫﻢ ﻣﯿﺘﻮﺍﻥ ﺑﺎ ﺍﯾﺪﻩ ﻫﺎﯼ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ ﻭ ﮐﺮﺍﻥ ﻭ ﺷﺎﺧﻪ ﺣﻞ ﮐﺮﺩ‬
‫ﺍﻣﺎ ﭼﻮﻥ ﺟﺴﺘﺠﻮﯼ ﺗﻤﺎﻡ ﺣﺎﻻﺕ ﺩﺭ ﻓﻀﺎﯼ ﺣﺎﻟﺖ ﺩﺭ ﺍﻭﻥ ﺩﺭﺧﺖ ﺑﺰﺭﮒ ﮐﺎﺭ ﺧﯿﻠ ﻋﻘﻼﻧ ﺍﯼ ﻧﯿﺴﺖ ﭘﺲ ﺍﺯ ﺍﯾﻦ ﺩﻭ ﺍﯾﺪﻩ ﺑﺮﺍﯼ‬
‫ﻣﺴﺎﺋﻞ ﻓﺼﻞ ﻗﺒﻞ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﯿ ﻨﯿﻢ ﻣ ﺮ ﺍﯾﻨﮑﻪ ﺍﯾﻦ ﻣﺴﺎﺋﻞ ﺳﺨﺖ ﺑﺎﺷﻨﺪ‪.‬‬

‫ﻧﺘﯿﺠﻪ ‪ .۲‬ﺩﻭ ﺍﯾﺪﻩ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ ﻭ ﮐﺮﺍﻥ ﻭ ﺷﺎﺧﻪ ﺑﺮﺍﯼ ﺗﮏ ﺗﮏ ﻣﺴﺎﺋﻞ ﺁﻥ ﭘﯿﭽﯿﺪﮔ ﺯﻣﺎﻧ ﺁﻥ ﺑﺴﯿﺎﺭ ﮐﻨﺪ ﺍﺳﺖ ﻣ ﺮ ﺍﯾﻨﮑﻪ‬
‫ﻣﻘﺪﺍﺭ ﺩﺍﺩەﻫﺎﯾﻤﺎﻥ ﮐﻢ ﺑﺎﺷﺪ ﻭ ﻧﻤﻮﻧەﻫﺎﯾﻤﺎﻥ ﮐﻮﭼ ﺑﺎﺷﺪ‪.‬‬
‫ﺍﻣﺮﻭﺯﻩ ﺭﻭﺵ ﻫﺎﯼ ﺑﻬﺘﺮﯼ ﺑﺮﺍﯼ ﺣﻞ ﻣﺴﺎﺋﻞ ﺳﺨﺖ ﺁﻣﺪﻩ ﮐﻪ ﮐﻤﺘﺮ ﺳﺮﺍﻍ ﺍﯾﻦ ﺩﻭ ﺭﻭﺵ ﻣ ﺁﯾﯿﻢ‪ .‬ﺭﻭﺵ ﻫﺎﯼ ﺣﺮﯾﺼﺎﻧﻪ ﻭ ﭘﻮﯾﺎ ﻭ‬
‫ﺗﻘﺴﯿﻢ ﻭ ﻏﻠﺒﻪ ﺍﺯ ﺍﯾﻦ ﺭﻭ ﺭﻭﺵ ﺑﺴﯿﺎﺭ ﺑﻬﺘﺮ ﺍﻧﺪ ﻭ ﺍﯾﻦ ﺩﻭ ﺭﻭﺵ ﺗﺎ ﺣﺪﻭﺩﯼ ﺯﻭﺭﮐ ﺍﻧﺪ ﻭ ﺑﺴﯿﺎﺭ ﮐﻢ ﻫﻮﺷﻤﻨﺪ ﺍﻧﺪ‪.‬‬

‫‪۳‬‬

You might also like