欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

針對演進(jìn)圖形分配全局邊緣ID的制作方法

文檔序號:11635340閱讀:214來源:國知局
針對演進(jìn)圖形分配全局邊緣ID的制造方法與工藝

相關(guān)申請的交叉引用

本申請要求享有于2014年12月23日提交的美國專利申請no.14/581,112的提交日的權(quán)益,其通過引用并入本文中。

本技術(shù)總體上涉及管理圖形處理平臺的演進(jìn)圖形。更具體地,本技術(shù)涉及針對演進(jìn)圖形分配全局邊緣id。



背景技術(shù):

在“大數(shù)據(jù)”時代,許多應(yīng)用(舉例來說,例如,與電子商務(wù)、社交網(wǎng)絡(luò)、以及在線服務(wù)有關(guān)的應(yīng)用)使用快速增長的龐大的圖形。在許多情況下,這些應(yīng)用每天必須處理數(shù)百萬到數(shù)十億的新事件。例如,平均每天在twitter上產(chǎn)生5.6億個推文,并且平均每天在facebook上產(chǎn)生45億個“喜歡”。作為另一個示例,亞馬遜在2013年圣誕季期間每天銷售2.82億件商品。新事件產(chǎn)生新關(guān)系,例如用戶與產(chǎn)品的關(guān)系、朋友關(guān)系、以及用戶與廣告的關(guān)系。應(yīng)用使用以這些新關(guān)系為基礎(chǔ)的關(guān)系數(shù)據(jù)以用于各種目的。例如,這樣的關(guān)系數(shù)據(jù)可以用于做出智能商業(yè)決策或者向用戶提供快速且準(zhǔn)確的建議。

為了使應(yīng)用能夠使用這種關(guān)系數(shù)據(jù),使用圖形分析來處理數(shù)據(jù)以創(chuàng)建大的圖形。這樣的圖形由大量的頂點(diǎn)和邊緣組成。頂點(diǎn)是表示例如不同用戶的節(jié)點(diǎn),而邊緣是表示將不同用戶彼此連接的關(guān)系數(shù)據(jù)的線。在大數(shù)據(jù)時代,隨著數(shù)據(jù)量增加,這些圖形非??焖俚卦鲩L。然而,用于處理這些類型的圖形的當(dāng)前技術(shù)一般涉及具有固定數(shù)量的頂點(diǎn)和邊緣的靜態(tài)圖形。當(dāng)前技術(shù)不能提供高效方法以隨著新的頂點(diǎn)和邊緣隨時間被添加到圖形而對這些圖形進(jìn)行更新。

附圖說明

圖1是根據(jù)一個實(shí)施例的示意圖,其示出了用于處理關(guān)系數(shù)據(jù)的圖;

圖2是根據(jù)一個實(shí)施例的過程流程圖,其示出了用于計(jì)算全局邊緣id的方法;

圖3是根據(jù)一個實(shí)施例的表,其示出了用于在將塊id分配給增加的行之前將塊id分配給增加的列的技術(shù);

圖4是根據(jù)一個實(shí)施例的表,其示出了用于在將塊id分配給增加的列之前將塊id分配給增加的行的技術(shù);

圖5是根據(jù)一個實(shí)施例的過程流程圖,其示出了用于以遞歸函數(shù)計(jì)算塊id的方法;

圖6a是根據(jù)一個實(shí)施例的表,其示出了用于基于最后的對角線單元格和源塊id將塊id分配給新添加的列中的單元格的技術(shù);

圖6b是具有新添加的行的圖6的表;

圖7是根據(jù)一個實(shí)施例的表,其示出了基于本文所描述的計(jì)算順序來進(jìn)行高速緩存的關(guān)鍵塊id;

圖8是根據(jù)一個實(shí)施例的過程流程圖,其示出了用于針對演進(jìn)圖形增量地計(jì)算頁面排序的方法;

圖9是表示本文所描述的用于針對演進(jìn)圖形計(jì)算增量頁面排序的技術(shù)的一個實(shí)施例的偽代碼的屏幕截圖;

圖10是表示本文所描述的用于針對演進(jìn)圖形計(jì)算增量頁面排序的技術(shù)的另一個實(shí)施例的偽代碼的屏幕截圖;

圖11是示出根據(jù)本文所描述的實(shí)施例的被配置為針對演進(jìn)圖形提供全局邊緣id分配和/或增量頁面排序計(jì)算的計(jì)算設(shè)備的框圖;以及

圖12是示出根據(jù)本文所描述的實(shí)施例的被配置為針對演進(jìn)圖形提供全局邊緣id分配和/或增量頁面排序計(jì)算的計(jì)算機(jī)可讀介質(zhì)的框圖。

在整個公開內(nèi)容和附圖中使用相同的附圖標(biāo)記來指代同樣的組件和特征。100系列中的附圖標(biāo)記是指最初出現(xiàn)在圖1中的特征;200系列中的數(shù)字是指最初出現(xiàn)在圖2中的特征;以此類推。

具體實(shí)施方式

如上面所描述的,通常使用大的圖形將關(guān)系數(shù)據(jù)表示為具有多個相互連接的頂點(diǎn)和邊緣。然而,用于處理這些類型的圖形的當(dāng)前技術(shù)不能提供高效方式以隨著圖形隨時間演進(jìn)而對圖形進(jìn)行更新。更具體地,在處理關(guān)系數(shù)據(jù)時,圖形分析通常作用于(sourceid,targetid,edgevalue)格式的數(shù)據(jù)上,其中“sourceid”是源頂點(diǎn)id,“targetid”是目標(biāo)頂點(diǎn)id,而“edgevalue”是邊緣的值。全局邊緣id(其被定義為sourceid和targetid的函數(shù))對于高效邊緣值存儲和關(guān)于邊緣的快速計(jì)算(舉例來說,例如,連接具有重疊的頂點(diǎn)的兩個圖形)兩者而言都很重要。在靜態(tài)圖形的情況下,sourceid和targetid二者的上邊界是圖形中頂點(diǎn)的數(shù)量。全局邊緣id可以容易地分配為sourceid×numvertices+targetid。然而,當(dāng)圖形正在演進(jìn)時,最終的頂點(diǎn)數(shù)量在每個處理窗口處是未知的。因此,最終的頂點(diǎn)數(shù)不能用于取得全局邊緣id。因此,本文所描述的實(shí)施例提供了一種用于針對演進(jìn)圖形根據(jù)sourceid和targetid來分配全局邊緣id的方法。

在以下描述和權(quán)利要求中,可以使用術(shù)語“耦合”和“連接”以及其衍生詞。應(yīng)當(dāng)理解,這些術(shù)語并非旨在作為彼此的同義詞。相反,在特定實(shí)施例中,“連接”可以用于指示兩個或更多個元件彼此直接物理接觸或電接觸。“耦合”可以表示兩個或更多個元件直接物理接觸或電接觸。然而,“耦合”也可以表示兩個或更多個元件并非彼此直接接觸,但是仍然彼此協(xié)作或交互。

一些實(shí)施例可以以硬件、固件、以及軟件中的一個或組合來實(shí)現(xiàn)。一些實(shí)施例還可以被實(shí)現(xiàn)為存儲在機(jī)器可讀介質(zhì)上的指令,該指令可以由計(jì)算平臺讀取并執(zhí)行以執(zhí)行本文所描述的操作。機(jī)器可讀介質(zhì)可以包括用于以機(jī)器(例如,計(jì)算機(jī))可讀的形式存儲或發(fā)送信息的任何機(jī)制。例如,機(jī)器可讀介質(zhì)可以包括只讀存儲器(rom);隨機(jī)存取存儲器(ram);磁盤存儲介質(zhì);光存儲介質(zhì);閃速存儲器設(shè)備;或電、光、聲或其它形式的傳播信號,例如,載波、紅外信號、數(shù)字信號、或發(fā)送和/或接收信號的接口,以及其它。

實(shí)施例是實(shí)現(xiàn)方式或示例。說明書中對“實(shí)施例”、“一個實(shí)施例”、“一些實(shí)施例”、“各種實(shí)施例”、或“其它實(shí)施例”的引用表示結(jié)合實(shí)施例描述的特定特征、結(jié)構(gòu)或特性包括在本技術(shù)的至少一些實(shí)施例中,但不一定是本技術(shù)的所有實(shí)施例。“實(shí)施例”、“一個實(shí)施例”、或“一些實(shí)施例”的各種出現(xiàn)不一定全部指代相同的實(shí)施例??梢詫碜詫?shí)施例的元素或方面與另一實(shí)施例的元素或方面進(jìn)行組合。

并非在本文中描述并示出的所有組件、特征、結(jié)構(gòu)、特性等都需要包括在特定的實(shí)施例或多個實(shí)施例中。例如,如果說明書陳述了“可以”、“可能”、“能夠”、或“能”包括組件、特征、結(jié)構(gòu)、或特性,則不一定需要包括特定的組件、特征、結(jié)構(gòu)或特性。如果說明書或權(quán)利要求書提及“一”或“一個”元素,則并不表示只有元素中的一個元素。如果說明書或權(quán)利要求書提及“附加”元素,則不排除存在附加元素中的多于一個附加元素。

應(yīng)當(dāng)注意,雖然已經(jīng)參考特定實(shí)現(xiàn)方式描述了一些實(shí)施例,但是根據(jù)一些實(shí)施例,其它實(shí)現(xiàn)方式也是可能的。附加地,附圖中所示的和/或本文所描述的電路元件或其它特征的布置和/或順序并非必須以所示出和所描述的特定方式來布置。根據(jù)一些實(shí)施例,許多其它布置是可能的。

在附圖所示的每個系統(tǒng)中,在某些情況下,元件可以每個均具有相同的附圖標(biāo)記或不同的附圖標(biāo)記,以表明所表示的元件可以是不同的和/或類似的。然而,元件可以是足夠靈活的以具有不同的實(shí)現(xiàn)方式并且與本文所示出或所描述的系統(tǒng)中的一些或全部一起工作。附圖中所示的各種元件可以是相同的或不同的。哪一個元件被稱為第一元件以及哪一個元件被稱為第二元件是任意的。

圖1是根據(jù)一個實(shí)施例的示意圖,其示出了用于處理關(guān)系數(shù)據(jù)的圖形100。如圖1所示,圖形100包括多個頂點(diǎn)102a-102c和多個邊緣104a-d。頂點(diǎn)102a-102c表示社交網(wǎng)絡(luò)中的特定實(shí)體,舉例來說,例如,分別為用戶a、用戶b、以及用戶c。邊緣104a-d(其被示為如圖1中的線)表示頂點(diǎn)102a-c之間的關(guān)系的強(qiáng)度和方向。換言之,邊緣104a-d是對應(yīng)于頂點(diǎn)102a-c的實(shí)際關(guān)系數(shù)據(jù)的視覺表示。另外,每個邊緣104a-d上的箭頭提供關(guān)于兩個頂點(diǎn)之間的關(guān)系的方向的信息,由此對源頂點(diǎn)與目標(biāo)頂點(diǎn)進(jìn)行區(qū)分。

根據(jù)圖1所示的示例,邊緣104a將頂點(diǎn)102a連接到頂點(diǎn)102b,并且可以表示從用戶a發(fā)送到用戶b的電子通信,舉例來說,例如,電子郵件、即時消息,或者另一種形式的電子通信。邊緣104b將頂點(diǎn)102b連接到頂點(diǎn)102c,并且可以表示從用戶b發(fā)送到用戶c的電子通信。邊緣104c也將頂點(diǎn)102b連接到頂點(diǎn)102c,并且可以表示從用戶c發(fā)送到用戶b的電子通信。邊緣104d將頂點(diǎn)102c連接到頂點(diǎn)102a,并且可以表示從用戶c發(fā)送到用戶a的電子通信。

此外,表示每個邊緣104a、104b、104c、或104d的線的粗度可以取決于102a、102b、或102c之中的兩個頂點(diǎn)之間的關(guān)系的強(qiáng)度而變化。根據(jù)圖1所示的示例,邊緣104d是粗的,指示大量的電子通信從用戶c發(fā)送到用戶a。相比之下,邊緣104b是細(xì)的,指示少量的電子通信從用戶b發(fā)送到用戶c。

根據(jù)本文所描述的實(shí)施例,隨著關(guān)系數(shù)據(jù)量隨時間增加,圖1所示的圖形100可以擴(kuò)展為包括數(shù)千、數(shù)百萬、或者甚至數(shù)十億的頂點(diǎn)和邊緣。本文所描述的技術(shù)允許隨著圖形演進(jìn)高效地使用針對圖形100的邊緣的標(biāo)識符。

圖2是根據(jù)一個實(shí)施例的過程流程圖,其示出了用于計(jì)算全局邊緣id的方法200。在框202處,可以將圖形內(nèi)的頂點(diǎn)劃分成具有固定塊大小的一系列塊。然后,在框204處,可以將為0的塊id分配給第一塊。隨著圖形增長,儲存區(qū)(bucket)的數(shù)量可以擴(kuò)大。更具體地,隨著頂點(diǎn)的數(shù)量的增加,在框206處可以使用本文所描述的特定算法來計(jì)算新的塊id。然后可以在框208處基于源頂點(diǎn)id、目標(biāo)頂點(diǎn)id、以及邊緣所位于的塊的塊id來計(jì)算全局邊緣id。

根據(jù)該方法,因?yàn)槿诌吘塱d是源頂點(diǎn)id和目標(biāo)頂點(diǎn)id的函數(shù),因此有可能維持小得多的映射表。例如,要高速緩存的元素的關(guān)鍵數(shù)量可以只有2×-1,其中v是頂點(diǎn)的總數(shù)量,而b是塊大小,其通常很大。

圖2的方法200還可以包括對塊大小進(jìn)行選擇。在一些實(shí)施例中,2n可以用作塊大小。這有助于將乘法變換為cpu中的移位操作,并使計(jì)算開銷最小化。然而,應(yīng)當(dāng)理解,塊大小不限于2n,而是可以將任意數(shù)量用作塊大小。

圖3是根據(jù)一個實(shí)施例的表300,其示出了用于在將塊id分配給增加的行之前將塊id分配給增加的列的技術(shù)。y軸302是sourceid。由于頂點(diǎn)的總數(shù)量隨著時間的推移而不斷增長,sourceid也不斷增長。x軸304是targetid。與sourceid類似,targetid也隨著頂點(diǎn)的總數(shù)量增長而不斷增長。根據(jù)圖3所示的實(shí)施例,在將塊id分配給增加的行之前將塊id分配給增加的列。

圖4是根據(jù)一個實(shí)施例的表400,其示出了用于在將塊id分配給增加的列之前將塊id分配給增加的行的技術(shù)。y軸402是sourceid。由于頂點(diǎn)的總數(shù)量隨著時間的推移不斷增長,sourceid也不斷增長。x軸404是targetid。與sourceid類似,targetid也隨著頂點(diǎn)的總數(shù)量增長而不斷增長。根據(jù)圖4所示的實(shí)施例,在將塊id分配給增加的列之前將塊id分配給增加的行。

圖3和圖4中使用的塊大小是k。在一些實(shí)施例中,塊大小等于2n,并且n可以基于不同的使用情況來配置。在“大數(shù)據(jù)”時代,n可以很容易地為10、20、或甚至更大,這表示塊大小可能在數(shù)千(2048)、數(shù)百萬(1048576)的范圍內(nèi),或者甚至更大。

應(yīng)當(dāng)理解,在本中文參考圖3所示的實(shí)施例描述了本技術(shù),即,將塊id分配給在增加的行之前將塊id分配給增加的列。然而,本技術(shù)也可以容易地應(yīng)用于圖4所示的實(shí)施例,即,在將塊id分配給增加的列之前將塊id分配給增加的行。

隨著圖形大小增長,塊id的有效范圍總是從一個正方形區(qū)域增長到另一個更大的正方形區(qū)域,如圖3和4中的陰影所示。圖形從塊id0開始,其中頂點(diǎn)的數(shù)量在[0,k)的范圍內(nèi)。當(dāng)頂點(diǎn)的數(shù)量增長到在[k,2k)范圍內(nèi)時,有效塊id從集合{0}增加到{0,1,2,3}。當(dāng)頂點(diǎn)的數(shù)量增長到在[2k,3k)范圍內(nèi)時,有效塊id從集合{0,1,2,3}增加到{0,1,2,3,4,5,6,7,8}。隨著圖形的大小增加,相同的趨勢繼續(xù)。

存在許多方法以基于圖3所示的設(shè)計(jì)的布置來計(jì)算塊id。例如,在一些實(shí)施例中,可以以遞歸函數(shù)計(jì)算塊id,如下面關(guān)于圖5詳細(xì)討論的。

圖5是根據(jù)一個實(shí)施例的過程流程圖,其示出了用于以遞歸函數(shù)計(jì)算塊id的方法500。方法500包括兩個階段。第一階段由框502表示,并且包括對源塊id(“sourceblockid”)和目標(biāo)塊id(“targetblockid”)進(jìn)行計(jì)算??梢愿鶕?jù)等式1和等式2來計(jì)算sourceblockid和targetblockid。

根據(jù)等式1和等式2,將sourceid除以塊大小(blocksize)的結(jié)果向下舍入到最接近的整數(shù)以得到sourceblockid。類似地,將targetid除以blocksize的結(jié)果向下舍入到最接近的整數(shù)以得到targetblockid。應(yīng)當(dāng)理解,等式1和等式2是本文所描述的技術(shù)的一個實(shí)施例的示例。可以根據(jù)本文所描述的技術(shù)的具體實(shí)施例的細(xì)節(jié)以任何方式對等式1和等式2進(jìn)行修改。

方法500的第二階段由圖5所示的剩余框(如虛線504所指示的)表示,并且包括基于sourceblockid和targetblockid來分配塊id。例如,當(dāng)sourceblockid和targetblockid二者為0時,得到的塊id(“blockid”)為0。當(dāng)頂點(diǎn)的數(shù)量從[0,k)范圍增長到[k,2k)范圍時,sourceblockid和targetblockid對的集合也將從{(0,0)}增長到{(0,0),(0,1),(1,0),(1,1)}。

當(dāng)sourceblockid為0而targetblockid為1時,計(jì)算伴隨“if”分支進(jìn)行,由圖5中的箭頭506表示。該計(jì)算遞歸地調(diào)用getblockid(0,0),并且對于這種情況,得到的塊id為1。當(dāng)sourceblockid為1而targetblockid為0時,計(jì)算伴隨“else”分支進(jìn)行,由圖5中的箭頭508表示。該計(jì)算遞歸地調(diào)用getblockid(0,1),并且對于這種情況,得到的塊id為2。當(dāng)頂點(diǎn)的數(shù)量從[0,3k)范圍增長到[3k,4k)范圍時,八個塊id已經(jīng)被分配。

圖5并非旨在指示方法500的框要以任何特定的順序來執(zhí)行,或者在每一種情況下方法500將包括圖5所示的框中的所有框。此外,方法500不限于圖5所示的框。相反,根據(jù)具體實(shí)現(xiàn)方式的細(xì)節(jié),可以向方法500添加任何數(shù)量的附加框。

圖6a是根據(jù)一個實(shí)施例的表600,其示出了用于基于最后的對角線單元格和源塊id將塊id分配給新添加的列中的單元格的技術(shù)。根據(jù)圖6a所示的實(shí)施例,最后的對角線單元格602的sourceblockid為2,targetblockid為2,以及先前分配的塊id為8。針對新添加的列604中的單元格的計(jì)算如下所示。

blockid(0,3)=blockid(2,2)+0+1=9

blockid(l,3)=blockid(2,2)+1+1=10

blockid(2,3)=blockid(2,2)+2+1=11

圖6b是圖6的表600具有新添加的行606。圖6b示出了本文所描述的用于針對新添加的行中的單元格基于最后的對角線單元格右側(cè)的單元格和targetblockid分配塊id的技術(shù)。根據(jù)圖6b所示的實(shí)施例,先前的對角線單元格608的sourceblockid為3,targetblockid為2,以及塊id為11。針對新添加的行606中的單元格的計(jì)算如下所示。

blockid(3,0)=blockid(2,3)+0+1=12

blockid(3,1)=blockid(2,3)+1+1=13

blockid(3,2)=blockid(2,3)+2+1=14

blockid(3,3)=blockid(2,3)+3+1=15

在各種實(shí)施例中,隨著圖形大小不斷增加,可以使用相同的計(jì)算機(jī)制。

在其它實(shí)施例中,計(jì)算后的塊id可以被高速緩存。由于圖形大小總是增加,可以通過在較舊的圖形大小上查找先前計(jì)算過的塊id來獲得塊id。如果找到先前計(jì)算過的塊id,則可以使用先前計(jì)算的塊id來計(jì)算新的塊id,而不是根據(jù)遞歸函數(shù)重新計(jì)算塊id。這種方法比先前的方法使用更多的存儲空間,因?yàn)椴檎冶肀仨毚鎯υ诖鎯臻g中。然而,當(dāng)圖形大小非常大時,這種方法有時可以是優(yōu)選的。

圖7是根據(jù)一個實(shí)施例的表700,其示出了基于本文所描述的計(jì)算順序來進(jìn)行高速緩存的關(guān)鍵塊id。圖6a和圖6b示出了對于每個計(jì)算窗口而言最重要的塊id是對角線單元格和每行中緊挨著對角線單元格的單元格。因此,對于圖7所示的實(shí)施例,可以高速緩存對角線單元格702a-h的塊id和每行706a-h中緊挨著對角線單元格702a-h的單元格704a-g的塊id。僅高速緩存這些單元格的塊id可以節(jié)省存儲空間,同時仍然提供良好的性能。

在各種實(shí)施例中,下一個階段是在演進(jìn)圖形上計(jì)算全局邊緣id(“globalid”)?;谟糜谠谘葸M(jìn)圖形上計(jì)算塊id的上述算法,可以容易地計(jì)算全局邊緣id。具體地,根據(jù)本文所描述的實(shí)施例,可以計(jì)算源偏移(“sourceoffset”)、目標(biāo)偏移(“targetoffset”)、sourceblockid、以及targetblockid。接下來,可以使用sourceblockid和targetblockid來計(jì)算blockid。然后可以使用sourceoffset、targetoffset、以及blockid來計(jì)算邊緣或(sourceid,targetid)對的最終globalid??梢允褂靡韵聜未a以這種方式來計(jì)算全局邊緣id。

valsourceoffset=sourceid%blocksize

valtargetoffset=targetid%blocksize

valsourceblockid=sourceid/blocksize

valtargetblockid=targetid/blocksize

valblockid=getblockid(sourceblockid.tolong,targetblockid.tolong)

valglobalid=blockid*blocksize*blocksize+sourceoffset*blocksize+targetoffset

除了提供用于針對演進(jìn)圖形分配全局邊緣id的方法之外,本技術(shù)還涉及提供用于針對演進(jìn)圖形計(jì)算增量頁面排序的方法,如本文進(jìn)一步討論的。對于在演進(jìn)圖形上進(jìn)行的分析,原始的方法是在每個處理窗口處重新生成整個圖形,并在新生成的圖形之上重新運(yùn)行機(jī)器學(xué)習(xí)算法。根據(jù)這種方法,現(xiàn)有的靜態(tài)算法并非必須改變。然而,這不是高效的方法。更精細(xì)的方法是重新使用來自先前的處理窗口的訓(xùn)練后的結(jié)果,并且在新的處理窗口中生成具有新的信息的圖形之后,在先前訓(xùn)練的結(jié)果之上運(yùn)行增量機(jī)器學(xué)習(xí)。

頁面排序是可以用于對搜索引擎結(jié)果中的網(wǎng)站進(jìn)行排序的算法。它是“大數(shù)據(jù)”時代中的事實(shí)上的“helloword”機(jī)器學(xué)習(xí)算法。頁面排序算法的示例由等式3給出。

在等式3中,pr(a)是頁面a的pagerank;pr(ti)是鏈接到頁面a的頁面ti的pagerank;c(ti)是頁面ti上的出站鏈接的數(shù)量;而α是復(fù)位概率,可以設(shè)置在0與1之間。應(yīng)當(dāng)理解,等式3是本文所描述的技術(shù)的一個實(shí)施例的示例??梢愿鶕?jù)本文所描述的技術(shù)的具體實(shí)施例的細(xì)節(jié)以任何方式對等式3進(jìn)行修改。

用于實(shí)現(xiàn)頁面排序的當(dāng)前框架是靜態(tài)的,并且不與演進(jìn)圖形兼容。這限制了頁面排序在“大數(shù)據(jù)”時代中的實(shí)用性。相應(yīng)地,本文所描述的實(shí)施例提供了用于針對圖形處理平臺在演進(jìn)圖形上計(jì)算增量頁面排序的方法。

圖8是根據(jù)一個實(shí)施例的過程流程圖,其示出了用于針對演進(jìn)圖形增量地計(jì)算頁面排序的方法800?;舅枷胧窃诔跏蓟旤c(diǎn)值和發(fā)送初始消息時,在每個處理窗口處在基本圖形和新的圖形之間進(jìn)行區(qū)分。具體地,在處理窗口的第一次迭代中,如果邊緣是新添加的并且其源頂點(diǎn)是舊的,則源頂點(diǎn)可以將其從所有先前的窗口得到的所有更新快速轉(zhuǎn)發(fā)到當(dāng)前邊緣的目標(biāo)頂點(diǎn)。

方法800可以在框802處開始,在框802處,以與針對靜態(tài)算法對頁面排序進(jìn)行計(jì)算相同的方式在第一處理窗口中計(jì)算頁面排序。在框804處,計(jì)算后的頁面排序結(jié)果被保存為第一處理窗口的圖形狀態(tài)。

然后,增量頁面排序計(jì)算在框806處開始,在框806處,利用最后的處理窗口的頁面排序值來初始化每個處理窗口處的頂點(diǎn)值。在各種實(shí)施例中,可以基于是在基本圖形上還是在更新的圖形上計(jì)算頁面排序來不同地對頂點(diǎn)值進(jìn)行初始化。當(dāng)在基本圖形上計(jì)算頁面排序時,每個頂點(diǎn)可以被初始化為(alpha,alpha)。然而,當(dāng)在更新的圖形上計(jì)算頁面排序時,舊的頂點(diǎn)可以保留其來自最后的處理窗口的訓(xùn)練后的值。具體地,舊的頂點(diǎn)的值可以是(lastwindowpagerank,lastwindowdelta),而新的頂點(diǎn)可以被初始化為(alpha,alpha)。

在框808處,如果邊緣是新添加的,而其源頂點(diǎn)已經(jīng)存在于先前的處理窗口中,則在當(dāng)前處理窗口的第一次迭代中源頂點(diǎn)可以將其從先前的處理窗口得到的所有更新快速轉(zhuǎn)發(fā)到其目標(biāo)頂點(diǎn)。在框810處,對于所有其它類型的邊緣,如果源頂點(diǎn)的值不收斂,則源頂點(diǎn)可以將與上一次迭代相比源頂點(diǎn)改變了多少發(fā)送給目標(biāo)頂點(diǎn)。如圖8中的框812所示,這可以繼續(xù),直到所有頂點(diǎn)都收斂。然后,在框814處,計(jì)算后的頁面排序結(jié)果可以被保存為處理窗口的圖形狀態(tài)。

圖8并非旨在指示方法800的框要以任何特定的順序來執(zhí)行,或者在每一種情況下方法800將包括圖8所示的框中的所有框。此外,方法800不限于圖8所示的框。相反,根據(jù)具體實(shí)現(xiàn)方式的細(xì)節(jié),可以向方法800添加任何數(shù)量的附加框。

在一些實(shí)施例中,正如在靜態(tài)頁面排序中,邊緣權(quán)重可以被初始化為來自邊緣的源頂點(diǎn)的外邊緣數(shù)量的倒數(shù)。當(dāng)更新的圖形中的頂點(diǎn)的外邊緣數(shù)量已經(jīng)變化時,頂點(diǎn)的所有外邊緣的權(quán)重也將基于頂點(diǎn)的外邊緣的新的數(shù)量而被更新。

圖9是表示本文所描述的用于針對演進(jìn)圖形計(jì)算增量頁面排序的技術(shù)的一個實(shí)施例的偽代碼的屏幕截圖900。在圖9所示的實(shí)施例中,基本圖形上的初始消息與更新的圖形上的初始消息不同。基本圖形上的初始消息與靜態(tài)頁面排序計(jì)算相同。具體地,初始消息是常數(shù)值,alpha/(1-alpha)。相比之下,對于更新的圖形,不需要初始消息。

當(dāng)頂點(diǎn)在當(dāng)前迭代中發(fā)送消息通知其鄰居頂點(diǎn)的新值時,如果消息是從舊的頂點(diǎn)到新的頂點(diǎn),則舊的頂點(diǎn)可以將其從先前的窗口得到的所有更新快速轉(zhuǎn)發(fā)到新的頂點(diǎn)。由于每個頂點(diǎn)的高效初值為alpha,所以舊的頂點(diǎn)可以計(jì)算最后的處理窗口中的其頁面排序與alpha之間的差量(delta)值,并將該差量值發(fā)送到新的頂點(diǎn)。對于其余的頂點(diǎn)組合,只有當(dāng)頂點(diǎn)的差量值高于收斂閾值時,才發(fā)送消息。在圖9中,tol用于表示收斂閾值。

圖10是表示本文所描述的用于針對演進(jìn)圖形計(jì)算增量頁面排序的技術(shù)的另一個實(shí)施例的偽代碼的屏幕截圖1000。根據(jù)圖10所示的實(shí)施例,類似于靜態(tài)頁面排序的另一個實(shí)現(xiàn)方式,初始常量消息可以被折疊成頂點(diǎn)的初始值。

圖11是示出根據(jù)本文所描述的實(shí)施例的被配置為針對演進(jìn)圖形提供全局邊緣id分配和/或增量頁面排序計(jì)算的計(jì)算設(shè)備1100的框圖。例如,計(jì)算設(shè)備1100可以是膝上型計(jì)算機(jī)、臺式計(jì)算機(jī)、平板計(jì)算機(jī)、移動設(shè)備、或服務(wù)器,以及其它。計(jì)算設(shè)備1100可以包括被配置為執(zhí)行所存儲的指令的中央處理單元(cpu)1102,以及存儲可以由cpu1102執(zhí)行的指令的存儲器設(shè)備1104。cpu可以通過總線1106耦合到存儲器設(shè)備1104。附加地,cpu1102可以是單核處理器、多核處理器、計(jì)算集群、或任何數(shù)量的其它配置。此外,計(jì)算設(shè)備1100可以包括多于一個cpu1102。存儲器設(shè)備1104可以包括隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、閃速存儲器、或任何其它合適的存儲器系統(tǒng)。例如,存儲器設(shè)備1104可以包括動態(tài)隨機(jī)存取存儲器(dram)。

cpu1102還可以通過總線1106鏈接到顯示接口1108,顯示接口1108被配置為將計(jì)算設(shè)備1100連接到顯示設(shè)備1110。顯示設(shè)備1110可以包括顯示屏幕,顯示屏幕是計(jì)算設(shè)備1100的內(nèi)置組件。顯示設(shè)備1110還可以包括外部地連接到計(jì)算設(shè)備1100的計(jì)算機(jī)監(jiān)視器、電視機(jī)、或投影儀,以及其它。

計(jì)算設(shè)備還可以包括存儲設(shè)備1112。存儲設(shè)備1112可以是物理存儲器,例如,硬盤驅(qū)動器、光驅(qū)動器、拇指驅(qū)動器、驅(qū)動器陣列或其任何組合。存儲設(shè)備1112還可以包括遠(yuǎn)程存儲驅(qū)動器。在各種實(shí)施例中,存儲設(shè)備1112包括被配置為在計(jì)算設(shè)備1100上運(yùn)行的全局邊緣id分配應(yīng)用1114。全局邊緣id分配應(yīng)用1114可以包括根據(jù)本文所描述的實(shí)施例用于針對演進(jìn)圖形的邊緣分配全局邊緣id的指令。在各種實(shí)施例中,存儲設(shè)備1112還包括被配置為在計(jì)算設(shè)備1100上運(yùn)行的增量頁面排序計(jì)算應(yīng)用1116。增量頁面排序計(jì)算應(yīng)用1116可以包括根據(jù)本文所描述的實(shí)施例用于針對演進(jìn)圖形執(zhí)行增量頁面排序計(jì)算的指令。存儲設(shè)備1112還可以包括被配置為在計(jì)算設(shè)備上運(yùn)行以執(zhí)行各種任務(wù)的任何數(shù)量的附加應(yīng)用。

計(jì)算設(shè)備1100還可以包括網(wǎng)絡(luò)接口控制器(nic)1118,其被配置為通過總線1106將計(jì)算設(shè)備1100連接到網(wǎng)絡(luò)1120。網(wǎng)絡(luò)1120可以是廣域網(wǎng)(wan)、局域網(wǎng)(lan)、或互聯(lián)網(wǎng),以及其它。根據(jù)本文所描述的實(shí)施例,計(jì)算設(shè)備1100可以被配置為經(jīng)由網(wǎng)絡(luò)1120將由全局邊緣id分配應(yīng)用1114和/或增量頁面排序計(jì)算應(yīng)用1116生成的信息發(fā)送到其它設(shè)備和/或用戶。

圖11的框圖并非旨在指示計(jì)算設(shè)備1100將包括圖11所示的組件中的所有組件。此外,根據(jù)具體實(shí)現(xiàn)方式的細(xì)節(jié),計(jì)算設(shè)備1100可以包括任何數(shù)量的在圖11中未示出的附加組件。

圖12是示出根據(jù)本文所描述的實(shí)施例的被配置為針對演進(jìn)圖形提供全局邊緣id分配和/或增量頁面排列計(jì)算的計(jì)算機(jī)可讀介質(zhì)1200的框圖。計(jì)算機(jī)可讀介質(zhì)1200可以由處理器1202通過計(jì)算機(jī)總線1204進(jìn)行訪問。在一些示例中,計(jì)算機(jī)可讀介質(zhì)1200可以是非暫時性的計(jì)算機(jī)可讀介質(zhì)。在一些示例中,計(jì)算機(jī)可讀介質(zhì)可以是存儲介質(zhì),但不包括載波、信號等。此外,計(jì)算機(jī)可讀介質(zhì)1200可以包括用于指示處理器1202執(zhí)行當(dāng)前方法的計(jì)算機(jī)可執(zhí)行指令。

如圖12所示,本文所討論的各種軟件組件可以存儲在計(jì)算機(jī)可讀介質(zhì)1200上。例如,全局邊緣id分配應(yīng)用1206可以被配置為針對隨著要處理的關(guān)系數(shù)據(jù)的量的增加而演進(jìn)的圖形的邊緣來分配全局邊緣id。另外,增量頁面排序計(jì)算應(yīng)用1208可以被配置為針對演進(jìn)圖形計(jì)算增量頁面排序。

圖12的框圖并非旨在指示計(jì)算機(jī)可讀介質(zhì)1200將包括圖12所示的組件中的所有組件。此外,根據(jù)具體實(shí)現(xiàn)方式的細(xì)節(jié),計(jì)算機(jī)可讀介質(zhì)1200可以包括任何數(shù)量的在圖12中未示出的附加組件。

示例可以包括諸如針對演進(jìn)圖形提供全局邊緣id分配的系統(tǒng)和方法的主題。示例還可以包括諸如針對演進(jìn)圖形提供增量頁面排序計(jì)算的系統(tǒng)和方法的主題。

示例1包括一種用于針對演進(jìn)圖形計(jì)算全局邊緣id的方法。該方法包括針對包括多個頂點(diǎn)和多個邊緣的演進(jìn)圖形選擇塊大小,以及針對演進(jìn)圖形計(jì)算塊id。計(jì)算塊id包括創(chuàng)建表示演進(jìn)圖形的表,其中該表包括所選擇的塊大小的單元格、表示源頂點(diǎn)id的y軸、以及表示目標(biāo)頂點(diǎn)id的x軸,以及當(dāng)新的頂點(diǎn)被添加到演進(jìn)圖形時,在針對表的新行中的單元格計(jì)算塊id之前針對表的新列中的單元格計(jì)算塊id。該方法還包括針對演進(jìn)圖形基于源頂點(diǎn)id、目標(biāo)頂點(diǎn)id、以及針對每個邊緣所位于的塊的塊id來計(jì)算全局邊緣id。

示例2包含示例1的主題。在該示例中,該方法包括在遞歸函數(shù)中計(jì)算塊id。

示例3包含示例1-2的任何組合的主題。在該示例中,在遞歸函數(shù)中計(jì)算塊id包括,基于每個單元格的源頂點(diǎn)id和針對表中的最后的對角線單元格所計(jì)算的塊id,針對表的新列中的每個單元格計(jì)算塊id。

示例4包含示例1-3的任何組合的主題。在該示例中,在遞歸函數(shù)中計(jì)算塊id包括,基于每個單元格的目標(biāo)頂點(diǎn)id和針對表中的最后的對角線單元格右側(cè)的單元格所計(jì)算的塊id,針對表的新行中的每個單元格計(jì)算塊id。

示例5包含示例1-4的任何組合的主題。在該示例中,該方法包括高速緩存針對每個對角線單元格和表中每個對角線單元格右側(cè)的單元格的塊id。

示例6包含示例1-5的任何組合的主題。在該示例中,該方法包括將塊大小選擇為2n

示例7包含示例1-6的任何組合的主題。在該示例中,該方法包括在針對表的新行中的單元格計(jì)算塊id之前針對所述表的新列中的單元格計(jì)算塊id,其包括當(dāng)新的頂點(diǎn)被添加到演進(jìn)圖形時添加新列,針對新列中的單元格計(jì)算塊id,一旦已經(jīng)針對新列中的單元格計(jì)算塊id則添加新行,以及針對新行中的單元格計(jì)算塊id。

示例8包含示例1-7的任何組合的主題。在該示例中,該方法包括當(dāng)新的頂點(diǎn)被不斷地添加到演進(jìn)圖形時重復(fù)示例7的方法。

示例9包含示例1-8的任何組合的主題。在該示例中,該方法包括在針對表的新列中的單元格計(jì)算塊id之前針對表的新行中的單元格計(jì)算塊id。

示例10包含示例1-9的任何組合的主題。在該示例中,在針對表的新列中的單元格計(jì)算塊id之前針對表的新行中的單元格計(jì)算塊id包括:當(dāng)新的頂點(diǎn)被添加到演進(jìn)圖形中時添加新行,針對新行中的單元格計(jì)算塊id,一旦已經(jīng)針對新行中的單元格計(jì)算塊id則添加新列,以及針對新列中的單元格計(jì)算塊id。

示例11包含示例1-10的任何組合的主題。在該示例中,該方法包括當(dāng)新的頂點(diǎn)被不斷地添加到演進(jìn)圖形時重復(fù)示例10的方法。

示例12包含示例1-11的任何組合的主題。在該示例中,該方法包括通過以下操作針對演進(jìn)圖形計(jì)算增量頁面排序:使用靜態(tài)算法在第一處理窗口中計(jì)算頁面排序值,將所計(jì)算的頁面排序值保存為第一處理窗口的圖形狀態(tài),以及利用先前處理窗口的頁面排序值來初始化每個處理窗口處的頂點(diǎn)值。如果新的邊緣被添加而新的邊緣的源頂點(diǎn)值在先前處理窗口中已經(jīng)存在,則該方法還包括在當(dāng)前處理窗口的第一次迭代中將從先前處理窗口接收的源頂點(diǎn)的所有更新快速轉(zhuǎn)發(fā)到目標(biāo)頂點(diǎn)。對于所有其它類型的邊緣,如果邊緣的源頂點(diǎn)值不存在,則該方法還包括計(jì)算源頂點(diǎn)值在當(dāng)前迭代與先前迭代之間的變化,并將源頂點(diǎn)值的變化發(fā)送到目標(biāo)頂點(diǎn)。該方法還包括繼續(xù)此過程,直到已經(jīng)針對所有頂點(diǎn)計(jì)算頂點(diǎn)值,以及針對演進(jìn)圖形將頂點(diǎn)值保存為增量頁面排序值。

示例13包括一種機(jī)器可讀介質(zhì),其包括代碼,該代碼當(dāng)被執(zhí)行時使得機(jī)器執(zhí)行示例1-12的任何組合的方法。

示例14包括一種用于針對演進(jìn)圖形計(jì)算全局邊緣id的計(jì)算系統(tǒng)。該計(jì)算系統(tǒng)包括處理器和全局邊緣id分配應(yīng)用,全局邊緣id分配應(yīng)用至少部分地包括硬件邏輯。全局邊緣id分配應(yīng)用的硬件邏輯用于針對演進(jìn)圖形計(jì)算塊id。計(jì)算塊id包括創(chuàng)建表示演進(jìn)圖形的表,其中該表包括固定塊大小的單元格、表示源頂點(diǎn)id的y軸、以及表示目標(biāo)頂點(diǎn)id的x軸,以及當(dāng)新的頂點(diǎn)被添加到演進(jìn)圖形時,在針對表的新行中的單元格計(jì)算塊id之前針對表的新列中的單元格計(jì)算塊id。全局邊緣id分配應(yīng)用的硬件邏輯還用于針對演進(jìn)圖形基于源頂點(diǎn)id、目標(biāo)頂點(diǎn)id、以及針對每個邊緣所位于的塊的塊id來計(jì)算全局邊緣id。

示例15包含示例14的主題。在該示例中,全局邊緣id分配應(yīng)用的硬件邏輯通過以下操作在遞歸函數(shù)中計(jì)算塊id:基于每個單元格的源頂點(diǎn)id和針對表中的最后的對角線單元格所計(jì)算的塊id,針對表的新列中的每個單元格計(jì)算塊id,以及基于每個單元格的目標(biāo)頂點(diǎn)id和針對表中的最后的對角線單元右側(cè)的單元格所計(jì)算的塊id,針對表的新行中的每個單元格計(jì)算塊id。

示例16包含示例14-15的任何組合的主題。在該示例中,全局邊緣id分配應(yīng)用的硬件邏輯高速緩存針對每個對角線單元格和表中每個對角線單元格右側(cè)的單元格的塊id。

示例17包含示例14-16的任何組合的主題。在該示例中,全局邊緣id分配應(yīng)用的硬件邏輯通過以下操作在針對表的新行中的單元格計(jì)算塊id之前針對表的新列中的單元格計(jì)算塊id:當(dāng)新的頂點(diǎn)被添加到演進(jìn)圖形時添加新列,針對新列中的單元格計(jì)算塊id,一旦已經(jīng)針對新列中的單元格計(jì)算塊id則添加新行,以及針對新行中單元格計(jì)算塊id。

示例18包含了示例14-17的任何組合的主題。在該示例中,全局邊緣id分配應(yīng)用的硬件邏輯當(dāng)新的頂點(diǎn)被添加到演進(jìn)圖形時重復(fù)示例17的方法。

示例19包含示例14-18的任何組合的主題。在該示例中,全局邊緣id分配應(yīng)用的硬件邏輯通過以下操作在針對表的新列中的單元格計(jì)算塊id之前針對表的新行中的單元格計(jì)算塊id:當(dāng)新的頂點(diǎn)被添加到演進(jìn)圖形時添加新行,針對新行中的單元格計(jì)算塊id,一旦已經(jīng)針對新行中的單元格計(jì)算塊id則添加新列,以及針對新列中的單元格計(jì)算塊id。

示例20包含示例14-19的任何組合的主題。在該示例中,計(jì)算系統(tǒng)包括至少部分地包括硬件邏輯的增量頁面排序計(jì)算應(yīng)用。增量頁面排序計(jì)算應(yīng)用的硬件邏輯用于使用靜態(tài)算法在第一處理窗口中計(jì)算頁面排序值,將所計(jì)算的頁面排序值保存為第一處理窗口的圖形狀態(tài),以及利用先前處理窗口的頁面排序值來初始化每個處理窗口處的頂點(diǎn)值。如果新的邊緣被添加而在新的邊緣的源頂點(diǎn)值在先前處理窗口中已經(jīng)存在,則增量頁面排序計(jì)算應(yīng)用的硬件邏輯用于在當(dāng)前處理窗口的第一次迭代中,將從先前處理窗口接收的源頂點(diǎn)的所有更新快速轉(zhuǎn)發(fā)到目標(biāo)頂點(diǎn)。對于所有其它類型的邊緣,如果邊緣的源頂點(diǎn)值不存在,則增量頁面排序計(jì)算應(yīng)用的硬件邏輯用于計(jì)算源頂點(diǎn)值在當(dāng)前迭代與先前迭代之間的的變化,并將源頂點(diǎn)值的變化發(fā)送到目標(biāo)頂點(diǎn)。增量頁面排序計(jì)算應(yīng)用的硬件邏輯還用于繼續(xù)此過程,直到已經(jīng)針對所有頂點(diǎn)計(jì)算頂點(diǎn)值,以及針對演進(jìn)圖形將頂點(diǎn)值保存為增量頁面排序值。

示例21包括一種有形的、非暫時性的計(jì)算機(jī)可讀介質(zhì),其包括代碼,該代碼指示處理器針對包括多個頂點(diǎn)和多個邊緣的演進(jìn)圖形選擇塊大小,以及針對演進(jìn)圖形計(jì)算塊id。計(jì)算塊id包括創(chuàng)建表示演進(jìn)圖形的表,其中該表包括所選擇的塊大小的單元格、表示源頂點(diǎn)id的y軸、以及表示目標(biāo)頂點(diǎn)id的x軸,以及當(dāng)新的頂點(diǎn)被添加到演進(jìn)圖形時,在針對表的新行中的單元格計(jì)算塊id之前針對表的新列中的單元格計(jì)算塊id。該有形的、非暫時性的計(jì)算機(jī)可讀介質(zhì)還包括指示處理器針對演進(jìn)圖形基于源頂點(diǎn)id、目標(biāo)頂點(diǎn)id、以及每個邊緣所位于的塊的塊id來計(jì)算的全局邊緣id的代碼。

示例22包含示例21的主題。在該示例中,有形的、非暫時的計(jì)算機(jī)可讀介質(zhì)包括指示處理器通過以下操作在遞歸函數(shù)中計(jì)算塊id的代碼:基于每個單元格的源頂點(diǎn)和針對表中的最后的對角線單元格所計(jì)算的塊id,針對表的新列中的每個單元格計(jì)算塊id,以及基于每個單元格的目標(biāo)頂點(diǎn)id和針對表中的最后的對角線單元格右側(cè)的單元格所計(jì)算的塊id,針對表的新行中的每個單元格計(jì)算塊id。

示例23包含示例21-22的任何組合的主題。在該示例中,有形的、非暫時性的計(jì)算機(jī)可讀介質(zhì)包括指示處理器高速緩存針對每個對角線單元格和表中每個對角線單元格右側(cè)的單元格的塊id的代碼。

示例24包含示例21-23的任何組合的主題。在該示例中,有形的、非暫時性的計(jì)算機(jī)可讀介質(zhì)包括指示處理器通過以下操作在針對表的新行中的單元格計(jì)算塊id之前針對表的新列中的單元格計(jì)算塊id的代碼:當(dāng)新的頂點(diǎn)被添加到演進(jìn)圖形時添加新列,針對新列中的單元格計(jì)算塊id,一旦已經(jīng)針對新列中的單元格計(jì)算塊id則添加新行,以及針對新行中的單元格計(jì)算塊id。

示例25包含示例21-24的任何組合的主題。在該示例中,有形的、非暫時性的計(jì)算機(jī)可讀介質(zhì)包括指示處理器通過以下操作在針對表的新列中的單元格計(jì)算塊id之前針對表的新行中的單元格計(jì)算塊id的代碼:當(dāng)新的頂點(diǎn)被添加到演進(jìn)圖形時添加新行,針對新行中的單元格計(jì)算塊id,一旦已經(jīng)針對新行中的單元格計(jì)算塊id則添加新列,以及針對新列中的單元格計(jì)算塊id。

示例26包含示例21-25的任何組合的主題。在該示例中,有形的、非暫時性的計(jì)算機(jī)可讀介質(zhì)包括指示處理器進(jìn)行以下操作的代碼:使用靜態(tài)算法在第一處理窗口中計(jì)算頁面排序值,將所計(jì)算的頁面排序值保存為第一處理窗口的圖形狀態(tài),以及利用先前處理窗口的頁面排序值來初始化每個處理窗口處的頂點(diǎn)值。如果新的邊緣被添加而新的邊緣的源頂點(diǎn)值在先前處理窗口中已經(jīng)存在,則有形的、非暫時性的計(jì)算機(jī)可讀介質(zhì)包括指示處理器在當(dāng)前處理窗口的第一次迭代中將從先前處理窗口接收的源頂點(diǎn)的所有更新快速轉(zhuǎn)發(fā)到目標(biāo)頂點(diǎn)的代碼。對于所有其它類型的邊緣,如果邊緣的源頂點(diǎn)值不存在,則有形的、非暫時性的計(jì)算機(jī)可讀介質(zhì)包括指示處理器計(jì)算源頂點(diǎn)值在當(dāng)前迭代與先前迭代之間的變化并將源頂點(diǎn)值的變化發(fā)送到目標(biāo)頂點(diǎn)的代碼。有形的、非暫時性的計(jì)算機(jī)可讀介質(zhì)還包括指示處理器繼續(xù)此過程直到已經(jīng)針對所有頂點(diǎn)計(jì)算頂點(diǎn)值,以及針對演進(jìn)圖形將頂點(diǎn)值保存為增量頁面排序值的代碼。

示例27包括一種裝置,該裝置包括處理器和代碼,該代碼指示處理器針對包括多個頂點(diǎn)和多個邊緣的演進(jìn)圖形選擇塊大小,以及針對演進(jìn)圖形計(jì)算塊id。計(jì)算塊id包括創(chuàng)建表示演進(jìn)圖形的表,其中該表包括所選擇的塊大小的單元、表示源頂點(diǎn)id的y軸、以及表示目標(biāo)頂點(diǎn)id的x軸,以及當(dāng)新的頂點(diǎn)被添加到演進(jìn)圖形時,在針對表的新行中的單元格計(jì)算塊id之前針對表的新列中的單元格計(jì)算塊id。該裝置還包括指示處理器針對演進(jìn)圖形基于源頂點(diǎn)id、目標(biāo)頂點(diǎn)id、以及針對每個邊緣所位于的塊的塊id來計(jì)算全局邊緣id的代碼。

示例28包含示例27的主題。在該示例中,該裝置包括指示處理器通過以下操作在針對表的新行中的單元格計(jì)算塊id之前針對表的新列中的單元格計(jì)算塊id的代碼:當(dāng)新的頂點(diǎn)被添加到演進(jìn)圖形時添加新列,針對新列中的單元格計(jì)算塊id,一旦已經(jīng)針對新列中的單元格計(jì)算塊id則添加新行,以及針對新行中的單元格計(jì)算塊id。

示例29包含示例27-28的任何組合的主題。在該示例中,該裝置包括指示處理器通過以下操作在遞歸函數(shù)中計(jì)算塊id的代碼:基于每個單元格的源頂點(diǎn)id和針對表中的最后的對角線單元格所計(jì)算的塊id,針對表的新列中的每個單元格計(jì)算塊id,以及基于每個單元格的目標(biāo)頂點(diǎn)id和針對表中的最后的對角線單元格右側(cè)的單元格所計(jì)算的塊id,針對表的新行中的每個單元格計(jì)算塊id。

示例30包含示例27-29的任何組合的主題。在該示例中,該裝置包括用于引導(dǎo)處理器通過以下操作在計(jì)算表的新列中的單元格的塊id之前計(jì)算表的新行中的單元格的塊id的代碼:在新頂點(diǎn)添加到演進(jìn)圖形時,計(jì)算新行中單元格的塊id,一旦為新行中的單元格計(jì)算塊id,則添加新列,并計(jì)算新列中單元格的塊id。

示例31包含示例27-30的任何組合的主題。在該示例中,該裝置包括指示處理器高速緩存針對每個對角線單元格和表中每個對角線單元格右側(cè)的單元格的塊id的代碼。

示例32包含示例27-31的任何組合的主題。在該示例中,該裝置包括指示處理器進(jìn)行以下操作的代碼:使用靜態(tài)算法在第一處理窗口中計(jì)算頁面排序值,將所計(jì)算的頁面排序值保存為第一處理窗口的圖形狀態(tài),以及利用先前處理窗口的頁面排序值來初始化每個處理窗口處的頂點(diǎn)值。如果新的邊緣被添加而新的邊緣的源頂點(diǎn)值在先前處理窗口中已經(jīng)存在,則該代碼還指示處理器在當(dāng)前處理窗口的第一次迭代中將從先前處理窗口接收的源頂點(diǎn)的所有更新快速轉(zhuǎn)發(fā)到目標(biāo)頂點(diǎn)。對于所有其它類型的邊緣,如果邊緣的源頂點(diǎn)值不存在,則代碼指示處理器計(jì)算源頂點(diǎn)值在當(dāng)前迭代與先前迭代之間的變化,并將源頂點(diǎn)值的變化發(fā)送到目標(biāo)頂點(diǎn)。代碼還指示處理器繼續(xù)此過程,直到已經(jīng)針對所有頂點(diǎn)計(jì)算頂點(diǎn)值,以及針對演進(jìn)圖形將頂點(diǎn)值保存為增量頁面排序值。

示例33包括計(jì)算機(jī)可讀存儲設(shè)備,其包括計(jì)算機(jī)可讀指令,該計(jì)算機(jī)可讀指令當(dāng)被執(zhí)行時實(shí)現(xiàn)如任何前述示例中所描述的方法或?qū)崿F(xiàn)如任何前述示例中所描述的裝置。

應(yīng)當(dāng)理解,前述示例中的細(xì)節(jié)可以在一個或多個實(shí)施例中的任何地方使用。例如,上面所描述的計(jì)算設(shè)備的所有可選特征也可以關(guān)于本文所描述的方法或計(jì)算機(jī)可讀介質(zhì)中的任一種來實(shí)現(xiàn)。此外,盡管本文已經(jīng)使用流程圖和/或狀態(tài)圖描述了實(shí)施例,但是本技術(shù)不限于這些圖或本文中的對應(yīng)描述。例如,流程不一定需要移動通過每個所示出的框或狀態(tài),或者比一定需要按照與本文所示出和所描述的順序完全相同的順序。

本技術(shù)不被限制到本文所列出的具體細(xì)節(jié)。實(shí)際上,受益于本公開內(nèi)容的本領(lǐng)域技術(shù)人員將認(rèn)識到,可以在本技術(shù)的范圍內(nèi)進(jìn)行對前述描述和附圖的許多其它變型。相應(yīng)地,包括其任何修改的所附權(quán)利要求書對本技術(shù)的范圍進(jìn)行限定。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
龙州县| 永登县| 呼伦贝尔市| 祁连县| 西充县| 玛多县| 宝清县| 永清县| 肇源县| 大荔县| 霍林郭勒市| 柳州市| 济阳县| 永平县| 兴安盟| 洞头县| 菏泽市| 五华县| 台北县| 舞钢市| 佛山市| 保康县| 青浦区| 城固县| 民县| 墨江| 正阳县| 巴林左旗| 安塞县| 景谷| 湘阴县| 枞阳县| 鄂伦春自治旗| 龙泉市| 齐河县| 咸宁市| 新营市| 太湖县| 四川省| 普洱| 伊宁市|