"的值,該值 小于或等于n。
[016引只要找到具有該"范圍中的最低n值"的值的入口,X和Y的對應(yīng)值就可W從排序 后的吸引力表讀取。之后使用W下公式計算X和y的值:
[0163]X= (n-q)div1546 (8)
[0164]y= (n-q)mod1546 (9)
[016引其中,q為"范圍中的最低n值"的值,div為整數(shù)除法的結(jié)果,mod為整數(shù)除法之 后的余數(shù)。
[0166] 原則上檢索可通過逐一經(jīng)歷整個排序后的吸引力表入口實現(xiàn),然而運可能太過于 耗時導(dǎo)致不太實用。應(yīng)使用智能檢索方法。在一些示例中,可使用二進制檢索方法,而在其 它示例中可使用插入檢索方法。對于本領(lǐng)域技術(shù)人員說運些智能檢索方法是熟知的,在運 里不再描述。
[0167] 在排序后的吸引力表由S化或類似語言實施的示例中,該吸引力表支持使用 BETWEEN運算符在兩個值之間檢索一些值,可W使用W下檢索方法。分配到任一小區(qū)的n值 范圍的最大大小是已知的,對于任何n值可W確定至少存在一"范圍中的最低n值",其值位 于n和n-最大大小之間。因此,如果在n和n-最大大小之間檢索"范圍中的最低n值"的 值,并使用檢索到的最大值,則該值為"范圍中的最低n值"的正確值。在一示例中,該檢索 在n到n-2, 390, 116之間進行。
[016引吸引力評級步驟52是完美可逆的。
[0169] 盡管在前面吸引力表被引用為單個表,然而,在一些示例中,吸引力表優(yōu)選地可維 持兩個不同排序的表,吸引力表W及前面描述的排序后的吸引力表,各個表用于不同方向 的轉(zhuǎn)換。
[0170] 洗牌和逆洗牌步驟53將整數(shù)n轉(zhuǎn)換為一不同的整數(shù)m,反之亦然。
[0171] 該步驟并不是必須的,在一些示例中可W省略。盡管如此,該步驟提供了一些優(yōu) 點。
[0172] 如前所述,在吸引力評級步驟52中,在相同小區(qū)中的位置趨向于被分配類似的n值。作為將n值轉(zhuǎn)換為詞W及相反轉(zhuǎn)換的結(jié)果,具有類似n值的位置可能得到類似的=詞 序列,例如,具有兩個相同的詞,而第S詞不同。
[0173] 運種情況可能給用戶在將=個詞序列轉(zhuǎn)換為位置時帶來一個問題,即如果=詞序 列中輸入了一個不正確詞,可能會識別得到一個錯誤的位置,而該位置為非常接近正確位 置的位置。運種錯誤但又非常接近的位置看起來是真實的,因此,可能用戶不會認為是錯 誤。通過設(shè)置洗牌和逆洗牌步驟53,可保證具有類似n值的位置極其不可能得到類似的= 詞序列,運樣,如果=詞序列中輸入了一個不正確詞,會識別得到一個錯誤的位置,且該位 置遠離正確的位置。運種錯誤但又遠離的位置看起來就不是真實的,因此,用戶會認為是錯 誤的。
[0174] 在一些示例中,該系統(tǒng)可幫助用戶識別一錯誤位置為一遠離和不正確的位置。運 種幫助可通過使用例如一系統(tǒng)用戶接口來提供。在一些示例中,該系統(tǒng)高亮顯示識別的位 置位于的國家,如果可W,也可W高亮顯示識別的城市。在一些示例中,該系統(tǒng)可表明識別 的位置位于不同于用戶當(dāng)前位置的城市和/或國家,在實際中,在該系統(tǒng)的許多應(yīng)用中運 將明顯地告訴用戶發(fā)生了錯誤。
[01巧]在一些示例中,當(dāng)用戶知道識別的位置是不對的,因此產(chǎn)生了錯誤,此時,系統(tǒng)可 幫助用戶識別哪個詞是不正確的,從而識別出錯誤,并恢復(fù)出正確的S詞序列和位置。運種 幫助可通過使用例如一系統(tǒng)用戶接口來提供。
[0176] 另外,如前所述,在吸引力評級步驟52中,在認為更具吸引力的小區(qū)中的位置被 分配低n值。如下將要描述的,具有低n值的位置被分配由更通用的詞組成的=詞序列。
[0177] 運會產(chǎn)生一個問題,由于小區(qū)必須被分配不同的吸引力值并順序排列,因此,不可 避免地不同的位置會分配不同的吸引力值,也就會被分配被認為更多、更小或"更好"的值。 雖然在實踐中相同類型的小區(qū)結(jié)果不可能顯著地不同,例如,不同中屯、城市中屯、的小區(qū),然 而,任何可感知的偏差都可能會對用戶態(tài)度帶來影響,影響公共關(guān)系。通過設(shè)置洗牌和逆洗 牌步驟53,可保證相同類型的小區(qū)被分配具有類似通用程度的詞組合,從而避免任何用戶 可感知的偏差。
[0178] 洗牌和逆洗牌步驟53將可逆地將整數(shù)n洗牌為一組不同的整數(shù)m,W及相 反。在示出的示例中,值為0-19, 999, 999, 999的整數(shù)將被相互洗牌,之后值位于每個 2, 000, 000, 000整數(shù)連續(xù)塊中的整數(shù)被相互洗牌。在其它示例中,可使用不同大小的塊。在 一些示例中,不同塊的大小可變化。在一些示例中,塊的大小可隨著時間改變。
[0179] 在將締度和經(jīng)度坐標(biāo)轉(zhuǎn)換為=詞序列時使用的第一向前方向上,首先確定待洗牌 的整數(shù)值n是否位于0-19, 999, 999, 999的范圍中。如果不位于,則使用W下公式將n轉(zhuǎn)換 為m:
[0180] m= (3, 639, 313袖)mod20,000,000,000 (10)
[0181] 否則,在n大于或等于20, 000, 000, 000的情形中,使用W下公式將n轉(zhuǎn)換為m:
[0182]m=(2, 000, 000, 000*(ndiv2, 000, 000, 000))
[0183] +((24, 036, 583* (nmod2, 000, 000, 000))mod2, 000, 000, 000) (11)
[0184] 在將S詞序列轉(zhuǎn)換為締度和經(jīng)度坐標(biāo)時使用的第二逆向方向上,首先要確定待洗 牌的整數(shù)值m是否位于0-19, 999, 999, 999的范圍中。如果不位于,則使用W下公式將m轉(zhuǎn) 換為n:
[0185] n=巧,083,377*m)mod20,000,000,000 (12)
[0186] 否則,在m大于或等于20, 000, 000, 000的情形中,使用W下公式將m轉(zhuǎn)換為n:
[0187]n= (2, 000, 000, 000*(mdiv2, 000, 000, 000))
[0188] +((9, 664, 108, 247*(mmod2, 000, 000, 000))mod2, 000, 000, 000) (13)
[0189] 如前所述,具體公式10至13與作為示例的塊大小相關(guān)。如果使用不同或變化的 塊大小,則對應(yīng)地需要對公式10至13進行變化。例如,為了提供不同大小的塊或段,塊或 段的起始數(shù)字可從大小增加的一系列選擇的整數(shù)中獲得,該系列整數(shù)優(yōu)選地從0開始,對 運些整數(shù)進行操作W定義連續(xù)不同大小的段的各自起始值。達到該目的的方式之一可W是 在選擇的整數(shù)上執(zhí)行數(shù)學(xué)運算,W定義連續(xù)不同大小的段的各自起始值。該數(shù)學(xué)運算可包 括求選擇的整數(shù)的立方值。應(yīng)理解定義不同大小的段的其它方法也是有效的。當(dāng)該系列整 數(shù)包括選擇的整數(shù)的等差數(shù)列時,例如,0, 3000, 6000, 9000等,可獲得一些有益效果,但運 并不是必須的。
[0190] 在將締度和經(jīng)度坐標(biāo)轉(zhuǎn)換為=詞序列中使用的第一向前方向上,公式(10)、(11) 可被合并為如下的單一公式(11'):
[0191] m= [n的段的起始]+ ((F_i*[n在其段中的位置])mod[n的段的大小])(11')
[0192]
[0193] 在將S詞序列坐標(biāo)轉(zhuǎn)換為締度和經(jīng)度序列中使用的第二逆向方向上,公式(12)、 (13)可被合并為如下的單一公式(13'):
[0194]N=虹的段的起始]+ ((R_i*虹在其段中的位置])mod虹的段的大小])(13')
[0195]
[0196] 對于公式(11')和(13')中的每一個公式,i用于指示段,m和n總是位于相同段 中,運樣,虹的段的大小]=[n的段的大小]=S_i。
[0197] 鑒于此,(對于前向和后向洗牌)僅有的要求是:
[0198]對于一些整數(shù)K:F_i*R*i=K*S_i+l。
[0199] 在一些示例中,洗牌和逆洗牌步驟53可依次執(zhí)行多次洗牌和逆洗牌操作。
[0200] 分裂和組合步驟54將整數(shù)m轉(zhuǎn)換為=個整數(shù)i、j、k,反之亦然。在該轉(zhuǎn)換中一個 要求是要確保轉(zhuǎn)換在m的小數(shù)值和i、j、k的小數(shù)值之間移動。該要求并不是必需的,但是 如果能滿足該要求,則將簡化詞轉(zhuǎn)換步驟55。
[0201] 應(yīng)理解,在沒有執(zhí)行洗牌和逆洗牌步驟53的示例中,分裂和組合步驟54會將整數(shù) n轉(zhuǎn)換為=個整數(shù)i、j、k,反之亦然。
[0202] 在將締度和經(jīng)度坐標(biāo)轉(zhuǎn)換為=詞序列中使用的第一向前方向上,整數(shù)m被轉(zhuǎn)換為 =整數(shù)i、j、k。
[0203] 首先,我們定義I=floor((m)的立方根)。之后,確保:
[0204] m< (1+1) 3即 1 m《1 3+312+31 (14)
[020引根據(jù)m的值,之后可能有立個情形。
[0206] 在第一情形中,m<l3+12+21+1
[0207] 假定r=m-f
[020引 則i= 1,j=rdiv(1+1),k=rmod(1+1).
[0209] 在第二情形中,13+12+21+1《m<l3+2l2+31+l:
[0210] 假定r=m-(13+12巧1+1).
[0211] 則i=rdiv(l+l),j=l,k=rmod(l+l).
[0212] 在第S情形中,13+212+31+1《m<l3+3l2+31+l:
[021引 假定r=m-(13+21 化31+1).
[0引4] 貝Iji=rdiv1,j=rmod1,k= 1.
[0215] 在當(dāng)將=詞序列轉(zhuǎn)換為締度和經(jīng)度坐標(biāo)時使用的第二逆向方向上,=整數(shù)i、j、k 被轉(zhuǎn)換為單個整數(shù)m。
[0216] 首先,我們定義 1 =max(i,j,k)。
[0217] 如果i=l,則m的值為:
[021 引 m= 13+(1+1)j+k (15) 郵1引否則,如果j= 1,則m的值為:
[0220] m= 13+12+21+1+(1+1)i+k (16)
[0221] 否則,如果k= 1,則m的值為:
[0222] m=f巧l2+31+l+li+j (17)
[0223] 詞轉(zhuǎn)換步驟55將整數(shù)i、j、k轉(zhuǎn)換為詞,反之亦然。
[0224] 在將締度和經(jīng)度坐標(biāo)轉(zhuǎn)換為=詞序列中使用的第一向前方向上,需要識別與=整 數(shù)i、jW及k每個對應(yīng)的詞。
[0225] 運可通過對詞的序列表進行編譯W及順序選擇與整數(shù)i、j和k每個對應(yīng)的詞來實 現(xiàn)。如前所述,在一示例中,詞序列表可包括38, 000個不同的詞。選擇的S個詞之后W下 述順序被排列,第一詞對應(yīng)值i,第二詞對應(yīng)值j,第=詞對應(yīng)值k,從而形成=詞序列。
[0226] 在一示例中,詞列表可被存儲為字符串?dāng)?shù)組,詞選擇可通