Cómo usar algoritmos y estructura de datos en la vida real

¿En la vida real? ¡Lo hacemos todo el tiempo!

  1. ¿De camino a la cantina de tu universidad? Una búsqueda
  2. ¿Esperando en la cola de la cantina? Cola
  3. ¿Te das cuenta de que la chica está parada delante? Búsqueda lineal
  4. ¿Buscando a su padre en la guía telefónica? Búsqueda binaria
  5. ¡Estúpido! ¡Buscalo en Google! Trie
  6. ¡Búscala en Facebook! Búsqueda de profundidad primero
  7. ¡La encontre! ¿Solicitud de amistad? ¡Aceptado! Envía un hola ! Grafico
  8. ¿Escribirle una carta de amor secreta? Cifrado César
  9. ¿Estás subiendo tu primera foto de cita en fb? Algoritmos de compresión de imagen
  10. ¿Mirando a través de sus mensajes de Whatsapp? Algoritmo KMP
  11. Ella se enteró y tuvo su primera pelea? ¡Comienza de nuevo con algunos regalos! Retroceso
  12. ¿Tienes su lista de artículos para comprar? Formación
  13. ¡Demasiados elementos! ¿Bajo en efectivo, tal vez? Cola de prioridad
  14. ¿Hacerla jugar a la búsqueda del tesoro por sus regalos? Lista enlazada
  15. ¡Espere! ¡Regresa! ¿Eso es un anillo? Apilar
  16. ¿La familia de las chicas no está de acuerdo con tu propuesta? Divide y conquistaras
  17. ¿Casarse? Felicidades! ¿Te vas de luna de miel? Problema de vendedor ambulante
  18. ¿Tu mamá hace las maletas? Problema de mochila 0/1
  19. ¿Ella empacó tus pepinillos favoritos? Tabla de picadillo
  20. ¿Conduciendo al aeropuerto? Búsqueda de amplitud

De muchas maneras …

Desde Hashing por color al emparejar calcetines de la caja de lavandería, hasta organizar su pila de camisas dobladas en el armario siguiendo los algoritmos de reemplazo de Cache (camisa MRU en la parte superior).

Sin embargo, quizás la lección más importante que podamos obtener al aplicar Ciencias de la Computación y Algoritmos a nuestra vida cotidiana es esa; La mayor parte del problema en la vida es computacionalmente demasiado complejo e imposible de encontrar una solución óptima de manera oportuna. Por lo tanto, a menudo tenemos que sacrificar nuestros objetivos relajando las limitaciones generales para llegar a una solución que sea factible y aceptable, aunque no óptima. La informática nos dice que no, que no puedes tenerlo todo

Dejame darte un ejemplo;

Disfruto leyendo libros porque:

  • Quiero aprender sobre las experiencias de otras personas.
  • Me gusta el olor y la sensación de una pila de papeles presionados en forma de libro. Me gusta sostener un libro.
  • Me gusta el momento de paz en mi mente cuando estoy concentrado en un libro.
  • Me gusta archivar los libros que he leído y disfruto mirándolos en una estantería

Sin embargo, lo que no me gusta de leer libros son:

  • Lleva mucho tiempo terminar un libro
  • El largo tiempo que lleva terminar un libro me impacienta, ya que constantemente pienso en otro libro que quiero comenzar.
  • ¡La tranquilidad de leer un libro en algún momento me pone a dormir!
  • Tiendo a olvidar los puntos y las lecciones que leo en los libros y, a menudo, necesito refrescar mi mente.

Así que relajé mis limitaciones y se me ocurrió una solución que cumple con algunos de mis objetivos: escucho audiolibros, ya que puedo aumentar la velocidad del narrador y también utilizo mis tiempos de viaje y recados para escuchar libros. También compro la versión usada de los libros que me gustan en eBay por precios más baratos para poner en mi estantería. Cuando soy libre y me gustaría pasar un tiempo leyendo un libro físico, elijo un libro que ya he escuchado en mi estantería.

No tiene que aplicar un algoritmo o estructura de datos exactamente a su vida. Pero a menudo puede tener la idea detrás del diseño de un algoritmo y aplicarlo a su vida.

¿Vida real? ¡Seguro!

  1. ¿Hacer amistad con alguien en FB? Amplitud primera búsqueda.
  2. ¿Escribirle una carta? Firmar.
  3. Esa es una carta de amor? Cifrar Firmar.
  4. Ustedes dos en el aula? Comprimir. Cifrar Firmar.
  5. ¿El profesor se dio cuenta y corrió hacia la salida? Profundidad primera búsqueda.
  6. ¿Esperando abordar el autobús? Cola.
  7. ¿El profesor aún te persigue? Cola prioritaria.
  8. ¿Ir directamente a un sermón para almorzar gratis? Apilar.
  9. ¿Escuchó la palabra modestia y buscó en el diccionario? Búsqueda binaria.
  10. Supuse que era la hija de ese profesor. Volver hacia atrás.
  11. ¿No estás seguro de eso y estás buscando una guía telefónica para papá? Trie
  12. ¿Papá aconsejó fugarse e irse de gira mundial? Vendedor ambulante
  13. ¿Prof. imaginado y tiene tiempo y equipaje limitados? 0/1 mochila.
  14. ¿Llenar su billetera con tarjetas de crédito? Formación.
  15. ¿Encontrar las llaves del auto a toda prisa? Picadillo.

Eso es algo que siempre he querido hacer también.

Incluso lo he hecho con bastante frecuencia. Puedo recordar este ejemplo:

Mi maestro de Algoritmos y Estructuras de Datos había tomado una prueba para la clase, entregando una hoja de prueba a cada estudiante.

Al final de la prueba, se nos pidió que le devolviéramos las hojas.

Luego nos pidió a un amigo mío y a mí que clasifiquemos las hojas de acuerdo con los números de rollo.

Dividí el juego de sábanas en dos mitades y le dije que clasificara su mitad de acuerdo con los números de los rollos mientras yo clasifico mi mitad.

Ella preguntó: “Pero a ambos nos faltarían números en el medio”.

Respondí: “Al final, armaremos nuestros conjuntos una hoja tras otra”.

¿Te das cuenta de lo que había hecho aquí sin saberlo?

También me di cuenta de lo que había hecho en este momento y grité: “¡Oye! ¡Eso es Merge Sort!

Mi maestra que estaba parada, me miró, evaluó la situación y dijo: “¡Oh, sí, lo es! Bien hecho Mehul, has aplicado un algoritmo que te enseñé, ¡en la vida real!

Así que este fue solo un pequeño ejemplo tonto, pero sin embargo muestra cómo probablemente, sin saberlo, ya aplicamos tantos más de estos ricos algoritmos dorados que Computer Science nos ofrece, en nuestras vidas reales.

El método Brute Force en sí nace de los algoritmos que aplicamos en nuestras vidas reales.

La forma en que podemos aplicar estos algoritmos que aprendemos en la vida real es darnos cuenta de que, en primer lugar, creamos estos algoritmos para problemas del mundo real.

Cualquier algoritmo que aprenda se le enseñará en términos de que ciertos objetos son el foco principal, por ejemplo, una lista de números que se están ordenando, una clave que se está buscando, varias opciones que se ramifican en varias posibilidades, etc.

Necesitamos reemplazar estos objetos con los objetos del mundo real frente a nosotros y ver cómo puede aplicar estos algoritmos aquí, como lo hice al reemplazar la lista de números que se ordenan con el conjunto de hojas que se ordenarán.

Las estructuras de datos son más como ayudantes, en mi opinión.

Mientras ordenaba la mitad de las hojas, solía colocar una hoja en la mano de mi maestro.

Si mi próxima hoja tuviera un número mayor, tomaría las hojas de su mano una por una y colocaría las más pequeñas encima de la mía, de lo contrario simplemente se las seguiría entregando.

Una vez más, sin saberlo, estaba preparando una pila.

Tomemos un ejemplo común,

Digamos que tenemos la situación de comprar entradas para el cine. Sabemos que las personas que vinieron primero deben recibir sus boletos primero y, por lo tanto, la aplicación de una cola.

Las estructuras de datos tienen principios a seguir, y si aplicamos esos principios a situaciones de la vida real, estamos utilizando estas estructuras de datos en la vida real.

Clasificación de cubos: búsqueda de bocadillos en todos los contenedores en un armario.

Divide & Conquer: tú y tu amigo fueron a cenar, es monthend y solo tienes dinero para una comida.

Ordenar fusión: cálculo de presupuesto de fin de mes de las cosas que gastó.

Buscando : Quieres ser amigo de esa persona con la que estás enamorada de FB

Cola prioritaria: tiene una lista de 100 cosas para comprar y ordena la que está en el lugar 33.

Pila: Fuiste a ver una película y estacionaste tu auto primero. Después de la película obviamente serás el último en sacar tu auto

Si bien me gustaron la mayoría de las respuestas a esta pregunta, creo que puedo compartir una perspectiva única que aprendí a través de un libro de Amazon.com: Algorithms to Live By: The Computer Science of Human Decisions (9781627790369): Brian Christian, Tom Griffiths: Books

Escribí una publicación en el blog: HeisenBugTech inspirado en este libro sobre cómo el algoritmo de problemas del Secretario puede ayudar a las personas a tomar decisiones sobre cómo encontrar un cónyuge, un departamento o un trabajo.

Un algoritmo favorito mío es la búsqueda binaria, lo uso ampliamente en el trabajo para investigar qué versión de la aplicación introdujo un error en particular.

La pregunta que hizo no está clara y supongo que por “vida real”, tiene la intención de usarla fuera del desarrollo de software para simplificar la tarea diaria.

Los algoritmos y las estructuras de datos se basan en casos y soluciones de la vida real. Si está familiarizado, existe una estructura de datos conocida como Hash Tables. La forma en que las tablas hash generalmente funcionan es que hash cada clave con una posición en la matriz y almacena el valor correspondiente en la posición en esa matriz. Este es un uso bastante familiar de organizar libros en una biblioteca o almacenar drogas en una farmacia. Los libros están ordenados alfabéticamente y están ordenados en cada armario con etiquetas de AZ. Entonces, si quieres buscar a Harry Potter, deberías buscarlo en la fila H.

Otro uso de la vida real es para el algoritmo de búsqueda binaria. Es simple buscar un libro en el método de búsqueda binaria en lugar de iterar sobre la pila uno por uno.

Otro uso oculto aún interesante de la lista vinculada es el de comunicarse con alguien en el backbench en una clase. No puedes comunicarte con alguien directamente ya que llamaría la atención de tu maestro. Entonces, en cambio, le dices a tu amigo que lo transmita.

Algoritmo y estructuras de datos comúnmente utilizadas son:

Pila: Último llegado y primero en salir. Escenario del examen semestral.

Cola: Primero lo primero, lo primero. Tomando comida en el desorden.

Hash: Como estudiante de primer año, descubriendo novia.

Lista vinculada: Obtener el favor de las personas mayores. ¡¡Oh!! ¿Cómo se pueden olvidar las actividades de colocación?

Breadth First Search: Enviando solicitud de amistad a una chica.

Matriz: Hoja de asistencia de la facultad.

Retroceso: cuando estás frente a tu enamorado.

Divide & Conquer: por nominar al líder para el festival universitario.

Codicioso: Elegir corriente antes de unirse a la universidad.

Estamos alicatando la sala de nuestro nuevo hogar. Mi mamá quiere que cada ficha sea igual. Se ve muy bien si todas las baldosas son iguales en el piso, pero no sabemos qué dimensiones de baldosas necesitamos comprar para llenar nuestro salón de manera equitativa.

Esta es la impresión azul de nuestra sala.

entonces pensé en el algoritmo euclidiano (algoritmo euclidiano) que se usa para encontrar el MCD de dos números que funciona muy bien aquí.

El MCD de (350,150) = 50 definitivamente dividirá 350 y 150 y cubrirá nuestra sala completamente seguro. ¡No solo 50! 1,2,5,10,25 también divide nuestra sala por completo.

así que tenemos muchas opciones para embaldosar nuestra sala

Como las fichas de 50 pies no están disponibles en el mercado, hemos elegido la ficha de 2 pies.

Mira a tu alrededor amigo! Encontrará tantos problemas que se pueden resolver. Resuélvalos con algoritmos existentes o cree un algoritmo si no.

El método Divider And Conquor es un algoritmo de búsqueda que todos usamos en nuestro día a día.

¿Cómo funciona?

Entrada: lista de búsqueda y elemento de búsqueda

Divida la lista de búsqueda en dos (Lista 1, Lista2). Por lo tanto, su elemento de búsqueda estará en cualquiera de estos. Haga lo mismo con List1 hasta que encuentre el artículo. Si no se encuentra, regrese un paso atrás y busque en la lista de hermanos. Si no se encuentra, regrese hasta llegar a la LISTA2. Si no se encuentra, no se encuentra el artículo.

Cuando buscas una palabra en el diccionario,

Diccionario abierto en el medio. Usted sabe que su palabra comienza con la letra que viene de cada lado (izquierda o derecha), luego buscará en el lado relevante hasta que encuentre la palabra o no encuentre que la palabra de realidad no existe en el diccionario.

  1. Organizar cosas en mi mesa de estudio: HashTable / Hashmap.
  2. Planeando terminar un conjunto de tareas la noche anterior – Programación de trabajos.
  3. Aceptar una determinada tarea en mi lista: PriorityQueue.
  4. Encontrar su perfil – BFS.
  5. Mi madre me ayuda a empacar alimentos mientras regreso de vacaciones en familia: problema de la mochila clásica.
  6. Mantener un recuento de la cantidad de días que mi cocinero y la ayuda doméstica no visitan: programación dinámica. (Vino el último martes, así que n + 1 ausentes).
  7. Pero aún no es capaz de descubrir algo para dormir en tiempo constante. Mi enfoque es contar el aliento hasta que te aburras y tengas sueño.
  8. Placas que desbordan el fregadero de la cocina y tocan el techo – Pila

Sigue aprendiendo y observando eventos aleatorios.

Closing-Browser-Tab,

Sid

Cuando vaya al gimnasio y vea las tarjetas de entrenamiento organizadas en orden alfabético, aplique la búsqueda binaria para encontrar la suya.

Cuando está discutiendo sobre un pariente / primo, haga BFS en general, primero se contacte con el padre y luego tendrá una mejor idea de quién está hablando la gente. Los datos jerárquicos son mejores con los árboles.

Cuando juegue a las cartas, debe mantenerlas ordenadas, usar el método de inserción cuando reciba una carta.

A medida que comience a relacionarse más, comenzará a verlos en todas partes.

Yo recomendaría ‘Algoritmos para vivir’. Este libro es realmente práctico. Cubre todos los algoritmos bien conocidos. Por ejemplo

  1. Estacionamiento y qué tan lejos de su destino debe estacionar.
  2. El problema de la secretaria.
  3. Buscando casas.
  4. Teoría de juego.
  5. Memoria y almacenamiento en caché.
  6. Clasificación.
  7. Probabilidad

Escuché este libro por primera vez cuando estaba viendo un podcast de MMA de Robin Black.

No lo hagas Es bueno tenerlo como un ejercicio de pensamiento, pero amar una herramienta (en este caso, algoritmos y estructura de datos) no significa que deba usarse en todas partes todo el tiempo. Cuando era un niño pequeño, tuve problemas para pronunciar una letra específica durante mucho tiempo. Cuando finalmente aprendí a pronunciarlo bien, estaba tan emocionado y comencé a usarlo en cada palabra, fue muy gracioso.

Es bueno pensar en cómo lidiamos con la toma de decisiones, para obtener una nueva perspectiva desde el punto de vista de los algoritmos, por ejemplo. Identificar problemas que pueden resolverse mejor con las “herramientas” mencionadas también es muy valioso.

Creo que en el contexto humano (como en la no computadora), la toma rápida de decisiones y la actuación sobre una gran cantidad de información sensorial son situaciones en las que las estructuras lógicas pierden poder. Cuando se trata de decisiones “grandes”, que toman más tiempo, creo que se puede aplicar más razonamiento y obtener mejores resultados.

No estoy seguro de tu pregunta.

¿Es como una estructura de datos dada: en qué parte de los softwares de la vida real se usa?

o

En la vida real, proporcione un escenario que solemos hacer y ayúdeme a visualizar si usamos cualquier estructura de datos sin saberlo.

La respuesta dependerá de la pregunta a la que esté buscando la respuesta.

Aprendelos.

Lea aquí, algunos están en inglés simple: la respuesta de Manohar Reddy Poreddy a ¿Qué algoritmos debo saber para convertirme en un buen programador?

Después de aprenderlos, entonces los usarás o sabrás que ya los usas.

More Interesting

Si soy bueno en matemáticas, ¿seré bueno en programación?

¿Cuál es el enfoque más fácil para abordar los problemas de programación dinámica?

¿Puede una máquina tener verdadera inteligencia artificial sin estar basada en matemáticas superiores?

Cómo aprender machine learning con experiencia en negocios

¿Cuáles son algunos conceptos en el cálculo lambda que es bueno saber antes de aprender programación funcional?

¿Existe un término en matemáticas como 'real-complete' para describir una función que mapea todos los elementos de un conjunto (número real por ejemplo) a otro conjunto, o 'posibilidad-completa' para describir un algoritmo que maneja todas las posibilidades de entrada? ?

¿La función de módulo es distributiva, asociativa o conmutativa? Explicar con ejemplos y pruebas. ¿Cómo uso este concepto en la programación competitiva?

¿Cómo le iría a Donald Knuth como competidor en TopCoder hoy?

Cómo comenzar a hacer aprendizaje automático para un análisis de datos simple

¿Qué debo hacer después de completar mi B.Tech para ingresar a una carrera relacionada con las matemáticas?

¿Por qué la mayoría de la gente trata de resolver problemas profundos en la complejidad computacional como P versus NP por combinatoria y no por lógica?

¿Cuáles son los algoritmos más versátiles para resolver problemas de empaque 3D?

Dado un conjunto de n rectángulos alineados en el eje en el plano, ¿qué tan grande es el subconjunto más grande de estos rectángulos que contienen un punto común en O (n ^ 3) y luego en el orden O (nlogn)?

Soy un desarrollador, pero me falta mi habilidad matemática. Con un BSc en CS y un MSc en IS, ¿qué debo saber y cómo puedo identificar dónde necesito ayuda?

¿Qué es la notación de sintaxis abstracta uno?