B2 - T3 Tipos abstractos y estructuras de datos. Organizaciones de ficheros.Algoritmos. Organización de ficheros Flashcards
Cual es la politica de acceso de una pila? (stack)
LIFO - Last in, first out
en las pilas, vamos ‘amontonando’ los datos, por tanto los ultimos que metemos, son los primeros que sacamos, ya que vamos ‘vaciando’ el montón
Como se almacenan los datos en una tabla hash?
Almacena pares de clave-valor
notas tabla hash: La tabla de Hash guarda la información en elementos que se le conocen como “slots” o “buckets” . Cada slot puede tener varias implementaciones, aunque la más común es una lista enlazada
Si tenemos un arbol con este aspecto… cual es el grado del nodo 50?
50 / \ 30 70 / \ / \ 20 40 60 80
2
el grado es el numero de hijos que tenemos
Nota: nivel 0 (soy la raíz) grado 2 (tengo dos hijos)
Si tenemos un arbol con este aspecto… cual es el grado del nodo 30?
50 / \ 30 70 / \ / \ 20 40 60 80
2
el grado es el numero de hijos que tenemos
Si tenemos un arbol con este aspecto… cual es el nivel de 50?
50 / \ 30 70 / \ / \ 20 40 60 80
0
El nivel de un nodo es la distancia desde la raíz al nodo (similar a la profundidad).
Si tenemos un arbol con este aspecto… cual es el nivel de 70?
50 / \ 30 70 / \ / \ 20 40 60 80
1
El nivel de un nodo es la distancia desde la raíz al nodo (similar a la profundidad).
Si tenemos un arbol con este aspecto… cual es el nivel de 60?
50 / \ 30 70 / \ / \ 20 40 60 80
2
El nivel de un nodo es la distancia desde la raíz al nodo (similar a la profundidad).
Si tenemos un arbol con este aspecto… cual es la profundidad de 40?
50 / \ 30 70 / \ / \
20 40 60 80
2
La profundidad de un nodo es la longitud del camino desde la raíz hasta ese nodo.
PROFUNDIDAD = NIVEL
Que es el orden de un nodo?
El orden de un árbol es el número máximo de hijos que puede tener un nodo.
Para un árbol binario, el orden es 2.
Dado el siguiente arbol… cual seria la ruta si hacemos un PREORDEN?
F / \ B G / \ \ A D i / \ \ C E H
F-B-A-D-C-E-G-I-H
(RID) > raiz, izquierda, derecha
nota: (raiz, izquierda, derecha) Vamos desplazando la R, fijarse, empezando por PREORDEN (Rid), luego INORDEN (iRd), luego POSTORDEN (idR)
Dado el siguiente arbol… cual seria la ruta si hacemos un INORDEN?
F / \ B G / \ \ A D i / \ \ C E H
A-B-C-D-E-F-G-I-H
(IRD) > izquierda, raiz, derecha
nota: (raiz, izquierda, derecha) Vamos desplazando la R, fijarse, empezando por PREORDEN (Rid), luego INORDEN (iRd), luego POSTORDEN (idR)
Dado el siguiente arbol… cual seria la ruta si hacemos un POSTORDEN?
F / \ B G / \ \ A D i / \ \ C E H
A-C-E-D-B-H-I-G-F
(IDR) > izquierda, derecha, raiz
nota: (raiz, izquierda, derecha) Vamos desplazando la R, fijarse, empezando por PREORDEN (Rid), luego INORDEN (iRd), luego POSTORDEN (idR)
Que es un arbol binario?
Es un arbol en que cada nodo tiene como máximo dos hijos
Que es un arbol Equilibrado ? (auto-balanceable)
Aquel en que la diferencia de alturas de los subárboles izquierdo y derecho correspondiente a cualquier nodo del árbol no es superior a 1 (FE es -1, 0, 1)
Que es un arbol B?
A diferencia de los árboles binarios, los nodos en un árbol B pueden tener más de dos hijo, PERO todos los nodos hoja están al mismo nivel, lo que mantiene el árbol equilibrado
de qué orden es este grafo?
A —- B
| |
C —- D
Es de orden 4
nota: El orden de un grafo es el número o cantidad de vértices que tenga
Si hablamos de algoritmos de ordenación, en que consiste el QuickSort?
Algoritmo de ordenación eficiente que utiliza la técnica de divide y vencerás para particionar la lista en sublistas menores y mayores alrededor de un pivote, ordenando recursivamente cada sublista. NO es un algoritmo estable
Pasos:
- selecciona un pivote
- Reordena la lista, de modo que a la izquierda quedan los
menores del pivote y a la derecha los mayores
- Aplica nuevamente Quicksort (pivote + particion) de manera recursiva
- Combinar los resultados
Hablando de tecnicas de organizacion de ficheros por parte de los sistemas operativos, nombra algunos algoritmos de planificacion para acceder a los ficheros
- FCFS: first come first serve
- SSTF: shortest seek time first (selecciona el que la cabeza del disco está mas cerca, osea el que va a tardar menos en encontrar)
- SCAN: la cabeza del disco va a un lado y cuando llega al final vuelve. va haciendo barridos
- C-SCAN: igual que scan pero la aguja no vuelve sino que va dando vueltas
(tambien está el look y el c-look)
Recorrido IN ORDEN de este arbol
M / \ L Q / \ \ K N R / \ \ O P S
K, L, O, N, P, M, Q, R, S
Que es un monticulo (heap) ?
Un montículo (heap) es una estructura de datos especializada que se utiliza para gestionar un conjunto de elementos de manera que el más grande (o más pequeño, dependiendo del tipo de montículo) siempre esté accesible rápidamente.
Que diferencia hay entre los recorridos preorden, inorden, y postorden ?
1) Preorder:
Visita el nodo raíz primero
Luego recorre el subárbol izquierdo
Finalmente, recorre el subárbol derecho
Orden: Raíz, Izquierda, Derecha
Ejemplo: Dado el árbol [A, B, D, E, C, F], el recorrido preorden sería A, B, D, E, C, F
2) Inorder
Recorre el subárbol izquierdo primero
Luego visita el nodo raíz
Finalmente, recorre el subárbol derecho
Orden: Izquierda, Raíz, Derecha
Ejemplo: Dado el árbol [D, B, E, A, F, C], el recorrido inorden sería D, B, E, A, F, C
3) Postorden (Postorder):
Recorre el subárbol izquierdo primero
Luego recorre el subárbol derecho
Finalmente, visita el nodo raíz
Orden: Izquierda, Derecha, Raíz
Ejemplo: Dado el árbol [D, E, B, F, C, A], el recorrido postorden sería D, E, B, F, C, A
En relación con los algoritmos de búsqueda. ¿Qué es un árbol recubridor mínimo?
Es un subconjunto de las aristas que conecta todos los vértices sin ciclos y con el costo total más bajo posible
En relación con los algoritmos de búsqueda. ¿Qué es un camino mínimo entre dos vértices en un árbol ponderado?
La ruta de menor coste entre dos vértices específicos
En relación con los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo de PRIM? (T)
Para encontrar un árbol recubridor mínimo en un grafo conexo, no dirigido y cuyas aristas están etiquetadas
¿Cómo se llama el algoritmo de búsqueda de la teoría de los grafos para encontrar un árbol recubridor mínimo en un grafo conexo, no dirigido y cuyas aristas están etiquetadas? (T)
Algoritmo de PRIM
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo de búsqueda de KRUSKAL?
Para encontrar un árbol recubridor mínimo en un grafo conexo y ponderado. Es decir, busca un subconjunto de aristas que, formando un árbol, incluyen todos los vértices y donde el valor de la suma de todas las aristas del árbol es el mínimo
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos para encontrar un árbol recubridor mínimo en un grafo conexo y ponderado?
Algoritmo de KRUSKAL
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo DIJKSTRA?
El algoritmo de Dijkstra, también llamado algoritmo de caminos mínimos, es un algoritmo para la determinación del camino más corto dado un vértice origen al resto de los vértices en un grafo con pesos en cada arista. No admite pesos negativos.
¿Cómo se llama el algoritmo de la teoría de grafos que determina el camino más corto dado un vértice origen al resto de los vértices en un grafo con pesos en cada arista?
Algoritmo de Dijkstra
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo de BELLMAN-FORD? (T)
Determina el camino más corto desde un único origen en un grafo dirigido o no dirigido. Admite que alguna de las aristas sea negativa
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que determina el camino más corto desde un único origen en un grafo dirigido o no dirigido. Admite que alguna de las aristas sea negativa?
Algoritmo de BELLMAN-FORD
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo FLOYD-WARSHALL? (T)
Determina el camino mínimo en grafos dirigidos ponderados. Encuentra el camino entre todos los pares de vértices en una única ejecución
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que determina el camino mínimo en grafos dirigidos ponderados en una única ejecución?
Algoritmo de FLOYD-WARSHALL
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el Algoritmo A*?
Encuentra, siempre y cuando se cumplan unas determinadas condiciones, el camino de menor coste entre un nodo origen y uno objetivo
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que encuentra, siempre y cuando se cumplan unas determinadas condiciones, el camino de menor coste entre un nodo origen y uno objetivo?
Algoritmo A*
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo JOHNSON?
Encuentra el camino más corto entre todos los pares de vértices de un grafo dirigido disperso
¿Cómo se llama el algoritmo de búsqueda, según la teoría de grafos, que encuentra el camino más corto entre todos los pares de vértices de un grafo dirigido disperso?
Algoritmo de JOHNSON
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo FORD-FULKERSON? (T)
Para encontrar el flujo máximo en una red de flujo
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que sirve para encontrar el flujo máximo en una red de flujo? (T)
Algoritmo de FORD-FULKERSON
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo TARJAN?
Para encontrar componentes fuertemente conexos en un grafo dirigido
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que sirve para encontrar componentes fuertemente conexos en un grafo dirigido?
Algoritmo de TARJAN
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo VITERBI? (T)
Permite hallar la secuencia más probable de estados ocultos
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que permite hallar la secuencia más probable de estados ocultos? (T)
Algoritmo de VITERBI
Nombra algoritmos de búsqueda de la teoría de grafos
PRIM
KRUSKAL
DIJKSTRA
BELLMAN-FORD
FLOYD-WARSHALL
Algoritmo A*
JOHNSON
FORD-FULKERSON
TARJAN
VITERBI
Algoritmos de ordenación, nombra alguno
Burbuja
Quick Sort
Selection
HeapSort
Inserción
ShellSort
Merge sorts
Bucket sort o Bin Sort
Radix Sort
¿Cómo funciona el algoritmo de ordenación Burbuja o Bubble Sort?
Algoritmo natural que recorre repetidamente la lista, comparando pares de elementos adyacentes y los intercambia si están en el orden incorrecto
¿En qué consiste el algoritmo de ordenación de Inserción? (T)
Comienza con una lista vacía y toma elementos de la lista original uno por uno.
Para cada nuevo elemento, encuentra su posición correcta en la lista ordenada y lo inserta allí, desplazando los elementos más grandes si es necesario
¿En qué consiste el algoritmo de ordenación Shell o ShellSort?
Permite intercambiar elementos que están lejos unos de otros para reducir la cantidad de desplazamientos necesarios para ordenar la lista. Algoritmo estable
¿En qué consiste el algoritmo de ordenación MergeSort?
Algoritmo de ordenación eficiente que también utiliza la técnica de divide y vencerás.
Divide la lista en mitades, ordena cada mitad y luego las combina para formar una lista ordenada.
Funcionamiento:
1. División
2. Recursión
3. Combinación (Merge)
¿En qué consiste el algoritmo de ordenación HeapSort o Montículos?
Funcionamiento:
1. Construcción de Montículos: Se reorganiza el array para que cumpla con las propiedades del montículo (máximo o mínimo)
2. Se aplica el proceso de heapify para restaurar las propiedades del montículo en la raíz. Este proceso se repite hasta que todos los elementos estén ordenados
¿En qué consiste el algoritmo de ordenación de Selección? (T)
Seleccionar el número más pequeño
Funcionamiento:
1. Buscar el mínimo: Encuentra el elemento más pequeño en la parte desordenada del array.
2. Intercambiar: Intercambia este elemento con el primer elemento de la parte desordenada.
3. Repetir el algoritmo
¿En qué consiste el algoritmo de ordenación RadixSort? (T)
Funcionamiento:
1. Los elementos se agrupan en “bandejas” (buckets), seleccionando con qué dígito empezar a ordenar
2. Se selecciona el elemento menos significativo y se le añade a su bucket correspondiente
3. Sacar elementos de las cubetas en orden
4. Se selecciona el segundo elemento menos significativo y se le añade a su bucket correspondiente
5. Sacar elementos de las cubetas en orden y ya queda ordenado
¿En qué consiste el algoritmo de ordenación BucketSort?
Funcionamiento:
1. Metemos los números en cubetas o buckets con el reparto que consideremos, por ejemplo en bloques de 10 números.
2. Ordenamos cada cubeta o bucket con el algoritmo que consideremos
3. Extraemos los números en orden
Tipos de grafos
Dirigidos ó digrafo: aquel en el que todas sus aristas tienen sentido o dirección
No dirigidos: las aristas representan relaciones simétricas y no tienen un sentido definido. Todas sus aristas son bidireccionales.
Conexo: es posible llegar desde cualquier nodo del grafo a cualquier otro nodo a través de una secuencia de aristas (conexiones) sin importar cuán larga sea esa secuencia.
Multigrafo: más de una arista entre vértices
Etiquetado/ponderado: las aristas tienen un valor o peso asociado
Completo: cada par de vértices está conectado por una arista.
¿Cuál de las siguientes opciones NO es una característica de la asignación de espacio de almacenamiento enlazada?
a) Los bloques de un fichero son nodos de una lista enlazada.
b) Genera fragmentación externa.
c) Ineficiencia con el acceso directo.
d) Cada bloque contiene un indicador del siguiente bloque con datos del fichero.
B
Genera fragmentación externa.
La asignación enlazada genera fragmentación interna, no externa
¿Qué formato de archivo de imagen soporta animaciones y tiene una paleta de colores limitada a 256?
a) .jpg
b) .png
c) .gif
d) .bmp
C
gif
¿Cuál de las siguientes afirmaciones sobre los árboles B es FALSA?
a) Son árboles autoequilibrados.
b) Los nodos pueden tener más de dos hijos.
c) Se utilizan comúnmente en sistemas de bases de datos y sistemas de archivos.
d) La búsqueda de elementos en un árbol B tiene una complejidad temporal de O(n) en el peor de los casos.
D
La búsqueda de elementos en un árbol B tiene una complejidad temporal de O(n) en el peor de los casos.
nota: La búsqueda, inserción y borrado en un árbol B tienen una complejidad temporal de O(log(n))
En un arbol, que es ….
- nodo hoja
- grado
- orden
- nivel
- profundidad
- altura de un nodo
- anchura
- nodo hoja: nodo que no tiene descendientes
- grado: numero de hijos
- orden. numero maximo teorico de hijos posibles
- nivel: num de ramas que hay que recorrer hasta raiz
- profundidad: igual que nivel
- altura de un nodo: numero total de nodos hijos
- anchura: el ancho del arbol
nota: remember que el nivel empieza por 0
Dado este arbol… dime del nodo 4 su nivel, profundidad, altura y anchura
1
/ \
2 3
/
4
- Nivel y profundidad es 2 (0,1, 2)
- Altura es 0 (es el ultimo)
- Anchura es 1 . La anchura del árbol sería 2
Dado este arbol… dime del nodo 1 su nivel, profundidad , altura y anchura
1
/ \
2 3
/
4
- Nivel y profundidad es 0
- Altura es 2
- Anchura es 1 (la anchura del árbol sería 2)
¿Cuál de las siguientes NO es una implementación de un Array Asociativo?
a) Montículo
b) Lista enlazada
c) Tabla Hash
d) Arbol
D
Arbol
Explicación: Un Array Asociativo, también conocido como diccionario o mapa, es una estructura de datos que asocia claves únicas a valores. Las implementaciones comunes incluyen listas enlazadas, tablas hash y montículos. Los árboles, si bien son estructuras de datos útiles, no se utilizan para implementar Arrays Asociativos.
Cuál de los siguientes algoritmos de ordenación tiene la mejor complejidad temporal en el caso promedio?
a) Merge Sort
b) Bubble Sort
c) Insertion Sort
d) Selection Sort
A
Merge Sort
Explicación: La complejidad temporal en el caso promedio de Merge Sort es O(n log n), que es mejor que la complejidad de Bubble Sort, Insertion Sort y Selection Sort, que es O(n^2) en el caso promedio.
¿Cuál de los siguientes NO es un tipo de grafo?
a) Dirigido
b) No dirigido
c) Ponderado
d) Ordenado
D
Ordenado
Explicación: Los grafos se clasifican en dirigidos, no dirigidos y ponderados. Un grafo dirigido tiene aristas con una dirección específica, mientras que un grafo no dirigido tiene aristas sin dirección. Un grafo ponderado tiene pesos asociados a sus aristas. El término “ordenado” no se utiliza para clasificar grafos.
Nombra 3 algoritmos de búsqueda en grafos (T)
Prim (ARM), Kruskal (ARM), Dijkstra (CM)
¿En qué consiste el algoritmo de BELLMAN-FORD según los algoritmos de búsqueda de la teoría de grafos?
a) Encuentra el camino más largo en un grafo dirigido.
b) Encuentra el camino más corto desde un único origen en un grafo dirigido, permitiendo pesos negativos.
c) Encuentra el camino más corto entre todos los pares de nodos en un grafo dirigido.
d) Encuentra el camino más corto en un grafo no dirigido con todas las aristas de peso positivo.
B
Encuentra el camino más corto desde un único origen en un grafo dirigido, permitiendo pesos negativos.
¿Cómo funciona el algoritmo de ordenación Burbuja (Bubble Sort)?
A) Recurre a un árbol binario para ordenar los elementos mediante intercambios entre los nodos.
B) Utiliza una pila para comparar y ordenar elementos en pares consecutivos.
C) Compara y, si es necesario, intercambia elementos adyacentes repetidamente hasta que la lista esté ordenada.
D) Implementa una búsqueda binaria para ordenar elementos a través de divisiones recursivas.
C
Compara y, si es necesario, intercambia elementos adyacentes repetidamente hasta que la lista esté ordenada.
En el contexto de los algoritmos de búsqueda, ¿qué es un árbol recubridor mínimo (MST, por sus siglas en inglés)?
A) Un árbol binario que contiene todos los nodos y minimiza la profundidad del árbol.
B) Un subgrafo cíclico que incluye todos los vértices y tiene el menor peso total posible.
C) Un árbol que conecta todos los vértices de un grafo sin ciclos y con el menor peso total posible.
D) Un grafo no dirigido que tiene el máximo número de aristas posibles sin formar ciclos.
C
Un árbol que conecta todos los vértices de un grafo sin ciclos y con el menor peso total posible.
Árbol recubridor mínimo (MST): Es un subgrafo del grafo original que conecta todos los vértices sin formar ciclos y con el menor peso total de las aristas. Es fundamental en diversos problemas de optimización y búsqueda, como la planificación de redes.
¿En qué consiste el algoritmo de ordenación HeapSort o Montículos?
A) Divide la lista en dos sublistas y las ordena recursivamente.
B) Construye un montículo (heap) y extrae el elemento máximo (o mínimo) repetidamente para formar una lista ordenada.
C) Utiliza la técnica de “Divide y Vencerás” para ordenar las sublistas de manera independiente.
D) Realiza intercambios de elementos adyacentes repetidamente hasta que la lista esté ordenada.
B
Construye un montículo (heap) y extrae el elemento máximo (o mínimo) repetidamente para formar una lista ordenada.
Algoritmo de ordenación HeapSort (Montículos): Es un algoritmo de ordenación que utiliza una estructura de datos conocida como montículo (heap). Primero, se construye un max-heap o min-heap a partir de los datos de entrada. Luego, se extrae repetidamente el elemento máximo (para max-heap) o mínimo (para min-heap) y se coloca en la posición adecuada de la lista ordenada, reduciendo el tamaño del heap en cada paso.
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo Viterbi?
A) Determina el camino más corto en grafos dirigidos ponderados utilizando una pila.
B) Calcula el árbol recubridor mínimo en un grafo no dirigido.
C) Encuentra la secuencia más probable de estados ocultos en un modelo de Markov oculto.
D) Resuelve el problema del flujo máximo en una red de flujo.
C
Encuentra la secuencia más probable de estados ocultos en un modelo de Markov oculto.
Algoritmo Viterbi: Es un algoritmo dinámico que se utiliza para encontrar la secuencia más probable de estados ocultos en un modelo de Markov oculto (HMM, por sus siglas en inglés). Es ampliamente utilizado en áreas como el reconocimiento de voz, la biología computacional y la corrección de errores en códigos.
¿Qué algoritmo de planificación de disco puede causar “inanición” de solicitudes, especialmente aquellas ubicadas en los extremos del disco?
a) SSTF (Shortest Seek Time First)
b) FCFS (First-Come, First-Served)
c) SCAN (Elevator Algorithm)
d) C-SCAN (Circular SCAN)
A
SSTF (Shortest Seek Time First)
¿Cuál es la principal diferencia entre un grafo dirigido y uno no dirigido?
En un grafo dirigido, las aristas tienen dirección; en uno no dirigido, las aristas son bidireccionales
¿Qué técnica de gestión de colisiones en tablas hash implica colocar un nuevo elemento en una posición diferente de la tabla si su posición original está ocupada? (T)
Hashing Cerrado
¿Cuál de las siguientes opciones NO es un algoritmo de búsqueda en grafos?
a) Merge Sort
b) DIJKSTRA
c) Prim
d) Bellman-Ford
A
Merge Sort
Merge Sort es un algoritmo de ordenación, no de búsqueda en grafos
En un árbol binario, ¿qué tipo de recorrido visita primero la raíz, luego el subárbol izquierdo y finalmente el subárbol derecho?
a. Preorden (PreOrder)
b. Inorden (InOrder)
c. Postorden (PostOrder)
d. Ninguno de los anteriores
A
Preorden (PreOrder)
¿Cuál es la complejidad temporal en el peor caso del algoritmo Quicksort?
O(n²)
¿Qué estructura de datos utiliza un montículo (heap) para su implementación?
Un array
¿Cuál de las siguientes afirmaciones sobre el algoritmo Quick Sort es correcta?
a) Quick Sort tiene una complejidad temporal promedio de O(n).
b) Quick Sort es un algoritmo de ordenación interna que utiliza el enfoque de divide y vencerás.
c) Quick Sort siempre garantiza el mejor caso de complejidad temporal en O(n log n).
d) Quick Sort no utiliza un pivote para particionar el array.
B
Quick Sort es un algoritmo de ordenación interna que utiliza el enfoque de divide y vencerás.
¿Cómo se llama el algoritmo de la teoría de grafos que determina el camino más corto dado un vértice origen al resto de los vértices en un grafo con pesos en cada arista?
a) Algoritmo de Prim
b) Algoritmo de Floyd-Warshall
c) Algoritmo de Bellman-Ford
d) Algoritmo de Dijkstra
D
Algoritmo de Dijkstra
a) Algoritmo de Prim: Este algoritmo se utiliza para encontrar el árbol de expansión mínima en un grafo conexo con pesos. No se centra en encontrar el camino más corto desde un vértice origen al resto de los vértices, sino en conectar todos los vértices del grafo con el costo total mínimo.
b) Algoritmo de Floyd-Warshall: Este algoritmo se utiliza para encontrar los caminos más cortos entre todos los pares de vértices en un grafo con pesos. Aunque es muy útil, no se ajusta específicamente a la descripción de encontrar el camino más corto desde un único vértice origen al resto de los vértices.
c) Algoritmo de Bellman-Ford: Aunque este algoritmo puede determinar el camino más corto desde un vértice origen al resto de los vértices en un grafo con pesos, también puede manejar grafos con pesos negativos. Sin embargo, dado que la pregunta no menciona específicamente la capacidad de manejar pesos negativos, la respuesta más específica y directa a la pregunta sería el algoritmo de Dijkstra, que es más eficiente en grafos sin pesos negativos.
d) Algoritmo de Dijkstra: Este algoritmo es el más adecuado para la descripción dada, ya que se utiliza específicamente para encontrar el camino más corto desde un vértice origen al resto de los vértices en un grafo con pesos no negativos.
¿En qué consiste el Algoritmo A* según los algoritmos de búsqueda de la teoría de grafos?
a) Utiliza una función heurística para encontrar el camino más corto en un grafo ponderado.
b) Encuentra el árbol de expansión mínima en un grafo conexo.
c) Calcula el camino más corto entre todos los pares de vértices en un grafo.
d) Es un algoritmo específico para grafos no dirigidos sin pesos.
A
Utiliza una función heurística para encontrar el camino más corto en un grafo ponderado.
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos para encontrar un árbol recubridor mínimo en un grafo conexo y ponderado?
a) Algoritmo de Dijkstra
b) Algoritmo de Kruskal
c) Algoritmo de Bellman-Ford
d) Algoritmo A*
B
Algoritmo de Kruskal
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo Viterbi?
a) Encuentra el camino más corto entre dos nodos en un grafo ponderado.
b) Resuelve el problema de la alineación de secuencias en bioinformática.
c) Encuentra el árbol de expansión mínima en un grafo conexo.
d) Determina la secuencia más probable de estados ocultos en un modelo de Markov oculto.
D
Determina la secuencia más probable de estados ocultos en un modelo de Markov oculto.
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que encuentra, siempre y cuando se cumplan unas determinadas condiciones, el camino de menor coste entre un nodo origen y uno objetivo?
a) Algoritmo de Bellman-Ford
b) Algoritmo de Dijkstra
c) Algoritmo de Prim
d) Algoritmo A*
D
Algoritmo A*
remember.. que se cumplan condiciones
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que sirve para encontrar componentes fuertemente conexos en un grafo dirigido?
a) Algoritmo de Dijkstra
b) Algoritmo de Bellman-Ford
c) Algoritmo de Prim
d) Algoritmo de Tarjan
D
Algoritmo de Tarjan
remember: Tarzán se agarra fuertemente a las lianas para no caerse
¿En qué consiste el algoritmo de ordenación de Selección?
a) Es un algoritmo de ordenación interna que utiliza una función de hash para distribuir elementos en diferentes contenedores.
b) Es un algoritmo de ordenación externa que usa archivos en disco para ordenar grandes cantidades de datos.
c) Es un algoritmo de ordenación interna que selecciona repetidamente el elemento más pequeño del array no ordenado y lo intercambia con el primer elemento no ordenado.
d) Es un algoritmo de ordenación que construye un árbol de búsqueda binaria a partir de los elementos del array.
C
Es un algoritmo de ordenación interna que selecciona repetidamente el elemento más pequeño del array no ordenado y lo intercambia con el primer elemento no ordenado.
¿Qué es un árbol equilibrado (auto-balanceable)?
a) Un árbol en el que todos los nodos tienen el mismo número de hijos.
b) Un árbol en el que la altura de los subárboles izquierdo y derecho de cualquier nodo difiere en no más de una unidad.
c) Un árbol en el que los nodos hoja están todos en el mismo nivel.
d) Un árbol que no necesita operaciones de reequilibrio después de inserciones o eliminaciones de nodos.
B
Un árbol en el que la altura de los subárboles izquierdo y derecho de cualquier nodo difiere en no más de una unidad.
¿En qué consiste el algoritmo de ordenación Shell o ShellSort?
a) Es un algoritmo de ordenación que utiliza una función de hash para distribuir elementos en diferentes contenedores.
b) Es un algoritmo de ordenación que clasifica los elementos mediante un procedimiento de mezcla.
c) Es un algoritmo de ordenación que compara y ordena elementos distantes y reduce el intervalo de comparación progresivamente.
d) Es un algoritmo de ordenación que construye un árbol de búsqueda binaria a partir de los elementos del array.
C
Es un algoritmo de ordenación que compara y ordena elementos distantes y reduce el intervalo de comparación progresivamente.
En relación con los algoritmos de búsqueda, ¿qué es un camino mínimo entre dos vértices en un árbol ponderado?
a) Es el camino más largo posible entre dos vértices.
b) Es el camino con la menor cantidad de vértices.
c) Es el camino con el menor costo total de las aristas que conectan los vértices.
d) Es el camino que pasa por el mayor número de aristas.
C
Es el camino con el menor costo total de las aristas que conectan los vértices.
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que permite hallar la secuencia más probable de estados ocultos?
a) Algoritmo de Dijkstra
b) Algoritmo de Kruskal
c) Algoritmo de Bellman-Ford
d) Algoritmo Viterbi
D
Algoritmo Viterbi
viterbi, ocultos
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que determina el camino más corto desde un único origen en un grafo dirigido o no dirigido. Admite que alguna de las aristas sea negativa?
a) Algoritmo de Dijkstra
b) Algoritmo de Kruskal
c) Algoritmo de Bellman-Ford
d) Algoritmo A*
C
Algoritmo de Bellman-Ford
¿Cómo se almacenan los datos en una tabla hash?
a) Los datos se almacenan en una lista enlazada que se recorre de principio a fin.
b) Los datos se almacenan en una estructura de árbol binario de búsqueda.
c) Los datos se almacenan en una tabla mediante una función de hash que determina el índice en el que se guarda cada elemento.
d) Los datos se almacenan en una pila donde el último elemento insertado es el primero en ser eliminado.
C
Los datos se almacenan en una tabla mediante una función de hash que determina el índice en el que se guarda cada elemento.
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo de Bellman-Ford?
a) Encuentra el árbol de expansión mínima en un grafo conexo seleccionando siempre la arista de menor peso que conecta un vértice en el árbol con un vértice fuera de él.
b) Encuentra los componentes fuertemente conexos en un grafo dirigido.
c) Determina el camino más corto desde un único origen en un grafo dirigido o no dirigido, admitiendo que algunas de las aristas tengan peso negativo.
d) Resuelve el problema de la alineación de secuencias en bioinformática.
C
Determina el camino más corto desde un único origen en un grafo dirigido o no dirigido, admitiendo que algunas de las aristas tengan peso negativo.
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que sirve para encontrar el flujo máximo en una red de flujo?
a) Algoritmo de Dijkstra
b) Algoritmo de Kruskal
c) Algoritmo de Ford-Fulkerson
d) Algoritmo de Bellman-Ford
C
Algoritmo de Ford-Fulkerson
¿En qué consiste el algoritmo de ordenación RadixSort?
a) Es un algoritmo de ordenación que compara y ordena elementos distantes y reduce el intervalo de comparación progresivamente.
b) Es un algoritmo de ordenación que utiliza una función de hash para distribuir elementos en diferentes contenedores.
c) Es un algoritmo de ordenación que clasifica los elementos por sus dígitos, desde el dígito menos significativo hasta el más significativo.
d) Es un algoritmo de ordenación que construye un árbol de búsqueda binaria a partir de los elementos del array.
C
Es un algoritmo de ordenación que clasifica los elementos por sus dígitos, desde el dígito menos significativo hasta el más significativo.
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que determina el camino mínimo en grafos dirigidos ponderados en una única ejecución?
a) Algoritmo de Dijkstra
b) Algoritmo de Kruskal
c) Algoritmo de Bellman-Ford
d) Algoritmo de Floyd-Warshall
D
Algoritmo de Floyd-Warshall
nota: 1 sola ejecucion
¿En qué consiste el algoritmo de ordenación HeapSort o Montículos?
a) Es un algoritmo de ordenación que utiliza una función de hash para distribuir elementos en diferentes contenedores.
b) Es un algoritmo de ordenación que clasifica los elementos mediante un procedimiento de mezcla.
c) Es un algoritmo de ordenación que convierte el array en un montón (heap) y luego extrae el elemento máximo (o mínimo) repetidamente para ordenar el array.
d) Es un algoritmo de ordenación que compara y ordena elementos distantes y reduce el intervalo de comparación progresivamente.
C
Es un algoritmo de ordenación que convierte el array en un montón (heap) y luego extrae el elemento máximo (o mínimo) repetidamente para ordenar el array.
¿Para qué sirve la técnica de programación dinámica?
a) Para ejecutar programas en paralelo y reducir el tiempo de cómputo en aplicaciones de alta demanda.
b) Para almacenar resultados intermedios de subproblemas en una tabla y evitar cálculos redundantes, optimizando así el rendimiento de algoritmos.
c) Para desarrollar aplicaciones en tiempo real con baja latencia y alta disponibilidad.
d) Para cifrar datos sensibles en aplicaciones de red utilizando claves asimétricas.
B
Para almacenar resultados intermedios de subproblemas en una tabla y evitar cálculos redundantes, optimizando así el rendimiento de algoritmos.
Breve explicación: La programación dinámica es una técnica de optimización algorítmica que se utiliza para resolver problemas complejos dividiéndolos en subproblemas más simples. Al almacenar los resultados de estos subproblemas en una tabla, se evita recalcular los mismos resultados múltiples veces, mejorando significativamente la eficiencia y el rendimiento del algoritmo.
Por qué las otras opciones son incorrectas:
a) Para ejecutar programas en paralelo y reducir el tiempo de cómputo en aplicaciones de alta demanda: Esto describe la computación paralela, no la programación dinámica.
c) Para desarrollar aplicaciones en tiempo real con baja latencia y alta disponibilidad: Esto se relaciona con el diseño de sistemas en tiempo real, no con la programación dinámica.
d) Para cifrar datos sensibles en aplicaciones de red utilizando claves asimétricas: Esto se refiere a la criptografía, no a la programación dinámica.
¿Cuál de las siguientes afirmaciones describe correctamente el algoritmo Floyd-Warshall?
A) Calcula la distancia mínima entre un solo par de vértices en un grafo.
B) Utiliza programación dinámica para encontrar el camino más corto entre todos los pares de vértices en un grafo ponderado.
C) Solo funciona con grafos no dirigidos y sin pesos negativos.
D) Es un algoritmo de búsqueda en profundidad que explora todos los caminos posibles.
B
Utiliza programación dinámica para encontrar el camino más corto entre todos los pares de vértices en un grafo ponderado.
¿Cuál de las siguientes afirmaciones describe correctamente el algoritmo de ordenación por selección?
A) Ordena los elementos mediante la inserción de cada nuevo elemento en su posición correcta.
B) Busca el elemento más grande y lo coloca al final de la lista en cada iteración.
C) Encuentra el elemento más pequeño en la lista y lo intercambia con el primer elemento, repitiendo este proceso para los elementos restantes.
D) Utiliza un enfoque de divide y vencerás para ordenar los elementos.
C
Encuentra el elemento más pequeño en la lista y lo intercambia con el primer elemento, repitiendo este proceso para los elementos restantes.
¿Cuál de las siguientes afirmaciones describe correctamente el algoritmo de Prim en la teoría de grafos?
A) Encuentra el camino más corto entre dos vértices en un grafo dirigido.
B) Utiliza una estrategia codiciosa para construir un árbol de expansión mínima conectando todos los vértices de un grafo no dirigido y ponderado.
C) Requiere que el grafo sea dirigido y no puede manejar pesos negativos.
D) Se basa en un enfoque de divide y vencerás para dividir el grafo en subgrafos más pequeños.
B
Utiliza una estrategia codiciosa para construir un árbol de expansión mínima conectando todos los vértices de un grafo no dirigido y ponderado.
El algoritmo de Prim es un método eficiente que busca crear un árbol de expansión mínima (MST) al seleccionar repetidamente la arista de menor peso que conecta un vértice en el árbol en construcción con un vértice fuera del árbol, asegurando que se minimice el peso total del árbol.
¿Cuál de las siguientes afirmaciones describe correctamente el algoritmo Viterbi en la teoría de grafos?
A) Se utiliza para encontrar el camino más corto entre dos vértices en un grafo no dirigido.
B) Es un algoritmo de programación dinámica que determina la secuencia más probable de estados ocultos en un modelo de Markov.
C) Calcula la distancia mínima entre todos los pares de vértices en un grafo ponderado.
D) Es un algoritmo de búsqueda en profundidad que explora todos los caminos posibles en un grafo.
B
Es un algoritmo de programación dinámica que determina la secuencia más probable de estados ocultos en un modelo de Markov.
El algoritmo Viterbi se utiliza principalmente en el contexto de modelos ocultos de Markov (HMM), donde busca encontrar la secuencia más probable de estados ocultos dados una serie de observaciones.
¿Cuál de las siguientes afirmaciones describe correctamente el algoritmo Bellman-Ford en la teoría de grafos?
A) Encuentra el camino más corto en un grafo no dirigido y ponderado sin considerar pesos negativos.
B) Utiliza una técnica voraz para seleccionar el nodo de menor peso y relajar las aristas.
C) Calcula el camino más corto desde un nodo origen a todos los demás nodos, permitiendo pesos negativos en las aristas.
D) Solo funciona en grafos dirigidos y no puede detectar ciclos negativos.
C
Calcula el camino más corto desde un nodo origen a todos los demás nodos, permitiendo pesos negativos en las aristas.
El algoritmo Bellman-Ford es eficaz para encontrar la ruta más corta en un grafo dirigido y ponderado, incluso cuando hay aristas con pesos negativos, y también puede detectar ciclos negativos en el grafo.
¿Cuál es el nombre del algoritmo de búsqueda en la teoría de grafos que se utiliza para encontrar el flujo máximo en una red de flujo?
A) Algoritmo de Dijkstra
B) Algoritmo de Prim
C) Algoritmo de Bellman-Ford
D) Algoritmo de Ford-Fulkerson
D
Algoritmo de Ford-Fulkerson
El algoritmo de Ford-Fulkerson se utiliza para calcular el flujo máximo en una red de flujo, permitiendo determinar la cantidad máxima de flujo que puede transportarse desde un nodo fuente a un nodo sumidero.
¿Cómo se llama el algoritmo que encuentra un árbol recubridor mínimo en un grafo conexo, no dirigido y cuyas aristas están etiquetadas?
A) Algoritmo de Dijkstra
B) Algoritmo de Prim
C) Algoritmo de Bellman-Ford
D) Algoritmo de Floyd-Warshall
B
Algoritmo de Prim
¿Cuál es otro algoritmo comúnmente utilizado para encontrar un árbol recubridor mínimo?
A) Algoritmo de A*
B) Algoritmo de Kruskal
C) Algoritmo de Ford-Fulkerson
D) Algoritmo de Johnson
B
Algoritmo de Kruskal
¿Qué estructura de datos es comúnmente utilizada en el algoritmo de Prim para mantener las aristas candidatas?
A) Cola de prioridad
B) Lista enlazada
C) Pila
D) Árbol binario
A
Cola de prioridad
En el algoritmo de Kruskal, ¿qué se utiliza para evitar la formación de ciclos al agregar aristas?
A) Un árbol binario
B) Un conjunto disjunto
C) Una lista de adyacencia
D) Una matriz de adyacencia
B
Un conjunto disjunto
¿Cuál es la principal diferencia entre los algoritmos de Prim y Kruskal?
A) Prim comienza con un vértice y expande el árbol, mientras que Kruskal selecciona aristas.
B) Kruskal es más rápido que Prim en todos los casos.
C) Prim solo funciona en grafos dirigidos.
D) Kruskal no garantiza un árbol recubridor mínimo
A
Prim comienza con un vértice y expande el árbol, mientras que Kruskal selecciona aristas.
¿Qué tipo de grafos pueden ser utilizados con los algoritmos de Prim y Kruskal?
A) Solo grafos dirigidos.
B) Grafos conexos y no dirigidos con pesos en las aristas.
C) Grafos no conexos.
D) Grafos bipartitos solamente.
B
Grafos conexos y no dirigidos con pesos en las aristas.
¿Qué técnica se utiliza para resolver colisiones mediante la aplicación de una segunda función hash?
A) Sondeo lineal
B) Doble hash
C) Encadenamiento
D) Rehashing
B
Doble hash
¿Qué es Radix Sort?
A) Un algoritmo de ordenación basado en comparaciones.
B) Un algoritmo de ordenación no comparativa que organiza los elementos procesando sus dígitos de forma individual.
C) Un método para buscar elementos en una lista.
D) Un algoritmo que solo ordena números enteros.
B
Un algoritmo de ordenación no comparativa que organiza los elementos procesando sus dígitos de forma individual.
¿Qué técnica se utiliza comúnmente como subrutina en Radix Sort para ordenar los dígitos en cada posición?
A) Quick Sort
B) Merge Sort
C) Counting Sort
D) Bubble Sort
C
Counting Sort
¿Qué característica distingue a la Búsqueda en Anchura (BFS) de la Búsqueda en Profundidad (DFS)?
a) BFS explora todos los nodos a una distancia dada antes de avanzar, mientras que DFS profundiza en un camino antes de retroceder.
b) BFS es más eficiente que DFS en todos los casos.
c) DFS no puede encontrar la solución más corta, mientras que BFS siempre lo hace.
d) BFS utiliza menos memoria que DFS.
A
BFS explora todos los nodos a una distancia dada antes de avanzar, mientras que DFS profundiza en un camino antes de retroceder.
Señalar la técnica de compresión con pérdida
A) Portable Network Graphics (PNG)
B) Lempel-Ziv-Welch (LZW)
C) Joint Photographic Experts Group (JPEG)
D) Free Lossless Audio Codec (FLAC)
C
Joint Photographic Experts Group (JPEG)
El algoritmo Aiken utiliza un código de pesos 2421 para representar números binarios
VERDADERO O FALSO ?
VERDADERO
el código Aiken utiliza un código de pesos 2421, a diferencia del binario clásico que usa 8421.
¿En qué áreas se utiliza el algoritmo k-means para la agrupación de datos?
Minería de datos y machine learning
: ¿Qué es un LLM en el ambito de la inteligencia artificial ?
Un LLM (Large Language Model) es un modelo de inteligencia artificial entrenado con grandes cantidades de datos textuales para entender y generar lenguaje humano.
¿Qué es un SVM en machine learning?
Un SVM es un algoritmo de aprendizaje supervisado que se utiliza para clasificación y regresión, encontrando el hiperplano que mejor separa los datos en diferentes clases.
svm = Support Vector Machine, o maquina de vectores de soporte
Con respecto a los árboles 2-3-4, señale la respuesta correcta:
a) Cumple las propiedades del árbol binario de búsqueda.
b) Las hojas pueden estar a distinto nivel.
c) Los nodos pueden tener 2, 3 o 4 hijos (2-nodo, 3-nodo o 4-nodo).
d) Las reestructuraciones se realizan desde las hojas hacia la raíz.
C
Los nodos pueden tener 2, 3 o 4 hijos (2-nodo, 3-nodo o 4-nodo).
Explicación:
a) Cumple las propiedades del árbol binario de búsqueda.
Incorrecto: Un árbol 2-3-4 no es un árbol binario de búsqueda porque sus nodos pueden tener más de dos hijos (hasta cuatro). Sin embargo, cumple una propiedad similar: los valores en los nodos están organizados de manera que permiten búsquedas eficientes.
b) Las hojas pueden estar a distinto nivel.
Incorrecto: En un árbol 2-3-4, todas las hojas están al mismo nivel. Es una de las propiedades clave que garantizan el equilibrio del árbol.
c) Los nodos pueden tener 2, 3 o 4 hijos (2-nodo, 3-nodo o 4-nodo).
Correcto: Los nodos en un árbol 2-3-4 pueden tener:
1 clave y 2 hijos (2-nodo),
2 claves y 3 hijos (3-nodo),
3 claves y 4 hijos (4-nodo).
d) Las reestructuraciones se realizan desde las hojas hacia la raíz.
Incorrecto: En un árbol 2-3-4, las divisiones de nodos (split) pueden propagarse desde las hojas hacia la raíz, pero las reestructuraciones no siempre comienzan desde las hojas. Estas pueden ocurrir en cualquier nivel del árbol según sea necesario para mantener las propiedades del árbol.
¿Cuál de las siguientes afirmaciones es verdadera sobre un árbol binario de búsqueda (BST)?
a) Todos los nodos tienen exactamente dos hijos.
b) Los nodos hoja están siempre al mismo nivel.
c) Los valores a la izquierda de un nodo son menores que el nodo y los valores a la derecha son mayores.
d) No se permite que los nodos hoja tengan hijos.
C
Los valores a la izquierda de un nodo son menores que el nodo y los valores a la derecha son mayores.
¿Cuál es la altura de un árbol binario completo de 3 niveles?
a) 2
b) 3
c) 4
d) 5
B
3
En un árbol AVL, ¿qué significa que el árbol esté balanceado?
a) Todos los nodos tienen el mismo número de hijos.
b) La diferencia de altura entre los subárboles izquierdo y derecho de cualquier nodo es como máximo 1.
c) El número total de nodos en el subárbol izquierdo es igual al número de nodos en el subárbol derecho.
d) Las hojas están en el mismo nivel.
B
La diferencia de altura entre los subárboles izquierdo y derecho de cualquier nodo es como máximo 1.
¿Qué tipo de árbol tiene nodos con un número variable de hijos, que puede ser mayor que dos?
a) Árbol binario de búsqueda
b) Árbol AVL
c) Árbol 2-3-4
d) Árbol binario completo
C
Árbol 2-3-4
¿Cuál es la principal ventaja de usar un heap binario en lugar de una lista enlazada para implementar una cola de prioridad?
a) Menor uso de memoria
b) Acceso más rápido al elemento máximo o mínimo c) Inserciones más rápidas
d) Estructura más sencilla
B
Acceso más rápido al elemento máximo o mínimo
Señale la respuesta correcta referente al tipo abstracto de datos (TAD) Cola:
a) Basada en el principio LIFO (last-in, first-out).
b) Es un tipo especial de lista en la que se pueden insertar y eliminar por cualquier extremo.
c) Cada nodo tiene dos enlaces, uno al nodo siguiente, y otro al anterior.
d) Se pude implementar usando una estructura dinámica.
D
Se pude implementar usando una estructura dinámica.
¿Cuál de las siguientes operaciones no es posible en un árbol AVL?
a) Inserción
b) Eliminación
c) Búsqueda
d) Inserción múltiple en una única operación
D
Inserción múltiple en una única operación
¿Qué estructura de datos es la más adecuada para implementar una cola de prioridad?
a) Lista enlazada
b) Árbol AVL
c) Heap binario
d) Árbol binario de búsqueda
C
Heap binario
¿Cuál de las siguientes afirmaciones es verdadera sobre una lista enlazada doble?
a) Cada nodo tiene un enlace al siguiente nodo únicamente.
b) Los nodos se ordenan por su valor.
c) Cada nodo tiene un enlace al nodo siguiente y al nodo anterior.
d) Solo permite acceso secuencial.
C
Cada nodo tiene un enlace al nodo siguiente y al nodo anterior.
¿Qué tipo de recorrido en un árbol binario visita primero la raíz, luego el subárbol izquierdo y finalmente el subárbol derecho?
a) Inorden
b) Preorden
c) Postorden
d) Nivel orden
B
Preorden
En una pila, ¿cómo se llama la operación que añade un elemento a la cima de la pila?
a) Push
b) Pop
c) Peek
d) Insert
A
Push
¿Cuál es la principal característica de una cola doblemente terminada (deque)?
a) Permite inserciones y eliminaciones solo en un extremo.
b) Permite inserciones en un extremo y eliminaciones en el otro.
c) Permite inserciones y eliminaciones en ambos extremos.
d) Permite acceso aleatorio a cualquier elemento.
C
Permite inserciones y eliminaciones en ambos extremos.
¿Qué es un árbol B en términos de estructuras de datos?
a) Un árbol binario completo
b) Un árbol AVL con balanceo estricto
c) Un árbol de búsqueda equilibrado con múltiples claves por nodo
d) Un árbol binario de búsqueda con claves duplicadas
C
Un árbol de búsqueda equilibrado con múltiples claves por nodo
Señale la respuesta INCORRECTA acerca de los tipos abstractos de datos (TAD):
a) Es una colección de propiedades y operaciones que se definen mediante una especificación que es independiente de cualquier representación.
b) Nos permiten diseñar nuestros propios tipos para encapsular lógica algorítmica y proveer abstracción a las capas de software de más alto nivel.
c) Se pueden escribir usando lenguaje natural, usando pseudo-código o incluso algún lenguaje de programación.
d) En JAVA, una estructura de datos (interface) debe implementar todas las operaciones definidas en su TAD (class).
D
En JAVA, una estructura de datos (interface) debe implementar todas las operaciones definidas en su TAD (class).
¿Cuál de las siguientes estructuras de datos es la más adecuada para implementar una pila?
a) Lista doblemente enlazada
b) Cola
c) Lista enlazada simple
d) Árbol binario
C
Lista enlazada simple
¿Qué operación no es válida en una cola?
a) Encolar (enqueue)
b) Desencolar (dequeue)
c) Peek
d) Apilar (push)
D
Apilar (push)
¿Cuál de las siguientes afirmaciones es verdadera acerca de un árbol binario de búsqueda?
a) El nodo raíz siempre tiene el valor más pequeño.
b) Las hojas están siempre en el mismo nivel.
c) Para cada nodo, los valores del subárbol izquierdo son menores y los del subárbol derecho son mayores.
d) No puede tener más de dos niveles de profundidad.
C
Para cada nodo, los valores del subárbol izquierdo son menores y los del subárbol derecho son mayores.
¿Qué tipo de recorrido en un árbol binario visita los nodos en el orden “izquierda, raíz, derecha”?
a) Preorden
b) Postorden
c) Inorden
d) Nivel orden
C
Inorden
¿Cuál de las siguientes afirmaciones es incorrecta acerca de un TAD?
a) Permite encapsular datos y operaciones relacionadas.
b) Define operaciones específicas independientemente de su implementación.
c) Un TAD se implementa siempre como una clase en cualquier lenguaje de programación.
d) Facilita la abstracción y modularidad en el diseño de software.
C
Un TAD se implementa siempre como una clase en cualquier lenguaje de programación.
¿Qué estructura de datos es la más adecuada para implementar un búfer circular?
a) Lista enlazada simple
b) Lista doblemente enlazada
c) Cola circular
d) Pila
C
Cola circular
¿En qué situación es más ventajoso utilizar una tabla hash?
a) Cuando se necesita acceso rápido a los elementos en orden.
b) Cuando la velocidad de búsqueda es crítica y se conocen pocas colisiones.
c) Cuando los elementos se deben procesar en un orden específico.
d) Cuando se necesita una estructura de datos dinámica y ordenada.
B
Cuando la velocidad de búsqueda es crítica y se conocen pocas colisiones.
¿cuál de las siguientes afirmaciones describe correctamente la principal diferencia entre un recorrido preorden y un recorrido inorden en un árbol binario de búsqueda (ABB)?
a) En el recorrido preorden, se visita primero el subárbol izquierdo, luego la raíz, y por último el subárbol derecho, mientras que en el inorden se visita la raíz, luego el izquierdo y finalmente el derecho.
b) En el recorrido preorden, se visita primero el subárbol derecho, luego la raíz, y por último el subárbol izquierdo, mientras que en el inorden se visita la raíz, luego el izquierdo y finalmente el derecho.
c) En el recorrido preorden, se visita la raíz, luego el subárbol izquierdo, y por último el subárbol derecho, mientras que en el inorden se visita el subárbol izquierdo, luego la raíz, y por último el subárbol derecho.
d) En el recorrido preorden, se visita primero la raíz, luego el subárbol izquierdo y luego el derecho, mientras que en el recorrido inorden, se visita primero el subárbol izquierdo, luego la raíz y luego el subárbol derecho.
D
En el recorrido preorden, se visita primero la raíz, luego el subárbol izquierdo y luego el derecho, mientras que en el recorrido inorden, se visita primero el subárbol izquierdo, luego la raíz y luego el subárbol derecho.
El recorrido preorden (RID) visita la raíz, luego el subárbol izquierdo y finalmente el subárbol derecho. El recorrido inorden (IRD) visita primero el subárbol izquierdo, luego la raíz y finalmente el subárbol derecho
Señale la respuesta correcta referente al tipo abstracto de datos (TAD) Pila:
a) Basada en el principio FIFO (first-in, first-out).
b) Se puede implementar usando arrays.
c) No se puede implementar usando una estructura dinámica.
d) Las operaciones de apilar (push) y desapilar (pop) se realizan en cualquier posición.
B
Se puede implementar usando arrays.
¿Cuál de las siguientes afirmaciones es correcta sobre el tipo abstracto de datos (TAD) Cola?
a) Se basa en el principio LIFO (Last-In, First-Out).
b) Las operaciones de encolar (enqueue) y desencolar (dequeue) se realizan en el mismo extremo.
c) Se puede implementar usando un array o una lista enlazada.
d) El acceso a los elementos en una cola es aleatorio.
C
Se puede implementar usando un array o una lista enlazada.
¿Qué tipo de estructura de datos es más adecuada para implementar una tabla hash?
a) Array estático.
b) Lista enlazada.
c) Árbol binario de búsqueda.
d) Array dinámico con función de dispersión (hashing).
D
Array dinámico con función de dispersión (hashing).
¿Cuál es la principal diferencia entre una lista enlazada y un array?
a) Las listas enlazadas tienen un acceso aleatorio a los elementos.
b) Los arrays tienen una capacidad fija, mientras que las listas enlazadas pueden crecer dinámicamente.
c) Las listas enlazadas son más rápidas para acceder a un elemento específico que los arrays.
d) Los arrays no pueden almacenar datos de diferentes tipos.
B
Los arrays tienen una capacidad fija, mientras que las listas enlazadas pueden crecer dinámicamente.
¿Cuál de las siguientes estructuras de datos es más adecuada para almacenar elementos en orden y permitir una rápida inserción y eliminación de elementos en cualquier parte de la estructura?
a) Array estático.
b) Árbol binario de búsqueda (BST).
c) Lista enlazada doblemente.
d) Cola.
C
Lista enlazada doblemente.
¿Qué operación es característica de un árbol binario de búsqueda (BST)?
a) La inserción de un nuevo nodo siempre se realiza en el nivel más bajo.
b) Todos los nodos en el subárbol izquierdo de un nodo son mayores que el nodo.
c) El acceso a los nodos sigue un principio LIFO.
d) El árbol está completamente equilibrado en todo momento.
B
Todos los nodos en el subárbol izquierdo de un nodo son mayores que el nodo.
¿Cómo se llama el algoritmo de búsqueda de la teoría de grafos que permite hallar la secuencia más probable de estados ocultos?
a) Algoritmo de Dijkstra.
b) Algoritmo de Viterbi.
c) Algoritmo de Bellman-Ford.
d) Algoritmo de Floyd-Warshall.
B
Algoritmo de Viterbi.
¿En qué consiste el algoritmo de ordenación de Inserción?
a) Ordena los elementos comparando el primero con el segundo y eligiendo el menor para colocarlo al principio.
b) Toma el siguiente elemento y lo inserta en la posición correcta dentro de los elementos ya ordenados.
c) Divide la lista en dos partes y luego las fusiona ordenadamente.
d) Selecciona el elemento más grande y lo coloca al final de la lista.
B
Toma el siguiente elemento y lo inserta en la posición correcta dentro de los elementos ya ordenados.
Según los algoritmos de búsqueda de la teoría de grafos, ¿en qué consiste el algoritmo FORD-FULKERSON?
a) Busca el camino más corto entre dos nodos en un grafo dirigido.
b) Encuentra el flujo máximo en un grafo de flujo.
c) Calcula la distancia mínima entre todos los pares de nodos en un grafo.
d) Encuentra la secuencia más probable de estados ocultos en un grafo.
B
Encuentra el flujo máximo en un grafo de flujo.
¿Cómo se denomina a un árbol binario en el que los valores del subárbol izquierdo son menores que el nodo y los del subárbol derecho son mayores?
Árbol Binario de Búsqueda (ABB).
Un Árbol Binario de Búsqueda (ABB) es un tipo especial de árbol binario que mantiene sus elementos en un orden específico, donde los valores del subárbol izquierdo de un nodo son menores que el valor del nodo, y los valores del subárbol derecho son mayores
Definicion de tabla hash
Es una estructura de datos que implementa un TAD, como un diccionario o un mapa, que puede almacenar pares de clave-valor y permite operaciones eficientes de búsqueda
¿Qué sentencia NO es correcta al utilizar un Array Asociativo?
a) Coste de la búsqueda es constante
b) Coste de la búsqueda NO es constante
c) En Java se usa Hash Map
d) El Hashing puede ser abierto o cerrado
B
Coste de la búsqueda NO es constante
Explicación de cada opción:
a) Coste de la búsqueda es constante: Esta es generalmente una afirmación correcta para arrays asociativos, especialmente en el caso de tablas hash bien diseñadas.
c) En Java se usa Hash Map: Correcto, en Java, HashMap es una implementación común de un array asociativo.
d) El Hashing puede ser abierto o cerrado: Correcto, el hashing puede ser abierto (separación encadenada) o cerrado (dirección abierta).