Como estudiante de primer año de ciencias de la computación, ¿debería saber estas matemáticas?

Es una gran notación O, es fácil.

En primer lugar, O de n ^ 2, n lg n, n, lg n o C para constante son respuestas a todas las preguntas que verá. No creo que los algoritmos necesiten ir por encima de bucles anidados dobles.

En segundo lugar, son las matemáticas. Necesita leer la traducción, no las matemáticas en sí. La pregunta que se hace es si tiene un bucle doble anidado (realmente cualquier bucle), ¿qué tan rápido es su algoritmo? Y qué tan rápido es muy, muy general en notación O grande.

Digamos que tienes un juego en 3D, estás en el punto de partida del mapa 1, 1 y quieres ir a x, y, la ciudad de las modelos desnudas calientes … Entonces, ¿qué tiene que dibujar el juego en tu pantalla? Bueno, digamos que cada bloque de tierra tiene 2 edificios para dibujar, pero dibuja todo entre su punto y donde quiere ir. El primer bloque dibujará dos edificios, el segundo bloque dibujará dos, pero el edificio bloquea el primer bloque, por lo que solo 1 se dibuja. El tercer bloque son dos edificios más, pero 1 está completamente bloqueado mientras que el segundo edificio está bloqueado por 1/3, por lo que solo tiene que sacar los 2/3 de ese edificio. Esta es la operación de 2 / k. Pero tiene que dibujar todo esto mientras ni siquiera te estás moviendo, ¿qué sucede cuando avanzas un bloque hacia adelante? Ese es el i = 1 a n, dibuja el 2 / k de nuevo. Entonces, el rendimiento general del algoritmo es O de n lg n.

Trato con grandes datos, por lo que al escribir consultas en la base de datos, necesita códigos eficientes o, de lo contrario, está hablando de tomarse días para obtener un informe para el CEO frente a 2 horas. Así que haría una comprobación rápida del algoritmo de mi equipo antes de permitirles ejecutar cualquier cosa. Sorprendentemente, no mucha gente conoce la gran notación O.

Tal vez. Necesitas saberlo si tu profesor lo dice. Hay muchas escuelas (aunque no las mejores) donde puedes graduarte con un título de CS y no saber cómo hacer esto. (Tenga en cuenta que no estoy hablando de la notación big-O: tiene que saber cómo hacer ESO, pero en este caso particular las matemáticas son complicadas). Sin embargo, si lo estuviera entrevistando, y usted no podría hacer tanta matemática, Me decepcionaría, pero aún así lo contrataría como ingeniero de software si demostrara competencia en programación y diseño de algoritmos reales. Porque en la práctica esto ocurre extremadamente raramente. Pero, si no pudieras decirme por adelantado que la clasificación rápida es O (n * log (n)), no te contrataría, y si no pudieras analizar O-big un algoritmo directo con bucles (y sin recursividad ), No te contrataría.

Además, si estás pensando en la escuela de posgrado, y estas matemáticas son aterradoras, probablemente no deberías estarlo.

Yo era de informática e ingeniería, así que aquí está mi opinión.

La informática o incluso la programación tienen un propósito central: resolver problemas.

Si está preguntando “¿alguna vez tendré que usar esto”, la respuesta probablemente no sea. Probablemente esté frustrado por lo difícil que puede parecer para algo tan inútil, pero aprender a resolver problemas y superar las barreras psicológicas para resolverlos es fundamental para la informática y la vida en general. Persistencia para seguir adelante y cuando lo consigas, te encantará.

Espero que esto pueda ayudarlo tanto como me ha ayudado.

Sí. Espera hasta tu tercer año 🙂

Sin embargo, no significa que necesite saber para programar. Pero uno tiene que darse cuenta de que muchas escuelas enseñan ciencias de la computación para que uno también pueda convertirse en un investigador (de ahí la teoría y las matemáticas), pero al mismo tiempo no pueden identificar a los que no quieren.

Sí, obviamente. Es realmente importante para sus clases de informática.