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

循環(huán)交易路徑檢測的制作方法

文檔序號:6519926閱讀:179來源:國知局
循環(huán)交易路徑檢測的制作方法
【專利摘要】提供了循環(huán)交易路徑檢測的示例系統(tǒng)和方法。在一個示例中,生成包括節(jié)點和將節(jié)點相互連接的有向邊的有向圖。有向圖基于描述多個參與方以及所述參與方之間的多個交易的信息。接收感興趣的循環(huán)路徑長度。識別有向圖的強連通分量。在強連通分量的每一個內(nèi),發(fā)現(xiàn)具有與感興趣的循環(huán)路徑長度相等的長度的每個循環(huán)路徑。對于每個發(fā)現(xiàn)的循環(huán)路徑,由該路徑的有向邊表示的交易被表示為相關(guān)的交易。
【專利說明】循環(huán)交易路徑檢測
【技術(shù)領(lǐng)域】
[0001]本公開一般涉及數(shù)據(jù)處理,并且在示例實施例中,涉及循環(huán)交易(circulartransaction)路徑檢測。
【背景技術(shù)】
[0002]在諸如股票市場、商品期貨市場等等的許多不同的商業(yè)市場中,每天可能以很高的頻率發(fā)生大量的交易,在交易中買方從賣方購買一定量的一個或多個項目。隨著電子技術(shù)的進步,這樣的交易的成交量和速度已經(jīng)有了突飛猛進的增長。雖然這些交易中的絕大部分是按照合法的道德的商業(yè)交易過程執(zhí)行的,但是這些交易中的某些小百分比的交易代表了非法的或欺詐的活動。在一個示例中,兩個或更多的個人或?qū)嶓w可能試圖通過參與股票交易以使得公眾對公司股票產(chǎn)生興趣,該股票交易的主要意圖是大量增加股票的成交量,從而使得股票顯得比在更典型的交易環(huán)境下更加有價值,從而潛在地以欺詐的方式抬高股票的價格。為了產(chǎn)生這樣的成交量,一個或多個交易方可以根據(jù)某些事先的安排或計劃,在他們之間例如以循環(huán)的方式多次購買和出售股票。如果這樣的循環(huán)交易是被特別地執(zhí)行以操縱股票的價格,則可以被認為是非法的或欺詐的。
[0003]這樣的循環(huán)交易也可能用于其它原因,諸如為了逃稅或洗錢的目的。另外,這樣的交易不需要受限于股票,而是可以關(guān)于商品期貨、國家或區(qū)域貨幣、或者任何可以在市場中購買或出售的感興趣的項目而發(fā)生。
[0004]由于在諸如一天、一周、或一月的特定時段內(nèi)在任何市場內(nèi)可以發(fā)生的極大量的交易,即使使用了在高速處理系統(tǒng)上運行的、為了該目的而特別設(shè)計的專用計算機程序,這樣的潛在欺詐循環(huán)交易的檢測也可能是困難并且耗時的。

【發(fā)明內(nèi)容】

[0005]根據(jù)本發(fā)明的實施例,提供了 一種循環(huán)交易路徑檢測方法。
【專利附圖】

【附圖說明】
[0006]附圖以示例而非限制的方式示出了本公開,在附圖中相似的參考符號指示相似的元素,并且其中:
[0007]圖1是用于循環(huán)交易路徑檢測的示例系統(tǒng)的框圖;
[0008]圖2是示出檢測具有感興趣的特定路徑長度的循環(huán)交易路徑的示例方法的流程圖;
[0009]圖3A和圖3B是表示多個實體以及在它們之間發(fā)生的交易的、可以用來檢測循環(huán)交易路徑的不例有向圖的框圖;
[0010]圖4A、4B、4C、和4D是不出減少檢測有向圖中表不的循環(huán)交易路徑所涉及的處理量的示例方法的流程圖;
[0011]圖5A是示出圖4C的工作減少方法的示例的框圖;[0012]圖5B是示出圖4D的工作減少方法的示例的框圖;
[0013]圖6是示出以下各項的表格:圖3B的有向圖的每個潛在的開始節(jié)點,循環(huán)路徑的搜索可以在所述每個潛在的開始節(jié)點開始;不需要經(jīng)由圖4A、4B、4C、和4D的工作減少方法的應(yīng)用來處理的開始節(jié)點的標識;以及檢測得到的具有長度為二的感興趣長度的循環(huán)路徑。
[0014]圖7是示出以下各項的表格:圖3B的有向圖的每個潛在的開始節(jié)點,循環(huán)路徑的搜索可以在所述每個潛在的開始節(jié)點開始;不需要經(jīng)由圖4A、4B、4C、和4D的工作減少方法的應(yīng)用來處理的開始節(jié)點的標識;以及檢測得到的具有長度為三的感興趣長度的循環(huán)路徑。
[0015]圖8A到圖8D示出用于實現(xiàn)檢測具有感興趣的特定長度的循環(huán)交易路徑的示例方法的示例偽代碼段;以及
[0016]圖9是處理系統(tǒng)的示例形式的機器的框圖,在該處理系統(tǒng)內(nèi)可以執(zhí)行用于使機器執(zhí)行這里討論的方法中的任何一個或多個的一組指令。
【具體實施方式】
[0017]下面的描述包括示意性的系統(tǒng)、方法、技術(shù)、指令序列、和體現(xiàn)示意性的實施例的計算機器程序產(chǎn)品。在下面的描述中,為了說明的目的,闡述了許多的具體細節(jié)以便提供對于本發(fā)明主題的各種實施例的理解。然而,對本領(lǐng)域技術(shù)人員而言明顯的是,本發(fā)明主題的實施例可以無需這些具體的細節(jié)而實踐。通常,已知的指令實例、協(xié)議、結(jié)構(gòu)、和技術(shù)不會詳細示出。
[0018]圖1是用于循環(huán)交易路徑檢測的示例系統(tǒng)100的框圖。在一些示例中,交易可以包括兩個或更多個參與方之間的任何交易,諸如關(guān)于一個或多個產(chǎn)品、服務(wù)、證券(例如,股票、債券等等)、或其它潛在商業(yè)項目的出售、租賃、或其它安排。通常,系統(tǒng)100可以被用來將這樣的交易建模為有向圖,該有向圖包括多個節(jié)點和將這些節(jié)點相互連接的有向邊。通常,節(jié)點可以表示參與各種交易的參與方、個人、或?qū)嶓w,而有向邊可以表示交易。在一些示例中,交易可以限制在特定的產(chǎn)品、服務(wù)、證券、或其它項目,或者限制在一類或一組這樣的項目。
[0019]然后系統(tǒng)100可以處理有向圖以檢測具有感興趣的特定路徑長度的循環(huán)交易路徑。例如,系統(tǒng)100可以處理有向圖以檢測長度為二的全部循環(huán)交易。長度為二的循環(huán)交易路徑可以,例如,由從第一參與方到第二參與方的第一交易和從第二參與方返回第一參與方的第二交易指示。在一些市場中,長度為二的循環(huán)交易路徑可以是為了在股票的原始擁有者有效地保持對股票的所有權(quán)的同時提高股票價格的目的而生成股票或其它商品的交易成交量的最常見的方法。在其它示例中,長度為三或更多的循環(huán)交易路徑可以用于相同的目的,與此同時使循環(huán)交易路徑的檢測變得更加困難。
[0020]如圖1中所示,系統(tǒng)100可以包括圖形生成模塊102、循環(huán)路徑搜索模塊104、以及數(shù)據(jù)存儲110。另外,數(shù)據(jù)存儲110可以存儲交易數(shù)據(jù)112和圖形信息114。在一個示例中,系統(tǒng)100可以包括一個或多個計算系統(tǒng)以執(zhí)行與圖形生成模塊102、循環(huán)路徑搜索模塊104、以及數(shù)據(jù)存儲110相關(guān)聯(lián)的操作。在一些實現(xiàn)方式中,除了圖1中描繪的那些組件之外的其它組件,諸如,例如,一個或多個通信接口,可以在系統(tǒng)100中使用以幫助執(zhí)行與系統(tǒng)100相關(guān)聯(lián)的各種功能。這樣的組件沒有在圖1中描繪或者在這里進一步描述,以簡化和集中于下面的討論。
[0021]圖形生成模塊102可以利用數(shù)據(jù)存儲110的交易數(shù)據(jù)112來生成一個或多個表示各種交易的有向圖,所述各種交易已經(jīng)在某些先前發(fā)生的時間段期間發(fā)生。在一個示例中,交易數(shù)據(jù)112可以包括關(guān)于感興趣的每個交易的信息,諸如作為交易的內(nèi)容的項目或多個項目、交易的貨幣量、交易的日期和時間、參與交易的參與方、以及參與方在交易中的角色。這里沒有特別地列舉的關(guān)于交易的其它類型的信息也可以作為交易數(shù)據(jù)112被存儲。
[0022]如以上所提及的,圖形生成模塊102可以訪問并處理交易數(shù)據(jù)112以生成一個或多個表示多個交易的有向圖。在一個實現(xiàn)方式中,圖形生成模塊102可以根據(jù)參與交易的參與方或項目、交易量、期間發(fā)生交易的時間段、和/或關(guān)于交易的其它因素或?qū)傩詠砗Y選交易數(shù)據(jù)112。在示例中,得到的有向圖包括表示到各種交易的參與方的節(jié)點,并且連接節(jié)點的有向邊表示交易本身。有向邊的方向可以與交易的項目或目標轉(zhuǎn)手(change hands)的方向或提供用于感興趣的項目的貨幣價值被轉(zhuǎn)移的方向相關(guān)聯(lián),所述交易的項目或目標諸如產(chǎn)品、服務(wù)、證券、商品、或其它感興趣的項目。如圖1中所示,得到的有向圖作為圖形信息114存儲在數(shù)據(jù)存儲110中。
[0023]在圖形生成模塊102生成一個或多個有向圖之后,循環(huán)路徑搜索模塊104可以訪問描述一個或多個有向圖的圖形信息114,并且處理、分析、或搜索所述一個或多個有向圖以檢測具有某些預(yù)定長度的循環(huán)交易路徑。下面更詳細地討論可以如何執(zhí)行該處理或搜索的示例。
[0024]圖2是示出檢測具有感興趣的特定路徑長度的循環(huán)交易路徑的示例方法200的流程圖。在一個示例中,使用圖1中描繪的系統(tǒng)100來執(zhí)行方法200,雖然在其它實現(xiàn)方式中其它的系統(tǒng)可以用來執(zhí)行方法200。在方法200中,基于描述參與方之間的交易的信息來生成有向圖(操作202)。并且感興趣的循環(huán)交易路徑長度被接收(操作204)。然后,有向圖的強連通分量被識別(操作206)。由于術(shù)語“強連通分量”是用于關(guān)于有向圖的圖論領(lǐng)域,因此該術(shù)語指代這樣的有向圖子圖:如果子圖包含節(jié)點302,則子圖也包含所有包含節(jié)點302的循環(huán)路徑。也就是說,對于有向圖中的每個循環(huán)路徑,該循環(huán)路徑的全部節(jié)點屬于相同的強連通分量。下面提供對強連通分量的進一步討論。
[0025]在有向圖的每個強連通分量內(nèi),具有與感興趣的循環(huán)路徑長度相等的長度的每個循環(huán)路徑被發(fā)現(xiàn)(操作208)。在下面更充分地描述的一些示例中,這個發(fā)現(xiàn)或搜索過程可以包括根據(jù)一個或多個預(yù)先設(shè)定的規(guī)則淘汰可能的搜索路徑。然后,在每個發(fā)現(xiàn)的循環(huán)路徑內(nèi),由發(fā)現(xiàn)的循環(huán)路徑的有向邊表示的交易可以表示為相關(guān)交易(操作210)。在一個實現(xiàn)方式中,相關(guān)交易可以被視為潛在的欺詐交易,如以上討論的。在其它示例中,如果多個不同的循環(huán)路徑長度是感興趣的,則可以鑒于不同的循環(huán)路徑長度使用相同的有向圖重復(fù)操作204-210。
[0026]雖然圖2的方法200的操作202到210是以特定的次序示出的,但是在方法200以及這里討論的其它方法的一些實現(xiàn)方式中,包括一個或多個操作的至少部分的可能并發(fā)或連續(xù)執(zhí)行的其它的操作次序是可能的。例如,有向圖的強連通分量的每一個以及每個強連通分量內(nèi)的多個循環(huán)路徑可以被并行處理,從而發(fā)現(xiàn)具有感興趣的特定長度的循環(huán)路徑。
[0027]根據(jù)以上描述的實施例中的至少一些,對于可以指示欺詐交易活動的具有一個或多個長度的循環(huán)交易路徑的檢測可以以高效的方式來檢測。更具體地,通過將交易表示為有向圖并且將該圖細分為強連通分量,路徑發(fā)現(xiàn)過程的部分可以分攤到多個處理器或處理線程,從而減少總體執(zhí)行時間。并且,可以利用一個或多個規(guī)則來減少所搜索的路徑的總數(shù),從而在保持循環(huán)路徑發(fā)現(xiàn)過程的準確性的同時減少發(fā)現(xiàn)執(zhí)行時間。其它可能的方面和優(yōu)點可以從下面提供的對各種實施例的討論來探知。
[0028]圖3A和圖3B是表示多個實體以及已經(jīng)在它們之間發(fā)生的交易的、可以用來檢測循環(huán)交易路徑的示例有向圖300的框圖。雖然有向圖300呈現(xiàn)了多個參與方以及在所述參與方之間發(fā)生的交易的相當瑣細的示例,但是有向圖300提供了有用的示例,通過該示例可以展示這里討論的各種概念和技術(shù)。在更加實際的示例中,節(jié)點和有向邊的數(shù)量可以達到數(shù)億。
[0029]在圖3A中,有向圖300包括八個節(jié)點302,標注為A到H,與多個用箭頭表示的有向邊304相互連接。這樣的有向圖300可以以數(shù)學(xué)符號記為具有節(jié)點集合V和有向邊集合E的圖G或者G{V, E}。每個箭頭可以表示由箭頭的每一端的節(jié)點302所表示的參與方之間的一個或多個交易。箭頭可以指示交易的目標轉(zhuǎn)移的方向,或者為目標所給出的金錢或其它考量轉(zhuǎn)移的方向。節(jié)點302和有向邊304可以由描述感興趣的各種交易的交易數(shù)據(jù)112得到或生成,如以上討論。
[0030]然后,如圖3B中所示,有向圖300可以被分割為其強連通分量(SCC)310A、310B、和310C (統(tǒng)稱為310)。通常,有向圖300的SCC310是有向圖300的最小非瑣細的(例如,多于一個節(jié)點)強連通子圖。如以上提及的,強連通子圖是這樣的子圖:如果該子圖包含節(jié)點302,則該子圖也包含所有包含節(jié)點302的循環(huán)路徑。另外,在將得到的SCC310視為單個節(jié)點時,有向圖300被簡化或“精簡”為有向非循環(huán)圖,其中有向圖300的循環(huán)路徑都不包含多于一個的SCC310。如圖3B中所示,全部的循環(huán)路徑都包含在它們自身的特定SCC310內(nèi)。
[0031]在一個示例中,經(jīng)由用于識別SCC310的目的的技術(shù)中可用的算法之一來識別SCC310。在一個示例中,所利用的算法是由Robert E.Tarjan提出的Tarjan算法(Tar jan, R.E.(1972), “Depth-first search and linear graph algorithms,,,SIAMJournal on Computingl (2): 146-160)。圖論領(lǐng)域中已知的Tar jan算法僅僅利用單個深度優(yōu)先搜索,其中圖中的每個路徑被探索到其末端,然后回溯以探索其它路徑。在其它示例中,其它用于識別強連通分量的算法,諸如同樣在圖論領(lǐng)域中已知的Kosaraju算法和基于路徑的強分量算法,可以被用在其它的實現(xiàn)方式中。
[0032]一旦識別了 SCC310,每個SCC310內(nèi)的路徑可以被搜索以發(fā)現(xiàn)具有感興趣的特定或期望長度的各種循環(huán)路徑。在一個示例中,SCC310的每個節(jié)點302可以用作開始節(jié)點302,從所述開始節(jié)點302開始在SCC310內(nèi)搜索形成所期望的長度的循環(huán)路徑的一組路徑。當每個可能的循環(huán)路徑可以以這種方式搜索時,一些發(fā)現(xiàn)的路徑可以是其它路徑的復(fù)制品。例如,從節(jié)點A到節(jié)點B并返回的路徑與從節(jié)點B到節(jié)點A并返回的路徑相同。此夕卜,一些路徑由于它們不可能被包括為循環(huán)路徑的一部分,可以被完全淘汰。結(jié)果,與機械式(rote)搜索全部可用路徑相比,可以利用一個或多個搜索規(guī)則來減少搜索的總量。
[0033]圖4A、圖4B、圖4C、和圖4D是示出實現(xiàn)用于減少檢測有向圖300中表示的循環(huán)交易路徑所涉及的處理量的規(guī)則的示例方法的流程圖。更具體地,圖4A、圖4B、圖4C、和圖4D中的每一個描繪四個這樣的規(guī)則之一(有時在這里分別被稱為規(guī)則一、規(guī)則二、規(guī)則三(事例一)、和規(guī)則三(事例二),如下面討論的實施例中所利用的)。例如,在圖4A的方法400A(規(guī)則一)中,具有比感興趣的循環(huán)路徑長度更少的節(jié)點302的SCC310從搜索過程中被淘汰(操作402)。例如,使用圖3B的有向圖300作為示例,如果感興趣的循環(huán)路徑長度為三,則SCC310B從搜索過程中被淘汰,因為它僅僅包含兩個節(jié)點302:節(jié)點F和節(jié)點G。相反,SCC310A和310C,每一個具有三個節(jié)點302,仍然可以用于搜索過程。在感興趣的循環(huán)路徑長度為四的示例中,圖3B的SCC310中沒有任何一個對于進一步搜索是合格的。
[0034]在圖4B中,方法400B (規(guī)則二)包括為每個SCC310的每個節(jié)點302分配有序標識符(操作404)。在以下描述的示例中,諸如A、B、C等等的節(jié)點標識符被比作1、2、3等等,從而靠后的節(jié)點字母(例如,節(jié)點C)比靠前的節(jié)點字母(例如,節(jié)點A)具有更高的次序。每個節(jié)點302根據(jù)其有序標識符被排序(操作406),從而,例如,節(jié)點C排序高于節(jié)點B,而反過來,節(jié)點B排序高于節(jié)點A。
[0035]然后從具有至少與感興趣的循環(huán)路徑長度一樣高的排序的每個節(jié)點302開始搜索SCC310中的循環(huán)路徑(操作408)。例如,在具有節(jié)點A、B、C、D、和E的SCC310中,并且當感興趣的循環(huán)路徑長度等于三時,可以使用節(jié)點C、D、和E (排序最高的三個節(jié)點)作為開始節(jié)點來執(zhí)行搜索,而節(jié)點A和B作為循環(huán)路徑搜索的開始節(jié)點302是不合格的。另外,在使用特定開始節(jié)點302的搜索期間,包括SCC310中具有高于開始節(jié)點302的排序的其它節(jié)點302的全部路徑可以作為潛在的循環(huán)路徑被淘汰(操作410)。結(jié)果,從節(jié)點C開始的對于循環(huán)路徑的搜索可以忽略包括節(jié)點D或節(jié)點E的任何路徑。圖4B (規(guī)則二)的各種操作404-410被用來防止將包含恰好相同的節(jié)點302的兩個或更多個不同路徑作為單獨的循環(huán)路徑來計數(shù)。例如,通過利用規(guī)則二,當循環(huán)路徑節(jié)點C到節(jié)點B到節(jié)點A到節(jié)點C、節(jié)點B到節(jié)點A到節(jié)點C到節(jié)點B、節(jié)點A到節(jié)點C到節(jié)點B到節(jié)點A實際上描述相同的循環(huán)路徑時,搜索過程將不會花費資源將它們作為單獨的循環(huán)路徑來搜索和計數(shù)。
[0036]在圖4C的方法400C (規(guī)則三(事例一))中,在開始在SCC310中搜索循環(huán)路徑之前,可以發(fā)現(xiàn)有向路徑,其中第一節(jié)點302具有恰好一個出有向邊304,而最后節(jié)點302具有恰好一個入有向邊304,并且第一節(jié)點302與最后節(jié)點302之間的每個中間節(jié)點302具有恰好一個入有向邊304和恰好一個出有向邊304 (操作412)。響應(yīng)于發(fā)現(xiàn)這樣的有向路徑,除了具有最高排序的節(jié)點302之外,有向路徑的每個節(jié)點302可以作為用于循環(huán)路徑搜索的開始節(jié)點302被淘汰(操作414)。圖5A提供具有節(jié)點V1,…Vi, - ,Vn的示例有向路徑500,如圖4C的方法400C的操作412中所描述的,其中第一節(jié)點V1具有任意數(shù)量的入邊304但是僅僅一個出邊304,而最后節(jié)點Vn具有任意數(shù)量的出邊304但是僅僅一個入邊304,而每個中間節(jié)點Vi (其中l(wèi)〈i〈n)具有恰好一個入邊304和一個出邊304。更具體地,對于I < i〈n,每個Vi的出邊304是vi+1的入邊,并且對于l〈i ( η,每個Vi的入邊304是V1-!的出邊。結(jié)果,包括這些節(jié)點V1,…Vi, *.., Vn的任何節(jié)點的任何循環(huán)路徑必然包括所有這些節(jié)點。因此,僅僅使用這些節(jié)點302中的一個(在這個情況下,最高次序的節(jié)點302)就足夠作為用于搜索目的的開始節(jié)點302。
[0037]類似地,在圖4D的方法400D (規(guī)則三(事例二))中,在開始在SCC310中搜索循環(huán)路徑之前,可以發(fā)現(xiàn)有向路徑,其中第一節(jié)點302具有多個出有向邊304,而第二節(jié)點302具有恰好一個入有向邊304,其中該邊304源自第一節(jié)點302(操作416)。響應(yīng)于發(fā)現(xiàn)這樣的有向路徑,如果第一節(jié)點302具有比第二節(jié)點302更高的排序,則第二節(jié)點302可以作為用于搜索操作的開始節(jié)點302被淘汰(操作418)。圖5B提供具有第一節(jié)點Vi和第二節(jié)點vi+1的示例有向路徑510,如圖4D的方法400D的操作416中所描述的,其中第一節(jié)點Vi具有任意數(shù)量的入邊304和出邊304,而第二節(jié)點vi+1具有任意數(shù)量的出邊304但是僅僅一個入邊304,其中所述入邊304源自第一節(jié)點V”如圖5B中所示,其它節(jié)點302可以位于第一節(jié)點Vi之前,而額外的節(jié)點302可以跟隨第二節(jié)點vi+1之后。結(jié)果,任何包括第二節(jié)點vi+1的循環(huán)路徑也將包括第一節(jié)點Vi。因此,如果第一節(jié)點Vi具有比第二節(jié)點vi+1更高的排序,則第二節(jié)點vi+1可以被標記為作為開始節(jié)點302是不合格的。另外,如果規(guī)則二(以上討論的方法400B)也被利用,貝U在第二節(jié)點vi+1具有比第一節(jié)點Vi更高的排序的情形中,涉及第一節(jié)點Vi的搜索可以忽略作為可能的循環(huán)路徑的一部分的到第二節(jié)點vi+1的有向邊304。
[0038]在由圖4A、圖4B、圖4C、和圖4D的方法400A、400B、400C、和400D體現(xiàn)的規(guī)則的應(yīng)用的特定示例中,圖6是示出以下各項的表格600:圖3B的有向圖300的每個潛在的開始節(jié)點302,循環(huán)路徑的搜索可以在所述每個潛在的開始節(jié)點302開始;不需要根據(jù)以上描述的規(guī)則被處理的開始節(jié)點302的標識;以及檢測得到的具有長度為二的感興趣長度的循環(huán)路徑。如表格600中所示,圖3B的有向圖300的每個節(jié)點302(例如,節(jié)點A到節(jié)點H)被識別為具有其特定SCC310的潛在開始節(jié)點302。更具體地,SCC310A的節(jié)點A、B、和E、SCC310B的節(jié)點F和G、以及SCC310C的節(jié)點C、D、和H中的每一個作為潛在的開始節(jié)點302被列出。
[0039]給定長度為二的感興趣的循環(huán)路徑長度,應(yīng)用規(guī)則一不會淘汰任何潛在的開始節(jié)點302,因為沒有任何一個SCC310包括少于兩個節(jié)點302。在應(yīng)用規(guī)則二時,具有低于二的排序的標識符的任何節(jié)點302可以作為開始節(jié)點302被淘汰。結(jié)果,SCC310A的節(jié)點A、SCC310B的節(jié)點F、以及SCC310C的節(jié)點C基于此被淘汰。然后,規(guī)則三可以被應(yīng)用于剩余的節(jié)點B、D、E、G、和H。然后,使用規(guī)則三,節(jié)點B可以作為開始節(jié)點302被淘汰。結(jié)果,有向圖300中的八個可能的開始節(jié)點302中的一半在正式開始搜索之前被淘汰。
[0040]另外,當以節(jié)點D、E、G、和H中的每一個執(zhí)行搜索操作時,如果遇到具有高于開始節(jié)點302的排序的節(jié)點302,則規(guī)則二還可以被應(yīng)用來停止搜索特定路徑。在節(jié)點D的情況下,例如,連接至節(jié)點H的節(jié)點D的出邊304可以被忽略,因為節(jié)點H具有高于節(jié)點D的排序。
[0041]使用節(jié)點D、E、G、和H作為開始節(jié)點302繼續(xù)搜索剩余路徑中的每一個將產(chǎn)生三條長度為二的循環(huán)路徑:從節(jié)點G到節(jié)點F并返回的循環(huán)路徑,從節(jié)點D到節(jié)點C并返回的循環(huán)路徑,以及從節(jié)點H到節(jié)點D并返回的循環(huán)路徑。在節(jié)點E的情況下,沒有發(fā)現(xiàn)長度為二的、從節(jié)點E到節(jié)點A或節(jié)點B并返回的路徑。因此,在有向圖300中發(fā)現(xiàn)了三條長度為二的循環(huán)路徑。
[0042]在另一個示例中,圖7是示出以下各項的表格700:圖3B的有向圖300的每個潛在開始節(jié)點302,循環(huán)路徑的搜索可以在所述每個潛在的開始節(jié)點302開始;不需要經(jīng)由規(guī)則一、規(guī)則二、和規(guī)則三的應(yīng)用來處理的開始節(jié)點302的標識;以及檢測得到的具有長度為三的感興趣長度的循環(huán)路徑。
[0043]在這個示例中應(yīng)用規(guī)則一導(dǎo)致SCC310B的節(jié)點F和節(jié)點G兩個被淘汰,因為僅僅具有兩個節(jié)點302的SCC310不能產(chǎn)生長度為三的循環(huán)路徑。并且,在應(yīng)用規(guī)則二時,SCC310A和SCC310C的每一個中的僅最高排序的節(jié)點302 (例如,SCC310A中的節(jié)點E和SCC310C中的節(jié)點H)保留為用于接下來的搜索程序的潛在開始節(jié)點302,因為SCC310A和SCC310C各自具有三個節(jié)點302。另外,在這個示例中規(guī)則三的使用是不必要的,因為至多一個合格的開始節(jié)點302保留在每個SCC310中。
[0044]在使用SCC310A的節(jié)點E作為開始節(jié)點302時,搜索長度為三的循環(huán)路徑長度得到節(jié)點E到節(jié)點A到節(jié)點B然后返回到節(jié)點E的路徑。然而,利用節(jié)點H作為開始節(jié)點302不能得到長度為三的可用的循環(huán)路徑,因為僅可以發(fā)現(xiàn)從節(jié)點H到節(jié)點D并且返回的循環(huán)路徑。
[0045]圖8A到圖8D示出用于實現(xiàn)檢測具有感興趣的特定長度的循環(huán)交易路徑的示例方法的示例偽代碼段。更具體地,圖8A為直接或間接地利用在圖8B、8C、8D中提供的其它函數(shù)的主函數(shù)800A提供偽代碼,以執(zhí)行對具有感興趣的特定長度的循環(huán)路徑的搜索。更具體地,給予主函數(shù)800A具有節(jié)點302(或頂點)的集合V和將節(jié)點302V相互連接的有向邊304的集合E的有向圖300G{V,E}。主函數(shù)800A也接收感興趣的循環(huán)路徑長度N。然后,主函數(shù)800A使用合適的算法,諸如Tarjan算法,將有向圖300G分割為單獨的SCC310,如以上所表明的。然后主函數(shù)800A應(yīng)用規(guī)則一來淘汰具有小于感興趣的循環(huán)路徑長度N的大小(例如,節(jié)點302的個數(shù))的任何SCC310。
[0046]對于每個剩下的SCC310,結(jié)束于相同的SCC310內(nèi)的另一個節(jié)點302的SCC310中的每個節(jié)點302的出邊304被記錄在該節(jié)點302的出邊列表中。在一些示例中,每個節(jié)點302的出邊列表可以基于每個出邊304終止的節(jié)點302的標識符排序,因為在循環(huán)路徑搜索期間這樣的排序可以幫助根據(jù)規(guī)則二來識別由于其排序高于開始節(jié)點302的排序而可以被淘汰的那些邊304。在一個示例中,可以利用多個處理器或處理線程來根據(jù)單獨的SCC310或節(jié)點302執(zhí)行邊列表構(gòu)建和排序操作。
[0047]在主函數(shù)800A中,每個SCC310中的節(jié)點302的每一個可以根據(jù)它們的標識符按降序排序?;谶@個排序,然后,主函數(shù)800A可以根據(jù)規(guī)則二將最后的或最低的N-1個節(jié)點302標記為作為開始節(jié)點302是不合格的。并且,以這種方式對節(jié)點302排序允許一個或多個處理線程首先處理用作搜索操作的開始節(jié)點302的排序較高的節(jié)點302,因為按照規(guī)則二,與排序較低的節(jié)點302相比,排序較高的節(jié)點302傾向于消耗大多數(shù)的搜索操作,如以上描述。在一些示例中,然后,主函數(shù)800A可以將規(guī)則三(例如,事例一和事例二的一個或兩個)應(yīng)用于每個剩余的SCC310中的每個剩余的合格的開始節(jié)點302,以確定是否可以從作為用于搜索目的的開始節(jié)點合格的節(jié)點302的組中淘汰更多的節(jié)點302。
[0048]在這點上,主函數(shù)800A可以經(jīng)由調(diào)用圖8B的偽代碼中示出的SearchThread800B來啟動多個搜索線程。在一個示例中,啟動的搜索線程的數(shù)量是由可以用于執(zhí)行搜索線程的處理器的數(shù)量控制的。在一個示例中,SearchThread800B的每一個啟動被提供合格的開始節(jié)點302的列表,將從所述合格的開始節(jié)點302啟動對于感興趣長度為N的至少一個循環(huán)路徑的搜索。
[0049]結(jié)合圖8B繼續(xù),每個SearchThread800B可以訪問正被處理的當前SCC310的合格開始節(jié)點302starting_node的列表。然后,SearchThread800B可以從還未被處理的列表中檢索下一個合格的開始節(jié)點302starting_node,并且調(diào)用如圖8C中所示的提供有向圖300G、當前SCC310、感興趣的循環(huán)路徑長度N、和當前開始節(jié)點302starting_node作為輸入的函數(shù)SearchCircularPaths800C。一旦使用當前開始節(jié)點302starting_node搜索循環(huán)路徑完成,則SearchThread800B可以確定是否還剩余有待處理的合格開始節(jié)點302。如果是,則可以使用下一個合格的開始節(jié)點302對SearchCircularPaths800C進行再次調(diào)用。否貝1J,然后,SearchThread800B的這個特定實例可以終止。
[0050]結(jié)合圖8C 繼續(xù),SearchCircularPaths800C 接收有向圖 300G、當前 SCC310、感興趣的循環(huán)路徑長度N、以及開始節(jié)點302start。在SearchCircularPaths800C中,本地一維布爾數(shù)組NodeVisited可以被創(chuàng)建,其中NodeVisited的每個元素可以表示當前SCC310的節(jié)點302之一。此外,NodeVisited的每個元素的索引可以表示與該元素相關(guān)聯(lián)的節(jié)點302的標識符排序,其中根據(jù)節(jié)點302的標識符,索引值越大,則與之相關(guān)聯(lián)的節(jié)點302的排序越高。在一個示例中,節(jié)點A可以與索引O相關(guān)聯(lián),節(jié)點B可以與索引I相關(guān)聯(lián),等等。另夕卜,NodeVisited的每個元素可以被初始化為FALSE,指示在搜索長度為N的循環(huán)路徑期間還未遇到任何元素。
[0051]然后,SearchCircularPaths800C可以將開始節(jié)點302start添加到數(shù)據(jù)結(jié)構(gòu)PartialPath,其中PartialPath追蹤構(gòu)成正被搜索的當前路徑的節(jié)點302。然后,SearchCircularPaths800C可以調(diào)用另一個函數(shù),即接收有向圖300G、當前SCC310、感興趣的循環(huán)路徑長度N、開始節(jié)點302start (作為開始節(jié)點302start和當前節(jié)點302v兩者)、NodeVisitecUPartialPath、以及 Results 的圖 8D 的 SearchCircularPathsHelper800D,其中Results可以是長度為N的循環(huán)路徑列表。在一個示例中,PartialPath可以是一維數(shù)組;鏈表;后進先出(LIFO)堆棧結(jié)構(gòu);或某些其它類型的數(shù)據(jù)結(jié)構(gòu)。
[0052]在SearchCircularPaths800C 中,當 執(zhí)行控 制從 SearchCircularPathsHelper800D 返回 時,Results 包括在SearchCircularPathsHelper800D中發(fā)現(xiàn)的(如果有的話)長度為N的循環(huán)路徑。然后,SearchCircularPaths800C 將 Results 返回到與其相關(guān)聯(lián)的 SearchThread800B,反過來SearchThread800B可以將Results添加到包含從全部SearchThread800B發(fā)現(xiàn)的所有長度為N的循環(huán)路徑的集中數(shù)據(jù)結(jié)構(gòu)中。
[0053]如圖8D中所描繪的,SearchCircularPathsHelper800D是可以在從特定開始節(jié)點302start開始的循環(huán)路徑搜索進行時以深度優(yōu)先的方式調(diào)用自身的遞歸函數(shù)。在SearchCircularPathsHelper800D開始時,檢查PartialPath的長度以確定其是否等于感興趣的循環(huán)路徑長度N。如果是,則SearchCircularPathsHelper800D可以檢查PartialPath實際上是否是循環(huán)的。為此,SearchCircularPathsHelper800D可以經(jīng)由對函數(shù)BinarySearch (二分搜索,這里沒有經(jīng)由偽代碼舉例說明)的調(diào)用來執(zhí)行二分搜索,其中函數(shù)BinarySearch采用當前節(jié)點302v的出邊列表和開始節(jié)點302start的標識符來確定開始節(jié)點302start是否終止當前節(jié)點302v的出邊304之一。如果發(fā)現(xiàn)開始節(jié)點302start終止當前節(jié)點302v的出邊304之一,則BinarySearch返回TRUE值;否則,返回FALSE。如果返回了 TRUE,則現(xiàn)在表示長度為N的循環(huán)路徑的節(jié)點302的PartialPath被添加到Results。在其它示例中,可以執(zhí)行其它類型的搜索而不是二分搜索,來確定當前節(jié)點302v的出邊是否連接至開始節(jié)點302start。
[0054]如果,替代地,PartialPath的長度不等于N,則可以進行更多的搜索以完成循環(huán)路徑。在這個示例中,SearchCircularPathsHelper800D試圖定位終止具有比開始節(jié)點302start的標識符或排序更高的標識符或排序的當前節(jié)點302v的出邊304之一的下一個節(jié)點,如按照規(guī)則二所指示的。為了完成這個任務(wù),SearchCircularPathsHelper800D確定與具有高于開始節(jié)點302start的排序的節(jié)點302相關(guān)聯(lián)的、當前節(jié)點302v的排序的出邊列表的下一個索引。這個確定是經(jīng)由對函數(shù)GetUpperBound (這里沒有用偽代碼描述)的調(diào)用來進行的,其中所述函數(shù)GetUpperBound,在一個示例中是二分搜索例程。在圖8D中,這個索引被存儲為ID_Upper_Bound。
[0055]然后,SearchCircularPathsHelper800D可以通過將 NodeVisited 數(shù)組中當前節(jié)點302v的元素標記為TRUE來將當前節(jié)點302v標記為正在訪問。然后,SearchCircularPathsHelper800D可以對于由具有不高于開始節(jié)點302start的排序的節(jié)點302終止的當前節(jié)點302v的每個出邊,從當前節(jié)點302v啟動對于循環(huán)路徑的搜索,如規(guī)則二所指示的。為了完成這個任務(wù),SearchCircularPathsHelper800D從當前節(jié)點302v的出邊列表訪問下一個合格的終止節(jié)點302或結(jié)束節(jié)點302,并且通過檢查NodeVisited的適當?shù)脑貋泶_定該節(jié)點302在這個搜索期間是否已被訪問。如果沿這個路徑,這個終止節(jié)點302還未被訪問,則該節(jié)點302被添加到PartialPath,并且對SearchCircularPathsHelper800D進行再一次調(diào)用,其中終止節(jié)點302被指定為用于該函數(shù)調(diào)用的當前節(jié)點302v。
[0056]然后,搜索可以繼續(xù),其中路徑的搜索中的每個后繼節(jié)點302導(dǎo)致對SearchCircularPathsHelper800D的再一次調(diào)用。如果搜索導(dǎo)致發(fā)現(xiàn)長度為N的循環(huán)路徑,則構(gòu)建到該點的PartialPath作為循環(huán)路徑被添加到Results。替代地,如果通過遇到路徑的末端或通過遇到已經(jīng)被指定為該路徑的部分的節(jié)點302而在發(fā)現(xiàn)循環(huán)路徑之前終止搜索,則對SearchCircularPathsHelper800D的最后一次調(diào)用指定與其當前節(jié)點302v相關(guān)聯(lián)的 NodeVisited 的兀素為 FALSE,并且返回到 SearchCircularPathsHelper800D 的先前的實例。反過來,SearchCircularPathsHelper800D的先前的實例從PartialPath中移除其終止節(jié)點302(例如,用于剛剛從其返回的SearchCircularPathsHelper800D的實例的當前節(jié)點 302v),在NodeVisited 中將用于 SearchCircularPathsHelper800D 的當前實例的當前節(jié)點302v標記為FALSE,并且返回,從而沿該路徑向上返回以搜索可替換的路徑。因此,對于長度為N的下一個循環(huán)路徑的搜索以深度優(yōu)先的方式進行,直到從開始節(jié)點302start開始的全部潛在路徑都已經(jīng)被探索。
[0057]雖然圖8A到圖8D以偽代碼提供了如何完成具有某個期望長度的循環(huán)路徑的搜索的特定示例,但是利用以上討論的規(guī)則一、規(guī)則二、和規(guī)則三中的一個或多個的檢測循環(huán)路徑的其它方法是可能的。
[0058]作為這里討論的實施例中的至少一些的結(jié)果,隨著處理器數(shù)量P增加,或者隨著感興趣的循環(huán)路徑長度減小,或者兩者兼而有之,這里描述的算法的平均計算復(fù)雜度降低并且性能提高。總體來說,這個水平的性能可以表示超過不系統(tǒng)地減少執(zhí)行的搜索的數(shù)量或不能夠以高效和并行的方式利用多個處理器的其它方法的巨大的進步。
[0059]另外,在一些實現(xiàn)方式中,可以對圖8A到圖8D的函數(shù)及相關(guān)聯(lián)的偽代碼進行某些增強。例如,函數(shù)調(diào)用開銷,尤其是對于可能被調(diào)用許多次的諸如SearchCircularPathsHelper800D的函數(shù),可以通過使函數(shù)調(diào)用內(nèi)嵌(inline)、通過減少傳遞給函數(shù)的參數(shù)個數(shù)、以及通過其它技術(shù)來減少。在另一個示例中,可以通過在搜索期間緩存為進入的每個節(jié)點302接收的結(jié)果從而無需再次啟動二分搜索就可以重新使用那些結(jié)果,來使得SearchCircularPathsHelper800D內(nèi)利用的二分搜索更加高效。此外,為了減少搜索操作與結(jié)果的輸出之間的干擾量,可以通過單獨的線程執(zhí)行結(jié)果的輸出,從而可以使用不同類型的資源(例如,處理資源和/或輸入/輸出資源)并行地執(zhí)行搜索和輸出操作。在其它示例中可以利用除了以上討論的那些之外的其它增強。
[0060]因此,鑒于這里描述的實施例中的至少一些,可以通過將交易表示為有向圖并且利用一個或多個技術(shù)將總體計算工作劃分為用于使用并行工作的多個處理器處理和搜索可能的路徑的單獨的、可識別的部分,便利對某個感興趣的長度的循環(huán)交易路徑的搜索。另夕卜,如這里所描述的,一個或多個規(guī)則的實施可以通過淘汰可以由其開始單獨的路徑搜索的至少一些節(jié)點來消除大量的重復(fù)搜索,以及通過基于那些路徑的開始節(jié)點的特性終止沿著某些路徑的搜索來減少用于完成已經(jīng)啟動的搜索的處理量或計算量。
[0061]雖然這里描述的實施例針對參與方之間的交易,但是參與方之間的其它類型的交互,諸如例如人們或參與方之間形成的社交或商業(yè)網(wǎng)絡(luò)連接(例如,在臉書?或者其它社交或商業(yè)網(wǎng)站上的人們之間建立的連接)也可以表示為有向圖或無向圖,以便檢測形成具有感興趣的特定長度的循環(huán)路徑的社交或商業(yè)連接。
[0062]圖9描繪了處理系統(tǒng)900的示例形式的機器的框圖,在處理系統(tǒng)900內(nèi)可以執(zhí)行用于使機器執(zhí)行這里討論的方法中的任何一個或多個的一組指令924。在可替換的實施例中,所述機器作為獨立設(shè)備來操作,或者可以連接(聯(lián)網(wǎng))至其它機器。在聯(lián)網(wǎng)部署中,所述機器可以在服務(wù)器-客戶端網(wǎng)絡(luò)環(huán)境中以服務(wù)器或客戶端機器的能力操作,或者在對等(或分布式)網(wǎng)絡(luò)環(huán)境中作為對等機器操作。
[0063]所述機器能夠執(zhí)行指定將由該機器做出的動作的一組指令(順序的或其它方式的)。另外,雖然僅僅示出了單個機器,術(shù)語“機器”應(yīng)該用來包括單獨地或聯(lián)合地執(zhí)行一組(或多組)指令以執(zhí)行這里討論的方法中的任何一個或多個的機器的任何組合。
[0064]處理系統(tǒng)900的示例包括經(jīng)由總線908相互通信的處理器902(例如,中央處理單元(CPU)、圖形處理單元(GPU)、或兩者)、主存儲器904(例如,隨機存取存儲器)、和靜態(tài)存儲器906 (例如,靜態(tài)隨機存取存儲器)。處理系統(tǒng)900還可以包括視頻顯示單元910 (例如,等離子體顯示器、液晶顯示器(IXD)、或陰極射線管(CRT))。處理系統(tǒng)900也包括字母數(shù)字輸入設(shè)備912 (例如,鍵盤)、用戶接口(UI)導(dǎo)航設(shè)備914 (例如,鼠標)、磁盤驅(qū)動單元916、信號生成設(shè)備918 (例如,揚聲器)、和網(wǎng)絡(luò)接口設(shè)備920。
[0065]磁盤驅(qū)動單元916 (—種類型的非易失性存儲器存儲)包括機器可讀介質(zhì)922,在其上存儲了體現(xiàn)這里描述的方法或功能中的任何一個或多個、或者被這里描述的方法或功能中的任何一個或多個利用的一組或多組數(shù)據(jù)結(jié)構(gòu)和指令924 (例如,軟件)。所述數(shù)據(jù)結(jié)構(gòu)和指令924也可以完全地或至少部分地駐留在主存儲器904、靜態(tài)存儲器906內(nèi),和/或在其被處理系統(tǒng)900執(zhí)行期間完全地或至少部分地駐留在處理器902內(nèi),同時主存儲器904和處理器902也構(gòu)成機器可讀的、有形的介質(zhì)。
[0066]還可以利用多個已知的傳輸協(xié)議(例如,超文本傳輸協(xié)議(HTTP))中的任何一個經(jīng)由網(wǎng)絡(luò)接口設(shè)備920通過計算機網(wǎng)絡(luò)950發(fā)送或接收所述數(shù)據(jù)結(jié)構(gòu)和指令924。
[0067]某些實施例在這里被描述為包括邏輯或多個組件、模塊、或機制。模塊可以構(gòu)成軟件模塊(例如,在機器可讀介質(zhì)上或在傳輸信號中體現(xiàn)的代碼)或硬件模塊。硬件模塊是能夠執(zhí)行某些操作、并且可以以某種方式被配置或安排的有形的單元。在示例實施例中,一個或多個計算機系統(tǒng)(例如,處理系統(tǒng)900)或者計算機系統(tǒng)的一個或多個硬件模塊(例如,處理器902或一組處理器)可以被軟件(例如,應(yīng)用或應(yīng)用部分)配置為操作以執(zhí)行如這里所描述的某些操作的硬件模塊。
[0068]在各種實施例中,可以機械地或電子地實現(xiàn)硬件模塊。例如,硬件模塊可以包括被永久地配置(例如,作為特殊用途處理器,諸如現(xiàn)場可編程門陣列(FPGA)或?qū)S眉呻娐?ASIC))以執(zhí)行某些操作的專用電路或邏輯。硬件模塊也可以包括被軟件暫時地配置以執(zhí)行某些操作的可編程邏輯或電路(例如,如通用處理器902或其它可編程處理器內(nèi)所包含的)。將理解,是在專用的并且被永久配置的電路中還是在被暫時地配置的電路(例如,由軟件配置的)中機械地實現(xiàn)硬件模塊的決定可以由對成本和時間的考慮來驅(qū)動。
[0069]因此,術(shù)語“硬件模塊”應(yīng)該被理解為包含有形的實體,應(yīng)該被理解為被物理地構(gòu)建的、被永久地配置(例如,硬連線的)或者被暫時地配置(例如,被編程)以便以某種方式操作和/或執(zhí)行這里描述的某些操作的實體??紤]其中硬件模塊被暫時地配置(例如,被編程)的實施例,并不是硬件模塊的每一個都需要在任何一個時間點(instance in time)被配置或例示。例如,在硬件模塊包括使用軟件配置的通用處理器902的情況中,通用處理器902可以在不同的時間被配置為各自不同的硬件模塊。相應(yīng)地,軟件可以配置處理器902,例如,以在一個時間點構(gòu)成特定的硬件模塊并且在不同的時間點構(gòu)成不同的硬件模塊。
[0070]模塊能夠向其它模塊提供信息和從其它模塊接收信息。例如,所描述的模塊可以被當作是通信地耦合的。在多個這樣的硬件模塊同時存在的情況下,可以通過連接模塊的信號傳輸(諸如,例如,通過適當?shù)碾娐泛涂偩€)來實現(xiàn)通信。在其中多個模塊在不同的時間被配置或?qū)嵗膶嵤├?,這些模塊之間的通信可以,例如,通過存儲和檢索多個模塊可以訪問的存儲結(jié)構(gòu)中的信息來實現(xiàn)。例如,一個模塊可以執(zhí)行操作,并且在其通信地耦合至的存儲器設(shè)備中存儲該操作的輸出。然后,又一個模塊可以在稍后的時間訪問存儲器設(shè)備以檢索和處理所存儲的輸出。模塊也可以啟動與輸入或輸出設(shè)備的通信,并且能夠基于資源(例如,信息的集合)操作。
[0071]這里描述的示例方法的各種操作可以,至少部分地,由被暫時配置(例如,被軟件)或被永久配置以執(zhí)行相關(guān)操作的一個或多個處理器902執(zhí)行。無論是被暫時地還是被永久地配置,這樣的處理器902都可以構(gòu)成由處理器實現(xiàn)的模塊,其操作以執(zhí)行一個或多個操作或功能。在一些示例實施例中,這里提到的模塊可以包括由處理器實現(xiàn)的模塊。
[0072]類似地,這里描述的方法可以至少部分地是由處理器實現(xiàn)的。例如,方法的操作的至少一些可以由一個或多個處理器902或者由處理器實現(xiàn)的模塊執(zhí)行。所述操作的某些的執(zhí)行可以分布在一個或多個處理器902之間,不僅僅駐留在單個機器內(nèi)而是跨多個機器部署。在一些示例實施例中,處理器902可以位于單一位置(例如,在家庭環(huán)境內(nèi),在辦公室環(huán)境內(nèi),或作為服務(wù)器機房),而在其它實施例中,處理器902可以跨多個位置分布。
[0073]雖然參考各種實現(xiàn)方式和操作描述了實施例,將理解,這些實施例是示意性的,并且下面提供的權(quán)利要求的范圍不限于這里描述的實施例。通常,這里描述的技術(shù)可以利用與這里定義的任何一個硬件系統(tǒng)或多個硬件系統(tǒng)一致的裝置來實現(xiàn)。許多變化、修改、添加、和改進是可能的。
[0074]多個實例可以提供給這里作為單一實例描述的組件、操作、或結(jié)構(gòu)。最后,各種組件、操作、和數(shù)據(jù)存儲之間的界限是有些任意的,并且特定的操作在具體的示意性配置的上下文中被示出。功能的其它分配是可以展望的,并且可以落入權(quán)利要求的范圍內(nèi)。通常,在示范性配置中作為單獨的組件呈現(xiàn)的結(jié)構(gòu)和功能可以被實現(xiàn)為組合的結(jié)構(gòu)或組件。類似地,作為單一組件呈現(xiàn)的結(jié)構(gòu)和功能可以實現(xiàn)為多個單獨的組件。這些及其它變化、修改、添加、和改進都落入權(quán)利要求及其等效物的范圍內(nèi)。
【權(quán)利要求】
1.一種方法,包括: 生成包括節(jié)點和將節(jié)點相互連接的有向邊的有向圖,所述有向圖基于描述多個參與方以及所述多個參與方之間的多個交易的信息; 接收感興趣的循環(huán)路徑長度; 識別有向圖的強連通分量; 在包括個數(shù)至少等于感興趣的循環(huán)路徑長度的多個節(jié)點的強連通分量的每一個內(nèi),使用機器的一個或多個處理器發(fā)現(xiàn)具有與感興趣的循環(huán)路徑長度相等的長度的每個循環(huán)路徑;以及 對于發(fā)現(xiàn)的循環(huán)路徑的每一個,將由發(fā)現(xiàn)的循環(huán)路徑的有向邊表示的交易表示為相關(guān)的交易。
2.如權(quán)利要求1所述的方法,識別強連通分量包括將深度優(yōu)先搜索算法應(yīng)用于有向圖。
3.如權(quán)利要求2所述的方法,所述深度優(yōu)先搜索算法包括Tarjan算法。
4.如權(quán)利要求1所述的方法,發(fā)現(xiàn)具有與感興趣的循環(huán)路徑長度相等的長度的循環(huán)路徑的每一個包括: 識別強連通分量的最小的一組開始節(jié)點,從所述開始節(jié)點開始單獨的搜索,單獨的搜索可以導(dǎo)致具有與感興趣的循環(huán)路徑長度相等的長度的全部循環(huán)路徑被識別。
5.如權(quán)利要求4所述的方法,發(fā)現(xiàn)具有與感興趣的循環(huán)路徑長度相等的長度的循環(huán)路徑的每一個還包括: 將每個開始節(jié)點分配給多個搜索線程中的一個;以及 使用所述一個或多個處理器中的一個執(zhí)行所述多個搜索線程中的每一個。
6.如權(quán)利要求1所述的方法,發(fā)現(xiàn)具有與感興趣的循環(huán)路徑長度相等的長度的循環(huán)路徑的每一個包括: 為所述強連通分量的節(jié)點的每一個分配唯一有序標識符; 根據(jù)節(jié)點的每一個的唯一有序標識符將節(jié)點的每一個進行排序;以及搜索以至少一個開始節(jié)點開始的循環(huán)路徑,每個開始節(jié)點具有至少與感興趣的循環(huán)路徑長度一樣高的排序。
7.如權(quán)利要求6所述的方法,所述分配唯一有序標識符被隨機地執(zhí)行。
8.如權(quán)利要求6所述的方法,搜索循環(huán)路徑包括: 對于每一個開始節(jié)點,淘汰包括具有比開始節(jié)點的排序更高的排序的節(jié)點的循環(huán)路徑。
9.如權(quán)利要求6所述的方法,發(fā)現(xiàn)具有與感興趣的循環(huán)路徑長度相等的長度的循環(huán)路徑的每一個還包括: 在搜索循環(huán)路徑之前,發(fā)現(xiàn)沿著這樣的節(jié)點的有向路徑:其中該有向路徑的第一節(jié)點具有恰好一個出有向邊,該有向路徑的最后節(jié)點具有恰好一個入有向邊,并且第一節(jié)點和最后節(jié)點之間的、有向路徑的全部中間節(jié)點具有恰好一個入有向邊和恰好一個出有向邊;以及 除了具有最高排序的有向圖的節(jié)點之外,將有向路徑的節(jié)點的每一個作為開始節(jié)點淘汰。
10.如權(quán)利要求6所述的方法,發(fā)現(xiàn)具有與感興趣的循環(huán)路徑長度相等的長度的循環(huán)路徑的每一個還包括: 在搜索循環(huán)路徑之前,發(fā)現(xiàn)沿著這樣的節(jié)點的有向路徑:其中該有向路徑的第一節(jié)點具有多個出有向邊,并且該有向路徑的第二節(jié)點具有恰好一個入有向邊,所述恰好一個入有向邊源自第一節(jié)點;以及 基于具有高于第二節(jié)點的排序的第一節(jié)點,將第二節(jié)點作為開始節(jié)點淘汰。
11.一種系統(tǒng),包括: 數(shù)據(jù)存儲,用來存儲描述多個參與方以及所述多個參與方之間的多個交易的信息; 至少一個處理器; 圖形生成模塊,用來生成包括節(jié)點和將節(jié)點相互連接的有向邊的有向圖,所述有向圖基于所存儲的信息;和 循環(huán)路徑搜索模塊,能夠由所述至少一個處理器執(zhí)行,用來: 接收感興趣的循環(huán)路徑長度; 識別有向圖的強連通分量; 在包括個數(shù)至少等于感興趣的循環(huán)路徑長度的多個節(jié)點的強連通分量的每一個內(nèi),發(fā)現(xiàn)具有與感興趣的循環(huán)路徑長度相等的長度的每個循環(huán)路徑;以及 對于發(fā)現(xiàn)的循環(huán)路徑的每一個,將由發(fā)現(xiàn)的循環(huán)路徑的有向邊表示的交易表示為相關(guān)的交易。
12.如權(quán)利要求11所述的系統(tǒng),所述循環(huán)路徑搜索模塊用來通過以下步驟發(fā)現(xiàn)具有與感興趣的循環(huán)路徑長度相等的長度的循環(huán)路徑的每一個: 為所述強連通分量的節(jié)點的每一個分配唯一有序標識符; 根據(jù)節(jié)點的每一個的唯一有序標識符將節(jié)點的每一個進行排序;以及搜索以至少一個開始節(jié)點開始的循環(huán)路徑,每個開始節(jié)點具有至少與感興趣的循環(huán)路徑長度一樣高的排序。
13.如權(quán)利要求12所述的系統(tǒng),所述循環(huán)路徑搜索模塊用來隨機地為節(jié)點的每一個分配唯一有序標識符。
14.如權(quán)利要求12所述的系統(tǒng),所述循環(huán)路徑搜索模塊用來通過以下步驟搜索循環(huán)路徑: 對于每個開始節(jié)點,淘汰包括具有比開始節(jié)點的排序更高的排序的節(jié)點的循環(huán)路徑。
15.一種包括指令的非暫時性計算機可讀存儲介質(zhì),所述指令當被機器的至少一個處理器執(zhí)行時,使機器執(zhí)行包括以下操作的操作: 生成包括節(jié)點和將節(jié)點相互連接的有向邊的有向圖,所述有向圖基于描述多個參與方以及所述多個參與方之間的多個交易的信息; 接收感興趣的循環(huán)路徑長度; 識別有向圖的強連通分量; 在包括個數(shù)至少等于感興趣的循環(huán)路徑長度的多個節(jié)點的強連通分量的每一個內(nèi),發(fā)現(xiàn)具有與感興趣的循環(huán)路徑長度相等的長度的每個循環(huán)路徑;以及 對于發(fā)現(xiàn)的循環(huán)路徑的每一個,將由發(fā)現(xiàn)的循環(huán)路徑的有向邊表示的交易表示為相關(guān)的交易。
16.如權(quán)利要求15所述的非暫時性計算機可讀存儲介質(zhì),識別強連通分量包括將深度優(yōu)先搜索算法應(yīng)用于有向圖。
17.如權(quán)利要求16所述的非暫時性計算機可讀存儲介質(zhì),所述深度優(yōu)先搜索算法包括Tarjan 算法。
18.如權(quán)利要求15所述的非暫時性計算機可讀存儲介質(zhì),發(fā)現(xiàn)具有與感興趣的循環(huán)路徑長度相等的長度的循環(huán)路徑的每一個包括: 識別強連通分量的最小的一組開始節(jié)點,從所述開始節(jié)點開始單獨的搜索,單獨的搜索可以導(dǎo)致具有與感興趣的循環(huán)路徑長度相等的長度的全部循環(huán)路徑被識別。
19.如權(quán)利要求18所述的非暫時性計算機可讀存儲介質(zhì),發(fā)現(xiàn)具有與感興趣的循環(huán)路徑長度相等的長度的循環(huán)路徑的每一個還包括: 將每個開 始節(jié)點分配給多個搜索線程中的一個; 使用多個處理器中的一個執(zhí)行所述多個搜索線程中的每一個。
20.如權(quán)利要求18所述的非暫時性計算機可讀存儲介質(zhì),其中每個單獨的搜索包括深度優(yōu)先搜索。
【文檔編號】G06Q40/04GK103838811SQ201310587433
【公開日】2014年6月4日 申請日期:2013年11月20日 優(yōu)先權(quán)日:2012年11月20日
【發(fā)明者】B.秦, D.馬洛夫 申請人:Sap股份公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
五寨县| 秦安县| 新乡县| 西城区| 桦甸市| 绿春县| 汪清县| 沙雅县| 霍山县| 江川县| 新竹市| 兴海县| 佛山市| 鄄城县| 巴东县| 无为县| 循化| 普兰县| 崇阳县| 祁阳县| 德钦县| 安新县| 西宁市| 工布江达县| 克山县| 达孜县| 乌什县| 鹤壁市| 石景山区| 邛崃市| 庆元县| 镇沅| 商洛市| 灵寿县| 牟定县| 陇川县| 阳东县| 邵东县| 长海县| 彭阳县| 德兴市|