ﺑﻪ ﻧﺎم ﺧﺪا Modern Information Retrieval Department of Computer Engineering Sharif University of Technology Spring 2011 – CE 40-324 Assignment #1 - Solution -1 (aدر ﺟﺪول روﺑﻪرو inverted indexﺑﺮاي ﻣﺘﻦﻫﺎي ذﻛﺮ ﺷﺪه آورده ﺷﺪه اﺳﺖ. ﻟﻐﺎت ﺑﻪ ﺗﺮﺗﻴﺐ اﻟﻔﺒﺎﻳﻲ ﻣﺮﺗﺐ ﻣﻲﺷﻮﻧﺪ ،اوﻟﻴﻦ ﺧﺎﻧﻪ در ﻫﺮ ردﻳﻒ ﻟﻐﺖ ،دوﻣﻴﻦ ﺧﺎﻧﻪ document frequencyو ﺳﻮﻣﻴﻦ ﺧﺎﻧﻪ posting listاﺳﺖ. (bﺟﺪول زﻳﺮ positional indexرا ﻧﺸﺎن ﻣﻲدﻫﺪ ﻛﻬﻤﺸﺎﺑﻪ ﻗﺴﻤﺖ ﻗﺒﻞ اﺳﺖ .ﺗﻨﻬﺎ ﺗﻔﺎوت در posting listﻫﺎ اﺳﺖ ﻛﻪ در آنﻫﺎ positionﻧﻴﺰ ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ. >3: <٢ >3: <1 >3: <3 3 >2: <6 1 از >3: <4 1 ﺑﺮو >1: <2,6 3 ﺑﻪ >2: <3 1 دﺑﺴﺘﺎن >2: <1 >1: <1 3 رﺿﺎ >2: <5 >1: <5 2 ﻋﻠﻲ >1: <7 1 ﻛﺘﺎﺑﺨﺎﻧﻪ >1: <3 3 ﻣﺪرﺳﻪ >2: <8 1 ﻣﻲآﻳﺪ >1: <4,8 2 ﻣﻲرود >2: <2 >2: <7 >2: <4 1 3 3 2 1 از 3 1 ﺑﺮو 1 3 ﺑﻪ 2 1 دﺑﺴﺘﺎن 2 1 3 رﺿﺎ 2 1 2 ﻋﻠﻲ 1 1 ﻛﺘﺎﺑﺨﺎﻧﻪ 1 3 ﻣﺪرﺳﻪ 2 1 ﻣﻲآﻳﺪ 1 2 ﻣﻲرود 2 2 2 (cﺑﺮاي ﭘﺎﺳﺦ ﺑﻪ ﭘﺮﺳﻤﺎن ذﻛﺮ ﺷﺪه اﺑﺘﺪا دو ﻟﻐﺖ »ﻛﺘﺎﺑﺨﺎﻧﻪ« و »ﻋﻠﻲ« در ﻣﻴﺎن ﻟﻐﺎت ﺟﺴﺘﺠﻮ ﻣﻲﺷﻮﻧﺪ .ﺳﭙﺲ posting listﻣﺮﺑﻮط ﺑﻪ آنﻫﺎ ﺑﺎزﻳﺎﺑﻲ ﻣﻲﺷﻮد .اﻳﻦ دو posting listﺑﺎﻳﺪ ﺑﺎ ﻫﻢ andﺷﻮﻧﺪ ﺗﺎ ﻣﺘﻦﻫﺎي ﻣﺸﺘﺮك از آنﻫﺎ ﺑﻪ دﺳﺖ آﻳﺪ .ﺑﺮاي اﻳﻦ ﻛﺎر دو اﺷﺎرهﮔﺮ در اﺑﺘﺪاي دو ﻟﻴﺴﺖ ﻗﺮار ﻣﻲﮔﻴﺮد .در اوﻟﻴﻦ ﮔﺎم ﻣﺘﻦ 1در ﻫﺮ دو وﺟﻮد دارد .ﭘﺲ اﻳﻦ ﻣﺘﻦ ﺑﻪ ﺟﻮاب اﺿﺎﻓﻪ ﻣﻲﺷﻮد .ﺳﭙﺲ ﻫﺮ دو اﺷﺎرهﮔﺮ ﻳﻚ ﻗﺪم ﺑﻪ ﺟﻠﻮ ﻣﻲروﻧﺪ .در ﮔﺎم ﺑﻌﺪي ﻟﻴﺴﺖ ﻣﺮﺑﻮط ﺑﻪ »ﻛﺘﺎﺑﺨﺎﻧﻪ« ﺗﻤﺎم ﻣﻲﺷﻮد در ﻧﺘﻴﺠﻪ ﻛﺎر ﭘﺎﻳﺎن ﻣﻲﻳﺎﺑﺪ و ﺟﻮاب ﻣﺘﻦ 1ﺧﻮاﻫﺪ ﺑﻮد. (dﭘﺎﺳﺦ اﻳﻦ ﭘﺮﺳﻤﺎن ﻣﺘﻦﻫﺎﻳﻲ اﺳﺖ ﻛﻪ در آنﻫﺎ ﻟﻐﺖ »رﺿﺎ« ﺣﺪاﻛﺜﺮ ﺳﻪ ﻟﻐﺖ ﻓﺎﺻﻠﻪ از ﻫﺮ ﻃﺮف از ﻟﻐﺖ »ﻣﻲرود« ﻗﺮار ﮔﺮﻓﺘﻪ ﺑﺎﺷﺪ. ﺑﻨﺎﺑﺮاﻳﻦ ﭘﺎﺳﺦ ﻣﺘﻦ 1و 2ﺧﻮاﻫﺪ ﺑﻮد. -2 :Stop lists (aاﺳﺘﻔﺎده از recall ،Stop listsرا ﺑﻴﺸﺘﺮ ﻣﻲﻛﻨﺪ ﭼﻮن ﺗﻤﺎم اﺳﻨﺎد ﻣﺮﺑﻮط ﻗﺒﻠﻲ ﻫﻤﭽﻨﺎن ﺑﺎزﻳﺎﺑﻲ ﻣﻲﺷﻮﻧﺪ و ﺗﻌﺪادي ﺳﻨﺪ ﻫﻢ در ﺟﻮاب ﺧﻮاﻫﺪ آﻣﺪ ﻛﻪ ﻳﺎ در ﺣﺎﻟﺖ ﻗﺒﻞ وﺟﻮد ﻧﺪاﺷﺘﻪاﻧﺪ و ﻧﺎﻣﺮﺑﻮط ﻫﺴﺘﻨﺪ و ﻳﺎ در ﺣﺎﻟﺖ ﻗﺒﻞ وﺟﻮد ﻧﺪاﺷﺘﻪاﻧﺪ و ﻣﺮﺑﻮط ﻫﺴﺘﻨﺪ ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل اﮔﺮ ﻛﺎرﺑﺮ ﻋﺒﺎرت »از اردﻳﺒﻬﺸﺖ ﺗﺎ ﺷﻬﺮﻳﻮر« را ﺟﺴﺘﺠﻮ ﻛﻨﺪ ،ﺑﺎ ﺣﺬف ﻟﻐﺎت »از« و »ﺗﺎ« ﻋﺒﺎرت »از اردﻳﺒﻬﺸﺖ اﻟﻲ ﺷﻬﺮﻳﻮر« ﻫﻢ ﺑﺎزﻳﺎﺑﻲ ﻣﻲ ﺷﻮد ﻛﻪ ﻣﻄﻠﻮب ﻛﺎرﺑﺮ اﺳﺖ .ﺑﺎ ﺣﺬف Stop wordﻫﺎ precisionﭘﺎﻳﻴﻦ ﻣﻲآﻳﺪ ﻣﺎﻧﻨﺪ ﻋﺒﺎرت »از ﺧﺎﻧﻪ ﺗﺎ ﻣﺪرﺳﻪ« ﻛﻪ ﺑﺎ ﺣﺬف ﻛﻠﻤﺎت اﺿﺎﻓﻲ ﺑﻪ ﻋﺒﺎرت »ﺧﺎﻧﻪ ﻣﺪرﺳﻪ« ﺗﺒﺪﻳﻞ ﻣﻲﺷﻮد و ﻣﻤﻜﻦ اﺳﺖ ﻣﺘﻮﻧﻲ ﻛﻪ ﺑﺎزﻳﺎﺑﻲ ﻣﻲﻛﻨﺪ ﻣﻮرد ﻧﻈﺮ ﻛﺎرﺑﺮ ﻧﺒﺎﺷﺪ .در اﻳﻦ ﺣﺎﻟﺖ ﺗﻌﺪاد اﺳﻨﺎد ﻛﻪ ﺑﺎزﻳﺎﺑﻲ ﺷﺪهاﻧﺪ ﺑﻴﺸﺘﺮ ﺷﺪه وﻟﻲ ﺗﻌﺪاد اﺳﻨﺎد ﻣﺮﺑﻮط ﺑﺎزﻳﺎﺑﻲ ﺷﺪه ﺛﺎﺑﺖ ﻣﻲﻣﺎﻧﺪ در ﻧﺘﻴﺠﻪ precisionﻛﺎﻫﺶ ﺧﻮاﻫﺪ ﻳﺎﻓﺖ. :Stemming (bاﺳﺘﻔﺎده از Stemmingﻣﻲﺗﻮاﻧﺪ recallرا اﻓﺰاﻳﺶ دﻫﺪ ﭼﻮن ﻣﻲﺗﻮاﻧﺪ اﺳﻨﺎدي را ﺑﺎزﻳﺎﺑﻲ ﻛﻨﺪ ﻛﻪ دﻗﻴﻘﺎ ﻋﺒﺎرت ﻣﻮرد ﻧﻈﺮ در آنﻫﺎ ﻧﺒﺎﺷﺪ وﻟﻲ اﺳﻨﺎد ﻣﺮﺑﻮط ﺑﺎﺷﻨﺪ .ﺑﻪ ﻃﻮر ﻣﺜﺎل ﺑﺮاي ﻋﺒﺎرت »درﺧﺘﺎن ﺳﺒﺰ« اﺳﻨﺎدي ﻛﻪ ﻋﺒﺎرت »درﺧﺖ ﺳﺒﺰ« را دارﻧﺪ ﻧﻴﺰ ﺑﺎزﻳﺎﺑﻲ ﻣﻲ- ﺷﻮﻧﺪ ﻛﻪ ﺟﺰو اﺳﻨﺎد ﻣﺮﺑﻮط ﻫﺴﺘﻨﺪ .ﻫﻤﭽﻨﻴﻦ ﻣﻲﺗﻮاﻧﺪ precisionرا ﻛﻢ ﻛﻨﺪ ﭼﺮا ﻛﻪ ﺗﻌﺪاد اﺳﻨﺎد ﺑﺎزﻳﺎﺑﻲ ﺷﺪه ﺑﺎ Stemmingاﻓﺰاﻳﺶ ﻣﻲ- ﻳﺎﺑﺪ .اﮔﺮ ﺗﻌﺪاد اﺳﻨﺎد ﻣﺮﺑﻮط ﺑﺎزﻳﺎﺑﻲ ﺷﺪه ﺑﻪ ﻫﻤﺎن ﻧﺴﺒﺖ اﻓﺰاﻳﺶ ﻧﻴﺎﺑﺪ precisionﻛﻢ ﻣﻲﺷﻮد .اﻳﻦ رﺧﺪاد اﻏﻠﺐ زﻣﺎﻧﻲ اﺗﻔﺎق ﻣﻲاﻓﺘﺪ ﻛﻪ ﻣﻨﻈﻮر ﻛﺎرﺑﺮ دﻗﻴﻘﺎ ﻋﺒﺎرت وارد ﺷﺪه ﺑﺎﺷﺪ .ﺑﻪ ﻃﻮر ﻣﺜﺎل ﺑﺮاي ﭘﺮﺳﻤﺎن »ﺳﻤﻔﻮﻧﻲ ﻣﺮدﮔﺎن« ﺟﺴﺘﺠﻮي ﭘﺮﺳﻤﺎن »ﺳﻤﻔﻮﻧﻲ ﻣﺮد« اﺳﻨﺎد ﻧﺎﻣﺮﺗﺒﻂ زﻳﺎدي ﺑﺎزﻳﺎﺑﻲ ﻣﻲﻛﻨﺪ و دﻗﺖ ﻛﻢ ﻣﻲﺷﻮد. :Phrase indexing (cﺑﺮاي ﭘﺮﺳﻤﺎنﻫﺎي phraseاﺳﺘﻔﺎده از phrase indexingدﻗﺖ را ﺑﺎﻻ ﺑﺮده و recallرا ﻛﻢ ﻣﻲﻛﻨﺪ .ﺑﻪ ﻃﻮر ﻣﺜﺎل ﻋﺒﺎرت »ﻛﻼس دوم راﻫﻨﻤﺎﻳﻲ« ﺑﺪون phrase indexingﻣﻲﺗﻮاﻧﺪ ﺳﻨﺪ »ﻣﺪﻳﺮ ﻣﻌﻠﻢ را ﭘﺲ از زﻧﮓ دوم ﺑﻪ ﻛﻼس راﻫﻨﻤﺎﻳﻲ ﻛﺮد« را ﺑﺎزﻳﺎﺑﻲ ﻛﻨﺪ در ﺣﺎﻟﻲ ﻛﻪ ﺳﻨﺪ ﻣﺮﺗﺒﻄﻲ ﻧﻴﺴﺖ وﻟﻲ ﺑﺎ phrase indexingاي دو ﻛﻠﻤﻪاي ﻓﻘﻂ اﺳﻨﺎدي ﺑﺎزﻳﺎﺑﻲ ﻣﻲﺷﻮﻧﺪ ﻛﻪ ﻋﺒﺎرات »ﻛﻼس دوم« و »دوم راﻫﻨﻤﺎﻳﻲ« در آنﻫﺎ ﻣﻮﺟﻮد ﺑﺎﺷﺪ در ﻧﺘﻴﺠﻪ اﺳﻨﺎد ﻧﺎﻣﺮﺗﺒﻂ ﻛﻤﺘﺮي ﺑﺎزﻳﺎﺑﻲ ﻣﻲﺷﻮﻧﺪ ﭘﺲ دﻗﺖ ﺑﺎﻻ ﻣﻲرود Recall .ﻛﻢ ﻣﻲﺷﻮد ﭼﻮن اﺳﻨﺎد ﻣﺮﺗﺒﻂ ﻛﻤﺘﺮي ﻣﻤﻜﻦ اﺳﺖ ﺑﺎزﻳﺎﺑﻲ ﺷﻮﻧﺪ ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﻋﺒﺎرت »ﻛﻼس در ﭘﺎﻳﻪي دوم راﻫﻨﻤﺎﻳﻲ« ﺑﺎ phrase indexingﺑﺎزﻳﺎﺑﻲ ﻧﻤﻲﺷﻮد در ﺣﺎﻟﻲ ﻛﻪ ﻣﻄﻠﻮب ﻛﺎرﺑﺮ اﺳﺖ. (dﻟﻐﺎت ﻫﻢ ﻣﻌﻨﻲ :ﮔﺴﺘﺮش ﭘﺮﺳﻤﺎن ﺑﺎ ﻛﻠﻤﺎت ﻫﻢ ﻣﻌﻨﻲ دو ﺣﺎﻟﺖ ﻣﺨﺘﻠﻒ ﻣﻲﺗﻮاﻧﺪ داﺷﺘﻪ ﺑﺎﺷﺪ :اﮔﺮ ﻛﻠﻤﺎت ﻫﻢ ﻣﻌﻨﻲ ،ﻛﻠﻤﺎت ﻣﻮرد ﻧﻈﺮ ﻛﺎرﺑﺮ ﺑﺎﺷﻨﺪ ﻣﺎﻧﻨﺪ »ﻣﺎﺷﻴﻦ« ﺑﺮاي ﻟﻐﺖ »اﺗﻮﻣﺒﻴﻞ« در اﻳﻦ ﺻﻮرت دﻗﺖ ﺑﺎﻻ ﻣﻲرود ﭼﻮن ﻧﺴﺒﺖ ﺑﻴﺸﺘﺮي از اﺳﻨﺎد ﺑﺎزﻳﺎﺑﻲ ﺷﺪه اﺳﻨﺎد ﻣﺮﺗﺒﻂ ﺧﻮاﻫﻨﺪ ﺑﻮد و recallﻫﻢ ﺑﺎﻻ ﻣﻲرود ﭼﻮن اﺳﻨﺎد ﻣﺮﺗﺒﻂ ﺑﻴﺸﺘﺮي ﺑﺎزﻳﺎﺑﻲ ﻣﻲﺷﻮﻧﺪ .اﮔﺮ ﻛﻠﻤﺎت ﻫﻢ ﻣﻌﻨﻲ ،ﻛﻠﻤﺎت ﻣﻮرد ﻧﻈﺮ ﻛﺎرﺑﺮ ﻧﺒﺎﺷﻨﺪ ﺑﻪ ﻃﻮر ﻣﺜﺎل در ﺻﻮرﺗﻲ ﻛﻪ ﻓﺮدي ﺑﺎ ﻧﺎم »ﺳﭙﻬﺮ آزادي« ﺟﺴﺘﺠﻮ ﺷﻮد ﺑﻪ ﻫﻤﺮاه آن »آﺳﻤﺎن آزادي« ﻧﻴﺰ ﺟﺴﺘﺠﻮ ﺷﻮد ،اﺳﻨﺎد ﻧﺎﻣﺮﺗﺒﻂ زﻳﺎدي ﻋﻼوه ﺑﺮ اﺳﻨﺎد ﻣﺮﺗﺒﻂ ﺑﺎزﻳﺎﺑﻲ ﺧﻮاﻫﻨﺪ ﺷﺪ و اﻳﻦ دﻗﺖ را ﭘﺎﻳﻴﻦ ﻣﻲآورد وﻟﻲ recallﺗﻐﻴﻴﺮي ﻧﻤﻲﻛﻨﺪ ﭼﻮن اﺳﻨﺎد ﻣﺮﺗﺒﻂ ﻗﺒﻠﻲ ﻫﻤﭽﻨﺎن ﺑﺎزﻳﺎﺑﻲ ﻣﻲﺷﻮﻧﺪ. -3 (aﻣﻲﺗﻮان در ) O(x+yﺟﻮاب را ﺑﻪ دﺳﺖ آورد ﺑﺪﻳﻦ ﺻﻮرت ﻛﻪ ﻳﻚ اﺷﺎرهﮔﺮ ﺑﻪ اول ﻟﻴﺴﺖ aو ﻳﻚ اﺷﺎرهﮔﺮ ﺑﻪ اول ﻟﻴﺴﺖ bدر ﻧﻈﺮ ﻣﻲ- ﮔﻴﺮﻳﻢ .در ﻫﺮ ﻣﺮﺣﻠﻪ اﮔﺮ ﻫﺮ دو ﻋﺪدي ﻛﻪ اﺷﺎرهﮔﺮﻫﺎ ﺑﻪ آنﻫﺎ اﺷﺎره ﻣﻲﻛﻨﻨﺪ ﺑﺮاﺑﺮ ﺑﻮد ﻫﺮ دو اﺷﺎرهﮔﺮ را ﺑﻪ ﺟﻠﻮ ﻣﻲﺑﺮﻳﻢ .اﮔﺮ ﻋﺪدي ﻛﻪ 2 اﺷﺎرهﮔﺮ aﺑﻪ آن اﺷﺎره ﻣﻲﻛﻨﺪ ﻛﻮﭼﻜﺘﺮ ﺑﻮد ﻋﺪد را ﺑﻪ ﻟﻴﺴﺖ ﺟﻮاب اﺿﺎﻓﻪ ﻛﺮده و اﺷﺎرهﮔﺮ aرا ﺑﻪ ﺟﻠﻮ ﻣﻲﺑﺮﻳﻢ .اﮔﺮ ﻋﺪدي ﻛﻪ اﺷﺎرهﮔﺮ b ﺑﻪ آن اﺷﺎره ﻣﻲﻛﻨﺪ ﻛﻮﭼﻜﺘﺮ ﺑﻮد اﺷﺎرهﮔﺮ bرا ﺑﻪ ﺟﻠﻮ ﻣﻲﺑﺮﻳﻢ .اﮔﺮ در ﭘﺎﻳﺎن از ﻟﻴﺴﺖ aﭼﻴﺰي ﺑﺎﻗﻲ ﻣﺎﻧﺪه ﺑﻮد در ﺣﺎﻟﻲ ﻛﻪ ﻟﻴﺴﺖ bﺗﻤﺎم ﺷﺪه ﺗﻤﺎﻣﻲ اﻳﻦ ﻋﺪدﻫﺎ را ﺑﻪ ﻟﻴﺴﺖ ﺟﻮاب اﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ. (bﻧﻤﻲﺗﻮان در ) O(x+yﺟﻮاب را ﺑﻪ دﺳﺖ آورد .ﻳﻚ راه ﺣﻞ اﻳﻦ اﺳﺖ ﻛﻪ ﻣﺎﻧﻨﺪ ﻗﺴﻤﺖ ﻗﺒﻞ ﻳﻚ اﺷﺎرهﮔﺮ ﺑﻪ اول ﻟﻴﺴﺖ aو ﻳﻚ اﺷﺎرهﮔﺮ ﺑﻪ اول ﻟﻴﺴﺖ bدر ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ .ﻫﻤﭽﻨﻴﻦ ﺑﺎﻳﺪ آﺧﺮﻳﻦ ﻋﺪدي ﻛﻪ در ﻟﻴﺴﺖ bﺑﻮده را ﻧﻴﺰ ﻧﮕﻬﺪارﻳﻢ Max .ﺑﻴﻦ آﺧﺮﻳﻦ ﻋﺪدي ﻛﻪ در ﻟﻴﺴﺖ bﺑﻮده و آﺧﺮﻳﻦ ﻋﺪد از ﻟﻴﺴﺖ ﺟﻮاب را cدر ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ .در ﻫﺮ ﻣﺮﺣﻠﻪ اﮔﺮ ﻫﺮ دو ﻋﺪدي ﻛﻪ اﺷﺎرهﮔﺮﻫﺎ ﺑﻪ آنﻫﺎ اﺷﺎره ﻣﻲﻛﻨﻨﺪ ﺑﺮاﺑﺮ ﺑﻮد، از cﺗﺎ ﻋﺪدي ﻛﻪ اﺷﺎرهﮔﺮﻫﺎ ﺑﻪ آن اﺷﺎره ﻣﻲﻛﻨﻨﺪ ) ﺷﺎﻣﻞ ﺧﻮد ﻋﺪد ﻫﻢ ﻣﻲﺷﻮد ( را ﺑﻪ ﻟﻴﺴﺖ ﺟﻮاب اﺿﺎﻓﻪ ﻛﺮده وﻫﺮ دو اﺷﺎرهﮔﺮ را ﺑﻪ ﺟﻠﻮ ﻣﻲﺑﺮﻳﻢ .اﮔﺮ ﻋﺪدي ﻛﻪ اﺷﺎرهﮔﺮ aﺑﻪ آن اﺷﺎره ﻣﻲﻛﻨﺪ ﻛﻮﭼﻜﺘﺮ ﺑﻮد ،از cﺗﺎ ﻋﺪدي ﻛﻪ اﺷﺎرهﮔﺮ aﺑﻪ آن اﺷﺎره ﻣﻲﻛﻨﺪ ) ﺷﺎﻣﻞ ﺧﻮد ﻋﺪد ﻫﻢ ﻣﻲﺷﻮد ( را ﺑﻪ ﻟﻴﺴﺖ ﺟﻮاب اﺿﺎﻓﻪ ﻛﺮده و اﺷﺎرهﮔﺮ aرا ﺑﻪ ﺟﻠﻮ ﻣﻲﺑﺮﻳﻢ .ﭼﺮا ﻛﻪ اﻋﺪاد ﺑﻴﻨﺎﺑﻴﻨﻲ در ﻟﻴﺴﺖ bﻧﻴﺴﺘﻨﺪ ﭘﺲ ﺟﺰو ﺟﻮاب ﻣﻲ- ﺑﺎﺷﻨﺪ .اﮔﺮ ﻋﺪدي ﻛﻪ اﺷﺎرهﮔﺮ bﺑﻪ آن اﺷﺎره ﻣﻲﻛﻨﺪ ﻛﻮﭼﻜﺘﺮ ﺑﻮد ،از cﺗﺎ ﻋﺪدي ﻛﻪ اﺷﺎرهﮔﺮ bﺑﻪ آن اﺷﺎره ﻣﻲﻛﻨﺪ ) ﺷﺎﻣﻞ ﺧﻮد ﻋﺪد ﻧﻤﻲﺷﻮد ( را ﺑﻪ ﻟﻴﺴﺖ ﺟﻮاب اﺿﺎﻓﻪ ﻛﺮده و اﺷﺎرهﮔﺮ bرا ﺑﻪ ﺟﻠﻮ ﻣﻲﺑﺮﻳﻢ .اﮔﺮ در ﭘﺎﻳﺎن از ﻟﻴﺴﺖ aﭼﻴﺰي ﺑﺎﻗﻲ ﻣﺎﻧﺪه ﺑﻮد در ﺣﺎﻟﻲ ﻛﻪ ﻟﻴﺴﺖ bﺗﻤﺎم ﺷﺪه از cﺗﺎ آﺧﺮﻳﻦ ﻋﺪد ﻣﻌﺘﺒﺮ را ﺑﻪ ﻟﻴﺴﺖ ﺟﻮاب اﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ .اﮔﺮ در ﭘﺎﻳﺎن از ﻟﻴﺴﺖ bﭼﻴﺰي ﺑﺎﻗﻲ ﻣﺎﻧﺪه ﺑﻮد در ﺣﺎﻟﻲ ﻛﻪ ﻟﻴﺴﺖ aﺗﻤﺎم ﺷﺪه از cﺗﺎ آﺧﺮﻳﻦ ﻋﺪد ﻣﻌﺘﺒﺮ ﻏﻴﺮ از اﻋﺪاد ﺑﺎﻗﻲ ﻣﺎﻧﺪه در ﻟﻴﺴﺖ bرا ﺑﻪ ﻟﻴﺴﺖ ﺟﻮاب اﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ .زﻣﺎن اﺟﺮاي اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ) O(nاﺳﺖ ﻛﻪ nﺗﻌﺪاد ﻛﻞ اﺳﻨﺎد اﺳﺖ. راه دﻳﮕﺮ ﺗﺒﺪﻳﻞ اﻳﻦ ﭘﺮﺳﻤﺎن ﺑﻪ ﻳﻚ ﭘﺮﺳﻤﺎن andاﺳﺖ ﻛﻪ ﺑﺮاﺑﺮ ) NOT(NOT a AND bﺧﻮاﻫﺪ ﺑﻮد .در اﻳﻦ روش ﻧﻴﺰ ﺑﺮاي NOTﮔﺮﻓﺘﻦ از ﻳﻚ ﻟﻴﺴﺖ ،زﻣﺎن اﺟﺮا ) O(nاﺳﺖ ﭼﺮا ﻛﻪ ﺑﺎﻳﺪ از ﻟﻴﺴﺖ ﻛﻞ اﺳﻨﺎد ،اﺳﻨﺎد ﻣﺮﺑﻮط ﺑﻪ ﻣﺠﻤﻮﻋﻪي ﻣﺮﺑﻮﻃﻪ را ﺣﺬف ﻛﺮد .در ﻧﺘﻴﺠﻪ زﻣﺎن اﺟﺮاي اﻟﮕﻮرﻳﺘﻢ ) O(2n+x+yﻳﻌﻨﻲ ) O(nﺧﻮاﻫﺪ ﺑﻮد. -4 (aﺧﻴﺮ ﻛﺎﻓﻲ ﻧﻴﺴﺖ ﭼﺮا ﻛﻪ در ﻳﻚ ﺟﻤﻠﻪ ﺑﻮدن ﻫﻢ ﺑﺎﻳﺪ ﻟﺤﺎظ ﺷﻮد .ﺑﻪ ﻫﻤﻴﻦ دﻟﻴﻞ ﺟﻤﻠﻪﻫﺎي داﺧﻞ ﻫﺮ ﺳﻨﺪ ﺑﻪ ﻋﻨﻮان واﺣﺪ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮﻧﺪ. (bدر اﻳﻦ ﺣﺎﻟﺖ ﺳﺎﺧﺘﺎر positional indexﺑﺎﻳﺪ در ﺳﻪ ﺳﻄﺢ ﺗﻌﺮﻳﻒ ﺷﻮد ،ﺳﻄﺢ اول اﺳﻨﺎد ،ﺳﻄﺢ دوم ﺟﻤﻼت داﺧﻞ ﻫﺮ ﺳﻨﺪ و ﺳﻄﺢ ﺳﻮم posting listﻫﺎ ﺧﻮاﻫﻨﺪ ﺑﻮد. (c )POSITIONALSENTCIALINTERSECT(p1, p2, k )( ← answer while p1 ≠ NIL and p2 ≠ NIL )do if docID(p1) = docID(p2 )then psen1 ← positions(p1 )psen2 ← positions(p2 while psen1 ≠ NIL and psen2 ≠ NIL )do if senID(psen1) = senID(psen2 )( ← then l 1. 2. 3. 4. 5. 6. 7. 8. 9. )pp1 ← positions(psen1 10. )pp2 ← positions(psen2 while pp1 ≠ NIL do while pp2 ≠ NIL do if |pos(pp1) − pos(pp2)| ≤ k ))then ADD(l, pos(pp2 )else if pos(pp2) > pos(pp1 then break 11. 12. 13. 14. 15. 16. 17. 3 pp2 ← next(pp2) 18. 19. 20. 21. while l ≠ () and |l[0] − pos(pp1)| > k do DELETE(l[0]) for each ps ∈ l 22. do ADD(answer, (docID(p1), pos(pp1), psi)) 23. pp1 ← next(pp1) psen1 ← next(psen1) 24. psen2 ← next(psen2) else if senID(psen1) < senID(psen2) then psen1 ← next(psen1) 25. 26. 27. else psen2 ← next(psen2) else if docID(p1) < docID(p2) then p1 ← next(p1) 28. 29. 30. 31. else p2 ← next(p2) 32. return answer -5 am$ cram gram cra cram scram gra gram pam spam ram cram scr scram spa spam $cr cram $gr gram $sc scram $sp spam scram gram scram 4 spam -6ﻣﻄﺎﺑﻖ ﺟﺪول زﻳﺮ edit distanceﺑﺮاي دو ﻟﻐﺖ »ﻛﺎرﻳﺰ« و »ﺳﺎﻳﺒﺎن« ﻋﺪد 5اﺳﺖ. ا ن ي ب س ا 6 6 5 5 4 4 3 3 2 2 1 1 0 7 6 6 6 6 5 5 5 5 4 4 4 4 3 3 3 3 2 2 2 2 1 1 2 1 7 5 6 5 6 4 4 4 5 3 4 3 4 2 3 2 3 1 1 3 2 2 2 3 6 5 5 5 5 4 4 4 4 3 3 3 3 2 2 3 2 2 3 4 3 3 3 4 6 5 5 5 5 4 4 4 4 3 3 3 3 2 2 4 3 3 4 5 4 4 4 5 6 5 5 5 5 4 4 4 4 3 3 4 3 3 4 5 4 4 5 6 5 5 5 6 5 ك 1 2 ا 2 3 ر 3 4 ي 4 5 5 ز
© Copyright 2025 Paperzz