Rabin-Karp-Algorithmus für die Mustersuche in Matrix

Blog

Rabin-Karp-Algorithmus für die Mustersuche in Matrix

Gegebene Matrizen TXT[][] von Abmessungen m1 x m2 und Muster klopfen [] [] von Abmessungen n1 x n2 , ist die Aufgabe zu prüfen, ob ein Muster in der Matrix vorhanden ist oder nicht und wenn ja, dann die Top-Mot-Indizes der klopfen [] [] in TXT[][] . Es wird angenommen dass m1, m2 n1, n2

roku.com./link

Beispiele:

Input: txt[][] = {{G, H, I, P} {J, K, L, Q} {R, G, H, I} {S, J, K, L} } pat[][] = {{G, H, I}, {J, K, L} } Output: Pattern found at ( 0, 0 ) Pattern found at ( 2, 1 ) Explanation:

Eingang:
txt[][] = { {A, B, C},
{D, E, F},
{G, H, ich}
}
klopfen [] [] = {{E, F},
{HI}
}
Ausgabe:
Muster gefunden bei (1, 1)

**Approach:** In order to find a pattern in a 2-D array using [Rabin-Karp algorithm](https://www.geeksforgeeks.org/rabin-karp-algorithm-for-pattern-searching/), consider an input matrix **txt[m1][m2]** and a pattern **pat[n1][n2]**. The idea is to find the [hash](https://www.geeksforgeeks.org/hashing-data-structure/) of each columns of **mat[][]** and **pat[][]** and compare the hash values. For any column if hash values are equals than check for the corresponding rows values. Below are the steps: 1. Find the hash values of each column for the first **N1** rows in both **txt[][]** and **pat[][]** matrix. 2. Apply Rabin-Karp Algorithm by finding hash values for the column hashes found in step 1. 3. If a match is found compare **txt[][]** and **pat[][]** matrices for the specific rows and columns. 4. Else slide down the column hashes by 1 row in the txt matrix using a [rolling hash](https://www.geeksforgeeks.org/string-hashing-using-polynomial-rolling-hash-function/). 5. Repeat steps 2 to 4 for all the hash values and if we found any **pat[][]** match in **txt[][]** then print the indices of top most cell in the **txt[][]**. **To find the hash value:** In order to find the hash value of a substring of size **N** in a text using rolling hash follow below steps: 1. Remove the first character from the string: **hash(txt[s:s+n-1])-(radix**(n-1)*txt[s])%prime_number** 2. Add the next character to the string: **hash(txt[s:s+n-1])*radix + txt[n]**

#gierig #hash #mathematisch #matrix #suche #algorithmen

www.geeksforgeeks.org

Rabin-Karp-Algorithmus für die Mustersuche in Matrix

Ein Informatikportal für Computerfreaks. Es enthält gut geschriebene, gut durchdachte und gut erklärte Informatik- und Programmierartikel, Quizfragen.