Hi, please have a look at the code below: “”” Hash Table ADT…

Question Hi, please have a look at the code below: “”” Hash Table ADT… Hi, please have a look at the code below:  “”” Hash Table ADTDefines a Hash Table using Linear Probing for conflict resolution.It currently rehashes the primary cluster to handle deletion.”””__author__ = ‘Brendon Taylor, modified by Jackson Goerner’__docformat__ = ‘reStructuredText’__modified__ = ’21/05/2020’__since__ = ’14/05/2020’from referential_array import ArrayRfrom typing import TypeVar, Genericfrom potion import PotionT = TypeVar(‘T’)class LinearProbePotionTable(Generic[T]):    “””    Linear Probe Potion Table    This potion table does not support deletion.    attributes:        count: number of elements in the hash table        table: used to represent our internal array        table_size: current size of the hash table    “””    def __init__(self, max_potions: int, good_hash: bool=True, tablesize_override: int=-1) -> None:        “””This method initializes variables to their starting values. This method also checks if the tablesize_override is -1, and if True it calls a method        which creates an Array and will initialize the table size to the number of max_potions. On the other hand, if the tablesize_override is not -1, this method        will call the same which creates an array with the value of tablesize_override as the table_size.        The best and worst case of this method is O(1)”””        # Statistic setting        #setting instance variables        self.conflict_count = 0        self.probe_max = 0        self.probe_total = 0        self.max_potions=max_potions        #check the hash setting, and set the mode accordingly         if good_hash==True:            self.hash_mode=’good_mode’        else:            self.hash_mode=’bad_mode’        #check tablesize_override and call the method which creates the array with the appropriate table_size        if tablesize_override==-1:            self.initalise_with_tablesize(max_potions)        else:            self.initalise_with_tablesize(tablesize_override)    def hash(self, potion_name: str) -> int:        “””This method checks what the user set the hash mode to. If the hash mode is set to ‘good_mode’, then the method will call the good_hash method from the Potion file.        If the hash mode is otherwise, then the method will call the bad_hash method from the Potion file.        The worst-case complexity of this method is O(n) when the hash mode is set to good_mode, where n is the number of characters in the potion name.        The best-case comlexity of this method is O(1), when hash mode is set to bad_mode. “””        if self.hash_mode==’good_mode’:            hash_val=Potion.good_hash(potion_name,self.table_size)        else:            hash_val=Potion.bad_hash(potion_name,self.table_size)        return hash_val    def statistics(self) -> tuple:        “””This method will return a tuple, which will contain the total number of conflicts, the total number of probes and the size of the largest probe chain.        Complexity is O(1), for best and worst case.”””        return (self.conflict_count, self.probe_total, self.probe_max)I want you to explain to me what should I expect the output of the statistical method to be for my good hash function, and bad hash function, and why this is so. You should produce sufficient fake data to validate or invalidate your prediction and present these results. Thank you! Straight up downvote if the answer is incorrect or spam. Computer Science Engineering & Technology Python Programming FIT 1008 Share QuestionEmailCopy link Comments (0)