Red de conocimiento informático - Espacio del host - Las personas que entienden los algoritmos deberían saber cómo tomar decisiones en la vida.

Las personas que entienden los algoritmos deberían saber cómo tomar decisiones en la vida.

Cada año, cuando quiero encontrar trabajo, recibo muchos correos electrónicos de personas que siempre me preguntan cómo elegir sus ofertas, si ir a Tencent o Douban, si ir a una empresa extranjera o nacional, si iniciar una negocios o tomar el examen de ingreso de posgrado, ya sea para ir a Beijing o a mi ciudad natal, etc. Es para ir a Sinovation Ventures. ¿Debería ir a ThoughtWorks? .....Espera, espera. Desde julio de este año, he recibido y respondido más de 60 correos electrónicos de este tipo. Lo que más hago es ayudarlos a aclarar sus pensamientos y ayudarlos a comprender lo que más desean.

Descubrí profundamente que para las personas de nuestro país que han sido dominadas por padres y maestros desde la infancia, cuando un día los padres y maestros no pueden seguir el ritmo, apenas sabemos cómo tomar una decisión.

Algunos ejemplos

Cuando nos enfrentamos a varios factores que afectan la elección, como: ciudad, tamaño de la empresa, naturaleza de la empresa, salario, proyecto, registro del hogar, tecnología, dirección y visión... Siempre encontrarás que tendrás problemas con algunas cosas en varias empresas. Aquí hay algunos ejemplos:

Un internauta me dijo que fueron a Tencent en Shanghai porque Tencent era grande, pero ellos. Descubrió que el salario no es tan alto como el de Douban (ni un poquito más bajo). Si quieren cambiar de trabajo en el futuro, el salario inicial está directamente relacionado con su alto salario futuro. Dije que vayamos a Douban. Dijo que Douban está en Beijing, la contaminación es muy grave y no hay registro de hogares, por lo que el ambiente de vida no es bueno. Le dije que fuera a Tencent, pero dijo que los recientes ajustes organizativos de Tencent han sido inestables. Dije, vayamos a Douban, una empresa lenta y con un desarrollo muy estable. Dijo que las ganancias de Douban no están claras y que no le gusta usar Python. Dije, vayamos a Tencent...

Otro internauta me dijo que quería volver a su ciudad natal porque tenía buenas conexiones y se llevaba bien con él. Pero quiero quedarme en una gran ciudad porque puede abrirme los ojos.

Otro internauta me dijo que quería unirse a una empresa extranjera para practicar inglés y ampliar sus horizontes, pero tenía miedo de ser un engranaje en una empresa extranjera y no podría implementar su idea. Un amigo lo animó a iniciar un negocio. Se siente bien y hace mucho ejercicio, pero no sabe si podrá hacerlo bien.

Otro internauta estaba eligiendo entre un equipo en Sinovation Ventures y el examen de ingreso de posgrado. ¿No sé si puedo ir a Sinovation Ventures? Creo que el proyecto es normal, pero el equipo se siente muy apasionado. Por otro lado, creo que si no tengo suficientes calificaciones académicas, debería poder encontrar un mejor trabajo haciendo un posgrado.

Algunos amigos me preguntaron qué habilidades debería aprender. ¿Qué habilidades no se deben aprender? ¿O cómo aprender más rápido, cuál debería ser el camino técnico? Algunos dicen que solo hacen back-end pero no front-end, otros dicen que solo hacen investigación de algoritmos pero no ingeniería, etc. Como sienten que la vida es limitada, se especializan en sus artesanías.

Espera, espera...

Personalmente creo que si las personas que no tienen experiencia en informática no saben cómo tomar decisiones y no saben adónde ir, está bien, pero las personas con formación científica han aprendido algoritmos, y las personas que entienden los algoritmos deberían saber cómo tomar decisiones.

No puedes quererlo todo, por eso sólo puedes querer lo que es más importante para ti. Si quieres saber qué es lo más importante, debes tener una comprensión clara de los deseos y ambiciones de tu corazón; de lo contrario, te enredarás.

Así que aquellos que estén confundidos acerca de la elección deben consultar el algoritmo de clasificación.

En primer lugar, lo más importante a lo que debe hacer referencia es la "clasificación de burbujas": la idea de este algoritmo es generar un número máximo a la vez. Entonces, hay que preguntarse, ante los factores que inciden en tu elección, si solo puede haber uno, ¿cuál elegirías? El resto se puede descartar. Entonces, cuando elija los números más grandes uno por uno y use este factor decisivo para filtrar opciones, será fácil saber qué debe elegir. Este algoritmo nos dice que cuantos menos pensamientos que distraigan a una persona, más fácil será tomar una decisión.

Bien, tal vez no sepa cómo comparar el tamaño de dos factores de toma de decisiones, como por ejemplo: no se sabe, las perspectivas comerciales>; Perspectivas de negocio>¿Mejora de capacidades? Por lo tanto, no se puede hacer ningún burbujeo. Entonces, también podrías referirte a la idea de "clasificación rápida": este algoritmo nos dice que no necesitas encontrar el número más grande al principio, solo necesitas encontrar un estándar determinado en tu valor, y luego coloque los que cumplan con este valor A la derecha, los que no se pueden colocar a la derecha. Por ejemplo, sus criterios son: salario de 5000 yuanes o más y para empresas con perspectivas comerciales de más de 3 años, puede utilizar estos criterios para filtrar sus opciones. Luego, puedes ajustar este criterio nuevamente y continuar con la recursividad. Este algoritmo nos dice que cuanto más claros sean nuestros criterios de selección, más fácil nos resultará elegir.

Estos son los dos algoritmos de clasificación más clásicos y deben probarse en entrevistas. Creo que ya lo sabes de memoria. Así que creo que no debería ser un problema para ti aplicar este algoritmo a tus elecciones de vida. La pregunta es ¿sabes lo que quieres?

La idea central del algoritmo de clasificación es ayudarle a reconocer lo que más necesita y desea, y luego tomar decisiones en consecuencia.

Algoritmo codicioso El llamado algoritmo codicioso consiste en tomar la mejor u óptima opción (es decir, la más ventajosa) en el estado actual en cada paso de la selección (nota: en el estado actual), de modo que se espera que el resultado sea el algoritmo mejor u óptimo. El ejemplo más clásico de algoritmo codicioso es la codificación de Huffman.

En el caso de los humanos, la mayoría de las personas utilizan algoritmos codiciosos al hacer las cosas.

Por ejemplo, al realizar cambio, si queremos cambiar 36 yuanes, normalmente lo cambiamos en este orden: 20 yuanes, 10 yuanes, 5 yuanes, 1 yuan.

O cuando cruzamos una intersección y queremos caminar desde la cuadra diagonalmente opuesta, también usaremos un algoritmo codicioso: primero pasamos la luz verde, luego giramos 90 grados y esperamos la luz roja antes de cruzar. el camino.

Hay muchos ejemplos de este tipo. Cuando se trata de opciones, la mayoría de la gente elegirá el algoritmo codicioso, porque es un algoritmo relativamente simple. El futuro será demasiado complicado, por lo que solo podemos dar un paso a la vez y tomar el juicio y la elección más ventajosos según la situación actual. situación.

Algunas personas estarán ávidas de salario, algunas estarán ávidas de proyectos, algunas estarán ávidas de negocios, algunas estarán ávidas de puestos y algunas estarán ávidas de sus propios intereses... estas son todo bien. No hay nada de malo en los algoritmos codiciosos. Aunque no es la solución óptima global, permite encontrar soluciones óptimas locales o soluciones subóptimas. De hecho, no está mal tener una segunda mejor solución. El algoritmo codicioso es básicamente un algoritmo ansioso por lograr un éxito rápido, pero eso no significa que este algoritmo sea malo. Si la codicia es duradera y sostenida, ¿por qué no? .

Programación dinámica Pero sabemos que para la mayoría de los problemas, los métodos codiciosos generalmente no pueden encontrar la solución óptima porque generalmente no prueban todas las soluciones posibles. Debido a que el algoritmo codicioso es un comportamiento miope, solo juzgará en función de la forma actual, es decir, tomará decisiones prematuramente, por lo que no puede alcanzar la solución óptima.

La mayor diferencia entre la programación dinámica y los algoritmos codiciosos es que los algoritmos codiciosos toman decisiones y no pueden optimizarse en el proceso. La programación dinámica guardará los resultados de la operación anterior, seleccionará la actual en función de los resultados anteriores y optimizará dinámicamente la función.

Los algoritmos de programación dinámica nos dicen al menos dos cosas:

1) Es importante conectar el pasado y el futuro. Cuando se está preparando para viajar en el tiempo, su última experiencia no solo puede abrir sus experiencias futuras, sino que también puede usarse para experiencias futuras. No desperdiciaste ni un paso.

2) También es muy importante si se puede revertir. Esto significa que si tiene dos opciones frente a usted, una es la Compañía A y la otra es la Compañía B, si elige la Compañía A hoy, no significa que haya renunciado por completo a la Compañía B. Al contrario, Sepa que desde la Empresa A Es más fácil renunciar a la Empresa B que renunciar a la Empresa B...

Por ejemplo, si tiene dos ofertas, una es de Yahoo y la otra es de Baidu. El primer punto anterior nos hará pensar, ¿mis fortalezas y habilidades anteriores están más en línea con Yahoo o Baidu? ¿Y quién entre Yahoo y Baidu puede abrirme una plataforma más grande? El segundo punto anterior nos dice que si no haces una buena elección después de ingresar a Yahoo, ¿puedes volver a elegir Baidu? ¿O puedes retirarte fácilmente a Yahoo después de unirte a Baidu?

La ruta más corta de Dijkstra es un algoritmo codicioso + DP. Bastante clásico. La idea general del algoritmo es la siguiente:

1) Durante la inicialización, todos los nodos tienen un yo infinito, que es inalcanzable de forma predeterminada.

2) Sea codicioso desde el nodo más cercano.

3) Revise y vea qué tipo de nodos se pueden alcanzar, calcule y actualice las distancias a todos los puntos objetivo.

4) Vuelva a codiciar el nodo con el origen más corto, y así sucesivamente.

Este algoritmo nos ha traído algo de inspiración:

Un amigo me dijo que quiere convertirse en arquitecto o experto en un determinado campo técnico y que trabajará para lograr ese objetivo. Sigue avanzando adelante y nunca te rindas. Lo animé, pero también le hablé de este famoso algoritmo. Dije, este algoritmo te dice que para arquitectos o expertos en un determinado campo, la distancia actual es infinita. Lo tienen en cuenta para ver qué puedes conseguir primero. El llamado pragmatismo no consiste en perseguir sus objetivos de manera constante, sino en hacer cosas que estén dentro de sus capacidades y sean visibles a su alrededor.

Todavía recuerdo que cuando comencé a trabajar y salí de mi ciudad natal, nunca pensé en convertirme en una persona capacitada y nunca pensé que mi blog tendría una influencia tan grande. Cuando hago lo que puedo, puedo aprender lo que veo. Cuando aprendo, sé cómo aprender más fácilmente y cómo aprender más sólidamente. Este es probablemente el camino más corto para mí.

Muchos amigos me han preguntado si quiero aprender C++, si quiero aprender Python o Ruby, si quiero aprender front-end, etc. Estos amigos me dijeron que les es imposible aprender varios idiomas, aunque no los aprendan, los olvidarán. No hay nada de malo en esto, pero personalmente siento que solo hay dos estados para aprender algo, uno es no aprender y el otro es dominar. No se necesita mucho tiempo para comprender una tecnología. El propósito de aprender C ++ es en realidad comprender mejor Java, y el propósito de aprender el protocolo TCP/IP es comprender mejor la programación de Socket. Muchas cosas están interconectadas y se complementan entre sí. Después de aprender bien las tecnologías básicas de C/C++/Unix/TCP, encontrará que el camino hacia otras tecnologías se ha acortado.

Igual que este algoritmo. El algoritmo no es eficiente. Quizás lograste tu objetivo. Pasaste mucho tiempo al principio y fuiste a muchos lugares. Sin embargo, este es probablemente el camino más corto (mucho mejor que el que no puedes lograr).

Los algoritmos tienen compensaciones. Simplemente no obtienes todo lo que deseas. Cualquier elección significa darse por vencido: cuando se quiere conseguir algo, siempre hay que renunciar a algo. La vida es un balancín, un extremo está hacia arriba y el otro hacia abajo. Esto es lo mismo que cuando hacemos diseño de software o diseño de algoritmos. Se cambia tiempo por espacio, se cambia espacio por tiempo, cerrando la teoría. Como el significado original de la frase, siempre hay que cambiar algo por algo.

Todos estamos negociando nuestros futuros. Algunas personas usan sus propios esfuerzos, algunas usan su propio pensamiento, algunas usan su juventud, algunas usan su propia libertad, algunas usan sus propios valores, algunas usan su propia moralidad.... ................................................. ............. ................................................. ............

Cada uno tiene su propio algoritmo y cada algoritmo tiene su propósito. Incluso si todos usan el mismo algoritmo, las variables, los interruptores y las condiciones en el algoritmo de cada uno son diferentes y los resultados también son diferentes. Somos solo un programa que vive en la matriz. Cada uno de nuestros algoritmos determina cada una de nuestras elecciones, y nuestras elecciones determinan nuestras vidas.