¿Los desarrolladores de software alguna vez / a menudo usan generadores de algoritmos de fuerza bruta / aleatoria para crear soluciones cuando se conocen entradas y salidas?

Me atrevería a decir que tal vez, en algún lugar, en algún rincón profundo de un sombrío departamento de investigación de alguna universidad, tal vez algunas personas hagan esto. Pero, como dijiste, no hay un sustituto real para comprender completamente un problema, y ​​ciertamente no puedo pensar en ningún desarrollador que trabaje en la industria incluso pensando en recurrir a esto, ya que los problemas que se están abordando simplemente no son aplicables para ser ” fuerza bruta aleatoria ”, al menos no en un nivel de aplicación directa: los datos están ahí, el procesamiento debe seguir a A, B, C, los chicos de front-end harán D y E, y llegaremos al final de una iteración, repita. Hay muy poco o ningún espacio para la aleatoriedad.

Sin embargo, algunos escenarios me vienen a la mente:

  1. Necesito algún tipo de datos de código auxiliar, porque el equipo de back-end se está tomando un tiempo para conectarme algunos puntos finales: tendré algunas clases auxiliares en el front-end que generarán algunos datos de prueba pseudoaleatorios para completar mis clases y avanzar con el desarrollo
  2. Utilizando algoritmos que son PROBABILÍSTICOS en su núcleo: prueba de primalidad de Miller-Rabin, o algo así como árboles de expansión mínima aleatoria, etc. Pero es más probable que estos casos aparezcan dentro de círculos de investigación en lugar del mundo real.
  3. Cuando trabajaba como redactor de problemas para Codechef, también era responsable de generar todos los datos de prueba para una declaración de problema dada que había escrito. Eso se basó en la aleatoriedad “controlada”. X% de los casos de prueba deben pasar, Y% solo números primos como entradas, etc. Entonces, imponer condiciones a la generación aleatoria de datos.

Los algoritmos se pueden crear automáticamente para asignar entradas conocidas a salidas. La forma en que se generan estos algoritmos puede ser determinista (dado un conjunto de datos) o aleatoria.

Estos procedimientos son ampliamente utilizados en la industria cuando el problema es adecuado (generalmente si tiene muchos datos de entrada / salida donde el mapeo no se conoce o no se especifica a priori). Probablemente hayas escuchado sobre esto antes: aprendizaje automático (y más específicamente, aprendizaje supervisado).

Aquí hay un ejemplo de una aplicación que hace uso de “generadores de algoritmos aleatorios” (descenso de gradiente estocástico para entrenar una red neuronal convolucional) para mapear entrada a salida: No Hotdog en App Store

More Interesting

¿Qué calificaciones necesita un desarrollador de iOS?

¿Por qué es que la industria no ha adoptado un sistema de aprendizaje / oficial de desarrollo de software frente al método clásico de obtener una licenciatura y obtener entre 1 y 3 pasantías?

¿Las compañías de software toman en serio los bootcamps de los desarrolladores?

¿Cuáles son los diversos dominios en los que trabajan los desarrolladores de software?

¿Qué hace un desarrollador de software en la empresa? ¿Cuáles son los otros tipos de publicaciones en una empresa de TI?

¿Debo asumir este proyecto de desarrollo de software independiente?

¿Cuáles son las clases más importantes en un plan de estudios de pregrado en Ciencias de la Computación?

¿Cuál es su lista de tareas sugeridas para comenzar una comunidad para nerds tecnológicos?

¿Cuáles son los mejores sitios web que debe visitar un probador de software?

Cómo seguir siendo competente en múltiples lenguajes y tecnologías de programación si su trabajo solo requiere uno

¿Por qué no se puede automatizar el desarrollo de software para que esencialmente podamos 'pedir' a una computadora que nos cree una solución a nuestro problema / creación?

¿Es bueno ser un desarrollador de juegos o desarrollador de software y cuál es la diferencia entre estos dos?

¿Es necesario que el desarrollador de software sepa sobre la implementación de CMMI?

¿Qué lenguaje de programación es mejor para un proyecto MCA de último año? ¿Alguien puede sugerirme algunos temas?

¿De qué maneras podría un desarrollador de software crear un servicio para atender a los ricos?