Implement the Boyer Moore algorithm from scratch. Test it and plot c against n and m where n is the size of the text and m is the size of the pattern, for different values of n and m.
Implement the Z algorithm from scratch. Test it and plot c against n and m where n is the size of the text and m is the size of the pattern, for different values of n and m.
Extracted text: 1. import random def getRandom(x,y): tmp=(x + random.randint(0,100000) % (y-x+1)) return tmp def randomizedBinarySearch(arr,1,r,x) : if r>=1: mid=getRandom(1,r) if arr[mid] == X: return mid if arr[mid]>x: return randomizedBinarySearch(arr, 1, mid-1, x) return randomizedBinarySearch(arr, mid+1,r, x) return -1 if name main_': == [2, 3, 4, 10, 40] arr = n=len(arr) x=10 result = randomizedBinarySearch(arr, 0, n-1, x) if result==-1: print('Element is not present in array') else: print('Element is present at index ', result)
Extracted text: 2. def KMPSearch(pat, txt): M = len(pat) N = len(txt) 1ps = [0]*M j = 0 # index for pat[] %3D computelPSArray(pat, M, 1ps) i = 0 # index for txt[] while i < n:="" if="" pat[j]="" txt[i]:="=" i="" +="1" j="" +="1" if="" j="=" m:="" print="" ("found="" pattern="" at="" index="" "="" +="" str(i-j))="" j="1ps[j-1]" elif="" i="">< n and pat[j] != txt[i]: if j != 0: j = lps[j-1] %3d else: i += 1 n="" and="" pat[j]="" !="txt[i]:" if="" j="" !="0:" j="lps[j-1]" %3d="" else:="" i="" +=""> n and pat[j] != txt[i]: if j != 0: j = lps[j-1] %3d else: i += 1>