complete the hashset class found in the by implementing the methods described in the two tables of set operations thenwrite main function to test these operations save the class in file called hashset py so it can be imported into other programs if you call your main function in hashset py with the if __name__ ="__main__statementthen when you import it into another program your hashset py main function will not be executedbut when you run hashset py on its ownits main function will run to test your hashset class memoize the tic tac toe program from chap to improve its performance to do this each board must have hash value you should implement __hash__ method for the board class the hash value should be unique to board' configuration in other wordsthe 'so'sand dummy objects should factor into the hash value for the board so that each board has its own unique hash value then memoize the minimax function to remember the value found for particular board' configuration the minimax function should start by checking whether or not the value for this board has already been computed and the function should return it if it has write version of the hashset class that allows you to specify the maximum and minimum allowable load factor then run number of tests where you plot the average time taken to add an item to set given different maximum load factors also gather information about the average time it takes to test the membership of an item in set for different maximum load factors from this information you should be able to see some of the space/time trade-off in hash tables generate xml data in the plot format from these experimental results and plot the data to see what it tells you from the gathered informationexpress your opinion about the optimal load factor for the hashset class comment on the optimal maximum load factor at the top of the program that performs your tests this copy belongs to 'acha