Q&A > Data Structures > set theory w/hashes? arrays? done quickly? - Answer contributed by fundflow

There has to be a better way using array slices...... got it

Here is an example for union:

In the above example, the hash keys are the elements of the set. If you let the set be the elements in the hash that also have a nonzero value, then the same technique can be used for intersection:

Also, to answer the original poster: if "REALLY large" is really large, and doesnt fit in the main memory then you might want to store the sets in sorted files and merge them smartly to compute the union/intersection.

Here is an example for union:

I don't really know how to remove elements from the hash.%s1=('a'=>1, 'b'=>1, 'c'=>1); %s2=('a'=>1, 'c'=>1, 'd'=>1); print "Set 1 has: ", join(",",keys %s1), " Set 2 has: ", join(",", k +eys %s2),"\n"; %j=%s1; @j{keys %s2}=1; print "Union is ", join(",", keys %j), "\n";

In the above example, the hash keys are the elements of the set. If you let the set be the elements in the hash that also have a nonzero value, then the same technique can be used for intersection:

%inter=%s1; @inter{%s2}=0;

Also, to answer the original poster: if "REALLY large" is really large, and doesnt fit in the main memory then you might want to store the sets in sorted files and merge them smartly to compute the union/intersection.

Replies are listed 'Best First'. | |
---|---|

(tye)RE: Answer: set theory w/hashes? arrays? done quickly?
by tye (Sage) on Oct 04, 2000 at 04:11 UTC |

Comment onAnswer: set theory w/hashes? arrays? done quickly?SelectorDownloadCode