本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法及裝置。
背景技術(shù):
最大流最小分割是圖論中用于研究網(wǎng)絡(luò)最優(yōu)化的經(jīng)典問題,最大流最小分割算法被廣泛應(yīng)用于分布式圖計(jì)算編程模型中。其中,Push-Relabel算法為一種常用的最大流算法。
Push-Relabel算法主要分為兩個(gè)操作:push操作和relabel操作。其中,這里以活躍頂點(diǎn)a的push操作和relabel操作為例,對(duì)push和relabel進(jìn)行說明。Push(a,b)表示當(dāng)頂點(diǎn)a的溢出量e(a)>0,a->b邊的殘余容量c(a,b)>0,頂點(diǎn)a的高度d(a)=d(b)+1時(shí),頂點(diǎn)a可以將頂點(diǎn)a的余量壓入頂點(diǎn)b,并從c(a,b)減去從頂點(diǎn)a壓入頂點(diǎn)b的余量,為b->a邊的殘余容量c(b,a)加上從頂點(diǎn)a壓入頂點(diǎn)b的余量,直至e(a)=0,d(b)為頂點(diǎn)b的高度;relabel(a)表示頂點(diǎn)a的余量e(a)>0,但由于d(a)小于d(x),水流不出去時(shí),重新設(shè)置頂點(diǎn)a的高度,使得d(a)=min(d(x))+1。其中,d(x)為頂點(diǎn)a的任一相鄰頂點(diǎn)的高度。
活躍頂點(diǎn)在執(zhí)行push操作和relabel操作后,該活躍頂點(diǎn)的高度與該活躍頂點(diǎn)的任一相鄰頂點(diǎn)的高度應(yīng)該符合Push-Relabel算法的正確性條件,如上述實(shí)例中,在活躍頂點(diǎn)a執(zhí)行push操作和relabel操作后,d(b)≤d(a)+1。但是,當(dāng)兩個(gè)相鄰的活躍頂點(diǎn)同時(shí)執(zhí)行push操作和relabel操作時(shí),可能會(huì)由于兩個(gè)相鄰的活躍頂點(diǎn)之間存在數(shù)據(jù)競爭,違背Push-Relabel算法的正確性。
例如,假設(shè)如圖1所示的頂點(diǎn)u和頂點(diǎn)v均為活躍頂點(diǎn),即e(u)=7>0、e(v)=2>0、e(w)=0,且d(u)=4、c(u,v)=7,d(v)=3、c(v,w)=10,d(w)=5。由于頂點(diǎn)u為活躍頂點(diǎn),且e(u)=7>0、c(u,v)=7、d(u)=d(v)+1,因此頂點(diǎn)u可以執(zhí)行push(u,v),將頂點(diǎn)u的余量壓入頂點(diǎn)v,如圖1所示,在頂點(diǎn)u執(zhí)行push(u,v)后e(u)=0,頂點(diǎn)u則不需要執(zhí)行Relabel(u)。在頂點(diǎn)u執(zhí)行push(u,v)的同時(shí),由于頂點(diǎn)v為活躍頂點(diǎn),且e(v)=2、c(v,w)=10、(即頂點(diǎn)v的溢出量e(v)>0,且頂點(diǎn)u到頂點(diǎn)v的殘余容 量c(u,v)>0),但是d(v)=3、d(w)=5,d(v)<d(w)=5,因此頂點(diǎn)v需要執(zhí)行Relabel(v),以使得d(v)=d(w)+1=6。頂點(diǎn)v執(zhí)行Relabel(v)會(huì)將頂點(diǎn)v的高度設(shè)置為6,此時(shí)v->u邊的殘余容量c(v,u)=9>0,但是d(v)≥d(u)+1,違背Push-Relabel算法的正確性。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的實(shí)施例提供一種數(shù)據(jù)處理方法及裝置,可以保證最大流Push-Relabel算法應(yīng)用于分布式圖計(jì)算編程模型的正確性。
為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
本發(fā)明實(shí)施例的第一方面,提供一種數(shù)據(jù)處理方法,包括:
若頂點(diǎn)x在第一超步激活,所述頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)>0,且所述頂點(diǎn)x的高度d(x)=d(y)+1,則在所述第一超步執(zhí)行push(x,y),以將所述頂點(diǎn)x的余量f(x)=min(e(x),c(x,y))壓入所述頂點(diǎn)y,所述頂點(diǎn)x與所述頂點(diǎn)y相鄰,d(y)為所述頂點(diǎn)y的高度,e(x)為所述頂點(diǎn)x的溢出量;
若所述頂點(diǎn)x在第二超步激活,所述頂點(diǎn)x到頂點(diǎn)z的殘余容量c(x,z)大于0,且d(x)<d(z),則執(zhí)行relabel(x),以使得d(x)=min(d(z))+1,所述頂點(diǎn)z為頂點(diǎn)x的任一相鄰頂點(diǎn),d(z)為所述頂點(diǎn)z的高度;
其中,所述第一超步與所述第二超步為相鄰超步;所述第一超步為偶數(shù)超步,所述第二超步為奇數(shù)超步,或者所述第一超步為奇數(shù)超步,所述第二超步為偶數(shù)超步。
結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理方法,還包括:
若所述頂點(diǎn)x在所述第二超步激活,c(x,y)>0,且d(x)=d(y)+1,則在所述第二超步的下一超步執(zhí)行push(x,y),以將f(x)壓入所述頂點(diǎn)y。
結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,所述若頂點(diǎn)x在第一超步激活,所述頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)>0,且所述頂點(diǎn)x的高度d(x)=d(y)+1,則在所述第一超步執(zhí)行push(x,y),以將所述頂點(diǎn)x的余量f(x)=min(e(x),c(x,y))壓入所述頂點(diǎn)y,包括:
若所述頂點(diǎn)x在所述第一超步激活,所述頂點(diǎn)x不是預(yù)設(shè)0號(hào)頂點(diǎn), 且c(x,y)>0,d(x)=d(y)+1,則獲取所述頂點(diǎn)y的標(biāo)識(shí)和c(x,y),所述預(yù)設(shè)0號(hào)頂點(diǎn)為預(yù)先配置的用于統(tǒng)計(jì)頂點(diǎn)的relabel次數(shù);
獲取所述頂點(diǎn)x的余量f(x),f(x)=min(e(x),c(x,y));
從e(x)中減去f(x),從c(x,y)減去f(x),為所述頂點(diǎn)y到所述頂點(diǎn)x的殘余容量c(y,x)加上f(x),并向所述頂點(diǎn)y發(fā)送包含f(x)的消息,直至e(x)=0。
結(jié)合第一方面以及上述任一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,若所述頂點(diǎn)x監(jiān)測到e(x)>0,所述頂點(diǎn)x自發(fā)激活所述頂點(diǎn)x;
若所述頂點(diǎn)x接收到頂點(diǎn)k發(fā)送包含所述頂點(diǎn)k的余量f(k)的消息,則所述頂點(diǎn)x被激活,f(k)=min(e(k),c(k,x)),所述頂點(diǎn)k與所述頂點(diǎn)x相鄰,e(k)為所述頂點(diǎn)k的余量,c(k,x)為所述頂點(diǎn)k到所述頂點(diǎn)x的殘余容量。
結(jié)合第一方面,在第四種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理方法,還包括:
在所述頂點(diǎn)x執(zhí)行relabel(x)后,為所述預(yù)設(shè)0號(hào)頂點(diǎn)統(tǒng)計(jì)的relabel次數(shù)加1。
結(jié)合第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理方法,還包括:
若頂點(diǎn)x在所述第一超步激活,且所述頂點(diǎn)x為預(yù)設(shè)0號(hào)頂點(diǎn),則獲取所述預(yù)設(shè)0號(hào)頂點(diǎn)統(tǒng)計(jì)的relabel次數(shù);
若所述預(yù)設(shè)0號(hào)頂點(diǎn)統(tǒng)計(jì)的relabel次數(shù)高于relabel次數(shù)閾值,則激活所述預(yù)設(shè)0號(hào)頂點(diǎn),以在所述第一超步的下一超步停止本次push-relabel任務(wù)。
結(jié)合第四種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理方法,還包括:
若所述頂點(diǎn)x在第二超步激活,且所述頂點(diǎn)x為所述預(yù)設(shè)0號(hào)頂點(diǎn),則停止本次push-relabel任務(wù)。
結(jié)合第一方面,在第七種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理方法,還包括:
若所述頂點(diǎn)x在第二超步激活,且所述頂點(diǎn)x為匯點(diǎn)s,則為所述匯點(diǎn)s的溢出量e(s)疊加e(s)。
結(jié)合第一種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,所述若所述頂點(diǎn)x在所述第二超步激活,c(x,y)>0,且d(x)=d(y)+1,則在所述第二超步的下一超步執(zhí)行push(x,y),以將f(x)壓入所述頂點(diǎn)y,包括:
若所述頂點(diǎn)x在所述第二超步激活,所述頂點(diǎn)x不是預(yù)設(shè)0號(hào)頂點(diǎn),且所述頂點(diǎn)x不是匯點(diǎn)s,c(x,y)>0,且d(x)=d(y)+1,則在所述第二超步的下一超步執(zhí)行push(x,y),以將f(x)壓入所述頂點(diǎn)y。
本發(fā)明實(shí)施例的第二方面,提供一種數(shù)據(jù)處理裝置,包括:
流量壓入單元,用于若頂點(diǎn)x在第一超步激活,所述頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)>0,且所述頂點(diǎn)x的高度d(x)=d(y)+1,則在所述第一超步執(zhí)行push(x,y),以將所述頂點(diǎn)x的余量f(x)=min(e(x),c(x,y))壓入所述頂點(diǎn)y,所述頂點(diǎn)x與所述頂點(diǎn)y相鄰,d(y)為所述頂點(diǎn)y的高度,e(x)為所述頂點(diǎn)x的溢出量;
高度調(diào)整單元,用于若所述頂點(diǎn)x在第二超步激活,所述頂點(diǎn)x到頂點(diǎn)z的殘余容量c(x,z)大于0,且d(x)<d(z),則執(zhí)行relabel(x),以使得d(x)=min(d(z))+1,所述頂點(diǎn)z為頂點(diǎn)x的任一相鄰頂點(diǎn),d(z)為所述頂點(diǎn)z的高度;
其中,所述第一超步與所述第二超步為相鄰超步;所述第一超步為偶數(shù)超步,所述第二超步為奇數(shù)超步,或者所述第一超步為奇數(shù)超步,所述第二超步為偶數(shù)超步。
結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述流量壓入單元,還用于若所述頂點(diǎn)x在所述第二超步激活,c(x,y)>0,且d(x)=d(y)+1,則在所述第二超步的下一超步執(zhí)行push(x,y),以將f(x)壓入所述頂點(diǎn)y。
結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,所述流量壓入單元,具體用于:
若所述頂點(diǎn)x在所述第一超步激活,所述頂點(diǎn)x不是預(yù)設(shè)0號(hào)頂點(diǎn),且c(x,y)>0,d(x)=d(y)+1,則獲取所述頂點(diǎn)y的標(biāo)識(shí)和c(x,y),所述預(yù)設(shè)0號(hào)頂點(diǎn)為預(yù)先配置的用于統(tǒng)計(jì)其他頂點(diǎn)的relabel次數(shù)的頂點(diǎn);
獲取所述頂點(diǎn)x的余量f(x),f(x)=min(e(x),c(x,y));
從e(x)中減去f(x),從c(x,y)減去f(x),為所述頂點(diǎn)y到所述頂點(diǎn)x的殘余容量c(y,x)加上f(x),并向所述頂點(diǎn)y發(fā)送包含f(x)的消息,直至e(x)=0。
結(jié)合第二方面和上述任一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理裝置還可以包括:
頂點(diǎn)激活單元,用于:
若所述頂點(diǎn)x監(jiān)測到e(x)>0,所述頂點(diǎn)x自發(fā)激活所述頂點(diǎn)x;
或者,
若所述頂點(diǎn)x接收到頂點(diǎn)k發(fā)送包含所述頂點(diǎn)k的余量f(k)的消息,則所述頂點(diǎn)x被激活,f(k)=min(e(k),c(k,x)),所述頂點(diǎn)k與所述頂點(diǎn)x相鄰,e(k)為所述頂點(diǎn)k的余量,c(k,x)為所述頂點(diǎn)k到所述頂點(diǎn)x的殘余容量。
結(jié)合第二方面,在第四種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理裝置還可以包括:
次數(shù)統(tǒng)計(jì)單元,用于在所述高度調(diào)整單元控制頂點(diǎn)x執(zhí)行relabel(x)后,為所述預(yù)設(shè)0號(hào)頂點(diǎn)統(tǒng)計(jì)的relabel次數(shù)加1。
結(jié)合第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理裝置還可以包括:
獲取單元,用于若頂點(diǎn)x在所述第一超步激活,且所述頂點(diǎn)x為預(yù)設(shè)0號(hào)頂點(diǎn),則獲取所述次數(shù)統(tǒng)計(jì)單元統(tǒng)計(jì)的relabel次數(shù);
頂點(diǎn)激活單元,用于若所述預(yù)設(shè)0號(hào)頂點(diǎn)統(tǒng)計(jì)的relabel次數(shù)高于relabel次數(shù)閾值,則激活所述預(yù)設(shè)0號(hào)頂點(diǎn),以在所述第一超步的下一超步停止本次push-relabel任務(wù)。
結(jié)合第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理裝置還可以包括:
任務(wù)控制單元,用于若所述頂點(diǎn)x在第二超步激活,且所述頂點(diǎn)x為所述預(yù)設(shè)0號(hào)頂點(diǎn),則停止本次push-relabel任務(wù)。
結(jié)合第二方面,在第七種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理裝置還可以包括:
匯點(diǎn)控制單元,用于若所述頂點(diǎn)x在第二超步激活,且所述頂點(diǎn)x 為匯點(diǎn)s,則為所述匯點(diǎn)s的溢出量e(s)疊加e(s)。
結(jié)合第一方面,在第八種可能的實(shí)現(xiàn)方式中,所述流量壓入單元,具體用于:
若所述頂點(diǎn)x在所述第二超步激活,所述頂點(diǎn)x不是預(yù)設(shè)0號(hào)頂點(diǎn),且所述頂點(diǎn)x不是匯點(diǎn)s,c(x,y)>0,且d(x)=d(y)+1,則在所述第二超步的下一超步執(zhí)行push(x,y),以將f(x)壓入所述頂點(diǎn)y。
本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法及裝置,若頂點(diǎn)x在第一超步激活,頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)>0,且頂點(diǎn)x的高度d(x)=d(y)+1,則在第一超步執(zhí)行push(x,y),以將頂點(diǎn)x的余量f(x)=min(e(x),c(x,y))壓入頂點(diǎn)y;若頂點(diǎn)x在第二超步激活,頂點(diǎn)x到頂點(diǎn)z的殘余容量c(x,z)大于0,且d(x)<d(z),則執(zhí)行relabel(x),以使得d(x)=min(d(z))+1,頂點(diǎn)z為頂點(diǎn)x的任一相鄰頂點(diǎn),d(z)為頂點(diǎn)z的高度。
通過本方案,頂點(diǎn)x(任一頂點(diǎn))只會(huì)在第一超步被激活,且滿足push操作的條件時(shí),才會(huì)執(zhí)行push操作,并且,頂點(diǎn)x(任一頂點(diǎn))只會(huì)在第二超步激活,且滿足relabel操作的條件時(shí),才會(huì)執(zhí)行relabel操作。即所有的頂點(diǎn)x都只會(huì)在第一超步執(zhí)行push操作,在第二超步執(zhí)行relabel操作,不會(huì)出現(xiàn)由于兩個(gè)相鄰的活躍頂點(diǎn)同時(shí)執(zhí)行push操作和relabel操作時(shí),從而違背Push-Relabel算法的正確性的問題;進(jìn)而可以保證最大流Push-Relabel算法應(yīng)用于分布式圖計(jì)算編程模型的正確性。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明背景技術(shù)中的一種push-relabel算法的狀態(tài)圖;
圖2為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)處理方法流程圖;
圖3為本發(fā)明實(shí)施例提供的一種push-relabel算法的狀態(tài)圖;
圖4為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)處理方法流程圖;
圖5為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)處理裝置的組成示意圖;
圖6為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)處理裝置的組成示意圖;
圖7為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)處理裝置的組成示意圖;
圖8為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)處理裝置的組成示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例1
本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法,如圖2所示,該數(shù)據(jù)處理方法包括:
S101、若頂點(diǎn)x在第一超步激活,頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)>0,且頂點(diǎn)x的高度d(x)=d(y)+1,則在第一超步執(zhí)行push(x,y),以將頂點(diǎn)x的余量f(x)=min(e(x),c(x,y))壓入頂點(diǎn)y。
其中,頂點(diǎn)x為任一頂點(diǎn),頂點(diǎn)x與頂點(diǎn)y相鄰(即頂點(diǎn)y為頂點(diǎn)x的相鄰頂點(diǎn)),d(y)為頂點(diǎn)y的高度,e(x)為頂點(diǎn)x的溢出量。
本發(fā)明實(shí)施例中頂點(diǎn)x激活可以包括:若所述頂點(diǎn)x監(jiān)測到e(x)>0,頂點(diǎn)x自發(fā)激活頂點(diǎn)x;或者,若頂點(diǎn)x接收到頂點(diǎn)k發(fā)送包含頂點(diǎn)k的余量f(k)的消息,則頂點(diǎn)x被激活,f(k)=min(e(k),c(k,x)),頂點(diǎn)k與頂點(diǎn)x相鄰,e(k)為頂點(diǎn)k的余量,c(k,x)為頂點(diǎn)k到頂點(diǎn)x的殘余容量。
需要說明的是,頂點(diǎn)x接收到頂點(diǎn)k發(fā)送包含頂點(diǎn)k的余量f(k)的消息即表示頂點(diǎn)k將頂點(diǎn)k的余量f(k)壓入頂點(diǎn)x,在頂點(diǎn)x接收到頂點(diǎn)k發(fā)送包含頂點(diǎn)k的余量f(k)的消息(即頂點(diǎn)k將頂點(diǎn)k的余量f(k)壓入頂點(diǎn)x)后,e(x)≥f(k)>0。
當(dāng)頂點(diǎn)x在第一超步激活,且頂點(diǎn)x滿足push操作的條件(即頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)>0,且頂點(diǎn)x的高度d(x)=d(y)+1)時(shí),則可以在第一超步執(zhí)行push(x,y),以將頂點(diǎn)x的余量 f(x)=min(e(x),c(x,y))壓入頂點(diǎn)y。
例如,如圖3所示,在第一超步頂點(diǎn)u的溢出量e(u)=7>0,即頂點(diǎn)u在第一超步激活(即頂點(diǎn)u在第一超步為活躍頂點(diǎn)),且頂點(diǎn)u滿足push操作的條件(即頂點(diǎn)u到頂點(diǎn)v的殘余容量c(u,v)=7>0,且頂點(diǎn)u的高度d(u)=d(v)+1),因此頂點(diǎn)u可以執(zhí)行push(u,v),將頂點(diǎn)u的余量壓入頂點(diǎn)v。
如圖3所示,在第一超步頂點(diǎn)v的溢出量e(v)=2>0,即頂點(diǎn)v在第一超步激活(即頂點(diǎn)v在第一超步為活躍頂點(diǎn)),但是由于頂點(diǎn)v不滿足push操作的條件(即頂點(diǎn)v到頂點(diǎn)u的殘余容量c(v,u)=0;或者,頂點(diǎn)v到頂點(diǎn)w的殘余容量c(v,w)=10,但頂點(diǎn)v的高度d(v)<d(w),因此頂點(diǎn)v不可以執(zhí)行push(v,u)或者push(v,w)。
S102、若頂點(diǎn)x在第二超步激活,頂點(diǎn)x到頂點(diǎn)z的殘余容量c(x,z)大于0,且d(x)<d(z),則執(zhí)行relabel(x),以使得d(x)=min(d(z))+1,頂點(diǎn)z為頂點(diǎn)x的任一相鄰頂點(diǎn),d(z)為頂點(diǎn)z的高度。
其中,第一超步與第二超步為相鄰超步;第一超步為偶數(shù)超步,第二超步為奇數(shù)超步,或者第一超步為奇數(shù)超步,第二超步為偶數(shù)超步。
當(dāng)頂點(diǎn)x在第二超步激活,且頂點(diǎn)x滿足relabel操作的條件(即頂點(diǎn)x到頂點(diǎn)z的殘余容量c(x,z)大于0,且d(x)<d(z))時(shí),則可以在第一超步執(zhí)行relabel(x),以使得d(x)=min(d(z))+1。
例如,如圖3所示,在第二超步頂點(diǎn)v的溢出量e(v)=2>0,即頂點(diǎn)v在第二超步激活(即頂點(diǎn)v在第二超步為活躍頂點(diǎn)),且頂點(diǎn)v滿足Relabel操作的條件(即頂點(diǎn)v到頂點(diǎn)u的殘余容量c(v,u)=7>0,但頂點(diǎn)v的高度d(v)=d(u)-1<d(u)),因此頂點(diǎn)v可以執(zhí)行relabel(v),,以使得d(v)=d(u)+1。
需要說明的是,本發(fā)明實(shí)施例中方法步驟的執(zhí)行主體可以為數(shù)據(jù)處理裝置,也可以為計(jì)算機(jī)的中央處理器(Central Processing Unit,CPU)。其中,數(shù)據(jù)處理裝置可以為計(jì)算機(jī)中用于控制在分布式圖計(jì)算編程模型中執(zhí)行Push-Relabel算法的控制模塊,本發(fā)明實(shí)施例對(duì)此不做限制。
本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法,若頂點(diǎn)x在第一超步激活,頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)>0,且頂點(diǎn)x的高度d(x)=d(y)+1,則在第一超步執(zhí)行push(x,y),以將頂點(diǎn)x的余量f(x)=min(e(x),c(x,y))壓 入頂點(diǎn)y;若頂點(diǎn)x在第二超步激活,頂點(diǎn)x到頂點(diǎn)z的殘余容量c(x,z)大于0,且d(x)<d(z),則執(zhí)行relabel(x),以使得d(x)=min(d(z))+1,頂點(diǎn)z為頂點(diǎn)x的任一相鄰頂點(diǎn),d(z)為頂點(diǎn)z的高度。
通過本方案,頂點(diǎn)x(任一頂點(diǎn))只會(huì)在第一超步被激活,且滿足push操作的條件時(shí),才會(huì)執(zhí)行push操作,并且,頂點(diǎn)x(任一頂點(diǎn))只會(huì)在第二超步激活,且滿足relabel操作的條件時(shí),才會(huì)執(zhí)行relabel操作。即所有的頂點(diǎn)x都只會(huì)在第一超步執(zhí)行push操作,在第二超步執(zhí)行relabel操作,不會(huì)出現(xiàn)由于兩個(gè)相鄰的活躍頂點(diǎn)同時(shí)執(zhí)行push操作和relabel操作時(shí),從而違背Push-Relabel算法的正確性的問題。
如圖3所示,在第一超步執(zhí)行了push(u,v)(此時(shí)頂點(diǎn)u為頂點(diǎn)x)之后,使得u->v邊的殘余容量c(u,v)=0,而v->u邊的殘余容量c(v,u)=7>0;在第二超步執(zhí)行relabel(v)(此時(shí)頂點(diǎn)v為頂點(diǎn)x)時(shí),則會(huì)由于v->u邊的殘余容量c(v,u)=7>0,且頂點(diǎn)v的相鄰頂點(diǎn)中,頂點(diǎn)u的高度d(u)小于頂點(diǎn)w的高度d(w),從而設(shè)置d(v)=d(u)+1=5。由此,即使相鄰的活躍頂點(diǎn)u和活躍頂點(diǎn)v分別執(zhí)行了push操作和relabel操作,頂點(diǎn)u和頂點(diǎn)v的高度符合d(v)≤d(u)+1,即可以保證最大流Push-Relabel算法應(yīng)用于分布式圖計(jì)算編程模型的正確性。
實(shí)施例2
本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法,如圖4所示,該數(shù)據(jù)處理方法包括:
S201、當(dāng)頂點(diǎn)x激活時(shí),判斷頂點(diǎn)x在第一超步激活或者頂點(diǎn)x在第二超步激活。
當(dāng)e(x)>0時(shí),頂點(diǎn)x激活(即頂點(diǎn)x為活躍頂點(diǎn))。示例性的,頂點(diǎn)x可以在監(jiān)測到e(x)>0時(shí),自發(fā)激活頂點(diǎn)x;或者,若頂點(diǎn)x接收到頂點(diǎn)k發(fā)送包含頂點(diǎn)k的余量f(k)的消息,則頂點(diǎn)x被激活,f(k)=min(e(k),c(k,x)),頂點(diǎn)k與頂點(diǎn)x相鄰,e(k)為頂點(diǎn)k的余量,c(k,x)為頂點(diǎn)k到頂點(diǎn)x的殘余容量。其中,頂點(diǎn)x接收到頂點(diǎn)k發(fā)送包含頂點(diǎn)k的余量f(k)的消息即表示頂點(diǎn)k將頂點(diǎn)k的余量f(k)壓入頂點(diǎn)x,在頂點(diǎn)x接收到頂點(diǎn)k發(fā)送包含頂點(diǎn)k的余量f(k)的消息(即頂點(diǎn)k將頂點(diǎn)k的余量f(k)壓入頂點(diǎn)x)后,e(x)≥f(k)>0。
需要說明的是,本發(fā)明實(shí)施例中的第一超步與第二超步為相鄰超步。在一種應(yīng)用場景中,第一超步為偶數(shù)超步,第二超步為奇數(shù)超步。在另 一種應(yīng)用場景中,第一超步為奇數(shù)超步,第二超步為偶數(shù)超步。
具體的,若頂點(diǎn)x在第一超步激活,則繼續(xù)執(zhí)行S202-S207;若頂點(diǎn)x在第二超步激活,則繼續(xù)執(zhí)行S208-S213。
S202、若頂點(diǎn)x在第一超步激活,則判斷頂點(diǎn)x是否為預(yù)設(shè)0號(hào)頂點(diǎn)。
其中,預(yù)設(shè)0號(hào)頂點(diǎn)為預(yù)先配置的用于統(tǒng)計(jì)其他頂點(diǎn)的relabel次數(shù)的頂點(diǎn)。
若頂點(diǎn)x在第一超步激活,頂點(diǎn)x不是預(yù)設(shè)0號(hào)頂點(diǎn),則執(zhí)行S203-S205;若頂點(diǎn)x在第一超步激活,頂點(diǎn)x為預(yù)設(shè)0號(hào)頂點(diǎn),則執(zhí)行S206-S207:
S203、若頂點(diǎn)x在第一超步激活,頂點(diǎn)x不是預(yù)設(shè)0號(hào)頂點(diǎn),且c(x,y)>0,d(x)=d(y)+1,則獲取頂點(diǎn)y的標(biāo)識(shí)和c(x,y)。
當(dāng)頂點(diǎn)x在第一超步激活,頂點(diǎn)x不是預(yù)設(shè)0號(hào)頂點(diǎn),且頂點(diǎn)x滿足push操作的條件(即頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)>0,且頂點(diǎn)x的高度d(x)=d(y)+1)時(shí),則可以在第一超步執(zhí)行push(x,y)。首先,可以獲取頂點(diǎn)y的標(biāo)識(shí)和c(x,y),然后將獲取的頂點(diǎn)y的標(biāo)識(shí)和c(x,y)收集起來,保存至備選集candidates中。其中,選集candidates可以為預(yù)配置的用于存儲(chǔ)頂點(diǎn)信息(包括頂點(diǎn)的標(biāo)識(shí)、一頂點(diǎn)到另一頂點(diǎn)的殘余容量、頂點(diǎn)的溢出量等)的存儲(chǔ)節(jié)點(diǎn)。
S204、獲取頂點(diǎn)x的余量f(x),f(x)=min(e(x),c(x,y))。
其中,當(dāng)頂點(diǎn)x的溢出量e(x)小于頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)時(shí),f(x)=e(x);當(dāng)頂點(diǎn)x的溢出量e(x)大于等于頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)時(shí),f(x)=c(x,y)。
S205、從e(x)中減去f(x),從c(x,y)減去f(x),為頂點(diǎn)y到頂點(diǎn)x的殘余容量c(y,x)加上f(x),并向頂點(diǎn)y發(fā)送包含f(x)的消息,直至e(x)=0。
S206、若頂點(diǎn)x在第一超步激活,且頂點(diǎn)x為預(yù)設(shè)0號(hào)頂點(diǎn),則獲取預(yù)設(shè)0號(hào)頂點(diǎn)統(tǒng)計(jì)的relabel次數(shù)。
S207、若預(yù)設(shè)0號(hào)頂點(diǎn)統(tǒng)計(jì)的relabel次數(shù)高于relabel次數(shù)閾值,則激活預(yù)設(shè)0號(hào)頂點(diǎn),以在第一超步的下一超步停止本次push-relabel任務(wù)。
其中,當(dāng)預(yù)設(shè)0號(hào)頂點(diǎn)在第一超步激活時(shí),則可以獲取預(yù)設(shè)0號(hào)頂點(diǎn)統(tǒng)計(jì)的relabel次數(shù),并在預(yù)設(shè)0號(hào)頂點(diǎn)統(tǒng)計(jì)的relabel次數(shù)高于relabel次數(shù)閾值時(shí),激活預(yù)設(shè)0號(hào)頂點(diǎn)。并且,由于本發(fā)明實(shí)施例所保護(hù)的方法中,在第一超步執(zhí)行push操作,在第二超步執(zhí)行relabel操作,因此,為了保證push-relabel操作的完整性,則可以在第一超步的下一超步(即下一個(gè)第二超步)停止本次push-relabel任務(wù)。
S208、若頂點(diǎn)x在第二超步激活,則確定頂點(diǎn)x是否為預(yù)設(shè)0號(hào)頂點(diǎn)或者匯點(diǎn)s。
具體的,若頂點(diǎn)x在第二超步激活,頂點(diǎn)x不是預(yù)設(shè)0號(hào)頂點(diǎn),且頂點(diǎn)x不是匯點(diǎn)s,則繼續(xù)執(zhí)行S209-S210或S213;若頂點(diǎn)x在第二超步激活,且頂點(diǎn)x為預(yù)設(shè)0號(hào)頂點(diǎn),則繼續(xù)執(zhí)行S211;若頂點(diǎn)x在第二超步激活,且頂點(diǎn)x為匯點(diǎn)s,則繼續(xù)執(zhí)行S212。
S209、若頂點(diǎn)x在第二超步激活,頂點(diǎn)x不是預(yù)設(shè)0號(hào)頂點(diǎn),且頂點(diǎn)x不是匯點(diǎn)s,頂點(diǎn)x到頂點(diǎn)z的殘余容量c(x,z)大于0,d(x)<d(z),則執(zhí)行relabel(x),以使得d(x)=min(d(z))+1。
其中,頂點(diǎn)z為頂點(diǎn)x的任一相鄰頂點(diǎn),d(z)為頂點(diǎn)z的高度。
S210、在頂點(diǎn)x執(zhí)行relabel(x)后,為預(yù)設(shè)0號(hào)頂點(diǎn)統(tǒng)計(jì)的relabel次數(shù)加1。
S211、若頂點(diǎn)x在第二超步激活,且頂點(diǎn)x為預(yù)設(shè)0號(hào)頂點(diǎn),則停止本次push-relabel任務(wù)。
S212、若頂點(diǎn)x在第二超步激活,且頂點(diǎn)x為匯點(diǎn)s,則為匯點(diǎn)s的溢出量e(s)疊加e(s)。
S213、若頂點(diǎn)x在第二超步激活,頂點(diǎn)x不是預(yù)設(shè)0號(hào)頂點(diǎn),且頂點(diǎn)x不是匯點(diǎn)s,c(x,y)>0,且d(x)=d(y)+1,則在第二超步的下一超步執(zhí)行push(x,y),以將f(x)壓入頂點(diǎn)y。
本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法,若頂點(diǎn)x在第一超步激活,頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)>0,且頂點(diǎn)x的高度d(x)=d(y)+1,則在第一超步執(zhí)行push(x,y),以將頂點(diǎn)x的余量f(x)=min(e(x),c(x,y))壓入頂點(diǎn)y;若頂點(diǎn)x在第二超步激活,頂點(diǎn)x到頂點(diǎn)z的殘余容量c(x,z)大于0,且d(x)<d(z),則執(zhí)行relabel(x),以使得d(x)=min(d(z))+1,頂點(diǎn)z為頂點(diǎn)x的任一相鄰頂點(diǎn),d(z)為頂點(diǎn)z的高度。
通過本方案,頂點(diǎn)x(任一頂點(diǎn))只會(huì)在第一超步被激活,且滿足push操作的條件時(shí),才會(huì)執(zhí)行push操作,并且,頂點(diǎn)x(任一頂點(diǎn))只會(huì)在第二超步激活,且滿足relabel操作的條件時(shí),才會(huì)執(zhí)行relabel操作。即所有的頂點(diǎn)x都只會(huì)在第一超步執(zhí)行push操作,在第二超步執(zhí)行relabel操作,不會(huì)出現(xiàn)由于兩個(gè)相鄰的活躍頂點(diǎn)同時(shí)執(zhí)行push操作和relabel操作時(shí),從而違背Push-Relabel算法的正確性的問題。
如圖3所示,在第一超步執(zhí)行了push(u,v)(此時(shí)頂點(diǎn)u為頂點(diǎn)x)之后,使得u->v邊的殘余容量c(u,v)=0,而v->u邊的殘余容量c(v,u)=7>0;在第二超步執(zhí)行relabel(v)(此時(shí)頂點(diǎn)v為頂點(diǎn)x)時(shí),則會(huì)由于v->u邊的殘余容量c(v,u)=7>0,且頂點(diǎn)v的相鄰頂點(diǎn)中,頂點(diǎn)u的高度d(u)小于頂點(diǎn)w的高度d(w),從而設(shè)置d(v)=d(u)+1=5。由此,即使相鄰的活躍頂點(diǎn)u和活躍頂點(diǎn)v分別執(zhí)行了push操作和relabel操作,頂點(diǎn)u和頂點(diǎn)v的高度符合d(v)≤d(u)+1,即可以保證最大流Push-Relabel算法應(yīng)用于分布式圖計(jì)算編程模型的正確性。
實(shí)施例3
本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理裝置,如圖5所示,該數(shù)據(jù)處理裝置,包括:流量壓入單元31和高度調(diào)整單元32。
流量壓入單元31,用于若頂點(diǎn)x在第一超步激活,所述頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)>0,且所述頂點(diǎn)x的高度d(x)=d(y)+1,則在所述第一超步執(zhí)行push(x,y),以將所述頂點(diǎn)x的余量f(x)=min(e(x),c(x,y))壓入所述頂點(diǎn)y,所述頂點(diǎn)x與所述頂點(diǎn)y相鄰,d(y)為所述頂點(diǎn)y的高度,e(x)為所述頂點(diǎn)x的溢出量。
高度調(diào)整單元32,用于若所述頂點(diǎn)x在第二超步激活,所述頂點(diǎn)x到頂點(diǎn)z的殘余容量c(x,z)大于0,且d(x)<d(z),則執(zhí)行relabel(x),以使得d(x)=min(d(z))+1,所述頂點(diǎn)z為頂點(diǎn)x的任一相鄰頂點(diǎn),d(z)為所述頂點(diǎn)z的高度。
其中,所述第一超步與所述第二超步為相鄰超步;所述第一超步為偶數(shù)超步,所述第二超步為奇數(shù)超步,或者所述第一超步為奇數(shù)超步,所述第二超步為偶數(shù)超步。
進(jìn)一步的,所述流量壓入單元31,還用于若所述頂點(diǎn)x在所述第二超步激活,c(x,y)>0,且d(x)=d(y)+1,則在所述第二超步的下一超步執(zhí)行push(x,y),以將f(x)壓入所述頂點(diǎn)y。
進(jìn)一步,所述流量壓入單元31,具體用于:
若所述頂點(diǎn)x在所述第一超步激活,所述頂點(diǎn)x不是預(yù)設(shè)0號(hào)頂點(diǎn),且c(x,y)>0,d(x)=d(y)+1,則獲取所述頂點(diǎn)y的標(biāo)識(shí)和c(x,y),所述預(yù)設(shè)0號(hào)頂點(diǎn)為預(yù)先配置的用于統(tǒng)計(jì)其他頂點(diǎn)的relabel次數(shù)的頂點(diǎn);
獲取所述頂點(diǎn)x的余量f(x),f(x)=min(e(x),c(x,y));
從e(x)中減去f(x),從c(x,y)減去f(x),為所述頂點(diǎn)y到所述頂點(diǎn)x的殘余容量c(y,x)加上f(x),并向所述頂點(diǎn)y發(fā)送包含f(x)的消息,直至e(x)=0。
進(jìn)一步的,如圖6所示,該數(shù)據(jù)處理裝置還可以包括:次數(shù)統(tǒng)計(jì)單元33。
次數(shù)統(tǒng)計(jì)單元33,用于在所述高度調(diào)整單元32控制頂點(diǎn)x執(zhí)行relabel(x)后,為所述預(yù)設(shè)0號(hào)頂點(diǎn)統(tǒng)計(jì)的relabel次數(shù)加1。
進(jìn)一步的,如圖7所示,該數(shù)據(jù)處理裝置還可以包括:獲取單元34和頂點(diǎn)激活單元35。
獲取單元34,用于若頂點(diǎn)x在所述第一超步激活,且所述頂點(diǎn)x為預(yù)設(shè)0號(hào)頂點(diǎn),則獲取所述次數(shù)統(tǒng)計(jì)單元統(tǒng)計(jì)的relabel次數(shù)。
頂點(diǎn)激活單元35,用于若所述預(yù)設(shè)0號(hào)頂點(diǎn)統(tǒng)計(jì)的relabel次數(shù)高于relabel次數(shù)閾值,則激活所述預(yù)設(shè)0號(hào)頂點(diǎn),以在所述第一超步的下一超步停止本次push-relabel任務(wù)。
進(jìn)一步的,頂點(diǎn)激活單元35,還用于:
若所述頂點(diǎn)x監(jiān)測到e(x)>0,所述頂點(diǎn)x自發(fā)激活所述頂點(diǎn)x;
或者,若所述頂點(diǎn)x接收到頂點(diǎn)k發(fā)送包含所述頂點(diǎn)k的余量f(k)的消息,則所述頂點(diǎn)x被激活,f(k)=min(e(k),c(k,x)),所述頂點(diǎn)k與所述頂點(diǎn)x相鄰,e(k)為所述頂點(diǎn)k的余量,c(k,x)為所述頂點(diǎn)k到所述頂點(diǎn)x的殘余容量。
進(jìn)一步的,如圖8所示,該數(shù)據(jù)處理裝置還可以包括:任務(wù)控制單元36。
任務(wù)控制單元36,用于若所述頂點(diǎn)x在第二超步激活,且所述頂點(diǎn)x為所述預(yù)設(shè)0號(hào)頂點(diǎn),則停止本次push-relabel任務(wù)。
進(jìn)一步的,該數(shù)據(jù)處理裝置還可以包括:匯點(diǎn)控制單元。
匯點(diǎn)控制單元,用于若所述頂點(diǎn)x在第二超步激活,且所述頂點(diǎn)x為匯點(diǎn)s,則為所述匯點(diǎn)s的溢出量e(s)疊加e(s)。
進(jìn)一步的,所述流量壓入單元31,具體用于:若所述頂點(diǎn)x在所述第二超步激活,所述頂點(diǎn)x不是預(yù)設(shè)0號(hào)頂點(diǎn),且所述頂點(diǎn)x不是匯點(diǎn)s,c(x,y)>0,且d(x)=d(y)+1,則在所述第二超步的下一超步執(zhí)行push(x,y),以將f(x)壓入所述頂點(diǎn)y。
需要說明的是,本發(fā)明實(shí)施例提供的數(shù)據(jù)處理裝置中部分功能模塊的具體描述可以參考方法實(shí)施例中的對(duì)應(yīng)內(nèi)容,本實(shí)施例這里不再詳細(xì)贅述。
本發(fā)明實(shí)施例提供的數(shù)據(jù)處理裝置,若頂點(diǎn)x在第一超步激活,頂點(diǎn)x到頂點(diǎn)y的殘余容量c(x,y)>0,且頂點(diǎn)x的高度d(x)=d(y)+1,則在第一超步執(zhí)行push(x,y),以將頂點(diǎn)x的余量f(x)=min(e(x),c(x,y))壓入頂點(diǎn)y;若頂點(diǎn)x在第二超步激活,頂點(diǎn)x到頂點(diǎn)z的殘余容量c(x,z)大于0,且d(x)<d(z),則執(zhí)行relabel(x),以使得d(x)=min(d(z))+1,頂點(diǎn)z為頂點(diǎn)x的任一相鄰頂點(diǎn),d(z)為頂點(diǎn)z的高度。
通過本方案,頂點(diǎn)x(任一頂點(diǎn))只會(huì)在第一超步被激活,且滿足push操作的條件時(shí),才會(huì)執(zhí)行push操作,并且,頂點(diǎn)x(任一頂點(diǎn))只會(huì)在第二超步激活,且滿足relabel操作的條件時(shí),才會(huì)執(zhí)行relabel操作。即所有的頂點(diǎn)x都只會(huì)在第一超步執(zhí)行push操作,在第二超步執(zhí)行relabel操作,不會(huì)出現(xiàn)由于兩個(gè)相鄰的活躍頂點(diǎn)同時(shí)執(zhí)行push操作和relabel操作時(shí),從而違背Push-Relabel算法的正確性的問題。
如圖3所示,在第一超步執(zhí)行了push(u,v)(此時(shí)頂點(diǎn)u為頂點(diǎn)x)之后,使得u->v邊的殘余容量c(u,v)=0,而v->u邊的殘余容量c(v,u)=7>0;在第二超步執(zhí)行relabel(v)(此時(shí)頂點(diǎn)v為頂點(diǎn)x)時(shí),則會(huì)由于v->u邊的殘余容量c(v,u)=7>0,且頂點(diǎn)v的相鄰頂點(diǎn)中,頂點(diǎn)u的高度d(u)小于頂點(diǎn)w的高度d(w),從而設(shè)置d(v)=d(u)+1=5。由此,即使相鄰的活躍頂點(diǎn)u和活躍頂點(diǎn)v分別執(zhí)行了push操作和relabel操作,頂點(diǎn)u和頂點(diǎn)v的高度符合d(v)≤d(u)+1,即可以保證最大流Push-Relabel算法應(yīng)用于分布式圖計(jì)算編程模型的正確性。
通過以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成, 即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本 發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。