algorithm - Min number of Elements To generate all other elements using xor -
i have n integers a_1, ..., a_n
. want pick minimum number of them xor forms others.
for example, consider [1,2,3]
, 1^3=2
don't need 2
in array. can remove it. end [1,3]
. min number of elements 2
, can form original elements in array xoring 2 of them. greedy approach work here? or dp?
edit: explain thinking. greedy approach thought due fact if a^b=c
a^c=b
, b^c=a
. first delete duplicates. first in beginning list pairs each element can pair form element in array. takes o(n^3)
preprocessing. pick element least contribution , delete , subsequently subtract 1 each of other elements. repeat until elements have <=2 pairs. , stop. take o(n^3)
total of o(n^3)
. greedy approach work? there dp way it?
if n bounded 50 think backtracking should work.
suppose @ step have selected subset s of numbers (that should produce others) , want include new number subset. can following:
- consider remaining numbers r , include in s numbers can't produced others (in s , r)
- include in s random (or "best" in way) number r
- remove r numbers can produced in updated s
also should keep track of current best solution , cut off branches won't allow better result.
Comments
Post a Comment