Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

class DoubleHashTable: def __init__(self, size=7, secondary_hash_value=5): self.size = size self.slots = [None] * size self.secondary_hash_value = secondary_hash_value def __str__(self): return str(self.slots) def get_hash_index(self, key): return

image text in transcribed

class DoubleHashTable: def __init__(self, size=7, secondary_hash_value=5): self.size = size self.slots = [None] * size self.secondary_hash_value = secondary_hash_value

def __str__(self): return str(self.slots)

def get_hash_index(self, key): return key % self.size

def clear(self): self.slots = [None] * self.size

def is_empty(self): return self.__len__() == 0

def __len__(self): return sum([1 if item != None else 0 for item in self.slots])

def put(self, key): original_index = index = self.get_hash_index(key) step = 1 step_size = self.get_step_size(key) while self.slots[index] != None: index = (original_index + step * step_size) % self.size step += 1 self.slots[index]=key

def get_step_size(self, key): return self.secondary_hash_value - (key % self.secondary_hash_value)

def primes(n): n_plus_1 = n + 1 num_list = list(range(n_plus_1)) num_list[1] = 0 square_root_n = int(round(n**0.5)) for i in range(2, square_root_n + 1): if num_list[i]: num_list[i*i: n_plus_1: i] = [0] * len(range(i*i, n_plus_1, i)) return list(filter(lambda x: x >= 1,num_list))

Consider the DoubleHashTable class definition in the answer box below, which implements a hash table with double hashing. The method get_hash_index (self, key) implements the first hash function using the variable size. The method get_step_size (self, key) implements the second hash function using the variable secondary_hash_value, and defines the step size for the probe sequence. Write a method named secondary_hash_value_test (size, table_values) which tests how many collisions occur for all possible secondary hash values when inserting the items of the list table_values into an initially empty hash table. The method should return a list of tuples where the first element of each tuple is the secondary hash value (all primes smaller than the table size), and the second element is the number of collisions occurring when using this value for the second hash function. NOTE: You might want to modify the put () method to return the number of collisions. Example: The result of secondary_hash_value_test (7,[11,15,43,9,45]) is [(2,4),(3,2),(5,3)], since the prime numbers smaller than 7 are 2, 3, and 5 , and when using these primes for the secondary hash function and inserting [11,15,43,9,45] into a hash table of size 7 , then the number of collisions are 4,2 , and 3 , respectively. For example: Answer: (penalty regime: 0,0,5,10,15,20,25,30,35,40,45,50% )

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

OCA Oracle Database SQL Exam Guide Exam 1Z0-071

Authors: Steve O'Hearn

1st Edition

1259585492, 978-1259585494

More Books

Students also viewed these Databases questions

Question

In problem 10, estimate the odds ratio and interpret the results.

Answered: 1 week ago