Hoy en día, tres conceptos están tomando auge en el mundo del del Сеть y Это : Программное обеспечение, определяющее сеть (us, переоценивает программное обеспечение DefineIdas PO), автоматизация сети (ó Automatización de Redes) y сетевой Orquestation (U orquestación de Redes). Estos Se Pueden Invelocrar Entre Sí, Sin Embargo, Sería un Pecado Capital Confundirlos Анкет
Debido A Los Nuevos Paradigmas Emergentes, mucos Ingenieros se han tenido Que tomar La Tarea de Arvender Программа. Нет Todo es Fatcil A La Hora de Hacer Este Trabajo, существующий Conocimientos que debemos tener para que ke el proceso no resulte tan rungante a la hora deseñar una apelicación y verla funcionando, me Refiero a conocimientos Acerca de Algoritmos Y Estructura de Datos, Esta última, Según Гиксфорджеки , нет es más que una forma compline de Organizar los datos en una computadora, de manera que estos puendan ser accedidos y utilizados de una manera eficiente .
Veces Solemos Queremos Automatizar Tareas en Nuestra Red, O También Brindar un Servicio Que utilice La Automatización Como Medio Operativo, O Tal Vez Quisiéramos upretar nuestra propia ersión del protocolo OSPF o del Stp , Hasta Nuestra Propia Aplicación de Qos Анкет Para Hacer Todas Estas Cosas es Necesario Conocer Estructuras de Datos Связанный список Como, очереди, стеки, хэш -таблицы, графики, двоичные деревья, Entre Otras Más. Afortunadamente, Este Es El Primer Post de Otros Más Que Vendrán en esta serie llamada Estructuras de Datos Para Network Engineers 101 , y estas estructuras ya mencionadas las estaremos viendo a lo largo del camino. Es bueno aclarar que Нет profundizaré, а не Tal Nivel Que Termines Siendo un Experto en el el manejo de esas estructuras que te mencioné, pero si tendrás Fundamentos Sólidos Para Llegar A Serlo Con Tu Propia Práctica.
Te Pongo un ejemplo Quezás te motive a seguir leyendo: supón que estás Automatizando una tarea en tu red, y en fragmento de tu código necesitas filtrar una de que queed IPS No SE Repitan. Si TU PRIMER подходит к Sería Hacer Algo Más O Menos Como lo Que vamos a Hacer a Continuación, Esta Esta Es Ideal Para Ti. Si Pensaste en una manera más óptima de resolver el wroopa, también, te Invito que te Quedes, Quizá aprendas algo nuevo más adelante, nadie sabe 😉.
# No tan cool :p def remove_duplicated(l: list)->list: filtered_list = [] for ip in l: if ip not in filtered_list: filtered_list.append(ip) return filtered_list
En pocas palabras lo que se intenta hacer es Recorrer la lista e Ir almacenando cada ip en otra lista nueva, si esta ip ya está almacenada, не элегает не Se añade Анкет Реал el algoritmo es forreeo, y va a funcionar, el upresse es que en el mundo del software Никакой эс -suficiente не является эль -лас -aplicaciones solamente funcionen, sino que también sean eficientes nivel de rendimiento. La Idea es Que tu código corra lo más óptimo postible cuando tenga entradas de miles datos y necesite ent are defos en red de una manera muy rápida.
A continuación, te mostraré la razón de la ineficiencia del algoritmo concebido, pero no te asustes si no entiendes, no utilizaremos este método a lo largo de la serie ya que trataré de explicarte todo con cucharita y de la forma más clara y resumida posible. CABE DESTACAR QUE ВАЖНОЕ КОМПЛЕКТЫ ИСПОЛЬЗОВАТЕЛЬНОСТИ ПАРА ПАРЕНДЕР АНАЛИЗАР АЛГОРИТМОС, LO AGRADECERás en un Futuro.
USANDO EL Modelo de la ram Para Analizar El Tiempo de Ejecución, Tenemos Que.
Filtered_list = [] | 11 1 |
для IP в L | nn n |
Если ip не в фильтровании_листе | n (n+1) 2 \ frac {n (n+1)} {2} 2n (n+1) |
Filtered_list.append (ip) | n (n+1) 2 \ frac {n (n+1)} {2} 2n (n+1) |
вернуть Filtered_list | 11 1 |
Нота : CADA INTRUCCION está asociada un un of a ( c i c_i c i ), el cual no es más que una cantidad de pasos que toma para ejecutarse, pero para fines de explicación lo vamos aveciar asumiendo que es 1 para todas las instucciones, esto para no sakectar el asunto.
Si Analizamos el Временная сложность (ó complejidad temporal) de nuestro algoritmo gatendremos que es una Complejidad Exponencial де Типо
ESSISE UNA MEJOR MANERA, ALTUSO, EL ALGORITMO ES MAS Simple Y Corre ena Complejidad Lineal де Типо
# muy cool :p filtered_list = list(set(l)) # Dependiendo de las operaciones que necesitemos hacer sobre # el iterable, podemos olvidarnos de convertir el set a lista.
Esta mejora en nuestro algoritmo se debe a que se supo utilizar una estructura de datos adecuada para los fines, la cual está basada en Concuntos Numéricos , Esta es Denominada Установить Анкет Нет vamos hablar muda ahora de esta estructura de datos, por lo que sólo nos quedaremos sabiendo que no permite elementos repetidos en ella.
Si no имеет претендент Нада де Ло Большой О записка , Временная сложность Y/O Время исполнения , заканчивает Tienes Muaco Que Leer. Te Recomiendo este libro para iniciar .
Mientras Tanto, En lo que el hacha va y viene, te lo voy a Explicar de una manera sencilla: EL Primer Algoritmo concebido es ineficiente delante del segundo. ¡Listo!. ESTO ES CULPA DE LA ESTRUCTURA DE DATOS SELECCIONADA, YA QUE EL ALGORITMO QUE CONDIBAMOS DEPENDERá MUCOE DE ESTO. Y es es que sea una mala estructura de datos, lo que pasa
>>> from timeit import timeit >>> my_ips = ['192.168.1.1', '192.168.1.2', '192.168.2.1', '192.168.2.2', '192.168.3.1', '192.168.3.2', '192.168.4.1', '192.168.4.2', '192.168.5.1', '192.168.5.1'] >>> timeit(lambda: remove_duplicated(my_ips), number=1000) # Tiempo en segundos 0.0016276000000061686 >>> timeit(lambda: list(set(my_ips)), number=1000) # Tiempo en segundos 0.0004897999999684544
Нота : En este ejemplo se utilizaron las condiciones para resar el peor caso de ejecución para el algoritmo, es decir, donde no se repite ninguna ip y ese tenga que correr todas las instucciones.
Pudimos ver Como tomaamos de ejemplo 10 ips y se nota la diferencia en el tiempo de ejecución, de hecho, no es más grande porque la cantidad ips de ontrada eslativamente pequeña comparada con miles que nuestro código pudiera recibir.
POR ESTO ES WATTERE SABRE SOBRE ESTRUCTURAS DE DATOS, PUEDEN HACER Más Ligeras Las Cosas, También, nos Ayudan A Algoritmos Algoritmos para tratar
Voy A Tratar de Enseñarte A Través de Ejemplos Prácticos, La Mayoría de Estos Aplicados al mundo del Сеть , publicaré el código de lo Que vamos hacer en cada post y te explicaré cómo funciona, fragmento por fragmento, de una manera resumida claro está. La Idea es que no dures demasiado leyendo un post Que Te vaya a agobiar, sería mejor Que pases más tiempo profundizando por tu Parte lo que voy aeplicar, esto lo harás con los foundamementos Que Te Enseñaré en Cada Post. Trataré de utilizar un lenguaje muy llano y diverertido, para que no te canses si no emiendes algo, además, cualquier duda que tengas puede ser depositada en los comentarios yo yo yo Me Tomaré de Vez en Cuando el Tiempo para Reponderlas.
Entonces, Si Tengo Tu Atención, Te Recomiendo El Siguiente Post, El Cual Dará Inicio Formal A A La Serie Y Te Internucirá A La Primera Estructura de Datos Tratar.
Оригинал: “https://dev.to/jorgmassih/estructura-de-datos-para-network-engineers-101-introduccion-4j0k”