Bueno, imagine que tiene las firmas almacenadas en una estructura binaria en forma de árbol. Es decir, imagine que cada firma se almacena en un tipo de datos que tiene un par de punteros para subárboles (otras firmas). En términos de memoria para almacenar la firma “base de datos”, esto es muy sencillo y aprovecha las estrategias de carga de fragmentos de archivos implementadas por el sistema operativo.
Entonces, cuando el software antivirus está escaneando, lee algunos datos y los usa para navegar (búsqueda binaria) en el árbol y determinar si hay una coincidencia. Creo que eso da un costo algorítmico de O (n) = log (n) en el caso promedio y O (n) = n en el peor.
Si el árbol está diseñado, ordenado y equilibrado para aprovechar lo que el antivirus espera encontrar (por ejemplo, virus comunes en la “parte superior”), el algoritmo se vuelve aún más rápido.
Ver http://en.wikipedia.org/wiki/Bin…
Espero que pueda ayudarlo hasta que aparezca un ingeniero de software antivirus real.
- ¿Puede mi currículum ser lo suficientemente bueno como para ser considerado para una entrevista en las principales compañías tecnológicas para un puesto de ingeniero de software?
- ¿Dónde puedo obtener más información sobre los patrones de diseño de software como MVVM?
- ¿Se ven afectados los trabajos de desarrollo de software debido a los despidos de TI y la automatización para los nuevos en 2017?
- Cómo convencerme de tolerar un código imperfecto que creé para poder dedicar tiempo a cosas más importantes
- En algunas publicaciones de trabajo de desarrollador se requiere un título de licenciatura, pero no dice nada sobre la especialización. En estos casos, ¿puedo solicitar un puesto de desarrollador como graduado de estudios sociales?