estructura de datos y algoritmo
|
|
Título del Test:
![]() estructura de datos y algoritmo Descripción: Universidad isabel I |



| Comentarios |
|---|
NO HAY REGISTROS |
|
El cálculo de la complejidad temporal mide: Unidades temporales genéricas. Segundos. Ciclos de CPU. Operaciones por segundo. La complejidad temporal de un algoritmo, sin reducirlo a ningún tipo de orden, se expresa con: P(N). O(N). S(N). T(N). ¿Qué caso no es uno de los que se contempla cuando se realiza un análisis de casos para calcular la complejidad de un algoritmo?. Caso mejor. Caso peor. Caso medio. Caso crítico. for (int i=0; i<n; i++) if (n%i==0) resultado=i; printf("Resultado: %d", resultado);. 5n + 3. 4 · log n. 5n + 1,5. 5n2 + 4. for (int i=0; i<dim; i++) for (int j=0; j<10; j++) v[i][j]=i+j;. O(1). O(n). O(n2). O(2n). ¿Cuál de las siguientes es una estructura de datos estática?. Colas. Matrices. Árboles. Tablas hash. ¿Cuál de las siguientes es una estructura de datos dinámica?. Colas. Arrays. Conjuntos. Registros. ¿Pueden ser las pilas y las colas implementadas con vectores (arrays)?. Solo las pilas pueden ser implementadas con vectores. Solo las colas pueden ser implementadas con vectores. Tanto las pilas como las colas pueden ser implementadas con vectores. Ninguna de las dos estructuras puede ser implementada con vectores. Las dos acciones principales de una pila son apilar y desapilar, que se suelen nombrar como: Push y pop. Push y top. Put on y put off. Pop on y pop off. En una pila, ¿dónde se realizan las operaciones de inserción y eliminación de elementos?. Ambas en la cima. Se admiten en cualquier posición. La inserción en la cima y la eliminación en la cola. La inserción en la cola y la eliminación en la cima. ¿Qué estructura de datos es mejor para expresar el funcionamiento de un almacén de platos (todos iguales) de una vajilla de cocina a la hora de guardar y sacar dichos platos?. Una cola, puesto que lo natural es que vayamos sacando los platos en el mismo orden en el que los guardamos. Una cola, puesto que lo natural es que vayamos sacando los platos en el mismo orden en el que los guardamos. Una cola, puesto que lo natural es que vayamos sacando los platos en el mismo orden en el que los guardamos. Una pila, dado que cuando guardamos un plato, lo dejamos encima y cuando queremos sacar un plato, sacamos el que está encima de todos. Las colas permiten.. encolar y desencolar. solo encolar. solo desencolar. encolar y editar. En una lista, las adiciones de elementos se pueden realizar: Solo en la cabeza de la lista. Solo en la cola de la lista. Solo en la parte media de la lista. En cualquier parte de la lista. En una estructura de tipo árbol, ¿qué es un nodo hoja?. Nodo del que no deriva ningún subárbol. Nodo del que deriva al menos un subárbol. Nodo del que deriva únicamente un subárbol. Nodo del que descienden todos los nodos restantes del árbol. En una estructura de tipo árbol, ¿qué es el nivel de un nodo?. Distancia entre el nodo y la raíz. Distancia entre el nodo y la hoja. Distancia máxima entre la hoja y la raíz. Número de nodos del árbol. ¿Cuándo un árbol binario está completo?. Cuando hay exactamente el mismo número de elementos en los dos subárboles de la raíz. Cuando las alturas de los subárboles de cada nodo difieran, como mucho, en una unidad. Cuando todos los nodos que contiene, salvo las hojas, tienen exactamente dos subárboles. Cuando tiene el repertorio de datos ordenado. ¿Cuál es la principal característica de los árboles binarios?. No tienen más de dos niveles. No tienen más de dos nodos. La distancia entre dos nodos no puede ser mayor que dos. Sus nodos no pueden tener más de dos subárboles. ¿Cuándo dos árboles son similares?. Cuando tienen los mismos datos, pero distribuidos de forma diferente. Cuando tienen la misma estructura, si bien tienen datos distintos. Cuando la suma de sus valores da el mismo resultado. Cuando tienen los mismos datos y tienen la misma estructura. Acerca del recorrido de árboles, cuando el algoritmo de recorrido visita, en primer lugar, el subárbol izquierdo, después, el derecho, y, finalmente, el nodo raíz, el recorrido se llama: Preorden. Inorden. Postorden. Orden completo. Teniendo en cuenta el árbol de la imagen, ¿cuál se corresponde con el recorrido en preorden?. C, U, F, L, M, T, D. C, F, U, D, L, T, M. D, F, C, U, T, L, M. C, F, U, L, T, M, D. Indica el orden en que se tratan los nodos en el recorrido en anchura para el siguiente grafo: D, F, T, C, U, L, M. D, F, C, U, T, L, M. C, F, U, L, M, T, D. C, U, L, M, F, T, D. Cuando en un grafo es necesario considerar el sentido de la relación entre dos nodos (pintando una flecha entre ambos), se trata de un grafo: Bipartito. Simple. Dirigido. Con bucle. Decimos que hay un bucle en un grafo cuando: Hay dos posibles caminos entre dos nodos. Encontramos partes del grafo que están disjuntas. Hay una arista que parte de un nodo y llega al mismo nodo. Existen nodos con el mismo valor. La matriz de adyacencias de un grafo: Contiene tantas filas como nodos y tantas columnas como aristas tiene el grafo. Es cuadrada, con tantas filas y columnas como aristas tiene el grafo. Contiene tantas filas como aristas y tantas columnas como nodos tiene el grafo. Es cuadrada, con tantas filas y columnas como nodos tiene el grafo. Dado el grafo de la página 7, indica cuál es la matriz de adyacencia: | 0 1 1 0 0 0 0 0 | | 1 0 0 1 0 0 1 1 | | 1 0 0 0 1 0 0 0 | | 0 1 0 0 1 0 0 0 | | 0 0 1 1 0 0 0 1 | | 0 0 0 0 0 0 1 0 | | 0 1 0 0 0 1 0 0 | | 0 1 0 0 1 0 0 0 |. | 0 1 1 0 0 0 0 0 | | 1 0 0 1 0 0 1 1 | | 1 0 0 0 1 0 0 0 | | 0 1 0 0 1 0 0 0 | | 0 0 1 1 0 1 0 1 | | 0 0 0 0 0 0 1 0 | | 0 1 0 0 0 1 0 0 | | 0 1 0 1 1 0 0 0 |. | 1 1 1 0 0 0 0 0 | | 1 1 0 1 0 0 1 1 | | 1 0 1 0 1 0 0 0 | | 0 1 0 1 1 0 0 0 | | 0 0 1 1 1 0 0 1 | | 0 0 0 0 0 1 1 0 | | 0 1 0 0 0 1 1 0 | | 0 1 0 1 1 0 0 1 |. | 1 0 0 1 1 1 1 1 | | 0 1 1 0 1 1 0 0 | | 0 1 1 1 0 1 1 1 | | 1 0 1 1 0 1 1 1 | | 1 1 0 0 1 1 1 0 | | 1 1 1 1 1 1 0 1 | | 1 0 1 1 1 0 1 1 | | 1 0 1 0 0 1 1 1 |. La dirección donde guardar o leer el valor deseado en una tabla hash se calcula mediante: La función de dispersión. La semilla. La función de distribución. La función de drenaje. Las dos operaciones básicas sobre una tabla hash son: Insertar un elemento y buscar un elemento. Insertar un elemento y borrar un elemento. Inicializar la tabla y buscar un elemento. Buscar un elemento y borrar un elemento. ¿Cuándo se dice que se ha producido colisión en una tabla hash?. Cuando ya no hay direcciones disponibles por agotamiento de la función de dispersión. Cuando no se encuentra el valor asociado a la clave. Cuando no hay más memoria en el sistema. Cuando a dos claves distintas se les asigna la misma dirección. ¿Cuándo se dice que se ha producido desbordamiento en una tabla hash?. Cuando ya no hay direcciones disponibles por agotamiento de la función de dispersión. Cuando al intentar calcular la dirección de una nueva clave, la función nos da una dirección ya asignada a otra clave. Cuando no se encuentra el valor asociado a la clave. Cuando no hay más memoria en el sistema. ¿A qué se refiere el término clave sinónima respecto a tablas hash?. A aquellas claves diferentes que, tras aplicar la función de dispersión, devuelven el mismo valor. A claves que devuelven datos con el mismo valor, pese a que las direcciones sean distintas. A claves para las que ya no hay direcciones libres por el agotamiento de la función de dispersión empleada. A claves iguales que devuelven el mismo valor tras aplicar funciones de dispersión distintas. En el lenguaje C, los índices de los arrays deben ser: Números enteros. Números enteros o string. String. Números enteros o números de coma flotante. En el lenguaje C, el tamaño de cada array es. Indeterminado, depende de la cantidad de memoria disponible. Fijo, definido en el código. Variable, se amplía según se van insertando elementos. Fijo, definido en el momento de lanzar la ejecución. Señala la frase verdadera respecto al lenguaje C: Es orientado a objetos. Es interpretado. Distingue entre minúsculas y mayúsculas en identificadores. Es un lenguaje de bajo nivel, del mismo tipo que el lenguaje ensamblador. La directiva #include de C permite incluir: Variables al programa para poder hacer uso de ellas. Ficheros adicionales para incorporar funciones y recursos. Constantes al programa para poder hacer uso de ellas. La posibilidad de actuar como lenguaje interpretado. La sentencia de C que permite escribir algo por pantalla es: scanf. clrscr. printf. gotoxy. Los lenguajes imperativos: Se basan en funciones matemáticas y en su composición para realizar cálculos. Emplean comandos para realizar las acciones necesarias indicadas en el programa. Están establecidos sobre el razonamiento formal. Utilizan siempre interacciones entre objetos para el diseño de aplicaciones. Los lenguajes compilados son los que: Se ejecutan línea a línea sin necesidad de haberse compilado. Se distribuyen en archivos ejecutados por una máquina virtual. Necesitan generar un archivo ejecutable para que los programas se puedan lanzar. Son específicos de una plataforma en concreto. Los lenguajes interpretados son los que: Se compilan y sus programas se distribuyen con archivos ejecutables. Se ejecutan línea a línea sin necesidad de haberse compilado completamente. Se distribuyen en archivos ejecutados por una máquina virtual. Son específicos de una plataforma en concreto. Los lenguajes de alto nivel son los que: Tienen mayor número de librerías y clases predefinidas. Están más próximos en su sintaxis al lenguaje natural. Ofrecen programación orientada a objetos. Están orientados a aplicaciones en la nube o internet. ¿Cuáles de los siguientes tipos de datos no son datos compuestos?. Vectores. Arrays o matrices. Subrangos. Estructuras. La fase de codificación de un programa consiste en traducir a código fuente: El diseño. Los requisitos del cliente. La especificación funcional. Las pruebas. La representación NS (Nassi-Shneiderman) de algoritmos se basa en: Pseudocódigo. Cajas. Diagramas de flujo. Diagramas de bolas. Para reservar memoria en lenguaje C, hay que emplear: calloc. malloc. malloc o calloc. realloc. ¿La función «calloc» necesita algún parámetro?. Sí, el puntero que quedará apuntando a la zona de memoria reservada. Sí, el tamaño de la memoria que debe reservar. No, no necesita ninguno. Sí, el número de posiciones que se ha de reservar y el tamaño que tienen. Para liberar memoria en lenguaje C, hay que usar la función: calloc. malloc. free. realloc. Para poder manejar ficheros en lenguaje C, ¿cómo debe declararse la variable que gestiona el acceso al fichero?: De tipo FILE. De tipo char[]. De tipo puntero a FILE. De tipo puntero a char. Para realizar la apertura de un fichero en lenguaje C, se ha de emplear la función: fopen. open. fileopen. openfile. La función «feof» en lenguaje C: Indica si ha habido un error en el tratamiento del fichero. Indica si se ha alcanzado el final del fichero. Elimina el indicador de error del fichero tras haber sido tratado. Renombra el fichero. Para trabajar con cadenas de caracteres en ficheros haciendo uso de lenguaje C y la librería stdio, conviene emplear las funciones: fprintf y fscanf. fgets y fputs. fprintf, fscanf, fgets y fputs. fread y fwrite. Si en un código cualquiera de lenguaje C, se sustituye la sentencia printf("Valor actual: %d", x++); por printf("Valor actual: %d", ++x);. El resultado por pantalla es el mismo y el valor con que queda la variable x al final del programa es igualmente igual. El resultado por pantalla es el mismo, pero el valor con que queda la variable x al final del programa es diferente. El resultado por pantalla es diferente y el valor con que queda la variable x al final del programa es igual. Tanto el resultado por pantalla como el valor con que queda la variable x al final del programa son iguales. En lenguaje C el operador «!=» se utiliza para: Comprobar que dos valores son distintos. Comprobar que dos valores son iguales. Calcular el factorial de un número. Asignar la dirección de memoria a un puntero. Los lenguajes lógicos: Se basan en funciones matemáticas y en su composición para realizar cálculos. Emplean comandos para realizar las acciones necesarias indicadas en el programa. Están establecidos sobre el razonamiento formal. Utilizan interacciones entre objetos para el diseño de aplicaciones. En el ciclo de vida del software expuesto en la UD 1, la fase en la cual se definen las estructuras de datos y el flujo lógico detallado mediante herramientas como el pseudocódigo se denomina: Análisis de requisitos. Diseño del algoritmo. Codificación o implementación. Pruebas y detección de errores. Al analizar algoritmos compuestos por varias estructuras condicionales o secuenciales independientes (una detrás de otra), ¿qué regla de la notación asintótica O se aplica para calcular la complejidad total?. La regla del producto (se multiplican las complejidades). La regla del caso crítico (se descartan las condicionales). La regla de la suma o del máximo (domina el bloque con mayor orden de crecimiento). La regla de la constante (el resultado se reduce a una unidad temporal). Si declaramos en lenguaje C un puntero de tipo entero int *p; y una variable int x = 5;, ¿cuál es la forma correcta de asignar la dirección de memoria de x al puntero p?. p = *x;. *p = &x;. p = &x;. &p = x;. ¿Qué variante de la estructura tipo lista se caracteriza por tener un puntero en su último nodo que, en lugar de apuntar a NULL, apunta directamente al primer nodo (cabeza) de la lista?. Lista doblemente enlazada. Lista simplemente enlazada. Lista circular. Lista densa. En la teoría de árboles generales (UD 4), si un nodo A tiene un enlace directo hacia un nodo B, se establece formalmente que A es el ________ de B, y que el grado de un nodo se mide por ________: Hijo / su nivel de profundidad. Padre / el número de hijos directos que posee. Sucesor / la distancia matemática a la raíz. Hermano / el número total de nodos del subárbol. Al realizar la operación de inserción de una nueva clave en un Árbol Binario de Búsqueda (ABB), ¿en qué posición física del árbol terminará ubicándose estructuralmente dicho elemento?. Siempre como la nueva raíz del árbol. Como un nodo intermedio, desplazando a sus hijos. Siempre como un nuevo nodo hoja. En el primer lugar disponible del recorrido en anchura. Una matriz de incidencia para representar un grafo es una matriz de dimensiones $V \times E$ (vértices por aristas) donde cada columna representa una arista. Si el grafo es no dirigido, ¿cuántos valores "1" habrá exactamente en cada columna?. Tantos como aristas tenga el grafo. Solamente uno, en la fila del nodo origen. Exactamente dos, indicando los dos vértices que conecta dicha arista. Depende del grado del vértice del vecindario. Si necesitamos implementar un algoritmo de recorrido en un grafo que explore todos los nodos vecinos directos de un nivel antes de pasar a los nodos del siguiente nivel de distancia (recorrido por niveles), utilizaremos: El algoritmo de recorrido en profundidad (DFS). El recorrido en Preorden recursivo. El algoritmo de recorrido en anchura (BFS). Una búsqueda de claves sinónimas. Al evaluar la calidad de una función de dispersión (hash) en la UD 6, el concepto de "uniformidad" implica que: La función debe generar siempre números pares para optimizar los índices. La función debe distribuir las claves de entrada de manera equitativa a lo largo de todas las posiciones de la tabla, minimizando las colisiones. La función debe devolver el mismo valor para cualquier tipo de clave string. La tabla debe mantener un factor de densidad superior al 100%. Cuando dos funciones distintas están diseñadas de modo que la Función A incluye en su código una llamada a la Función B, y a su vez la Función B incluye una llamada a la Función A, estamos ante un caso de: Recursividad simple. Recursividad anidada. Iteración compuesta. Recursividad mutua o cruzada. ¿cómo se define formalmente la "Complejidad Espacial" de un algoritmo?. El número de líneas de código que ocupa el algoritmo en el disco duro. La cantidad de memoria RAM que requiere el programa durante su ejecución en función del tamaño de los datos de entrada. El tiempo que tarda el procesador en asignar espacio físico a los arrays dinámicos. El número total de variables globales declaradas antes de la función principal main(). al explicar el funcionamiento interno de las estructuras secuenciales, ¿qué significa exactamente el concepto de "Aritmética de Punteros"?. El uso de operadores lógicos como AND y OR para evaluar direcciones binarias. La capacidad de realizar operaciones de suma y resta sobre variables puntero para avanzar o retroceder posiciones en la memoria basándose en el tamaño del tipo de dato. Una librería de C especializada en multiplicar matrices dinámicas de gran tamaño. El proceso de liberar memoria mediante la función free() siguiendo un orden matemático inverso. ¿cómo se define formalmente la "Altura o Profundidad" de un árbol?. El número total de nodos hoja que contiene la estructura. El grado máximo que posee el nodo raíz del árbol. El nivel máximo de sus nodos, lo que equivale a la longitud del camino más largo desde la raíz hasta una hoja. La cantidad de memoria dinámica en bytes requerida para almacenar los nodos internos. ¿cuál es la definición exacta de un "Grafo Valorar, Ponderado o Etiquetado"?. Un grafo que tiene el mismo número de vértices que de aristas. Un grafo dirigido cuyas flechas solo apuntan en una única dirección ascendente. Un grafo donde cada arista tiene asociado un número o coste (peso) que representa una distancia, tiempo o precio entre los dos nodos. Un grafo que ha sido verificado por el compilador de C y no genera errores de asignación. ¿qué es el "Factor de Densidad" o "Factor de Carga" (lambda)?. La velocidad en milisegundos que tarda la función de dispersión en procesar un string. La relación matemática entre el número de elementos guardados y el tamaño total de la tabla (N / M). El número máximo de colisiones consecutivas permitidas antes de redimensionar la memoria. El tamaño en bytes asignado a cada clave sinónima dentro del direccionamiento cerrado. ¿cuál es la definición formal de "Caso Base"?. La función principal main() desde donde se invoca por primera vez el algoritmo. El estado inicial de las variables globales antes de entrar en un bucle iterativo. El componente de la función recursiva que se resuelve directamente sin necesidad de realizar más llamadas recursivas, actuando como condición de parada. La cantidad de memoria asignada por malloc() para la primera llamada de la función. ¿qué es un algoritmo o función recursiva?. Un algoritmo que utiliza obligatoriamente bucles for y while de forma anidada para resolver un problema. Una función que se define en términos de sí misma, es decir, que incluye dentro de su código una o más llamadas directas o indirectas a sí misma. Un método de gestión de memoria dinámica que duplica el espacio de los arrays en tiempo de ejecución. Un error del compilador que ocurre al usar identificadores con mayúsculas y minúsculas de forma mezclada. ¿cuál es la función y el objetivo del "Caso Base"?. Almacenar los resultados intermedios en el disco duro mediante la función fprintf. Indicarle al sistema cuántos bytes de memoria dinámica debe reservar con malloc. Resolver directamente una fracción mínima del problema sin realizar más llamadas recursivas, actuando como la condición de parada esencial. Forzar al procesador a saltar a la función principal main(). Si un algoritmo recursivo carece de un Caso Base o la condición de parada nunca llega a cumplirse, ¿qué fallo crítico se produce en la memoria de la computadora?. Pérdida de precisión en las variables de tipo flotante o decimal (float). Un desbordamiento de la pila (Stack Overflow) debido a la acumulación infinita de llamadas a funciones en la memoria del sistema. Un desbordamiento de la capacidad de almacenamiento de las Tablas Hash (Hash Overflow). La eliminación automática de los archivos abiertos con la función fopen. Cuando evaluamos el diseño de algoritmos, ¿en qué consiste la "Recursividad Mutua o Cruzada"?. En una función que se llama a sí misma dos veces dentro de la misma línea de código (como en la serie de Fibonacci). En un bucle iterativo que se transforma automáticamente en código binario compilado. En un escenario donde una Función A llama a una Función B, y a su vez, la Función B incluye en su lógica una llamada de regreso a la Función A. En el uso de punteros dobles para acceder a las direcciones de memoria de variables compuestas. Comparando la eficiencia de los enfoques iterativos (bucles tradicionales) frente a los recursivos según el temario, ¿cuál es una desventaja notable de la recursividad?. Comparando la eficiencia de los enfoques iterativos (bucles tradicionales) frente a los recursivos según el temario, ¿cuál es una desventaja notable de la recursividad?. La recursividad consume más memoria y recursos de CPU debido al coste de gestionar la pila de llamadas para cada ejecución interna. Las funciones recursivas no permiten el uso de tipos de datos compuestos como matrices o estructuras. El lenguaje C no soporta nativamente la recursividad y requiere librerías externas especiales. |




