Archivo de la etiqueta: Algoritmos

Implementación de una Lista Doblemente Enlazada en C

Introducción

Este código implementa una lista doblemente enlazada en C, permitiendo la inserción, borrado y otras operaciones como la verificación de palíndromos. Incluye funciones para mostrar la lista en orden ascendente y descendente.

Código

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h> //Para usar getch() y system("pause")
#include <string.h> //Para usar strlen()

#define ASCENDENTE 1
#define DESCENDENTE 0
#define TRUE 1

typedef  Seguir leyendo “Implementación de una Lista Doblemente Enlazada en C” »

Optimización de Procesos: Planificación y Gestión de Memoria

Planificación de Procesos

La planificación es la técnica que indica qué procesos deben ejecutarse. Con los algoritmos de planificación se decide qué proceso se ejecuta y por qué. Cuando hacemos doble clic en un proceso para lanzarlo, el sistema operativo lo introduce en planificación y ahí empieza el proceso.

Instrucciones y Procesamiento

¿Cuántas instrucciones puede procesar en un instante de tiempo la UCP?

Una instrucción, a no ser que el ordenador sea multiproceso/multiprocesador o tenga Seguir leyendo “Optimización de Procesos: Planificación y Gestión de Memoria” »

Algoritmos de Reemplazo de Páginas: FIFO, LFU, MFU y Segunda Oportunidad

Algoritmos de Reemplazo de Páginas

1. FIFO (First-In, First-Out)

Descripción:

El algoritmo FIFO reemplaza la página que llegó primero a la memoria. Es simple y fácil de implementar, ya que solo necesita recordar el orden de llegada.

Función:

Cuando llega una nueva página y la memoria está llena, FIFO reemplaza la página que ha estado allí más tiempo, sin importar si se ha usado recientemente.

Ejemplo de Implementación:

Secuencia de referencias: [3, 2, 4, 1, 3, 2, 5]
Número de marcos: 3

PasoReferenciaMarcos Seguir leyendo “Algoritmos de Reemplazo de Páginas: FIFO, LFU, MFU y Segunda Oportunidad” »

Funciones Esenciales para Árboles Binarios en Java

// Ejercicio 1
public static int numNodos(ArbolBinario arbol) {
if (arbol.esVacio())
return 0;
else
return 1 + numNodos(arbol.hijoIzq()) + numNodos(arbol.hijoDer());
}

// Ejercicio 2
public static int numHojas(ArbolBinario arbol) {

if (arbol.esVacio())
return 0;
else

if (arbol.hijoIzq().esVacio() && arbol.hijoDer().esVacio())
return 1;
else
return numHojas(arbol.hijoIzq()) + numHojas(arbol.hijoDer());
}
// Ejercicio 3
public static boolean esDegenerado(ArbolBinario arbol) {
if (arbol.esVacio( Seguir leyendo “Funciones Esenciales para Árboles Binarios en Java” »

Introducción a la Informática: Conceptos Fundamentales

Introducción a la Informática

Conceptos Básicos

Algoritmo

Los algoritmos son procedimientos específicos que señalan paso a paso la solución de un problema y que garantizan el logro de una solución siempre y cuando sean relevantes al problema.

Dato

Es toda aquella representación de una entidad y que es susceptible de tratamiento ya sea en un programa o proceso informático. Por ejemplo, nombre, apellido y edad son datos de una persona (entidad). En otras palabras, un dato es la representación Seguir leyendo “Introducción a la Informática: Conceptos Fundamentales” »

Tipos de Datos y Estructuras en Programación: Una Guía Completa

Variables Compuestas

Son variables con estructura interna, es decir, con partes que podemos diferenciar. En muchas de ellas hay que detallar alguna parte de su definición (su tamaño, el número o tamaño de las partes, etc.). Las más frecuentes son:

Cadena (String)

Conjunto de 0 a 255 caracteres. El primer byte contiene el número de caracteres y los siguientes cada uno un carácter.

Registro (Record)

Variable compuesta por la unión en una única estructura de más de una variable; cada una de ellas Seguir leyendo “Tipos de Datos y Estructuras en Programación: Una Guía Completa” »

Enrutamiento y Control de Congestión en Redes

Enrutamiento

Características

Corrección, simplicidad, robustez, estabilidad, equidad y optimalidad.

Datagramas vs. Circuitos Virtuales (CV)

Con datagramas, la decisión de enrutamiento se toma en cada paquete que llega. Con CV, puede tomarse en cada establecimiento de un CV nuevo.

Algoritmos de Enrutamiento

Algoritmos No Adaptativos (Estáticos)

No se basan en medir o estimar el tráfico, se determinan anticipadamente.

Algoritmos Adaptativos

Cambian las rutas de encaminamiento para reflejar cambios de Seguir leyendo “Enrutamiento y Control de Congestión en Redes” »

Ejercicios de Estructuras de Datos

Inserción Binaria

1) En el Código 1 se muestra la implementación de la inserción binaria. En el lugar indicado como (1), debe incluirse la operación:
A) i=R
B) a[m] <= x
C) a[m] >= x
D) Ninguna de las anteriores

2) En el Código 1 se muestra la implementación de la inserción binaria. En el lugar indicado como (2), debe incluirse la operación:
A) j:=j+1;
B) j:=j-1;
C) a[j]:=a[j+1];
D) Ninguna de las anteriores

3) En el Código 1 se muestra la implementación de la inserción binaria. En el lugar Seguir leyendo “Ejercicios de Estructuras de Datos” »

Análisis y Diseño de Algoritmos: Conceptos Fundamentales

Eficiencia de algoritmos

Se centra en el análisis de bucles, la eficiencia es función del número de instrucciones que contiene. (Depende de la velocidad de las computadoras).

– Implica diversos tipos de memoria:

* principal, caché, flash, archivos, HDD, etc.

——La eficiencia como factor espacio-tiempo debe estar relacionada con la buena calidad, el funcionamiento y la facilidad de mantener un programa————

Formato general:  

F(n)=eficiencia

Se examina como una función del numero de elementos Seguir leyendo “Análisis y Diseño de Algoritmos: Conceptos Fundamentales” »

Modelos Matemáticos: Tipos, Propiedades y Aplicaciones

Modelos Matemáticos

Un modelo matemático es una representación simplificada, a través de ecuaciones, funciones o fórmulas matemáticas, de la relación entre dos o más variables. Los modelos matemáticos son utilizados para analizar la relación entre dos o más variables.

Elementos básicos de un modelo matemático: