Algoritmos de Strings. Héctor Navarro
|
|
|
- Vicenta Muñoz Maldonado
- hace 9 años
- Vistas:
Transcripción
1 lgoritmos de Strings Héctor Navarro
2 Substrings Dado un string T (posiblemente muy grande) y un patrón P (de tamaño menor), encontrar la primera (o todas) las apariciones de P en T Solución trivial de (NM) N es el tamaño de T M es el tamaño de P
3 Substrings for (i=0; T[i]!= '\0'; i++) { } for (j=0; T[i+j]!= '\0' && P[j]!= '\0' && T[i+j]==P[j]; j++) ; if (P[j] == '\0') // found a match
4 Substrings Peor caso: T= aaaa a P= aaa ab Normalmente no se comporta tan mal ya que se descartan rápidamente en las primeras iteraciones
5 Substrings P = nano i T b a n a n a n o b a n o i=0 X i=1 X i=2 n a n X i=3 X i=4 n a n o i=5 X i=6 n X i=7 X i=8 X i=9 n X i=10 X
6 utómata Es posible construir un autómata en base al patrón para hacer búsquedas n a n o j=0 j=1 j=2 j=3 j=4 En cada estado existen dos posibilidades: La letra actual coincide con la letra reconocida en ese estado: avanzar al siguiente estado y letra
7 utómata Es posible construir un autómata en base al patrón para hacer búsquedas n a n o j=0 j=1 j=2 j=3 j=4 En cada estado existen dos posibilidades: La letra actual no coincide con la letra reconocida en ese estado: avanzar al siguiente estado, no avanzar la letra
8 utómata Es posible construir un autómata en base al patrón para hacer búsquedas n a n o j=0 j=1 j=2 j=3 j=4 En el estado 0 siempre se avanza de letra
9 utómata Es posible construir un autómata en base al patrón para hacer búsquedas n a n o j=0 j=1 j=2 j=3 j=4 B N N N B N
10 utómata Es posible construir un autómata en base al patrón para hacer búsquedas n a n a j=0 j=1 j=2 j=3 j=4 N N N
11 KMP Knuth Morris Pratt Convertir el autómata en código j = 0; for (i = 0; i < n; i++) while(1) { if (T[i] == P[j]) { // matches? j++; // yes, move on to next state if (j == m) { // match! j = reset[j];// ya reconocimos algunos caracteres de P } break; } else if (j == 0) break; // no match (j==0), next T else j = reset[j]; // no match (j!=0), // shorter partial match }
12 KMP Knuth Morris Pratt ecorrer este autómata es de (N), ya que en cada iteración se inspecciona un solo carácter de T El while más interno sólo se puede ejecutar en el peor caso una cantidad de veces igual al estado en el que estemos actualmente (M estados), pero una vez que se hace esto, regresamos al estado 0 (costo amortizado)
13 KMP Knuth Morris Pratt Falta ver cómo se realiza la construcción del arreglo de transiciones de estados (reset)
14 eset reset[i] indica el estado al que hay que saltar una vez que ya se han reconocido i caracteres y hay una falla Por ejemplo, si P= aabaab y ya hemos reconocido 5 caracteres (aabaa), dónde debemos saltar?
15 eset Por ejemplo, si P= aabaab y ya hemos reconocido 5 caracteres (aabaa), dónde debemos saltar? El sufijo más largo de esos 5 caracteres que también es prefijo de P, sería aa aabaa aabaab
16 eset Supongamos P=B reset[0]=0 (aunque nunca se usa) reset[1]=0 Para reset[2] basta ver que P[2-1]=P[0], por lo tanto, si hay una falla en este punto debemos regresar al estado 1 (reset[2]=1)
17 eset Supongamos P=B Para reset[3] basta ver que P[3-1]=P[1], por lo tanto, si hay una falla en este punto debemos regresar al estado 2 (reset[3]=2) Para reset[4], P[4-1]!=P[2], esto significa que cuando estamos en el estado 4 y no viene una B, debemos regresar al estado indicado por reset[3] (estado 2) Pero como P[3]!=P[1], este estado tampoco sirve. El único estado que sirve es el estado 0
18 eset int i = 0, j = -1; reset[0] = -1; while(i<m){ while(j>=0 && P[i]!=P[j]) j = reset[j]; i++; j++; reset[i] = j; }
19 eset En cada iteración se avanza un caracter de P El while más interno se hace a lo sumo tantas veces como caracteres hayamos procesado hasta ahora. Pero una vez que esto se hace, regresamos a j=0, por lo que el while interno se hará más corto en las siguientes iteraciones Esta parte del algoritmo es entonces de (M)
20 eset tros ejemplos P=B
21 eset tros ejemplos P=BCBC
22 eset tros ejemplos P=BXYZXYZ
23 KMP Finalmente KMP requiere de (M)+(N)=(N+M) N tamaño del string en donde queremos hacer la búsqueda M tamaño del substring que estamos buscando
24 Boyer-Moore También está basado en un autómata para hacer eficiente la búsqueda En lugar de hacer matching en los primeros caracteres del patrón de búsqueda, se hace en los últimos, acelerando el procesamiento Mientras el patrón sea más grande, el algoritmo se ejecutará más rápidamente
25 Tries Un Trie es un árbol en donde se almacenan palabras para encontrarlas rápidamente Supongamos que las palabras están formadas por caracteres de un alfabeto con cardinalidad n Cada nodo del Trie puede tener n hijos
26 Tries Por ejemplo, si las palabras pueden estar formadas por letras mayúsculas en inglés (26 caracteres), un nodo se ve como esto: B C D Y Z struct NodoTrie{ NodoTrie * hijo[26]; bool espalabra; };
27 Tries Insertar CS C S El atributo espalabra indica si en ese nodo termina una palabra
28 Tries Insertar C C S El atributo espalabra indica si en ese nodo termina una palabra
29 Tries Insertar DE C D E S El atributo espalabra indica si en ese nodo termina una palabra
30 Tries Insertar DED C D E S D El atributo espalabra indica si en ese nodo termina una palabra
31 Tries Búsqueda Seguir los enlaces dependiendo del valor de la letra actual Si un enlace es nil, la palabra no está en el Trie Si al terminar la palabra llegamos a un nodo con espalabra en falso, la palabra no está en el Trie Si al terminar la palabra llegamos a un nodo con espalabra en true, la palabra está en el Trie
32 Tries Buscar C C D E S D
33 Tries Buscar C C D E S D
34 Tries Buscar C C D E S D
35 Tries Buscar C C D E S D El apuntador es nil
36 Tries Buscar C C D E S D
37 Tries Buscar C C D E S D
38 Tries Buscar C C D E S D El apuntador no nil pero espalabra es falso
39 Tries bool buscar(char *w, Trie * T){ if(*w==null) return T->esPalabra; if(t->hijo[*w- ]==NULL) return false; return buscar(w+1, T->hijo[*w- ]); }
40 Trie de Sufijos Sirve para almacenar todos los sufijos de varios strings con el fin de poder recuperarlos rápidamente Con un Trie podemos rápidamente saber si una palabra está almacenada Con un Suffix Trie podemos rápidamente saber si algún substring está almacenado
41 Trie de Sufijos Supongamos la palabra CS Los posibles sufijos son: CS S S
42 Trie de Sufijos Si queremos agregar una palabra a un Suffix Trie, agregamos cada uno de sus sufijos (es posible que ya exista) Por ejemplo, supongamos las palabras CS, C, S, SP
43 Trie de Sufijos CS: CS,S,S, C S S S
44 Trie de Sufijos C: C,,,, C S S S
45 Trie de Sufijos S: S, S,, C S S S
46 Trie de Sufijos SP: SP, P, P, C P S P S S P
47 Trie de Sufijos hora podemos buscar cualquier substring de cualquier palabra del diccionario muy fácilmente ecordemos que el Trie permite reconocer prefijos del string Como almacenamos los sufijos de los strings, podemos reconocer cualquier prefijo de cualquier sufijo Un substring es justamente eso, un prefijo de un sufijo
48 Trie de Sufijos C, CS, SP, S. Buscar el substr S C P S P S S P
49 Trie de Sufijos C, CS, SP, S. Buscar el substr C P S P S S P
50 Trie de Sufijos C, CS, SP, S. Buscar el substr C P S P S S P
51 Árbol de Sufijos Sirve para almacenar eficientemente todos los sufijos de un solo string Usaremos un carácter especial para marcar el final del string ($), cuyo código SCII sea menor que el del resto de los caracteres del string El sufijo vacío debe estar en el suffix tree
52 Árbol de Sufijos Palabra: GTGC$ Sufijos: i Sufijo 0 GTGC$ 1 TGC$ 2 TGC$ 3 GC$ 4 GC$ 5 C$ 6 C$ 7 $ 8 $
53 Árbol de Sufijos i En cada nodo hoja del suffix tree se almacena el índice del sufijo que se encuentra ahí Sufijo 0 GTGC$ 1 TGC$ 2 TGC$ 3 GC$ 4 GC$ 5 C$ 6 C$ 7 $ 8 $ 7 5 $ 3 1 $
54 Árbol de Sufijos Hay muchos substrings que se repiten (vértices repetidos) Un suffix tree se puede crear a partir de un suffix trie uniendo los nodos consecutivos que tienen un solo hijo
55 Árbol de Sufijos CS S C S 3 $ 4 $ 0 2 S 1
56 plicaciones del Suffix Tree Substring en (m+occ): m es el tamaño del patrón de búsqueda y occ es el número de ocurrencias del patrón en T 8 7 $ Buscar el patrón
57 plicaciones del Suffix Tree Encontrar el substring más largo repetido en (n) 8 7 $
58 plicaciones del Suffix Tree String común más largo en (N): construir el suffix tree de ambos strings en interceptarlos Ejemplo: SP vs TP
59 rreglo de Sufijos La construcción del suffix tree es muy compleja El suffix array tiene funcionalidades parecidas al suffix tree pero es más fácil de construir y de usar
60 rreglo de Sufijos Un arreglo de sufijos es un arreglo de enteros que almacena una permutación de los índices de los sufijos ordenados Por ejemplo, con T= GTGC$, n=9 El arreglo de sufijos asociado sería {8,7,5,3,1,6,4,0,2}
61 rreglo de Sufijos i Sufijo 0 GTGC$ 1 TGC$ 2 TGC$ 3 GC$ 4 GC$ 5 C$ 6 C$ 7 $ 8 $ rdenar i sa[i] Sufijo 0 8 $ 1 7 $ 2 5 C$ 3 3 GC$ 4 1 TGC$ 5 6 C$ 6 4 GC$ 7 0 GTGC$ 8 2 TGC$ El arreglo de sufijos asociado sería {8,7,5,3,1,6,4,0,2}
62 rreglo de Sufijos Si hacemos un recorrido en preorden del suffix tree obtenemos el suffix array 8 7 $ {8,7,5,3,1,6,4,0,2}
63 rreglo de Sufijos Un nodo interno del suffix tree corresponde a un rango en el suffix array 8 7 $ {8,7,5,3,1,6,4,0,2} {8,7,5,3,1,6,4,0,2}
64 rreglo de Sufijos Un nodo hoja del suffix tree corresponde a una entrada simple del suffix array 8 7 $
65 rreglo de Sufijos Primera implementación char T[MX_N]; int S[MX_N], i, n; bool cmp(int a, int b){ return strcmp(t+a,t+b)<0; } n = strlen(t); for(int i=0; i<n; i++) S[i] = i; sort(s, S+n, cmp);
66 rreglo de Sufijos En tiempo requiere (N 2 log N) Esto puede mejorarse ordenando los sufijos caracter por caracter (usando un ordenamiento lineal basado en radix-sort) (N log N) Duplicar en cada paso el tamaño del sub string a comparar
67 rreglo de Sufijos GTGC$ (0) TGC$ (1) TGC$ (2) GC$ (3) GC$ (4) C$ (5) C$ (6) $ (7) $ (8) rdenar según el primer caracter $ (8) TGC$ (1) GC$ (3) C$ (5) $ (7) C$ (6) GTGC$ (0) TGC$ (2) GC$ (4)
68 rreglo de Sufijos $ (8) TGC$ (1) GC$ (3) C$ (5) $ (7) C$ (6) GTGC$ (0) TGC$ (2) GC$ (4) rdenar según dos primeros caracteres $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2)
69 rreglo de Sufijos $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2) rdenar según 4 primeros caracteres $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2)
70 rreglo de Sufijos $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2) rdenar según 8 primeros caracteres $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2)
71 rreglo de Sufijos Búsqueda de substring: hacer búsqueda binaria $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2) Buscar: GC li = 0 ls = 8 m = 4 T[S[m]] = TGC$
72 rreglo de Sufijos Búsqueda de substring: hacer búsqueda binaria $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2) Buscar: GC li = 4 ls = 8 m = 6 T[S[m]] = GC$
73 rreglo de Sufijos Contar apariciones de un substring: hacer búsqueda binaria lower bound y upper bound para buscar en donde está Palabra: CLBL Contar apariciones de: L $ $ BL$ L$ LBL$ BL$ CLBL$ L$ LBL$
74 rreglo de Sufijos Contar apariciones de un substring: hacer búsqueda binaria lower bound y upper bound para buscar en donde está Palabra: CLBL Contar apariciones de: L $ $ BL$ L$ LBL$ BL$ CLBL$ L$ LBL$
75 rreglo de Sufijos Longest Common Prefix (LCP): el prefijo común más largo entre pares consecutivos de sufijos lcp[0] = 0 De ahí en adelante lcp[i] almacena el prefijo común más largo entre el s[i] y s[i-1] lgoritmo trivial de (N 2 ) Puede hacerse en (N)
76 rreglo de Sufijos i sa[i] Sufijo lcp[i] 0 8 $ $ C$ GC$ TGC$ C$ GC$ GTGC$ TGC$ 0
77 rreglo de Sufijos Un grupo de elementos consecutivos con el mismo lcp (mayor a cero) equivalen a un nodo interno del suffix tree 8 7 $
78 Substring repetido más largo Supongamos el lcp siguiente: rreglo de Sufijos i lcp[i]
79 Substring que más se repite i lcp[i] rreglo de Sufijos
Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos
Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos
APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.
APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido
Algorítmica y Complejidad. Tema 3 Ordenación.
Algorítmica y Complejidad Tema . Introducción.. Algoritmo de inserción.. Algoritmo de selección.. Algoritmo de la burbuja.. Algoritmo heapsort.. Algoritmo quicksort. 7. Algoritmo countingsort.. Algoritmo
Análisis y Diseño de Algoritmos Tablas de Hash
Análisis y Diseño de Algoritmos Tablas de Hash Guillermo Morales-Luna Arturo Díaz Pérez CONTENIDO 1. Dispersión 2. Funciones de dispersión (a) Método de división (b) Método de multiplicación 3. Direccionamiento
Procesadores de lenguaje Tema 6 La tabla de símbolos
Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de
7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico.
86 Capítulo 7. ORDENAMIENTO. 7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico. Si los elementos a ordenar son compuestos
Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas
Tema 9 Algoritmos sobre listas Programación 2015-2016 Programación - Tema 9: Algoritmos sobre listas 1 Tema 9. Algoritmos sobre listas Algoritmos sobre Arrays. Búsqueda. Inserción. Ordenación. Programación
Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????
Programación. Tema : Tablas Hash /Mayo/ Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Tema : Tabla Hash Las tabla hash aparece para conseguir
324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2
324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:
Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.
Algoritmos Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEN - UBA Programación imperativa - clase 10 Memoria dinámica listas enlazadas Clases e instancias El paquete
Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.
Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los
DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006
ARBOLES ESTRUCTURAS DE DATOS 2006 DEFINICION Un árbol (tree) es un conjunto finito de nodos. Es una estructura jerárquica aplicable sobre una colección de elementos u objetos llamados nodos; uno de los
Problema - Sumando Digitos
Primera Olimpiada de Informática Problema - Sumando Digitos Comenzando con un entero entre 00 y 99 inclusive, escritos como dos dígitos (use un cero a la izquierda en caso de que el numero sea menor que
No todos los LRs finitos se representan mejor con ERs. Observe el siguiente ejemplo:
1 Clase 3 SSL EXPRESIONES REGULARES Para REPRESENTAR a los Lenguajes Regulares. Se construyen utilizando los caracteres del alfabeto sobre el cual se define el lenguaje, el símbolo y operadores especiales.
LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.
LEX Estructura de un programa en LEX { definiciones { reglas { subrutinas del usuario Las definiciones y subrutinas son opcionales. El segundo es opcional pero el primer indica el comienzo de las reglas.
El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:
El TAD Diccionario Cuando se usa un conjunto en el diseño de un algoritmo podría no ser necesario contar con operaciones de unión o intersección. A menudo lo que se necesita es simplemente manipular un
PHP: Lenguaje de programación
Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054
Curso de Programación 1
Curso de Programación 1 Plan 97 Búsqueda y Ordenación Métodos de búsqueda Existen aplicaciones en las cuales es necesario consultar si un elemento se encuentra dentro de un array. A continuación veremos
Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R.
Conjuntos Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por se entiende que a pertenece a R. a R Normalmente, podremos definir a un conjunto de dos maneras: Por
Árboles de sufijos. Algoritmia para problemas difíciles Elvira Mayordomo
Árboles de sufijos Algoritmia para problemas difíciles 25-11-14 Elvira Mayordomo Contenido El problema de string matching Algoritmos de propósito general Árboles de sufijos Otras aplicaciones de árboles
Estructuras de Datos Declaraciones Tipos de Datos
Departamento de Informática Universidad Técnica Federico Santa María Estructuras de Datos Declaraciones Tipos de Datos Temas: 2-3-4 IWI-131, paralelo 01 Profesor: Teddy Alfaro O. Lenguaje de Programación
Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
Notación Asintótica 2
Notación Asintótica 2 mat-151 1 Éxamen Rápido (6 minutos) Cada operación fundamental usa c milisegundos, cuánto tiempo toma contar hasta 1,000,000? Cuál es el valor de N? Cuál es el órden de complejidad
Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero
Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 4: Ordenación Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Elección de un método Métodos directos
XQuery. Un lenguaje de consulta para XML.
XQuery. Un lenguaje de consulta para XML. Nieves Carralero Colmenar. IES Pedro Mercedes. Junta de Comunidades de Castilla-La Mancha. España. Resumen En este artículo se muestra una introducción práctica
FUNCIONES EN EXCEL III
FUNCIONES EN EXCEL III UTILIZANDO REFERENCIAS ABSOLUTAS Y RELATIVAS En Excel puedes especificar tres tipos de referencias: relativas, absolutas y mixtas. Al utilizar el tipo de referencia adecuado nos
Expresiones regulares y distancia de edición.
Expresiones regulares y distancia de edición. Francisco Barreras QUANTIL S.A.S. 19 de agosto de 2015 Francisco Barreras (QUANTIL S.A.S.) Expresiones regulares y distancia de edición. 19 de agosto de 2015
Tabla de Símbolos. Programación II Margarita Álvarez
Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados
1.1. Los números reales
1.1. Los números reales El conjunto de los números reales está compuesto por todos los números racionales (Q) y todos los irracionales (I). Sin olvidar que los números racionales incluyen a los naturales
REFERENCIA DEL LENGUAJE
REFERENCIA DEL LENGUAJE Sesión 07 Mg. Cadenas de caracteres Una cadena de caracteres es un arreglo de caracteres. Los caracteres son letras, números y signos de puntuación. Cuando un número se usa como
Examen escrito de Programación 1. Jueves 5 de febrero de Problema 1 o (3.5 puntos)
Examen escrito de Programación 1. Jueves 5 de febrero de 2015 Se debe disponer de un documento de identificación con fotografía sobre la mesa. Se debe comenzar a resolver cada uno de los dos problemas
ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS
1 ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS Corina Flores Villarroel ORDENAMIENTO EN ARREGLOS Y COLECCIONES Una de las tareas más comunes a la hora de procesar datos es la clasificación u ordenación de los datos.
Programación. Test Autoevaluación Tema 3
Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.
Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º
1. Ejercicio (1 punto) Dado el array A={8, 3, 7, 1, 4, 9, 5, 2, 6 Describir cual es el estado del array A después de cada paso principal del algoritmo: InsertionSort. {8, 3, 7, 1, 4, 9, 5, 2, 6 {3, 8,
Estructuras de Datos. La pila es un objeto dinámico en constante cambio.
21 Capítulo 2. LA PILA (STACK). 2.1 Definición y ejemplos. Una pila es un conjunto ordenado de elementos en el cual se pueden agregar y eliminar elementos de un extremo, el cual es llamado el tope de la
Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Estructuras de Datos Proyecto del curso,
Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Estructuras de Datos Proyecto del curso, 2016-30 1. Descripción del problema Scrabble es un juego de mesa, patentado en 1948 y actualmente
Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda
Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 9. Árboles 9.1 Árboles generales 9.2 Árboles binarios 9.3 Árboles de búsqueda 9.1 Árboles generales Un árbol es
Métodos de Ordenamiento. Unidad VI: Estructura de datos
Métodos de Ordenamiento Unidad VI: Estructura de datos Concepto de ordenación La ordenación de los datos consiste en disponer o clasificar un conjunto de datos (o una estructura) en algún determinado orden
FORMATO CONDICIONAL EN EXCEL
FORMATO CONDICIONAL EN EXCEL El Formato Condicional es una herramienta muy útil como información gráfica adicional para los datos numéricos que están en celdas o en rangos. Este tipo de formato tiene un
TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero
TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando
Diagramas de secuencia
Facultad de Ingeniería Departamento de Ingeniería de Sistemas y Computación Diagramas de secuencia Fragmentos Combinados: caminos alternativos Departamento de Ingeniería de Sistemas y Computación - Universidad
Sistemas Operativos Practica 1: procesos y concurrencia.
Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo
Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad
Estructuras Discretas Relaciones Definición: relación Relaciones Claudio Lobos, Jocelyn Simmonds clobos,[email protected] Universidad Técnica Federico Santa María Estructuras Discretas INF 152 Sean
Máquinas Secuenciales, Autómatas y Lenguajes. Tema 3.1: Autómatas Finitos Deterministas
Tema 3.1: Autómatas Finitos Deterministas Luis Peña [email protected] http://www.ia.urjc.es/cms/es/docencia/ic-msal Sumario Tema 3.1: Autómatas Finitos Deterministas. 1. Concepto de AFD 2. Equivalencia
Algoritmos de Ordenación
Algoritmos de Ordenación Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria [email protected] Algoritmos comunes - Ordenación Ordenación o clasificación es
Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática
Programación de Computadores 4 Iteraciones y Decisiones Prof. Javier Cañas Universidad Técnica Federico Santa María Departamento de Informática Contenido 1 Introducción 2 Operadores Relacionales y Lógicos
MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.
MODELOS DE COMPUTACION I Preguntas Tipo Test Indicar si son verdaderas o falsas las siguientes afirmaciones: 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular. 2.
Unidad Nº V Listas Enlazadas
Instituto Universitario Politécnico Santiago Mariño Unidad Nº V Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta
Elementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
PROGRAMACIÓN EN C#.NET Módulo 4.- Arreglos y cadenas. Ing. Bruno López Takeyas
PROGRAMACIÓN EN C#.NET Módulo 4.- Arreglos y cadenas Ing. Bruno López Takeyas Instituto Tecnológico de Nuevo Laredo 1 ARREGLOS Conjunto homogéneo y estático de datos relacionados e indexados Homogéneo
Complejidad computacional (Análisis de Algoritmos)
Definición. Complejidad computacional (Análisis de Algoritmos) Es la rama de las ciencias de la computación que estudia, de manera teórica, la optimización de los recursos requeridos durante la ejecución
Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL
Ciclos Fundamentos de Programación Recordando Estructuras de Control Básicas: Una secuencia es una serie de estatutos que se ejecutan uno después de otro. Selección (condición) ejecuta diferentes estatutos
INSTRUMENTACIÓN N AVANZADA. ARRAYS EN LABVIEW Relacionando Datos Arrays y Clusters
ARRAYS EN LABVIEW Relacionando Datos Arrays y Clusters Objetivos 1. Event Structure 2. Arrays 3. Funciones 4. Ejercicios 5. Cluster 6. Simulación de adquisición de señales de tensión 7. Adquisicion de
ALGORITMOS DE ORDENAMIENTO COUNTING SORT CHRISTIAN ESTEBAN ALDANA ROZO BRAYAN STIF FORERO CRUZ GIOVANNY GUZMÁN CÉSPEDES JORGE MEJIA
ALGORITMOS DE ORDENAMIENTO COUNTING SORT CHRISTIAN ESTEBAN ALDANA ROZO BRAYAN STIF FORERO CRUZ GIOVANNY GUZMÁN CÉSPEDES JORGE MEJIA Profesora: DIANA MABEL DIAZ UNIVERSIDAD PILOTO DE COLOMBIA INGENIERIA
ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal
ELO320 Estructuras de Datos y Algoritmos Arboles Binarios Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, 2001 Thomas Cormen et
Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Ordenamiento por Comparación (Comparison Sorts) Tiempo de ejecución HeapSort y
Estructuras de datos. Estructuras de datos
Un arbol es un conjunto de nodos que cumplen con las relaciones padre, hijo y hermano. Llamamos hijos de un nodo a todos los nodos que podemos llegar directamente por medio de un apuntador hacia ellos
Algoritmos para determinar Caminos Mínimos en Grafos
Problemas de camino mínimo Algoritmos para determinar Caminos Mínimos en Grafos Algoritmos y Estructuras de Datos III DC, FCEN, UBA, C 202 Problemas de camino mínimo Dado un grafo orientado G = (V, E)
Algoritmo para Calcular Logaritmos
Algoritmo para Calcular Logaritmos José Acevedo Jiménez Santiago, Rep. Dom. Calcular el logaritmo de un número hoy día es tarea sencilla, el uso de tablas y reglas para calcular el valor de los mismos
Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
Alonso Ramirez Manzanares Computación y Algoritmos 03.05
Tablas de hash (2) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 03.05 Tablas de hash: resolviendo colisiones por encadenamiento cuando el número de elementos en total es proporcional al número
TIPO DE DATO ABSTRACTO (TDA)
TIPO DE DATO ABSTRACTO (TDA) Ing. Eduard Antonio Lozano Córdoba Nota: Toda la información fue copiada de: Libros físicos e Internet Actividad Extra Clases #include #include int binario(int
Solución al Examen de Prácticas de Programación (Ingeniería Informática)
Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa
Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
Fundamentos de programación
Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador
= RETURN =3 7-. ELSE K
11-. Pida Al Usuario Dos Números Enteros (Que Se Guardaran En Las Variables Num 1 Y Num2). Si Num2 Es Cero, Deberá Mostrar Un Mensaje De Error, Y En Caso Contrario Mostrara En Pantalla El Resto De La División
Estructuras de Control
Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas
UNIDAD 9. DATOS COMPLEJOS PILAS
UNI 9. TOS OMPLEJOS PILS Una pila es una lista de elementos en la que se pueden insertar y eliminar elementos sólo por uno de los extremos. omo consecuencia, los elementos de una pila serán eliminados
Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria
Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Bibliografía: Elmasri y Navathe: Fundamentos de Sistemas de Bases de Datos 3ª edición, 2002 (Capítulo 6). Garcia-Molina, Ullman
Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen
Fundamentos de Informática. Dpto. de ATC - Página 1 de 8 conceptos Manejo de ficheros en C Contienen los datos que se almacenan en dispositivos de almacenamiento masivo: disquetes, discos duros, DROM,
Capítulo 2: Inducción y recursión Clase 2: El principio de Inducción Fuerte
Capítulo 2: Inducción y recursión Clase 2: El principio de Inducción Fuerte Matemática Discreta - CC3101 Profesor: Pablo Barceló P. Barceló Matemática Discreta - Cap. 2: Inducción y Recursión 1 / 20 Motivación
La clase String
Clases y objetos Las clases del lenguaje Java Cómo se obtiene información acerca del string Comparación de strings Extraer un substring de un string Convertir un número a string Convertir un string en
fundamentos de programación (unidad 4) programación estructurada en Java
fundamentos de programación (unidad 4) programación estructurada en Java Para ver una copia completa de la licencia, acudir a la dirección http://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode.es
EJERCICIOS del TEMA 3: Lenguajes independientes del contexto
EJERCICIOS del TEMA 3: Lenguajes independientes del contexto Sobre GICs (gramáticas independientes del contexto) 1. Sea G una gramática con las siguientes producciones: S ASB ε A aab ε B bba ba c ) d )
IN Guía de Problemas Resueltos de Geometría de Programación Lineal v1.0
IN3701 - Guía de Problemas Resueltos de Geometría de Programación Lineal v1.0 Acá va una pequeña guía con problemas resueltos de Geometría en Programación Lineal con problemas básicamente extraídos del
RADIO =? R AREA = : πr 2 < CIRC = : 2 πr
PROGRAMACION BASICA Programar la calculadora corresponde a decirle que presione teclas por sí misma automáticamente. Los programas se pueden ingresar vía RUN SHIFT PRGM (tecla VARS), o bien ingresando
Tema 3. Análisis de costes
Tema 3. Análisis de costes http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información
CONCEPTOS BASICOS DEL LENGUAJE JAVA
CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten
Tema 2. El lenguaje JAVA
Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias
Teoría de grafos y optimización en redes
Teoría de grafos y optimización en redes José María Ferrer Caja Universidad Pontificia Comillas Definiciones básicas Grafo: Conjunto de nodos (o vértices) unidos por aristas G = (V,E) Ejemplo V = {,,,,
Árboles Filogenéticos. BT7412, CC5702 Bioinformática Diego Arroyuelo. 2 de noviembre de 2010
Unidad 6: Árboles Filogenéticos BT7412, CC5702 Bioinformática Diego Arroyuelo 2 de noviembre de 2010 Temario (Introduction to Computational Molecular Biology Setubal y Meidanis Capítulo 6) 1. Introducción
PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07
PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 Ejercicio 1. Un indice de referencias cruzadas de las palabras que aparecen en un texto es una tabla por palabras y, por cada
Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y
Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y distribución. Listas Enlazadas Estructuras de datos dinámicas
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Conceptos básicos de bases de datos
Conceptos básicos de bases de datos 1.1 Definición de base de datos Una base de datos es una colección de archivos relacionados que permite el manejo de la información de alguna compañía. Cada uno de dichos
Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)
aprenderaprogramar.com Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A) Sección: Cursos Categoría: Curso Visual Basic Nivel I Fecha revisión: 2029 Autor: Mario R. Rancel
Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009
Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier
Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos
Tema 2 Memoria Dinámica 2.1 Datos estáticos y dinámicos Datos estáticos: su tamaño y forma es constante durante la ejecución de un programa y por tanto se determinan en tiempo de compilación. El ejemplo
Uso avanzado de punteros
Uso avanzado de punteros Mario Medina C. [email protected] Punteros Contienen direcciones de memoria Punteros a tipos de datos simples int, char, float, double Punteros a estructuras Punteros a vectores
Examen Principios de Programación Febrero 2012
Por favor siga las siguientes indicaciones: Escriba con lápiz. Escriba su nombre y número de documento en todas las hojas que entregue. Numere las hojas e indique el total de hojas en la primera de ellas.
Enunciados de los problemas (1)
Enunciados de los problemas (1) Problema 1. El peso de tres manzanas y dos naranjas es de 255 gramos. El peso de dos manzanas y tres naranjas es de 285 gramos. Si todas las manzanas son del mismo peso
Definición de Memoria
Arquitectura de Ordenadores Representación de Datos en Memoria Abelardo Pardo [email protected] Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Definición de Memoria DRM-1 La memoria
PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA
INSTITUTO POLITÉCNICO NACIONAL SECRETARIA ACADÉMICA DIRECCIÓN DE EDUCACIÓN SUPERIOR ESIME CULHUACAN NOMBRE ALUMNO: FECHA DIA MES AÑO INGENIERÍA EN COMPUTACIÓN ASIGNATURA 1. Objetivo Apellido paterno ESTRUCTURAS
TEMA 4. ESTRUCTURAS DE CONTROL
M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.
Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot
Algoritmos de ordenación Análisis y Diseño de Algoritmos Algoritmos de ordenación Algoritmos básicos: Θ(n 2 ) Ordenación por inserción Ordenación por selección Ordenación por intercambio directo (burbuja)
Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1
Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos
