Tengo un problema un tanto matemático orientado. Tengo un montón de bitfields y me gustaría calcular qué subconjunto de ellos se unen para lograr un cierto otro campo de bits, o si no hay una manera de hacerlo, descubro que no existe ese subconjunto.¿Cómo encontrar qué subconjunto de bitfields xor a otro bitfield?
Me gustaría hacer esto utilizando una biblioteca gratuita, en lugar de código original, y preferiría algo con enlaces de Python (también sería aceptable usar las bibliotecas matemáticas integradas de Python, pero quiero hacer un puerto esto a múltiples idiomas eventualmente). También sería bueno no tomar el golpe de memoria de tener que expandir cada bit a su propio byte.
Algunas aclaraciones adicionales: solo necesito una solución única. Mis matrices son lo opuesto a disperso. Estoy muy interesado en mantener el tiempo de ejecución a un mínimo absoluto, por lo que es muy recomendable utilizar métodos algorítmicamente sofisticados para invertir matrices. Además, es muy importante que el campo de bits específico sea el que se genera, por lo que una técnica que solo encuentre un subconjunto que xor a 0 no lo corte del todo.
Y generalmente conozco la eliminación gaussiana. ¡Estoy tratando de evitar hacer esto desde cero!
cruzada publicado a mathoverflow, porque no es claro cuál es el lugar adecuado para esta pregunta es - https://mathoverflow.net/questions/41036/how-to-find-which-subset-of-bitfields-xor-to-another-bitfield
m4ri parece prometedor, pero argh, las bibliotecas de uso general no deberían ser GPL! –