You are on page 1of 18

‫‪١٠/١٣/١۴٣۶‬‬

‫ﻫﻮش ﻣﺼﻨﻮﻋﯽ‬
‫‪Artificial Intelligence‬‬ ‫ﻫﻮش ﻣﺼﻨﻮﻋﯽ‬
‫ﻧﺎم ﮐﺘﺎب ‪ :‬ﻫﻮش ﻣﺼﻨﻮﻋﯽ رﻫﯿﺎﺗﯽ ﻧﻮﯾﻦ‬
‫ﻣﻮﻟﻒ ‪ :‬راﺳﻞ و ﻧﻮروﯾﮓ‬ ‫ﻓﺼﻞ ﺳﻮم‪-‬ﺣﻞ ﻣﺴﺎﺋﻞ ﺗﻮﺳﻂ ﺟﺴﺘﺠﻮ‬

‫ﻣﻬﺪي ﺑﺎزرﮔﺎﻧﯽ‬
‫داﻧﺸﮕﺎه آزاد اﺳﻼﻣﯽ زﻧﺠﺎن‬

‫‪http://mbzir.com‬‬ ‫‪, http://csiz.ir‬‬


‫‪.‬‬

‫ﻣﻘﺪﻣﻪ‬ ‫ﻋﺎﻣﻞ ﻫﺎي ﺣﻞ ﻣﺴﺄﻟﻪ‬


‫‪3‬‬ ‫‪4‬‬

‫ﻋﺎﻣﻞ ﻫﺎي ﺣﻞ ﻣﺴﺄﻟﻪ‬ ‫‪‬‬

‫اﻧﻮاع ﻣﺴﺄﻟﻪ‬ ‫‪‬‬

‫ﻓﺮﻣﻮﻟﻪ ﺳﺎزي ﻣﺴﺄﻟﻪ‬ ‫‪‬‬

‫ﻣﺴﺎﺋﻞ ﻧﻤﻮﻧﻪ‬ ‫‪‬‬

‫اﻟﮕﻮرﯾﺘﻢ ﻫﺎي اﺑﺘﺪاﯾﯽ ﺟﺴﺘﺠﻮ‬ ‫‪‬‬

‫ﻓﺮﺿﯿﺎت در ﻣﻮرد ﻣﺤﯿﻂ‪ :‬اﯾﺴﺘﺎ‪ ،‬ﻗﺎﺑﻞ ﻣﺸﺎﻫﺪه‪ ،‬ﮔﺴﺴﺘﻪ و ﻗﻄﻌﯽ‬

‫‪١‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﻣﺜﺎل‪ :‬روﻣﺎﻧﯽ‬ ‫ﻣﺜﺎل‪ :‬روﻣﺎﻧﯽ‬


‫‪5‬‬ ‫‪6‬‬

‫ﯾﮏ روز ﺗﻌﻄﯿﻞ در روﻣﺎﻧﯽ؛ ﻣﮑﺎن ﻓﻌﻠﯽ ﺷﻬﺮآراد‬ ‫‪‬‬


‫ﭘﺮواز ﻓﺮدا‪ ،‬ﺑﺨﺎرﺳﺖ را ﺗﺮك ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬

‫ﻓﺮﻣﻮﻟﻪ ﺳﺎزي ﻫﺪف‪:‬‬ ‫‪‬‬


‫ﺑﻮدن در ﺑﺨﺎرﺳﺖ‬ ‫‪‬‬

‫ﻓﺮﻣﻮﻟﻪ ﺳﺎزي ﻣﺴﺄﻟﻪ‪:‬‬ ‫‪‬‬


‫ﺣﺎﻟﺖ ﻫﺎ‪ :‬ﺷﻬﺮﻫﺎي ﻣﺨﺘﻠﻒ‬ ‫‪‬‬
‫ﻋﻤﻠﯿﺎت‪ :‬رﻓﺘﻦ از ﺷﻬﺮي ﺑﻪ ﺷﻬﺮ دﯾﮕﺮ‬ ‫‪‬‬

‫ﯾﺎﻓﺘﻦ ﭘﺎﺳﺦ‪:‬‬ ‫‪‬‬


‫‪ ‬دﻧﺒﺎﻟﻪ اي از ﺷﻬﺮﻫﺎ‪ ،‬ﻣﺎﻧﻨﺪ‪:‬‬
‫‪Arad  Sibiu  Fagaras  Bucharest‬‬

‫اﻧﻮاع ﻣﺴﺄﻟﻪ‬
‫ﻣﺜﺎل‪ :‬دﻧﯿﺎي ﻣﮑﺶ‬
‫‪7‬‬ ‫‪8‬‬

‫ﻗﻄﻌﯽ‪ ،‬ﮐﺎﻣﻼ ﻣﺸﺎﻫﺪه ﭘﺬﯾﺮ ‪ ‬ﻣﺴﺎﺋﻞ ﺗﮏ – ﺣﺎﻟﺘﻪ‬ ‫‪‬‬ ‫ﺗﮏ‪-‬ﺣﺎﻟﺘﻪ‪ ،‬ﺷﺮوع در ‪.#5‬‬ ‫‪‬‬
‫‪ ‬ﻋﺎﻣﻞ دﻗﯿﻘﺎ ﻣﯽ داﻧﺪ در ﭼﻪ ﺣﺎﻟﺘﯽ ﺧﻮاﻫﺪ ﺑﻮد؛ راه ﺣﻞ ﯾﮏ دﻧﺒﺎﻟﻪ ﻣﯽ ﺑﺎﺷﺪ‪.‬‬
‫راه ﺣﻞ ؟‬
‫ﻗﻄﻌﯽ‪ ،‬ﻣﺸﺎﻫﺪه ﭘﺬﯾﺮ ﺟﺰﺋﯽ ‪ ‬ﻣﺴﺎﺋﻞ ﭼﻨﺪ‪-‬ﺣﺎﻟﺘﻪ‬ ‫‪‬‬
‫‪ ‬ﻣﻤﮑﻦ اﺳﺖ ﻋﺎﻣﻞ اﯾﺪه اي درﺑﺎره اﯾﻨﮑﻪ ﮐﺠﺎﺳﺖ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ؛ راه ﺣﻞ ﯾﮏ دﻧﺒﺎﻟﻪ‬
‫اﺳﺖ‪.‬‬

‫ﻏﯿﺮ ﻗﻄﻌﯽ و‪/‬ﯾﺎ ﻣﺸﺎﻫﺪه ﭘﺬﯾﺮ ﺟﺰﺋﯽ ‪ ‬ﻣﺴﺎﺋﻞ اﺣﺘﻤﺎﻟﯽ‬ ‫‪‬‬


‫‪ ‬ادراك اﻃﻼﻋﺎت ﺟﺪﯾﺪي درﺑﺎره ﺣﺎﻟﺖ ﻓﻌﻠﯽ ﻓﺮاﻫﻢ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫‪ ‬در ﺣﯿﻦ اﺟﺮا ﺑﺎﯾﺪ از ﺣﺴﮕﺮﻫﺎ اﺳﺘﻔﺎده ﮐﻨﺪ‪.‬‬
‫‪ ‬راه ﺣﻞ ﺑﻪ ﺻﻮرت ﯾﮏ درﺧﺖ‬
‫‪ ‬اﻏﻠﺐ ﺟﺴﺘﺠﻮ و اﺟﺮا ﺑﻪ ﺻﻮرت ﯾﮏ در ﻣﯿﺎن ) ‪(interleave‬‬
‫ﻓﻀﺎي ﺣﺎﻟﺖ ﻧﺎﺷﻨﺎﺧﺘﻪ ‪ ‬ﻣﺴﺎﺋﻞ اﮐﺘﺸﺎﻓﯽ )‪(online‬‬ ‫‪‬‬

‫‪٢‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﻣﺜﺎل‪ :‬دﻧﯿﺎي ﻣﮑﺶ‬ ‫ﻣﺜﺎل‪ :‬دﻧﯿﺎي ﻣﮑﺶ‬


‫‪9‬‬ ‫‪10‬‬

‫ﭼﻨﺪ‪-‬ﺣﺎﻟﺘﻪ‪ ،‬ﺷﺮوع در‬


‫ﺗﮏ‪-‬ﺣﺎﻟﺘﻪ‪ ،‬ﺷﺮوع در ‪.#5‬‬ ‫‪‬‬
‫‪‬‬
‫}‪{1, 2, 3, 4, 5, 6, 7, 8‬ﻣﺜﺎل ﻋﻤﻞ ‪Right‬‬
‫راه ﺣﻞ؟ ]‪[Right, Suck‬‬ ‫ﺑﻪ‬
‫}‪.{2, 4, 6, 8‬‬
‫راه ﺣﻞ؟‬
‫]‪[Right, Suck, Left, Suck‬‬
‫ﭼﻨﺪ‪-‬ﺣﺎﻟﺘﻪ‪ ،‬ﺷﺮوع در‬ ‫‪‬‬

‫}‪{1, 2, 3, 4, 5, 6, 7, 8‬ﻣﺜﺎل‬ ‫اﺣﺘﻤﺎﻟﯽ‬ ‫‪‬‬


‫‪ -‬ﻏﯿﺮ ﻗﻄﻌﯽ‪ :‬ﻣﮑﺶ ﻣﯽ ﺗﻮاﻧﺪ ﯾﮏ ﻓﺮش ﺗﻤﯿﺰ را ﮐﺜﯿﻒ ﮐﻨﺪ‪.‬‬
‫ﻋﻤﻞ ‪ Right‬ﺑﻪ }‪.{2, 4, 6, 8‬‬ ‫‪ -‬درك ﻣﺤﻠﯽ‪ :‬ﮔﺮد و ﺧﺎك در ﻣﺤﻞ ﻓﻌﻠﯽ‬
‫‪ -‬ادراك‪ [L, Clean] :‬ﯾﻌﻨﯽ ﺷﺮوع در ‪ #5‬ﯾﺎ ‪#7‬‬
‫راه ﺣﻞ؟‬ ‫راه ﺣﻞ؟‬

‫]‪[Right, if dirt then Suck‬‬

‫ﻓﺮﻣﻮﻟﻪ ﺳﺎزي ﻣﺴﺎﺋﻞ ﺗﮏ‪-‬ﺣﺎﻟﺘﻪ‬ ‫اﻧﺘﺨﺎب ﯾﮏ ﻓﻀﺎي ﺣﺎﻟﺖ‬


‫‪11‬‬ ‫‪12‬‬
‫ﯾﮏ ﻣﺴﺄﻟﻪ ﺑﻮﺳﯿﻠﻪ ﭼﻬﺎر ﻣﻮرد ﺗﻌﺮﯾﻒ ﻣﯽ ﺷﻮد‪:‬‬
‫دﻧﯿﺎي واﻗﻌﯽ ﺑﻪ ﺷﺪت ﭘﯿﭽﯿﺪه ﻣﯽ ﺑﺎﺷﺪ‬ ‫‪‬‬
‫‪ .1‬ﺣﺎﻟﺖ اوﻟﯿﻪ ﻣﺜﻼً ﺑﻮدن در ﺷﻬﺮ ‪Arad‬‬
‫‪ .2‬ﻋﻤﻞ ﻫﺎ ﯾﺎ ﺗﺎﺑﻊ ﺣﺎﻟﺖ ﺑﻌﺪي‬ ‫‪ ‬ﺑﻨﺎﺑﺮاﯾﻦ‪ ،‬ﺑﺮاي ﺣﻞ ﻣﺴﺄﻟﻪ ﺑﺎﯾﺪ ﻓﻀﺎي ﺣﺎﻟﺖ اﻧﺘﺰاﻋﯽ ﺑﺎﺷﺪ‪.‬‬
‫)‪ =S( x‬ﻣﺠﻤﻮﻋﻪ اي از زوج ﻫﺎي ﻋﻤﻞ‪-‬ﺣﺎﻟﺖ‬ ‫ﺣﺎﻟﺖ ) اﻧﺘﺰاﻋﯽ( = ﻣﺠﻤﻮﻋﻪ اي از ﺣﺎﻟﺖ ﻫﺎي واﻗﻌﯽ‬ ‫‪‬‬

‫}… ‪S(Arad) = {<Arad  Zerind, Zerind>,‬‬ ‫‪‬‬


‫ﻋﻤﻞ ) اﻧﺘﺰاﻋﯽ( = ﺗﺮﮐﯿﺒﯽ ﭘﯿﭽﯿﺪه از ﻋﻤﻞ ﻫﺎي واﻗﻌﯽ‬ ‫‪‬‬
‫‪ .3‬ﺗﺎﺑﻊ ﺗﺴﺖ ﻫﺪف‬
‫ﺻﺮﯾﺢ‪x = “at Bucharest” :‬‬ ‫◦‬
‫‪ ‬ﻣﺜﻼ ﻋﻤﻞ ‪ Arad  Zerind‬ﻣﯽ ﺗﻮاﻧﺪ ﻣﺠﻤﻮﻋﻪ اي ﭘﯿﭽﯿﺪه از اﻋﻤﺎل ﺑﺎﺷﺪ‪.‬‬
‫ﺿﻤﻨﯽ‪NoDirt( x) :‬‬ ‫◦‬ ‫راه ﺣﻞ ) اﻧﺘﺰاﻋﯽ( =‬ ‫‪‬‬
‫‪ .4‬ﺗﺎﺑﻊ ﻫﺰﯾﻨﻪ ﻣﺴﯿﺮ ‪:‬‬ ‫ﻣﺠﻤﻮﻋﻪ اي از ﻣﺴﯿﺮﻫﺎي واﻗﻌﯽ ﮐﻪ در دﻧﯿﺎي واﻗﻌﯽ راه ﺣﻞ ﻣﯽ ﺑﺎﺷﻨﺪ‪.‬‬ ‫‪‬‬
‫ﻣﺜﺎل‪ :‬ﻣﺠﻤﻮع ﻓﻮاﺻﻞ‪ ،‬ﺗﻌﺪاد ﻋﻤﻞ ﻫﺎي اﻧﺠﺎم ﺷﺪه و ‪...‬‬ ‫◦‬
‫ﻫﺰﯾﻨﻪ ﮔﺎم )‪c( x, a, y) ≥ 0 :(Step cost‬‬ ‫◦‬ ‫ﻫﺮ ﻋﻤﻞ اﻧﺘﺰاﻋﯽ ﺑﺎﯾﺪ از ﻣﺴﺄﻟﻪ اﺻﻠﯽ ﺳﺎده ﺗﺮ ﺑﺎﺷﺪ!‬ ‫‪‬‬

‫راه ﺣﻞ‪ :‬دﻧﺒﺎﻟﻪ اي از ﻋﻤﻠﯿﺎت ﮐﻪ از ﺣﺎﻟﺖ اوﻟﯿﻪ ﺷﺮوع و ﺑﻪ ﺣﺎﻟﺖ ﻫﺪف ﺧﺘﻢ ﻣﯽ ﺷﻮد‪.‬‬ ‫‪‬‬

‫‪٣‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﻣﺜﺎل‪ :‬ﮔﺮاف ﻓﻀﺎي ﺣﺎﻟﺖ دﻧﯿﺎي ﻣﮑﺶ‬ ‫ﻣﺜﺎل‪ :‬ﮔﺮاف ﻓﻀﺎي ﺣﺎﻟﺖ دﻧﯿﺎي ﻣﮑﺶ‬
‫‪13‬‬ ‫‪14‬‬

‫• ﺣﺎﻻت؟‬ ‫• ﺣﺎﻻت؟ وﺟﻮد ﮔﺮد و ﺧﺎك و ﻣﮑﺎن ﻫﺎي ﻋﺎﻣﻞ ) ﺑﺪون در ﻧﻈﺮ ﮔﺮﻓﺘﻦ ﻣﻘﺪار ﮔﺮد و ﺧﺎك(‬
‫• اﻋﻤﺎل؟‬ ‫• اﻋﻤﺎل؟ ‪Left, Right, Suck‬‬
‫• ﺗﺴﺖ ﻫﺪف؟‬ ‫• ﺗﺴﺖ ﻫﺪف؟ ﻧﺒﻮدن ﮔﺮد و ﺧﺎك‬
‫• ﻫﺰﯾﻨﻪ ﻣﺴﯿﺮ؟‬ ‫• ﻫﺰﯾﻨﻪ ﻣﺴﯿﺮ؟ ﺑﺎزاء ﻫﺮ ﻋﻤﻞ ‪1‬‬

‫ﻣﺜﺎل‪ :‬ﻣﻌﻤﺎي ﻫﺸﺖ‬ ‫ﻣﺜﺎل‪ :‬ﻣﻌﻤﺎي ﻫﺸﺖ‬


‫‪15‬‬ ‫‪16‬‬

‫• ﺣﺎﻻت؟‬ ‫• ﺣﺎﻻت؟ اﻋﺪاد ﺻﺤﯿﺢ ﺑﯿﺎﻧﮕﺮ ﻣﺤﻞ ﮐﺎﺷﯽ ﻫﺎ‬


‫• اﻋﻤﺎل؟‬ ‫• اﻋﻤﺎل؟ ﺣﺮﮐﺖ ﺧﺎﻧﻪ ﺧﺎﻟﯽ ﺑﻪ ﭼﭗ‪ ،‬ﺑﺎﻻ‪ ،‬راﺳﺖ و ﭘﺎﯾﯿﻦ‬
‫• ﺗﺴﺖ ﻫﺪف؟‬ ‫• ﺗﺴﺖ ﻫﺪف؟ ﺣﺎﻟﺖ ﻫﺪف ) داده ﺷﺪه(‬
‫• ﻫﺰﯾﻨﻪ ﻣﺴﯿﺮ؟‬ ‫• ﻫﺰﯾﻨﻪ ﻣﺴﯿﺮ؟ ﺑﺎزاء ﻫﺮ ﺣﺮﮐﺖ ‪1‬‬
‫]ﺗﻮﺟﻪ‪ :‬راه ﺣﻞ ﺑﻬﯿﻨﻪ ﺧﺎﻧﻮاده ﻣﻌﻤﺎي ‪ n‬ﯾﮏ ﻣﺴﺄﻟﻪ ‪ NP-hard‬ﻣﯽ ﺑﺎﺷﺪ[‬

‫‪۴‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﻣﺜﺎل‪ :‬روﺑﺎت اﺳﻤﺒﻞ ﮐﻨﻨﺪه‬ ‫ﻣﺴﺄﻟﻪ ﻫﺸﺖ وزﯾﺮ‬


‫‪17‬‬ ‫‪18‬‬

‫ﻗﺮاردادن ﻫﺸﺖ وزﯾﺮ در ﺻﻔﺤﻪ ﺷﻄﺮﻧﺞ ﺑﻪ ﻃﻮرﯾﮑﻪ ﻫﯿﭻ وزﯾﺮي ﻧﺘﻮاﻧﺪ ﺑﻪ‬ ‫‪‬‬

‫وزﯾﺮ دﯾﮕﺮي ﺣﻤﻠﻪ ﮐﻨﺪ‪.‬‬

‫آزﻣﻮن ﻫﺪف‪ 8 :‬وزﯾﺮ روي ﺻﻔﺤﻪ ﺷﻄﺮﻧﺞ‬ ‫‪‬‬

‫ﮐﻪ ﺑﺎ ﻫﻢ ﺑﺮﺧﻮرد ﻧﺪارﻧﺪ‪.‬‬


‫ﻫﺰﯾﻨﻪ ﻣﺴﯿﺮ‪ :‬ﺻﻔﺮ‬ ‫‪‬‬

‫ﺣﺎﻻت‪ :‬ﺗﺮﺗﯿﺐ ‪ 8‬وزﯾﺮ ﻫﺮ ﮐﺪام در ﯾﮏ ﺳﺘﻮن‬ ‫‪‬‬


‫• ﺣﺎﻻت؟ زاوﯾﻪ ﻣﻔﺎﺻﻞ روﺑﺎت‪ ،‬ﻣﺨﺘﺼﺎت ﻗﻄﻌﺎت‬
‫• اﻋﻤﺎل؟ ﺣﺮﮐﺖ ﭘﯿﻮﺳﺘﻪ ﻣﻔﺎﺻﻞ روﺑﺎت‬ ‫ﻣﺜﺎل روﺑﺮو‪{8, 6, 4, 2, 7, 5, 3, 1} :‬‬
‫• ﺗﺴﺖ ﻫﺪف؟ ﺳﺮﻫﻢ ﺑﻨﺪي ﮐﺎﻣﻞ‬ ‫ﻋﻤﻠﮕﺮﻫﺎ‪ :‬اﻧﺘﻘﺎل ﯾﮏ وزﯾﺮ داراي ﺑﺮﺧﻮرد ﺑﻪ‬ ‫‪‬‬

‫• ﻫﺰﯾﻨﻪ ﻣﺴﯿﺮ؟ زﻣﺎن اﺟﺮا‬ ‫ﻣﺮﺑﻊ دﯾﮕﺮي در ﻫﻤﺎن ﺳﺘﻮن‬

‫اﻟﮕﻮرﯾﺘﻢ ﻫﺎي ﺟﺴﺘﺠﻮي درﺧﺖ‬ ‫ﻣﺜﺎل ﺟﺴﺘﺠﻮي درﺧﺖ‬


‫‪19‬‬ ‫‪20‬‬

‫اﯾﺪه اﺻﻠﯽ‪ :‬ﮐﺎوش ‪ offline‬و ﺷﺒﯿﻪ ﺳﺎزي ﺷﺪه ﻓﻀﺎي ﺣﺎﻟﺖ ﺑﻮﺳﯿﻠﻪ ﺗﻮﻟﯿﺪ ﺣﺎﻻت‬ ‫‪‬‬
‫ﺑﻌﺪي ﺣﺎﻟﺖ ﻫﺎﯾﯽ ﮐﻪ ﺗﺎ ﮐﻨﻮن ﺗﻮﻟﯿﺪ ﺷﺪه اﻧﺪ‪.‬‬

‫‪۵‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﻣﺜﺎل ﺟﺴﺘﺠﻮي درﺧﺖ‬ ‫ﻣﺜﺎل ﺟﺴﺘﺠﻮي درﺧﺖ‬


‫‪21‬‬ ‫‪22‬‬

‫ﭘﯿﺎده ﺳﺎزي‪ :‬ﺟﺴﺘﺠﻮي ﻋﻤﻮﻣﯽ درﺧﺖ‬ ‫ﭘﯿﺎده ﺳﺎزي‪ :‬ﺣﺎﻟﺖ و ﮔﺮه‬


‫‪23‬‬ ‫‪24‬‬

‫ﯾﮏ ﺣﺎﻟﺖ ) ﺑﯿﺎﻧﮕﺮ( ﯾﮏ ﭘﯿﮑﺮه ﺑﻨﺪي ﻓﯿﺰﯾﮑﯽ ﻣﯽ ﺑﺎﺷﺪ‬ ‫‪‬‬

‫ﯾﮏ ﮔﺮه ﯾﮏ ﺳﺎﺧﺘﺎر داده اي ﺗﺸﮑﯿﻞ دﻫﻨﺪه ﺑﺨﺸﯽ از درﺧﺖ ﺟﺴﺘﺠﻮ ﺷﺎﻣﻞ‪ :‬ﭘﺪر‪،‬‬ ‫‪‬‬

‫ﻓﺮزﻧﺪان‪ ،‬ﻋﻤﻖ و ﻫﺰﯾﻨﻪ ﻣﺴﯿﺮ )‪ g( x‬اﺳﺖ‪.‬‬


‫ﺣﺎﻟﺖ ﻫﺎ ‪:‬‬ ‫‪‬‬

‫ﭘﺪر‪ ،‬ﻓﺮزﻧﺪ‪ ،‬ﻋﻤﻖ و ﻫﺰﯾﻨﻪ ﻣﺴﯿﺮ ﻧﺪارﻧﺪ!‬

‫ﺗﺎﺑﻊ ‪ EXPAND‬ﮔﺮه ﻫﺎي ﺟﺪﯾﺪ اﯾﺠﺎد ﻣﯽ ﮐﻨﺪ‪ ،‬ﻓﯿﻠﺪﻫﺎي ﻣﺨﺘﻠﻒ را ﻣﻘﺪار ﻣﯽ دﻫﺪ و‬ ‫‪‬‬

‫ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ‪ SUCCESSORS-FN‬ﻣﺴﺄﻟﻪ‪ ،‬ﺣﺎﻟﺖ ﻫﺎي ﻣﺮﺑﻮﻃﻪ اﯾﺠﺎد ﻣﯽ ﺷﻮد‪.‬‬

‫‪۶‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫اﺳﺘﺮاﺗﮋي ﻫﺎي ﺟﺴﺘﺠﻮ‬ ‫اﺳﺘﺮﺗﮋي ﻫﺎي ﺟﺴﺘﺠﻮي ﻧﺎآﮔﺎﻫﺎﻧﻪ‬


‫‪25‬‬ ‫‪26‬‬

‫ﯾﮏ اﺳﺘﺮاﺗﮋي ﺑﻮﺳﯿﻠﻪ ﺗﺮﺗﯿﺐ ﮔﺴﺘﺮش ﮔﺮه ﻫﺎ ﺗﻌﺮﯾﻒ ﻣﯽ ﺷﻮد‪.‬‬ ‫‪‬‬ ‫اﺳﺘﺮاﺗﮋي ﻫﺎي ﻧﺎآﮔﺎﻫﺎﻧﻪ ﺗﻨﻬﺎ از اﻃﻼﻋﺎت ﻣﻮﺟﻮد در ﺗﻌﺮﯾﻒ ﻣﺴﺄﻟﻪ‬ ‫‪‬‬
‫اﺑﻌﺎد ارزﯾﺎﺑﯽ اﺳﺘﺮاﺗﮋي ﻫﺎ‪:‬‬ ‫‪‬‬ ‫اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﻨﺪ‪.‬‬
‫‪ ‬ﮐﺎﻣﻞ ﺑﻮدن– آﯾﺎ در ﺻﻮرت وﺟﻮد راه ﺣﻞ‪ ،‬ﻫﻤﯿﺸﻪ راه ﺣﻠﯽ ﭘﯿﺪا ﻣﯽ ﮐﻨﺪ؟‬
‫‪ ‬ﭘﯿﭽﯿﺪﮔﯽ زﻣﺎﻧﯽ – ﺗﻌﺪاد ﮔﺮه ﻫﺎي ﺗﻮﻟﯿﺪ ﺷﺪه‪/‬ﮔﺴﺘﺮش ﯾﺎﻓﺘﻪ‬
‫‪ ‬ﭘﯿﭽﯿﺪﮔﯽ ﺣﺎﻓﻈﻪ – ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد ﮔﺮه ﻫﺎ در ﺣﺎﻓﻈﻪ‬ ‫ﺟﺴﺘﺠﻮي اول‪-‬ﺳﻄﺢ )‪(BFS‬‬ ‫‪‬‬

‫‪ ‬ﺑﻬﯿﻨﮕﯽ – آﯾﺎ ﻫﻤﯿﺸﻪ ﮐﻢ ﻫﺰﯾﻨﻪ ﺗﺮﯾﻦ راه ﺣﻞ را ﭘﯿﺪا ﻣﯽ ﮐﻨﺪ؟‬ ‫ﺟﺴﺘﺠﻮي ﻫﺰﯾﻨﻪ‪-‬ﯾﮑﻨﻮاﺧﺖ )‪(UCS‬‬ ‫‪‬‬

‫ﺟﺴﺘﺠﻮي اول‪-‬ﻋﻤﻖ ) ﻋﻤﻘﯽ( )‪(DFS‬‬ ‫‪‬‬


‫ﭘﯿﭽﯿﺪﮔﯽ زﻣﺎن و ﻓﻀﺎ ﺑﺮﺣﺴﺐ ﭘﺎراﻣﺘﺮﻫﺎي زﯾﺮ ﺳﻨﺠﯿﺪه ﻣﯽ ﺷﻮﻧﺪ‪:‬‬ ‫‪‬‬
‫ﺟﺴﺘﺠﻮي ﺑﺎ ﻋﻤﻖ ﻣﺤﺪود )‪(DLS‬‬ ‫‪‬‬
‫‪ : b ‬ﺣﺪاﮐﺜﺮ ﻓﺎﮐﺘﻮر اﻧﺸﻌﺎب درﺧﺖ ﺟﺴﺘﺠﻮ‬
‫‪ : d ‬ﻋﻤﻖ ﮐﻢ ﻫﺰﯾﻨﻪ ﺗﺮﯾﻦ راه ﺣﻞ‬
‫ﺟﺴﺘﺠﻮي ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري )‪(IDS‬‬ ‫‪‬‬

‫‪ : m ‬ﺣﺪاﮐﺜﺮ ﻋﻤﻖ ﻓﻀﺎي ﺣﺎﻟﺖ ) ﻣﻤﮑﻦ اﺳﺖ ∞ ﺑﺎﺷﺪ(‬

‫ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ‬ ‫ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ‬


‫‪27‬‬ ‫‪28‬‬

‫ﻫﺮﺑﺎر ﺳﻄﺤﯽ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬ ‫ﻫﺮﺑﺎر ﺳﻄﺤﯽ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬

‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬ ‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬

‫‪ fringe‬ﯾﮏ ﺻﻒ ‪ FIFO‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﯾﻌﻨﯽ‪ ،‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ ﺑﻪ اﻧﺘﻬﺎي ﺻﻒ اﺿﺎﻓﻪ ﻣﯽ‬ ‫◦‬ ‫‪ fringe ‬ﯾﮏ ﺻﻒ ‪ FIFO‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﯾﻌﻨﯽ‪ ،‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ ﺑﻪ اﻧﺘﻬﺎي ﺻﻒ اﺿﺎﻓﻪ ﻣﯽ‬
‫ﺷﻮﻧﺪ‪.‬‬ ‫ﺷﻮﻧﺪ‪.‬‬

‫]‪0: [A‬‬ ‫]‪1: [B, C‬‬

‫‪٧‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ‬ ‫ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ‬


‫‪29‬‬ ‫‪30‬‬

‫ﻫﺮﺑﺎر ﺳﻄﺤﯽ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬ ‫ﻫﺮﺑﺎر ﺳﻄﺤﯽ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬

‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬ ‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬

‫‪ fringe ‬ﯾﮏ ﺻﻒ ‪ FIFO‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﯾﻌﻨﯽ‪ ،‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ ﺑﻪ اﻧﺘﻬﺎي ﺻﻒ اﺿﺎﻓﻪ‬ ‫‪ fringe ‬ﯾﮏ ﺻﻒ ‪ FIFO‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﯾﻌﻨﯽ‪ ،‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ ﺑﻪ اﻧﺘﻬﺎي ﺻﻒ اﺿﺎﻓﻪ‬
‫ﻣﯽ ﺷﻮﻧﺪ‪.‬‬ ‫ﻣﯽ ﺷﻮﻧﺪ‪.‬‬

‫]‪2: [C, D, E‬‬ ‫]‪3: [D, E, F, G‬‬

‫ﻣﺜﺎل‪ :‬ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ‬ ‫ﺧﺼﻮﺻﯿﺎت ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ‬


‫‪31‬‬ ‫‪32‬‬

‫‪Arad‬‬ ‫ﮐﺎﻣﻞ؟ ﺑﻠﻪ ) ﺑﻪ ﺷﺮط ﻣﺤﺪود ﺑﻮدن ‪(b‬‬ ‫‪‬‬

‫)‪b + b2 + … + bd + b(bd-1) = O( bd+1‬‬ ‫ﭘﯿﭽﯿﺪﮔﯽ زﻣﺎﻧﯽ؟‬ ‫‪‬‬

‫ﭘﯿﭽﯿﺪﮔﯽ ﺣﺎﻓﻈﻪ؟ )‪ O(bd+1‬ﭼﻮن ﻫﻤﻪ ﮔﺮه ﻫﺎ را در ﺣﺎﻓﻈﻪ ﻧﮕﻪ ﻣﯽ دارد‬ ‫‪‬‬

‫ﺑﻬﯿﻨﻪ؟ ﺑﻠﻪ ) ﻣﺜﻼ اﮔﺮ ﺑﺎزاء ﻫﺮ ﻋﻤﻞ‪ ،‬ﻫﺰﯾﻨﻪ = ‪(1‬‬


‫‪Zerind‬‬ ‫‪Sibiu‬‬ ‫‪Timisoara‬‬
‫‪‬‬

‫‪Arad‬‬ ‫‪Oradea‬‬ ‫‪Arad‬‬ ‫‪Oradea‬‬ ‫‪Fagaras‬‬


‫‪Rimnicu‬‬
‫‪Arad‬‬ ‫‪Lugoj‬‬
‫• ﻣﺸﮑﻞ اﺻﻠﯽ ﺣﺎﻓﻈﻪ ﻣﯽ ﺑﺎﺷﺪ‪) .‬ﻧﺴﺒﺖ ﺑﻪ‬
‫زﻣﺎن(‬
‫‪Vilcea‬‬

‫‪٨‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﭘﯿﭽﯿﺪﮔﯽ زﻣﺎﻧﯽ و ﺣﺎﻓﻈﻪ ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ‬ ‫زﻣﺎن و ﻓﻀﺎي ﻻزم در ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ‬
‫‪33‬‬ ‫‪34‬‬

‫ﺣﺎﻓﻈﻪ‬ ‫زﻣﺎن‬ ‫ﺗﻌﺪاد ﮔﺮه ﻫﺎ‬ ‫ﻋﻤﻖ‬


‫‪1‬‬ ‫‪b1‬‬ ‫‪ 1‬ﻣﮕﺎ ﺑﺎﯾﺖ‬ ‫‪ 11/0‬ﺛﺎﻧﯿﻪ‬ ‫‪1100‬‬ ‫‪2‬‬
‫‪ 106‬ﻣﮕﺎ ﺑﺎﯾﺖ‬ ‫‪ 11‬ﺛﺎﻧﯿﻪ‬ ‫‪111100‬‬ ‫‪4‬‬
‫‪2‬‬ ‫‪b2‬‬
‫‪ 10‬ﮔﯿﮕﺎ ﺑﺎﯾﺖ‬ ‫‪ 19‬دﻗﯿﻘﻪ‬ ‫‪107‬‬ ‫‪6‬‬
‫‪3‬‬ ‫‪b3‬‬ ‫‪ 1‬ﺗﺮا ﺑﺎﯾﺖ‬ ‫‪ 31‬ﺳﺎﻋﺖ‬ ‫‪109‬‬ ‫‪8‬‬

‫…‬
‫‪ 101‬ﺗﺮا ﺑﺎﯾﺖ‬ ‫‪ 129‬روز‬ ‫‪1011‬‬ ‫‪10‬‬
‫‪d-1‬‬ ‫‪bd - 1‬‬ ‫‪ 10‬ﭘﺘﺎ ﺑﺎﯾﺖ‬ ‫‪ 35‬ﺳﺎل‬ ‫‪1013‬‬ ‫‪12‬‬

‫‪d‬‬ ‫‪bd‬‬ ‫‪ 1‬ﻫﮕﺰا ﺑﺎﯾﺖ‬ ‫‪ 3523‬ﺳﺎل‬ ‫‪1015‬‬ ‫‪14‬‬


‫…‬ ‫‪b =10 ‬‬
‫‪d+1‬‬ ‫)‪b(bd – 1‬‬
‫‪ 10000 ‬ﮔﺮه در ﻫﺮ ﺛﺎﻧﯿﻪ‬
‫‪b+‬‬ ‫‪b2‬‬ ‫‪+…+‬‬ ‫‪bd +‬‬ ‫)‪b(bd -1‬‬ ‫=‬ ‫)‪O(bd+1‬‬ ‫‪ ‬ﻫﺮ ﮔﺮه ‪ 1000‬ﺑﺎﯾﺖ‬

‫ﺟﺴﺘﺠﻮي ﻫﺰﯾﻨﻪ‪-‬ﯾﮑﻨﻮاﺧﺖ‬ ‫ﻣﺜﺎل‪ :‬ﺟﺴﺘﺠﻮي ﻫﺰﯾﻨﻪ ﯾﮑﻨﻮاﺧﺖ‬


‫‪35‬‬ ‫‪36‬‬

‫ﻫﺮﺑﺎر ﮐﻢ ﻫﺰﯾﻨﻪ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬ ‫‪Arad‬‬
‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬
‫‪118‬‬
‫‪ = fringe‬ﺻﻔﯽ ﮐﻪ ﺑﺮاﺳﺎس ﻫﺰﯾﻨﻪ ﻣﺴﯿﺮ ﻣﺮﺗﺐ ﺷﺪه ﺑﺎﺷﺪ‪.‬‬ ‫‪‬‬ ‫‪75‬‬ ‫‪140‬‬

‫ﻣﻌﺎدل ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ اﮔﺮ ﻫﺰﯾﻨﻪ ﮔﺎم ﻫﺎ ﻣﺴﺎوي ﺑﺎﺷﻨﺪ‪.‬‬ ‫‪‬‬


‫‪Zerind‬‬ ‫‪Sibiu‬‬ ‫‪Timisoara‬‬

‫ﮐﺎﻣﻞ؟ ﺑﻠﻪ اﮔﺮ ﻫﺰﯾﻨﻪ ﮔﺎﻣﻬﺎ ≤ ‪ε‬‬ ‫‪‬‬


‫‪75‬‬ ‫‪140‬‬ ‫‪80‬‬
‫ﭘﯿﭽﯿﺪﮔﯽ زﻣﺎﻧﯽ؟ ﺗﻌﺪاد ﮔﺮه ﻫﺎﯾﯽ ﮐﻪ ﻫﺰﯾﻨﻪ ﻣﺴﯿﺮ آﻧﻬﺎ ﮐﻮﭼﮑﺘﺮ ﯾﺎ ﻣﺴﺎوي ﻫﺰﯾﻨﻪ راه‬ ‫‪‬‬ ‫‪71‬‬ ‫‪151‬‬ ‫‪99‬‬ ‫‪118‬‬ ‫‪111‬‬
‫‪Rimnicu‬‬
‫ﺣﻞ ﺑﻬﯿﻨﻪ ﺑﺎﺷﺪ‪.‬‬ ‫‪Arad‬‬ ‫‪Oradea‬‬ ‫‪Arad‬‬ ‫‪Oradea‬‬ ‫‪Fagaras‬‬ ‫‪Arad‬‬ ‫‪Lugoj‬‬
‫) ‪O(b C*/  ‬‬ ‫‪Vilcea‬‬

‫ﭘﯿﭽﯿﺪﮔﯽ ﺣﺎﻓﻈﻪ؟ ﻣﺎﻧﻨﺪ ﭘﯿﭽﯿﺪﮔﯽ زﻣﺎﻧﯽ‬ ‫‪‬‬

‫ﺑﻬﯿﻨﻪ؟ ﺑﻠﻪ ) ﮔﺮه ﻫﺎ ﺑﻪ ﺗﺮﺗﯿﺐ ﺻﻌﻮدي )‪ g( n‬ﮔﺴﺘﺮش ﻣﯽ ﯾﺎﺑﻨﺪ(‪.‬‬ ‫‪‬‬

‫‪٩‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﻣﺜﺎل‪ :‬ﺟﺴﺘﺠﻮي ﻫﺰﯾﻨﻪ ﯾﮑﻨﻮاﺧﺖ‬ ‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬


‫‪37‬‬ ‫‪38‬‬
‫‪A‬‬ ‫‪S‬‬
‫‪0‬‬
‫ﻫﺮﺑﺎر ﻋﻤﯿﻖ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬
‫‪1‬‬ ‫‪10‬‬
‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬
‫‪5‬‬ ‫‪B‬‬ ‫‪5‬‬ ‫‪A‬‬ ‫‪C‬‬
‫‪B‬‬
‫‪S‬‬ ‫‪G‬‬
‫‪1‬‬ ‫‪5‬‬ ‫‪15‬‬
‫‪ = fringe‬ﭘﺸﺘﻪ ‪ ،LIFO‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ را در اﺑﺘﺪا درج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬

‫‪15‬‬ ‫‪5‬‬
‫‪G‬‬ ‫‪G‬‬
‫‪C‬‬ ‫‪11‬‬ ‫‪10‬‬
‫])‪0: [S(0‬‬ ‫]‪0: [A‬‬
‫])‪1: [A(1), B(5), C(15‬‬
‫])‪2: [B(5), G(11), C(15‬‬
‫])‪3: [G(10), G(11), C(15‬‬
‫])‪4: [G(11), C(15‬‬

‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬ ‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬


‫‪39‬‬ ‫‪40‬‬

‫ﻫﺮﺑﺎر ﻋﻤﯿﻖ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬ ‫ﻫﺮﺑﺎر ﻋﻤﯿﻖ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬

‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬ ‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬

‫‪ = fringe‬ﭘﺸﺘﻪ ‪ ،LIFO‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ را در اﺑﺘﺪا درج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬ ‫‪ = fringe‬ﭘﺸﺘﻪ ‪ ،LIFO‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ را در اﺑﺘﺪا درج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬

‫]‪1: [B, C‬‬ ‫]‪2: [D, E, C‬‬

‫‪١٠‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬ ‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬


‫‪41‬‬ ‫‪42‬‬

‫ﻫﺮﺑﺎر ﻋﻤﯿﻖ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬ ‫ﻫﺮﺑﺎر ﻋﻤﯿﻖ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬

‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬ ‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬

‫‪ = fringe‬ﭘﺸﺘﻪ ‪ ،LIFO‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ را در اﺑﺘﺪا درج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬ ‫‪ = fringe‬ﭘﺸﺘﻪ ‪ ،LIFO‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ را در اﺑﺘﺪا درج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬

‫]‪3: [H, I, E, C‬‬ ‫]‪4: [I, E, C‬‬

‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬ ‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬


‫‪43‬‬ ‫‪44‬‬

‫ﻫﺮﺑﺎر ﻋﻤﯿﻖ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬ ‫ﻫﺮﺑﺎر ﻋﻤﯿﻖ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬

‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬ ‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬

‫‪ = fringe‬ﭘﺸﺘﻪ ‪ ،LIFO‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ را در اﺑﺘﺪا درج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬ ‫‪ = fringe‬ﭘﺸﺘﻪ ‪ ،LIFO‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ را در اﺑﺘﺪا درج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬

‫]‪5: [E, C‬‬ ‫]‪6: [J, K, C‬‬

‫‪١١‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬ ‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬


‫‪45‬‬ ‫‪46‬‬

‫ﻫﺮﺑﺎر ﻋﻤﯿﻖ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬ ‫ﻫﺮﺑﺎر ﻋﻤﯿﻖ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬

‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬ ‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬

‫‪ = fringe‬ﭘﺸﺘﻪ ‪ ،LIFO‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ را در اﺑﺘﺪا درج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬ ‫‪ = fringe‬ﭘﺸﺘﻪ ‪ ،LIFO‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ را در اﺑﺘﺪا درج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬

‫]‪7: [K, C‬‬ ‫]‪8: [C‬‬

‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬ ‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬


‫‪47‬‬ ‫‪48‬‬

‫ﻫﺮﺑﺎر ﻋﻤﯿﻖ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬ ‫ﻫﺮﺑﺎر ﻋﻤﯿﻖ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬

‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬ ‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬

‫‪ = fringe‬ﭘﺸﺘﻪ ‪ ،LIFO‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ را در اﺑﺘﺪا درج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬ ‫‪ = fringe‬ﭘﺸﺘﻪ ‪ ،LIFO‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ را در اﺑﺘﺪا درج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬

‫]‪9: [F, G‬‬ ‫]‪10: [L, M, G‬‬

‫‪١٢‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬ ‫ﻣﺜﺎل‪ :‬ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬


‫‪49‬‬ ‫‪50‬‬

‫ﻫﺮﺑﺎر ﻋﻤﯿﻖ ﺗﺮﯾﻦ ﮔﺮه ﮔﺴﺘﺮش ﻧﯿﺎﻓﺘﻪ را ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ‪.‬‬ ‫‪‬‬ ‫‪Arad‬‬

‫ﭘﯿﺎده ﺳﺎزي‪:‬‬ ‫‪‬‬

‫‪ = fringe‬ﭘﺸﺘﻪ ‪ ،LIFO‬ﻓﺮزﻧﺪان ﺟﺪﯾﺪ را در اﺑﺘﺪا درج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪‬‬

‫‪Zerind‬‬ ‫‪Sibiu‬‬ ‫‪Timisoara‬‬

‫]‪11: [M, G‬‬ ‫• ﺣﻠﻘﻪ ﺑﯽ ﭘﺎﯾﺎن !‬


‫‪Arad‬‬ ‫‪Oradea‬‬
‫در اﯾﻦ ﺟﺴﺘﺠﻮ ﻧﯿﺎز ﺑﻪ ﻓﻀﺎي ﺣﺎﻟﺖ ﻣﺤﺪود و ﺑﺪون‬
‫ﭼﺮﺧﻪ دارﯾﻢ‪ ،‬ﯾﺎ ﺑﺎﯾﺪ ﺣﺎﻻت ﺗﮑﺮاري ﭼﮏ ﺷﻮﻧﺪ‪.‬‬
‫‪Zerind‬‬ ‫‪Sibiu‬‬ ‫‪Timisoara‬‬

‫ﺧﺼﻮﺻﯿﺎت ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ‬ ‫ﺟﺴﺘﺠﻮي ﺑﺎ ﻋﻤﻖ ﻣﺤﺪود‬


‫‪51‬‬ ‫• ﮐﺎﻣﻞ؟‬ ‫‪52‬‬

‫– ﺧﯿﺮ )در ﻓﻀﺎﻫﺎي ﺣﺎﻟﺖ ﺑﺎ ﻋﻤﻖ ﻧﺎﻣﺤﺪود‪ ،‬داراي ﺣﻠﻘﻪ(‬ ‫= ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ ﺑﺎ ﻣﺤﺪوده ﻋﻤﻘﯽ ‪l‬‬
‫– ﺑﺮاي اﺟﺘﻨﺎب از ﺣﺎﻻت ﺗﮑﺮاي در ﻃﻮل ﻣﺴﯿﺮ‪ ،‬ﻧﯿﺎز ﺑﻪ اﺻﻼح دارد‪.‬‬ ‫ﯾﻌﻨﯽ‪ ،‬ﻓﺮزﻧﺪان ﮔﺮه ﻫﺎي واﻗﻊ در ﻋﻤﻖ ‪ l‬ﺗﻮﻟﯿﺪ ﻧﺨﻮاﻫﻨﺪ ﺷﺪ‪.‬‬
‫– ﺑﻨﺎﺑﺮاﯾﻦ‪ ،‬در ﻓﻀﺎي ﺣﺎﻟﺖ ﻣﺤﺪود ﮐﺎﻣﻞ اﺳﺖ‪.‬‬
‫• ﭘﯿﭽﯿﺪﮔﯽ زﻣﺎﻧﯽ؟ )‪O( bm‬‬ ‫در اﯾﻦ اﺳﺘﺮاﺗﮋي ﺑﺎ در ﻧﻈﺮ ﮔﺮﻓﺘﻦ ﯾﮏ ﻣﺤﺪوده ﻋﻤﻘﯽ ﻣﺎﻧﻨﺪ ‪ l‬از ﺑﻪ دام‬ ‫‪‬‬
‫اﻓﺘﺎدن ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ در ﯾﮏ ﺣﻠﻘﻪ ﺑﯽ ﭘﺎﯾﺎن ﺟﻠﻮﮔﯿﺮي ﻣﯽ ﺷﻮد‪ ).‬ﺑﺮش‬
‫– در ﺑﺪﺗﺮﯾﻦ ﺣﺎﻟﺖ ﺗﻤﺎم ﮔﺮه ﻫﺎي درﺧﺖ ﺟﺴﺘﺠﻮ ﺗﻮﻟﯿﺪ ﻣﯽ ﺷﻮﻧﺪ‬
‫روي درﺧﺖ ﺟﺴﺘﺠﻮ(‬
‫– اﮔﺮ ‪ m‬ﺧﯿﻠﯽ ﺑﯿﺸﺘﺮ از ‪ d‬ﺑﺎﺷﺪ‪ ،‬ﺑﺴﯿﺎر زﯾﺎد‬
‫– اﮔﺮ ﺗﻌﺪاد راه ﺣﻞ ﻫﺎ زﯾﺎد ﺑﺎﺷﺪ‪ ،‬ﻣﯽ ﺗﻮاﻧﺪ ﺑﺴﯿﺎر ﺳﺮﯾﻌﺘﺮ از ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ ﺑﺎﺷﺪ‬ ‫ﻣﺜﻼ در ﻧﻘﺸﻪ روﻣﺎﻧﯽ ﭼﻮن ‪ 20‬ﺷﻬﺮ وﺟﻮد دارد ﺑﻨﺎﺑﺮاﯾﻦ ﻃﻮل راه ﺣﻞ ﺑﺎﯾﺪ‬ ‫‪‬‬
‫• ﭘﯿﭽﯿﺪﮔﯽ ﺣﺎﻓﻈﻪ؟‬ ‫ﺣﺪاﮐﺜﺮ ‪ 19‬ﺑﺎﺷﺪ‪.‬‬
‫– )‪ ،O( bm‬ﺑﻪ ﺻﻮرت ﺧﻄﯽ!‬ ‫ﺑﻨﺎﺑﺮاﯾﻦ ﻫﯿﭻ وﻗﺖ ﮔﺮه اي ﺑﺎ ﻋﻤﻖ ﺑﯿﺶ از ‪ 19‬ﺑﺮرﺳﯽ ﻧﺨﻮاﻫﺪ ﺷﺪ‪.‬‬ ‫‪‬‬

‫• ﺑﻬﯿﻨﻪ؟ ﺧﯿﺮ‬ ‫اﮔﺮ در ﻣﺤﺪوده ﻋﻤﻘﯽ ‪ l‬راه ﺣﻠﯽ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﺑﺎﻻﺧﺮه ﭘﯿﺪا ﺧﻮاﻫﺪ‬ ‫‪‬‬
‫ﺷﺪ‪ ،‬اﻣﺎ ﻫﯿﭻ ﺗﻀﻤﯿﻨﯽ ﺑﺮاي ﯾﺎﻓﺘﻦ راه ﺣﻞ ﺑﻬﯿﻨﻪ وﺟﻮد ﻧﺪارد‪.‬‬

‫‪١٣‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﺟﺴﺘﺠﻮي ﺑﺎ ﻋﻤﻖ ﻣﺤﺪود‬ ‫ﺟﺴﺘﺠﻮي ﺑﺎ ﻋﻤﻖ ﻣﺤﺪودﭘﯿﺎده ﺳﺎزي ﺑﺎزﮔﺸﺘﯽ‬


‫‪53‬‬ ‫‪54‬‬

‫ﮐﺎﻣﻞ؟‬ ‫‪‬‬
‫‪ ‬ﺑﻠﻪ ) اﮔﺮ ‪(l ≥ d‬‬

‫ﭘﯿﭽﯿﺪﮔﯽ زﻣﺎﻧﯽ؟‬ ‫‪‬‬


‫)‪O(bl‬‬ ‫‪‬‬

‫ﭘﯿﭽﯿﺪﮔﯽ ﺣﺎﻓﻈﻪ؟‬ ‫‪‬‬


‫)‪O(bl‬‬ ‫‪‬‬

‫ﺑﻬﯿﻨﻪ؟‬ ‫‪‬‬
‫‪ ‬ﺧﯿﺮ‬

‫ﺟﺴﺘﺠﻮي ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري‬ ‫ﺟﺴﺘﺠﻮي ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري‬


‫‪55‬‬ ‫‪56‬‬

‫ﻣﺸﮑﻞ اﺻﻠﯽ در ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ ﺑﺎ ﻋﻤﻖ ﻣﺤﺪود ﺷﺪه )‪ (DLS‬اﻧﺘﺨﺎب‬ ‫‪‬‬


‫ﯾﮏ ﻣﺤﺪوده ﻋﻤﻘﯽ ﻣﻨﺎﺳﺐ اﺳﺖ‪.‬‬

‫در ﻧﻘﺸﻪ روﻣﺎﻧﯽ ﻃﻮل ﺑﺰرﮔﺘﺮﯾﻦ ﻣﺴﯿﺮ ﺑﯿﻦ دو ﺷﻬﺮ ‪ 9‬ﻣﯽ ﺑﺎﺷﺪ)ﻗﻄﺮ(‪ ،‬و‬ ‫‪‬‬
‫اﯾﻦ ﻣﺤﺪوده ﻋﻤﻘﯽ ﻣﻨﺎﺳﺐ ﺗﺮ از ‪ 19‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬اﻣﺎ در ﺑﯿﺸﺘﺮ ﻓﻀﺎﻫﺎي‬
‫ﺣﺎﻟﺖ اﻧﺘﺨﺎب ﻣﺤﺪوده ﻣﻨﺎﺳﺐ ﻗﺒﻞ از ﺣﻞ ﻣﺴﺄﻟﻪ ﻣﯿﺴﺮ ﻧﻤﯽ ﺑﺎﺷﺪ‪.‬‬

‫ﺟﺴﺘﺠﻮي ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري روﺷﯽ ﺑﺮاي ﺗﻌﯿﯿﻦ ﻣﺤﺪوده ﻋﻤﻘﯽ‬ ‫‪‬‬
‫ﻣﻨﺎﺳﺐ ﺑﺎ اﻣﺘﺤﺎن ﮐﺮدن ﺗﻤﺎﻣﯽ ﻣﺤﺪوده ﻫﺎ ) از ﺻﻔﺮ ﺑﻪ ﺑﺎﻻ( ﻣﯽ ﺑﺎﺷﺪ‪.‬‬
‫ﯾﻌﻨﯽ اول ﻋﻤﻖ ﺻﻔﺮ‪ ،‬ﺑﻌﺪ ﻋﻤﻖ ‪ ،1‬ﺑﻌﺪ ﻋﻤﻖ ‪ 2‬و ‪...‬‬

‫‪١۴‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﺟﺴﺘﺠﻮي ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري‬ ‫ﺟﺴﺘﺠﻮي ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري )‪(l = 0‬‬
‫‪57‬‬ ‫‪58‬‬

‫ﺟﺴﺘﺠﻮي ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري ﻣﺰاﯾﺎي ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ و ﻋﻤﻘﯽ را‬ ‫‪‬‬

‫ﺑﺎ ﻫﻢ ﺗﺮﮐﯿﺐ ﻣﯽ ﮐﻨﺪ‪:‬‬


‫ﻣﺎﻧﻨﺪ ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ ﮐﺎﻣﻞ )اﮔﺮ ﻓﺎﮐﺘﻮر اﻧﺸﻌﺎب ﻣﺤﺪود ﺑﺎﺷﺪ( و ﺑﻬﯿﻨﻪ‬ ‫◦‬
‫)اﮔﺮ ﻫﺰﯾﻨﻪ ﻣﺴﯿﺮ ﯾﮏ ﺗﺎﺑﻊ ﻏﯿﺮ ﻧﺰوﻟﯽ ﺑﺮﺣﺴﺐ ﻋﻤﻖ ﺑﺎﺷﺪ(اﺳﺖ‪.‬‬
‫ﺟﺴﺘﺠﻮي ﻋﻤﻘﯽ داراي ﻣﺼﺮف ﺣﺎﻓﻈﻪ ﺧﻄﯽ )‪ O(bd‬ﻣﯽ ﺑﺎﺷﺪ‪.‬‬ ‫◦‬

‫اﯾﻦ ﺟﺴﺘﺠﻮ از ﻧﻈﺮ ﭘﯿﭽﯿﺪﮔﯽ زﻣﺎﻧﯽ ﻣﺎﻧﻨﺪ ﺟﺴﺘﺠﻮي ﻣﺤﺪود ﺷﺪه ﻣﯽ‬ ‫‪‬‬

‫ﺑﺎﺷﺪ‪ ،‬ﺑﻪ ﺟﺰ اﯾﻨﮑﻪ ﺑﺮﺧﯽ ﺣﺎﻻت ﭼﻨﺪ ﺑﺎر ﺑﺴﻂ داده ﻣﯽ ﺷﻮﻧﺪ‪.‬‬

‫ﺟﺴﺘﺠﻮي ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري )‪(l = 1‬‬ ‫ﺟﺴﺘﺠﻮي ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري )‪(l = 2‬‬
‫‪59‬‬ ‫‪60‬‬

‫‪١۵‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﺟﺴﺘﺠﻮي ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري )‪(l = 3‬‬ ‫ﺧﻮاص ﺟﺴﺘﺠﻮي ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري‬
‫‪61‬‬ ‫‪62‬‬

‫ﮐﺎﻣﻞ؟؟ ﺑﻠﻪ )ﻣﺎﻧﻨﺪ ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ(‬ ‫‪‬‬

‫ﭘﯿﭽﯿﺪﮔﯽ زﻣﺎﻧﯽ ؟؟‬ ‫‪‬‬

‫)‪db1 + (d – 1) b2 + … + bd = O(bd‬‬

‫ﭘﯿﭽﯿﺪﮔﯽ ﺣﺎﻓﻈﻪ؟؟ )‪O(bd‬‬ ‫‪‬‬

‫ﺑﻬﯿﻨﻪ ؟؟ ﺑﻠﻪ‪) ،‬ﻣﺎﻧﻨﺪ ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ(‬ ‫‪‬‬

‫ﻣﯽ ﺗﻮاﻧﺪ ﺑﺮاي ﮐﺎوش درﺧﺖ ﺟﺴﺘﺠﻮي ﻫﺰﯾﻨﻪ ﯾﮑﻨﻮاﺧﺖ اﺻﻼح ﺷﻮد!!!‬ ‫‪‬‬

‫ﭘﯿﭽﯿﺪﮔﯽ زﻣﺎﻧﯽ ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري‬ ‫ﮐﺎرآﯾﯽ ‪IDS‬‬


‫‪63‬‬ ‫‪64‬‬

‫)‪DLS (l = 0‬‬ ‫‪0‬‬ ‫‪ ‬ﺗﻌﺪاد ﮔﺮه ﻫﺎي ﺗﻮﻟﯿﺪ ﺷﺪه ﺗﻮﺳﻂ ‪ DLS‬در ﻋﻤﻖ ‪ d‬ﺑﺎ ﻓﺎﮐﺘﻮر اﻧﺸﻌﺎب ‪:b‬‬
‫)‪DLS (l = 1‬‬ ‫‪b1‬‬ ‫‪NDLS= b + b2 + … + bd-1 + bd‬‬
‫)‪DLS (l = 2‬‬ ‫‪b1 + b 2‬‬ ‫‪ ‬ﺗﻌﺪاد ﮔﺮه ﻫﺎي ﺗﻮﻟﯿﺪ ﺷﺪه ﺗﻮﺳﻂ ‪ IDS‬در ﻋﻤﻖ ‪ d‬ﺑﺎ ﻓﺎﮐﺘﻮر اﻧﺸﻌﺎب ‪:b‬‬
‫ﺳﺮﺑﺎر‬ ‫)‪≤ NDLS (l = d‬‬ ‫‪NIDS= db1 +(d-1) b2 + … + 2bd-1 + 1bd‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪ ‬اﮔﺮ ‪ b = 10‬و ‪: d = 5‬‬
‫‪NDLS=10 + 100 + 1,000 + 10,000 + 100,000 = 111,110‬‬
‫)‪DLS (l = d - 1‬‬ ‫‪b1 + b2 + b3 + … + bd – 1‬‬ ‫‪NIDS= 50 + 400 + 3,000 + 20,000 + 100,000 = 123,450‬‬
‫)‪DLS (l = d‬‬ ‫‪b1 + b2 + b3 + … + bd – 1 + bd‬‬
‫‪ ‬ﻣﺤﺎﺳﺒﻪ ﻣﯿﺰان ﺳﺮﺑﺎر‪:‬‬
‫‪NIDS = db1 + (d – 1)b2 + (d – 2)b3 + … + 2bd – 1 + bd‬‬ ‫‪((123450 – 111110)/111110)* 100 = 11%‬‬
‫ﺑﺎ اﻓﺰاﯾﺶ ﻓﺎﮐﺘﻮر اﻧﺸﻌﺎب ‪ b‬ﻣﯿﺰان ﺳﺮﺑﺎر ﮐﺎﻫﺶ ﻣﯽ ﯾﺎﺑﺪ‪.‬‬ ‫◦‬
‫در ﺑﺪﺗﺮﯾﻦ ﺣﺎﻟﺖ ‪ ،b = 2‬ﺳﺮﺑﺎر ‪ 100%‬اﺳﺖ و اﯾﻦ ﺟﺴﺘﺠﻮ دو ﺑﺮاﺑﺮ زﻣﺎن ﻣﯽ ﺑﺮد‪.‬‬ ‫◦‬

‫‪١۶‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﺟﺴﺘﺠﻮي دوﻃﺮﻓﻪ‬ ‫ﺟﺴﺘﺠﻮي دوﻃﺮﻓﻪ‬


‫‪65‬‬ ‫‪66‬‬

‫اﯾﺪه‪ :‬اﻧﺠﺎم ﺟﺴﺘﺠﻮ در دو ﺟﻬﺖ ﺑﻪ ﻃﻮر ﻫﻤﺰﻣﺎن‬ ‫‪‬‬ ‫ﭘﯿﭽﯿﺪﮔﯽ زﻣﺎﻧﯽ‪O(bd/2) :‬‬ ‫‪‬‬

‫‪ ‬رو ﺑﻪ ﺟﻠﻮ‪ :‬از ﺣﺎﻟﺖ اوﻟﯿﻪ ﺑﻪ ﺳﻤﺖ ﺣﺎﻟﺖ ﻫﺪف‬


‫‪ ‬رو ﺑﻪ ﻋﻘﺐ‪ :‬از ﺣﺎﻟﺖ ﻫﺪف ﺑﻪ ﺳﻤﺖ ﺣﺎﻟﺖ اوﻟﯿﻪ‬ ‫ﭘﯿﭽﯿﺪﮔﯽ ﺣﺎﻓﻈﻪ‪O(bd/2) :‬‬ ‫‪‬‬
‫ﻣﯽ ﺑﺎﺷﺪ‬ ‫‪bd‬‬ ‫ﺑﺴﯿﺎر ﮐﻤﺘﺮ از‬ ‫‪bd/2 +‬‬ ‫‪bd/2‬‬ ‫اﻧﮕﯿﺰه‪:‬‬ ‫‪‬‬ ‫‪ ‬ﺑﻪ ﻣﻨﻈﻮر ﺑﺮرﺳﯽ ﺗﻌﻠﻖ ﺣﺪاﻗﻞ ﯾﮑﯽ از درﺧﺖ ﻫﺎ ﺑﺎﯾﺪ در ﺣﺎﻓﻈﻪ ﻧﮕﻬﺪاري ﺷﻮد‬
‫‪ ‬ﻣﺼﺮف ﺣﺎﻓﻈﻪ ﻧﻤﺎﯾﯽ‪ ،‬ﺑﺰرﮔﺘﺮﯾﻦ ﺿﻌﻒ ﺟﺴﺘﺠﻮي دوﻃﺮﻓﻪ ﻣﯽ ﺑﺎﺷﺪ‬
‫ﻣﺜﺎل‪ :‬اﮔﺮ راه ﺣﻞ ﯾﮏ ﻣﺴﺄﻟﻪ در ﻋﻤﻖ ‪ d = 6‬ﺑﺎﺷﺪ و ‪ b = 10‬آﻧﮕﺎه‬ ‫‪‬‬

‫‪ ‬ﺟﺴﺘﺠﻮي دو ﻃﺮﻓﻪ ) در ﻫﺮ دو ﻃﺮف ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ( ‪ 22,200 ‬ﮔﺮه‬ ‫ﮐﺎﻣﻞ ﺑﻮدن و ﺑﻬﯿﻨﮕﯽ )ﺑﺮاي ﻫﺰﯾﻨﻪ ﻫﺎي ﮔﺎم ﯾﮑﺴﺎن(‪:‬‬ ‫‪‬‬

‫‪ ‬ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ ‪ 11,111,000 ‬ﮔﺮه‬ ‫‪ ‬اﮔﺮ در ﻫﺮ دو ﻃﺮف از ﺟﺴﺘﺠﻮي ﺳﻄﺤﯽ اﺳﺘﻔﺎده ﺷﻮد‬

‫ﺧﻼﺻﻪ اﻟﮕﻮرﯾﺘﻢ ﻫﺎ‬ ‫ﺣﺎﻻت ﺗﮑﺮاري‬


‫‪67‬‬ ‫‪68‬‬

‫ﺷﮑﺴﺖ در ﺗﺸﺨﯿﺺ ﺣﺎﻟﺖ ﻫﺎي ﺗﮑﺮاي ﻣﯽ ﺗﻮاﻧﺪ ﯾﮏ ﻣﺴﺄﻟﻪ ﺧﻄﯽ را ﺑﻪ‬ ‫‪‬‬

‫ﯾﮏ ﻣﺴﺄﻟﻪ ﻧﻤﺎﯾﯽ ﺗﺒﺪﯾﻞ ﮐﻨﺪ!‬

‫‪١٧‬‬
‫‪١٠/١٣/١۴٣۶‬‬

‫ﺟﺴﺘﺠﻮي ﮔﺮاف‬ ‫ﺧﻼﺻﻪ‬


‫‪69‬‬ ‫‪70‬‬

‫ﻓﺮﻣﻮﻟﻪ ﺳﺎزي ﻣﺴﺄﻟﻪ اﻏﻠﺐ ﻧﯿﺎز ﺑﻪ اﻧﺘﺰاع ﺟﺰﯾﯿﺎت ﻣﺴﺄﻟﻪ دارد‪ ،‬ﺗﺎ ﺑﺘﻮان‬ ‫‪‬‬
‫ﻓﻀﺎي ﺣﺎﻟﺘﯽ ﺑﺪﺳﺖ آوردﮐﻪ ﺑﻪ ﺻﻮرت ﻣﻘﺮون ﺑﻪ ﺻﺮﻓﻪ اي ﻗﺎﺑﻞ ﮐﺎوش‬
‫ﮐﺮد ن و ﺟﺴﺘﺠﻮ ﺑﺎﺷﺪ‪.‬‬

‫اﻧﻮاع اﺳﺘﺮاﺗﮋي ﻫﺎي ﻧﺎآﮔﺎﻫﺎﻧﻪ وﺟﻮد دارد‪.‬‬ ‫‪‬‬

‫ﻣﺼﺮف ﺣﺎﻓﻈﻪ ﺟﺴﺘﺠﻮي ﻋﻤﯿﻖ ﮐﻨﻨﺪه ﺗﮑﺮاري داراي ﻣﺮﺗﺒﻪ ﺧﻄﯽ ﻣﯽ‬ ‫‪‬‬
‫ﺑﺎﺷﺪ و زﻣﺎن ﺧﯿﻠﯽ ﺑﯿﺸﺘﺮي ﻧﺴﺒﺖ ﺑﻪ ﺳﺎﯾﺮ روﺷﻬﺎي ﻧﺎآﮔﺎﻫﺎﻧﻪ ﻣﺼﺮف‬
‫ﻧﻤﯽ ﮐﻨﺪ‪.‬‬

‫‪١٨‬‬

You might also like