in reply to tuning hash memory usage
Although it's not clear to me from the problem description,
often times you don't need the full data structure
throughout the algorithm. If possible, try doing your
work as soon as you put an entry into the hash and then
delete the entry when you're done. The total data size
might be 5000, but if you only have 200 entries in your hash
at any given time, that's much more acceptable.
-Ted