爲了達到前面,這是功課。這就是說,它是非常開放的,我們甚至幾乎沒有指導如何開始思考這個問題(或者一般的並行算法)。我想在正確的方向和指針不是一個完整的解決方案。任何有助於閱讀的閱讀材料都會非常出色。首先-發生並行字符串匹配算法
我正在研究一種有效的方法,以使用並行算法在大量文本中匹配模式的第一次出現。該模式是簡單的字符匹配,不涉及正則表達式。我設法想出了一個找到所有的比賽的可能方式,但那需要我查看所有比賽並找到第一個。
所以問題是,我會有更多的成功打破進程之間的文本和掃描的方式?或者最好是在第j個進程搜索模式的第j個字符的地方進行某種進程同步搜索?如果所有進程都返回true以表示匹配,那麼進程將在匹配所述模式時改變它們的位置並再次向上移動,直到所有字符匹配,然後返回第一個匹配的索引。
我到目前爲止是非常基本的,並且很可能不起作用。我不會執行這個,但任何指針將不勝感激。
隨着p個處理器,長度爲t文本,和長度爲L的圖案,並且是,l-處理器的天花板:
for i=0 to t-l: for j=0 to p: processor j compares the text[i+j] to pattern[i+j] On false match: all processors terminate current comparison, i++ On true match by all processors: Iterate p characters at a time until L characters have been compared If all L comparisons return true: return i (position of pattern) Else: i++
與您提出的算法的問題是,有*方式*處理器之間的通信開銷太多。除非模式非常長,否則讓每個處理器在特定點處尋找匹配並在最早匹配時終止會更好。 – 2010-02-22 22:09:42
是否指定了PRAM模型?或者你可以承擔任何? L處理器的限制是由你還是問題? – 2010-02-22 23:02:15
L處理器限制由我指定。我假設內存不共享,因爲這是使用MPI的藉口。 – Xorlev 2010-02-22 23:10:44