Re: lists/unions/intersections:
- From: "oleg" <orodionov@xxxxxxxxx>
- Date: 11 Jul 2006 20:25:29 -0700
Chris,
I use perl to implement this algoritm, so hashmap is available. Memory
efficiency is irrelevent ( a few gigs in the workstation) I only care
about final list. If I understand your idea correctly, it will not
work because of requirement number 5.
In other words, from my example, when user selects list _7, new
list(list_4+list_6+list_7) is accessed which has all elements that
user is trying to access from list_7. Removal of duplicat elements is
the only difference between old lists and new combinational lists
With your algorithm old lists will not be subset of any of the new
lists
Chris wrote:
oleg wrote:
Hello,
Could you please help me to solve the following problem.
Rules:
1) There "N" number of lists. Each list has W(N) number of elements
2) Each list can be fully independent of other lists or it can have
intersection with one or more other lists or it can be identical to one
or more other lists.
3) I need to combine these lists into the new "M" number of lists
of size that is less then K. The goal is to produce the smallest
possible number of lists
4) Size K is greater then any one size of original lists
5) New lists must always include all elements found in original lists
minus the duplicates.
Here is an example:
Combine seven lists below into new lists. New lists must contain less
then 10 elements
list_1: { a, b, c, d ,e }
list_2: { c, d, a, g }
list_3: { a, g, s, h, y }
list_4: { t, r, n, l, o }
list_5: { c, f, g, s, w, y }
list_6: { n, y, r, s }
list_7: { k, b, s }
list_1+list_2: { a, b, c, d, e, g }
list_3 + list_5; { a, g, s, h, y, c, f, w, y }
list_4 + list_6 + list_7: { t, r, n, l, o, y, s, k, b }
Thank you!
Oleg
Can you use an external data structure, like a hashmap?
Allocate an output array of size K
For each element in each list, attempt to insert it into a hashmap. If
it's not already in the map, add it to your output array. If it is,
then ignore it.
When you run out of room in the output array, allocate
another one and continue.
This is not particularly memory efficient, but it is fast and simple.
.
- References:
- lists/unions/intersections:
- From: oleg
- Re: lists/unions/intersections:
- From: Chris
- lists/unions/intersections:
- Prev by Date: Re: lists/unions/intersections:
- Next by Date: Boolean Query Algorithm
- Previous by thread: Re: lists/unions/intersections:
- Next by thread: Re: lists/unions/intersections:
- Index(es):
Relevant Pages
|