Tengo una cadena de 128 bits, y mi supervisor me ha pedido que represente esos 128 bits como un polinomio. Ésta es una exploración del papel que estaba escribiendo en:¿Cómo usar polinomios en lugar de bits para mejorar el rendimiento?
Su idea es, ya que estamos eliminando los 0s de estos bits, vamos a ser capaces de realizar las siguientes operaciones (la mayoría de los cuales son XOR entre los bits/polinomios) mucho más rápido que si trabajáramos en todos los bits.
Entiendo cuál es el requisito, y puedo hacerlo en papel, y también en la aplicación. Pero mi camino no logrará su objetivo, que es mejorar el rendimiento. De hecho, dijo que ya hay bibliotecas que hacen esto, pero lamentablemente no pude encontrar ninguna. Lo único que encontré fue una clase polinómica que evalúa polinomios, que no es lo que quiero.
¿Ustedes saben cómo puedo implementar esto para mejorar el rendimiento? Cualquier código/fragmento/artículo es muy apreciado.
La aplicación está escrita en Java, si eso hace alguna diferencia.
Gracias,
Mota
Actualización:
Mi supervisor dice que este C library va a hacer la tarea. No podría imaginar cómo funciona y cómo lo hará.
He visto esto hecho en las bibliotecas de cifrado, particularmente en los campos de galois. No puedo ser más específico que esto, ha pasado un tiempo desde que lo vi. –
http://en.wikipedia.org/wiki/Finite_field_arithmetic –
El problema es que la mayoría de los procesos de máquina se cortan muy rápido y si intenta hacer cualquier otra cosa (.e.g *, +, /) todavía tiene que usar bits. Si usar polinomios fuera más rápido en cada causa, podría tomar la solución, dividirla en bits y luego en polinomios y hacerla cada vez más rápida con cada iteración (en cambio, sospecho que será cada vez más lenta). Puede haber situaciones en las que lo que sugiere es más rápido, pero no puedo pensar en ninguno. –