The hash function is the middle n bits of x * scramble, choosing the lowest n bits has bad hasing properties
On Nov 3, 2011, at 1:59 PM, Robert Badita <robert.bad...@gmail.com> wrote: > What you need is to recreate the hash, and make your own hash structure like > an array with 2^n elements where 0.9 * 2^n >= N where N is the number of real > elements in your structure (use 90% maximum fill factor) > If you use the hash as a dynamic vector with minimum 10% fill factor and max > 90% then for the grtRandomElement you can choose a random value between 0 and > 2^n - 1, if it's occupied output that element, else rechoose until an element > is occupied. This method is O(1) since in the worst case you do approx 10 > iterations. > > The hash function is just x * SCRAMBLE_CONSTANT mod 2^n where x is your > element to be hashed. - multiplicative hashing > > On Nov 3, 2011, at 1:09 PM, shady <sinv...@gmail.com> wrote: > >> simple hash ? >> can you specify the hashing function because if we use stl's map its >> complexity is O(log(n)) >> >> On Thu, Nov 3, 2011 at 1:48 AM, Robert Badita <robert.bad...@gmail.com> >> wrote: >> Simple hash will do it in O(1) but with careful implementation of >> getRandomElement to distribute probability evenly to each bucket / element >> in the bucket >> >> >> On Nov 2, 2011, at 5:52 PM, shady <sinv...@gmail.com> wrote: >> >>> does anyone knows how much is the complexity of operations erase and >>> pop_back in case of Vector(STL) >>> what would you choose : >>> >>> Design a data structure where the following 3 functions are optimised: >>> 1. Insert(n) >>> 2. GetRandomElement() >>> 3. Remove(n) >>> Write a class, and implement the functions. Give complexity of each of these >>> >>> what would you choose, insertion can always be done in O(1), but what about >>> getrandomelement().... if we use simple arrays than for those >>> 1. -> O(1) >>> 2. -> O(1) >>> 3. -> O(n) >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Algorithm Geeks" group. >>> To post to this group, send email to algogeeks@googlegroups.com. >>> To unsubscribe from this group, send email to >>> algogeeks+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/algogeeks?hl=en. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Algorithm Geeks" group. >> To post to this group, send email to algogeeks@googlegroups.com. >> To unsubscribe from this group, send email to >> algogeeks+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/algogeeks?hl=en. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Algorithm Geeks" group. >> To post to this group, send email to algogeeks@googlegroups.com. >> To unsubscribe from this group, send email to >> algogeeks+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/algogeeks?hl=en. -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.