Having a matrix $M$, with unique rows, how to calculate a minimal subset of colums $D$ such that every row is unique? Also, how to maximize the amount of unique rows, if the number of chosen columns is limited?
For example:
$M$ =
0 0 0 0 0 1
0 0 0 0 0 2
0 0 0 1 0 0
0 0 0 2 0 0
$D$ (columns {4, 6} from $M$) =
0 1
0 2
1 0
2 0
It seemed like a Bounded Knapsack Problem at first, but the weights of each item in knapsack depends on other items, so it's not a classical knapsack problem.
Is there a known solution for this problem?