być na przód, to jest praca domowa. To powiedziawszy, jest bardzo otwarty i prawie nie mamy wskazówek, jak zacząć myśleć o tym problemie (lub ogólnie o algorytmach równoległych). Chciałbym wskaźników we właściwym kierunku i nie jest pełnym rozwiązaniem. Każde czytanie, które mogłoby pomóc, byłoby również doskonałe.Pierwsza Występowanie Parallel String Matching Algorithm
pracuję na skuteczny sposób, aby dopasować pierwsze wystąpienie wzorca w dużej ilości tekstu przy użyciu algorytmu równoległego. Wzorzec jest prostym dopasowaniem znaków, nie ma w tym przypadku wyrażenia regularnego. Udało mi się wymyślić możliwy sposób znalezienia wszystkich z meczów, ale to wymaga ode mnie sprawdzenia wszystkich meczów i znalezienia pierwszego.
Więc pytanie brzmi, będę miał więcej sukcesów łamanie tekstu między procesami i skanowanie w ten sposób? A może najlepiej byłoby przeprowadzić zsynchronizowane z procesem wyszukiwania, w którym j'th proces szuka j'th znaku wzorca? Jeśli wtedy wszystkie procesy zwrócą wartość true dla ich dopasowania, procesy zmieniłyby swoją pozycję w dopasowaniu wspomnianego wzorca i ponownie ruszyłyby w górę, kontynuując dopóki wszystkie znaki nie zostaną dopasowane, a następnie zwracając indeks pierwszego dopasowania.
To, co do tej pory miałem, jest bardzo proste i najprawdopodobniej nie działa. Nie będę tego realizował, ale wszelkie wskazówki będą mile widziane.
procesory P, tekście długość T, i wzór o długości L, a sufit procesorów L używany:
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++
Problem z proponowanym algorytmem polega na tym, że istnieje * droga * za dużo komunikacji między procesorami. Jeśli wzór nie jest bardzo długi, lepiej będzie, gdy każdy procesor szukałby meczu w określonym punkcie i zakończyć go w najwcześniejszym meczu. –
Czy określono model PRAM? Czy możesz coś założyć? Czy limit procesora L jest narzucony przez ciebie lub problem? –
Limit procesora L jest określony przeze mnie. Zakładam, że pamięć nie jest dzielona, ponieważ jest to pretekst do używania MPI. – Xorlev