I have a matrix of 300 by 15,000 which is intended for my problem of:
300 data items to be distributed to 15,000 receivers, with
each data item may go to one or more (up to 15,000) receivers, and
each receiver may receive one or more (up to 300) data items.
The actual distribution mechanism has the capability to deliver
multiple data items to multiple receivers in one same round,
this may be unusual but it's something I definitely should take
So I need to figure out a good set of distribution grouping
in order to utilize the distribution mechanism advantage to
minimize my total distribution cost - time especially.
It seems like that whichever heuristic that I may choose to work on,
I will need to operate on the data/receiver relationship matrix
extensively. This matrix is large but simple, i.e. it's a binary
relationship matrix, each entry simply indicates that
"if this data goes to this receiver or not".
I certainly will have a lot of groupings to explore, and if these
data/receiver relationship can be expressed in one long bit string
for each data or each receiver, and if I can AND/OR/XOR... on
these long bit strings straightforwardly... My exploration will
at least have a computational feasibility.
My problems at hand are thus:
1. How do I represent a bit string that carries more than 64 bits in C?
And which will allow me to -
2. Operate on these bit strings with primitive C logical operators efficiently?
I've looked into packed structures, but found no way to operate
on a structuralized long bit string with primitive C logical operators.
Suggestions, advice, tutorials please?