esta es una reescritura de otra pregunta reciente mía [1] que no se dijo bien (tenía una simplificación semi obvia, mea culpa) pero creo que todavía hay una pregunta no trivial en el fondo. He visto problemas similares en la literatura pero no este en particular.
lo escribirá en términos de vectores de bits porque eso es lo más fácil para mí.
Que haya un conjunto de vectores de bits de tamaño , v 1 , v 2 , v 3 , . . . , v n . Considere la operación XOR bit a bit. dado un vector objetivo v 0 . encuentre un subconjunto de vectores de modo que el XOR bit a bit del conjunto sea igual al vector objetivo. ¿Qué es un algoritmo eficiente (o idealmente óptimo) para encontrar un subconjunto?
El algoritmo de fuerza bruta enumera el conjunto de potencias de tamaño enumera el primer subconjunto encontrado. (¿ligeramente?) más eficiente miraría las posiciones 1 en el objetivo y excluiría los subconjuntos que no tienen al menos 1 vector con un 1 en una posición 1 del objetivo.
el subconjunto puede o no existir. Puede o no ser único.
preguntas estrechamente relacionadas: (1) encontrar el subconjunto más pequeño, (2) salida T / F dependiendo de si existe dicho subconjunto.
sospecho que uno de estos problemas es NP completo.
buscando referencias, información, etc., sería interesante saber si hay entradas "duras" frente a "fáciles", etc.
como escribí en la otra pregunta, esto parece estar estrechamente relacionado con el problema de la suma de subconjuntos (ver, por ejemplo, garey & johnson ref) que se sabe que es NP completo, pero parece tener una complejidad "ligeramente" menor porque es más simple calcular un vector XOR a nivel de bits que una suma binaria (la suma puede tener más dígitos binarios).
el problema también parece estar estrechamente relacionado con la pregunta reciente de bin fu [2]