为了达到前面,这是功课。这就是说,它是非常开放的,我们甚至几乎没有指导如何开始思考这个问题(或者一般的并行算法)。我想在正确的方向和指针不是一个完整的解决方案。任何有助于阅读的阅读材料都会非常出色。首先-发生并行字符串匹配算法
我正在研究一种有效的方法,以使用并行算法在大量文本中匹配模式的第一次出现。该模式是简单的字符匹配,不涉及正则表达式。我设法想出了一个找到所有的比赛的可能方式,但那需要我查看所有比赛并找到第一个。
所以问题是,我会有更多的成功打破进程之间的文本和扫描的方式?或者最好是在第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