Tema: Algoritmos Backtracking.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Tema: Algoritmos Backtracking."

Transcripción

1 Programación IV. Guía 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Algoritmos Backtracking. Objetivos Específicos Comprender el funcionamiento de un Algoritmo Backtracking. Identificar problemas que pueden resolverse con Algoritmos Bactracking. Codificar algoritmos backtracking en C#. Materiales y Equipo Guía Número 12. Computadora con programa Microsoft Visual C#. Introducción Teórica Hay problemas para los que no se conoce un algoritmo para su resolución o al menos, no cuentan con un algoritmo eficiente para calcular su solución. En estos casos, la única posibilidad es una exploración directa de todas las posibilidades. La técnica Backtracking es un método de búsqueda de soluciones exhaustiva sobre grafos dirigidos acíclicos, el cual se acelera mediante poda de ramas poco prometedoras. Es decir: Se representan todas las posibilidades en un árbol. Se resuelve buscando la solución por el árbol (de una determinada manera). Hay zonas que se evitan por no contener soluciones (poda). La solución del problema se representa en una lista ordenada (X 1, X 2,, X n ) (no llenando necesariamente todas las componentes). Cada Xi se escoge de un conjunto de candidatos. A cada lista se le llama estado. Se trata de buscar estados solución del problema.

2 2 Programación IV. Guía 12 Tiene condiciones de parada: a) cuando se alcanza un estado solución b) cuando se alcanzan todos los estados solución En su forma básica, la idea de backtracking se asemeja a un recorrido en profundidad dentro de un grafo dirigido. El grafo en cuestión suele ser un árbol, o por lo menos no contiene ciclos. Sea cual sea su estructura, existe sólo implícitamente. El objetivo del recorrido es encontrar soluciones para algún problema. El recorrido tiene éxito si, procediendo de esta forma, se puede definir por completo una solución. En este caso el algoritmo puede bien detenerse (si lo único que se necesita es una solución del problema) o bien seguir buscando soluciones alternativas (si deseamos examinarlas todas). Por otra parte, el recorrido no tiene éxito si en alguna etapa la solución parcial construida hasta el momento no se puede completar. En tal caso, el recorrido vuelve atrás exactamente igual que en un recorrido en profundidad, eliminando sobre la marcha los elementos que se hubieran añadido en cada fase. Cuando vuelve a un nodo que tiene uno o más vecinos sin explorar, prosigue el recorrido de una solución. Los problemas que deben satisfacer un determinado tipo de restricciones son problemas completos, donde el orden de los elementos de la solución no importa. Estos problemas consisten en un conjunto (o lista) de variables a la que a cada una se le debe asignar un valor sujeto a las restricciones del problema. La técnica va creando todas las posibles combinaciones de elementos para obtener una solución. Su principal virtud es que en la mayoría de las implementaciones se puede evitar combinaciones, estableciendo funciones de acotación (o poda) reduciendo el tiempo de ejecución. La técnica backtracking (vuelta atrás) está muy relacionada con la búsqueda binaria. Diseño e implementación Backtracking. Esencialmente, la idea es encontrar la mejor combinación posible en un momento determinado, por eso, se dice que este tipo de algoritmo es una búsqueda en profundidad. Normalmente, se suele implementar este tipo de algoritmos como un procedimiento recursivo. La diferencia con la búsqueda en profundidad es que se suelen diseñar funciones de cota, de forma que no se generen algunos estados si no van a conducir a ninguna solución, o a una

3 Programación IV. Guía 12 3 solución peor de la que ya se tiene. De esta forma se ahorra espacio en memoria y tiempo de ejecución. Al diseñar un algoritmo backtraking debemos considerar los siguientes elementos: a) Representación de la solución en una lista ordenada (X 1, X 2,, X n ). b) Una función objetivo para determinar si la lista a analizar es una solución. c) Unas restricciones a los candidatos para rellenar la lista: Implícitas del problema. Valores que puede tomar cada valor Xi Explícitas o externas al problema. Por ejemplo, problema de la mochila, el peso no debe superar la capacidad de la mochila. d) Una función de poda para eliminar partes del árbol de búsqueda e) Organización del problema en un árbol de búsqueda. f) Construir la solución al problema en distintas etapas. g) En cada paso se elige un candidato y se añade a la solución, y se avanza en la solución parcial. h) Si no es posible continuar en la construcción hacia una solución completa, se abandona ésta y la última componente se cambia por otro valor. i) Si no quedan más valores por probar, se retrocede al candidato anterior, se desecha, y se selecciona otro candidato. Para diseñar un algoritmo con la técnica backtracking, debemos seguir los siguientes pasos: 1. Buscar una representación del tipo (X 1, X 2,, X n ) para las soluciones del problema. 2. Identificar las restricciones implícitas y explícitas del problema. 3. Establecer la organización del árbol que define los diferentes estados en los que se encuentra una (sub)solución. 4. Definir una función solución para determinar si una lista ordenada es solución 5. Definir una función de poda B k (X 1, X 2,, X k ) para eliminar ramas del árbol que puedan derivar en soluciones poco deseables o inadecuadas. 6. Aplicar la estructura genérica de un algoritmo backtracking Estructura genérica para un algoritmo backtracking. Solución [i] S i para i = 1, 2,..., n

4 4 Programación IV. Guía 12 funcion BACKTRACKING_REC ( k, solucion[n]) para j S i si ( PODA (k, j, solucion) == true ) hacer sol[k] = j si ( TEST_SOL (solucion) == true ) hacer devolver solucion si ( k < n ) BACKTRACKING_REC(k+1,solucion[n]) La eficiencia en un algoritmo backtracking suele ser de tipo exponencial a n. La eficiencia depende de: la ramificación del árbol del tiempo de ejecución de la función solución del tiempo de ejecución de la función poda del ahorro de utilizar la poda Las buenas funciones de poda no son muy eficientes. Entre los problemas típicos que se pueden resolver fácilmente con las técnicas de vuelta atrás tenemos: la vuelta del caballo, sudoku, laberintos, sopa de letras, problema de las parejas, formación de una palabra con n cubos, problema del dominó, problema del reparto del botín, coloreado de grafos, problema del viajante sobre grafos dirigidos; entre otros. Procedimiento Ejemplo 1. Problema del Sudoku. El Sudoku es un rompecabezas matemático de colocación que se popularizó en Japón en 1986 y se dió a conocer en el ámbito internacional en El objetivo es rellenar una cuadrícula de 9 9 celdas dividida en subcuadrículas de 3 3 con las cifras del 1 al 9 partiendo de algunos números ya dispuestos en algunas de las celdas. No se debe repetir ninguna cifra en una misma fila, columna o subcuadrícula. Visualización de Sudoku:

5 Programación IV. Guía 12 5 A continuación, implementaremos el algoritmo backtracking para resolver el problema del Sudoku en un proyecto de Visual C#. 1. Crear un proyecto de consola, se sugiere llamarlo Algoritmo Backtracking. 2. Cambiamos el nombre del Program.cs a Sudoku.cs. 3. Agregar el siguiente código a la clase Sudoku using System; using System.Collections.Generic; using System.Text; namespace Algoritmo_Bactracking class Sudoku // Declaración de variable que definirá el tamaño del tablero public static int Dimension = 9; // Función para imprimir el tablero del Sudoku public static void imprimir(int[, ] tablero) for (int i = 0; i < Dimension; i++) if (i % 3 == 0) Console.WriteLine( ); for (int j = 0; j < Dimension; j++) if (j % 3 == 0) Console.Write(" "); Console.ForegroundColor = ConsoleColor.Yellow; // cambia el color de la Console.Write(tablero[i, j]); // fuente Console.WriteLine( );

6 6 Programación IV. Guía 12 //Esta función resuelve el Sudoku public static Boolean resolver(int[, ] tablero) for (int i = 0; i < Dimension; i++) for (int j = 0; j < Dimension; j++) if (tablero[i, j]!= 0) continue; else //Calcula los elementos de la solución, para ello revisa si es posible insertar //el valor k en las coordenadas correspondientes for (int k = 1; k <= 9; k++) if (esposibleinsertar(tablero, i, j, k)) //Si el valor de K es consistente, entonces establece en la posición el //valor de K, y luego se hace una llamada recursiva tablero[i, j] = k; Boolean b = resolver(tablero); if (b) return true; tablero[i, j] = 0; // Cuando se termina de recorrer el tablero y no se ha retornado el valor de // verdadero, entonces, el tablero no tiene solución return false; Console.WriteLine( ); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Solucion encontrada: "); imprimir(tablero); return true; // Función para verificar si se añade un valor al tablero, el tablero siga siendo // consistente, es decir, que el valor no se repita en la fila o columna public static Boolean esposibleinsertar(int [, ] tablero, int i, int j, int valor) //Primeramente, se verifica que el valor no se encuentre en la misma fila for (int a = 0; a < Dimension; a++) if (a!= i && tablero[a, j] == valor) return false;

7 Programación IV. Guía 12 7 //Luego, se verifica que el valor no se encuentre en la misma columna for (int a = 0; a < Dimension; a++) if (a!= j && tablero[i, a] == valor) return false; //Se verifica que el valor no se encuentre en la misma cuadricula int y = (i / 3) * 3; int x = (j / 3) * 3; for (int a = 0; a < Dimension / 3; a++) for (int b = 0; b < Dimension / 3; b++) if (a!= i && b!= j && tablero[y + a, x + b] == valor) return false; return true; // Función principal del programa static void Main(string[ ] args) // Generamos un tablero inicial de Sudoku int[, ] tablero = new int [, ] 0,7,0, 0,0,0, 0,8,0, 0,5,8, 6,0,0, 0,0,1, 0,0,3, 1,4,0, 0,0,0, ; 9,0,6, 0,5,0, 3,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,5, 0,2,0, 1,0,7, 0,0,0, 0,6,5, 7,0,0, 3,0,0, 0,0,1, 9,2,0, 0,4,0, 0,0,0, 0,1,0, Console.WriteLine("El Juego a resolver es: "); imprimir(tablero); if(!resolver(tablero)) Console.WriteLine("El Sudoku no tiene solución"); Console.WriteLine( ); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("Presione la tecla Enter para salir"); Console.Read( );

8 8 Programación IV. Guía 12 Análisis de resultados Ejercicio 1. Realice un programa en C# para implementar la solución al problema del Sudoku en una interfaz gráfica de formulario (Windows Forms). La aplicación debe permitir realizar las siguientes operaciones: Generar nuevos juegos (distintos cada vez que se seleccione esta opción) de manera automática. Generar nuevos juegos (cargar un tablero en blanco, para que el usuario coloque la condición inicial del juego). Comprobar solución (debe verificarse la solución realizada por el usuario). Resolver juego actual. En las imágenes se muestran ejemplos de cómo podría lucir su aplicación:

9 Programación IV. Guía 12 9 Investigación Complementaria Para la siguiente semana: Investigue el problema de la vuelta del caballo (variante del juego de ajedrez), y realice su solución con algoritmo backtracking. La implementación debe realizarse con Visual C# en una interfaz gráfica de formulario (Windows Forms). La solución debe permitir realizar las siguientes acciones: Permitir al usuario indicar el tamaño del tablero. Permitir al usuario colocar el caballo en la posición inicial que desee. Los movimientos del caballo deben observarse en pantalla, es decir, que debe quedar en pantalla, las distintas posiciones que ya ocupó el caballo (es decir, que debe existir una simulación de los movimientos del caballo. El programa indicará si existe solución o no existe solución.

10 10 Programación IV. Guía 12 Guía 12: Algoritmos Backtracking Hoja de cotejo: 12 Alumno: Máquina No: Docente: GL: Fecha: EVALUACIÓN % Nota CONOCIMIENTO Del 20 al 30% Conocimiento deficiente de los fundamentos teóricos Conocimiento y explicación incompleta de los fundamentos teóricos Conocimiento completo y explicación clara de los fundamentos teóricos APLICACIÓN DEL CONOCIMIENTO Del 40% al 60% ACTITUD Del 15% al 30% No tiene actitud proactiva. Actitud propositiva y con propuestas no aplicables al contenido de la guía. Tiene actitud proactiva y sus propuestas son concretas. TOTAL 100%

Tema: Algoritmos para la ruta más corta en un Grafo.

Tema: Algoritmos para la ruta más corta en un Grafo. Programación IV. Guía 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Algoritmos para la ruta más corta en un Grafo. Objetivos Específicos Definir el concepto de camino

Más detalles

Tema: Grafos en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Programación IV. Guía 7

Tema: Grafos en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Programación IV. Guía 7 Programación IV. Guía 7 1 Tema: Grafos en C#. Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Objetivos Específicos Definir el concepto de Grafo. A partir de una clase agregar la

Más detalles

Tema: Métodos de Ordenamiento. Parte 1.

Tema: Métodos de Ordenamiento. Parte 1. Programación IV. Guía 2. 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Métodos de Ordenamiento. Parte 1. Objetivos Específicos Identificar la estructura de algunos algoritmos

Más detalles

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Búsqueda exhaustiva

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Búsqueda exhaustiva Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Búsqueda exhaustiva Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: [email protected] Transparencias preparadas

Más detalles

Tema: Plantillas en C++.

Tema: Plantillas en C++. Programación II. Guía 11 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Plantillas en C++. Objetivos Específicos Conocer los tipos de plantillas Utilizar las plantillas de

Más detalles

Guia#9: Punteros en C#.

Guia#9: Punteros en C#. Guia#9: Punteros en C#. Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Objetivos. Conocer el concepto de punteros y su aplicación en C#. Desarrollar aplicaciones en

Más detalles

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO Introducción Un árbol es una estructura no lineal en la que cada nodo puede apuntar a uno o varios nodos. A B C D E F G H I J K Clasificación con respecto a su relación: Nodo hijo: cualquiera de los nodos

Más detalles

Tema: Tipos Abstractos de Datos (TAD s) en C#.

Tema: Tipos Abstractos de Datos (TAD s) en C#. Programación II. Guía No. 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Tipos Abstractos de Datos (TAD s) en C#. Objetivos Comprender el concepto Tipo Abstracto de Datos

Más detalles

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Clase adicional 9 Temas Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Listas enlazadas Previamente en este curso, ya habrá trabajado con dos de las estructuras de datos

Más detalles

Tema: Estructuras de Repetición en C# [For].

Tema: Estructuras de Repetición en C# [For]. Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación Estructurada Objetivos Tema: Estructuras de Repetición en C# [For]. Utilizar las estructuras de repetición para ejecutar

Más detalles

Tema: Introducción al IDE de Microsoft Visual C#.

Tema: Introducción al IDE de Microsoft Visual C#. Tema: Introducción al IDE de Microsoft Visual C#. Objetivos: El propósito de este tema es que el alumno se familiarice con el entorno de desarrollo de Visual C# Express mientras crea el formulario más

Más detalles

Tema: Autómatas de Estado Finitos

Tema: Autómatas de Estado Finitos Compiladores. Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Autómatas de Estado Finitos Contenido En esta guía se aborda la aplicación de los autómatas en el campo de

Más detalles

Taller de Backtracking

Taller de Backtracking Taller de Backtracking Laboratorio de Algoritmos y Estructuras de Datos III Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 8 de Abril de 2011 1 / 15 Menú

Más detalles

Tema: Análisis Léxico

Tema: Análisis Léxico Compiladores. Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Léxico Contenido En esta guía se dará a conocer la manera en que un compilador realiza el análisis

Más detalles

Tema: Estructuras de Selección en C#.

Tema: Estructuras de Selección en C#. Programación I, Guía 4 1 Tema: Estructuras de Selección en C#. Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Objetivos Utilizar las instrucciones de selección if e

Más detalles

Tema: Análisis Sintáctico

Tema: Análisis Sintáctico Compiladores. Guía 3 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Sintáctico Contenido En esta guía se abordarán los conceptos pertenecientes al componente de análisis

Más detalles

Tema: Estructuras de Repetición en C# [While y Dowhile].

Tema: Estructuras de Repetición en C# [While y Dowhile]. Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación Estructurada Tema: Estructuras de Repetición en C# [While y Dowhile]. Objetivos Utilizar las estructuras de repetición para

Más detalles

Estructura de datos y de la información Boletín de problemas - Tema 10

Estructura de datos y de la información Boletín de problemas - Tema 10 Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico

Más detalles

Estratégias generales de análisis y diseño de algorítmos

Estratégias generales de análisis y diseño de algorítmos Estratégias generales de análisis y diseño de algorítmos comp-420 Ayudantes Hugo Eduardo Dueñas [email protected] (ordinaria) Alberto José Ramirez Valadez [email protected] (ordinaria) Mandar tareas (programas)

Más detalles

Tema: Repaso sobre el uso del IDE de Microsoft Visual C#.

Tema: Repaso sobre el uso del IDE de Microsoft Visual C#. Programación IV. Guía No. 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Repaso sobre el uso del IDE de Microsoft Visual C#. Objetivos Específicos Identificar los principales

Más detalles

Procesadores de lenguaje Tema 5 Comprobación de tipos

Procesadores de lenguaje Tema 5 Comprobación de tipos Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,

Más detalles

Tema: Tipos de datos y conversiones

Tema: Tipos de datos y conversiones Tema: Tipos de datos y conversiones Objetivos: El propósito de este tema es que el alumno se familiarice con el entorno de desarrollo de Visual C# Express y realice diversos programas en el entorno Consola,

Más detalles

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios 9..En un problema de backtracking estamos interesados en almacenar de forma explícita el árbol recorrido por el algoritmo. De cada nodo del árbol sólo necesitamos saber un número, que indica el orden en

Más detalles

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Estructuras de decisión PRÁCTICA NÚM. [ 5 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje

Más detalles

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. 1 Programación II, Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. Objetivos Utilizar la sintaxis de las funciones

Más detalles

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda Árboles Árboles Mario Medina C. [email protected] Árboles Estructura recursiva Árbol vacío 0 o más árboles hijos Altura ilimitada Árbol binario A lo más dos hijos: izquierdo y derecho Árboles Árboles

Más detalles

Definición de una base de datos. Un manejador de base de datos es un programa que permite administrar y organizar una serie de datos.

Definición de una base de datos. Un manejador de base de datos es un programa que permite administrar y organizar una serie de datos. Definición de una base de datos. Un manejador de base de datos es un programa que permite administrar y organizar una serie de datos. Utilidad de una base de datos Ahora bien, en las bases de datos electrónicas

Más detalles

Tema1:Controles de Programas estructurados. Entrada y salida de datos ENTRADA Y SALIDA DE DATOS ENTRADA Y SALIDA

Tema1:Controles de Programas estructurados. Entrada y salida de datos ENTRADA Y SALIDA DE DATOS ENTRADA Y SALIDA Tema1:Controles de Programas estructuras 1)Estructuras Hacer mientras (Do While), 2)Ejercicios. Estructuras Mientras (Repeat), 3)Ejercicios. Estructuras Desde/Para (For), 4)Ejercicios. Entrada y salida

Más detalles

Práctica 1 Arreglos n-dimensionales y operaciones con bits PRÁCTICA I

Práctica 1 Arreglos n-dimensionales y operaciones con bits PRÁCTICA I PRÁCTICA I Ejercicio 1.1 Desarrollar un programa que permita registrar los datos de un campeonato de fútbol para N equipos (valor constante). Por cada equipo debe almacenar: El nombre, la cantidad de partidos

Más detalles

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Práctico 4 Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Clasificación de ejercicios: (I) Imprescindibles (R) Recomendados (C) Complementarios Árboles balanceados (AVL)

Más detalles

Complejidad computacional (Análisis de Algoritmos)

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

Más detalles

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

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

Más detalles

Tema: Sobrecarga. Objetivos. Materiales y Equipo. Introducción Teórica. Programación II. Guía No. 7

Tema: Sobrecarga. Objetivos. Materiales y Equipo. Introducción Teórica. Programación II. Guía No. 7 Programación II. Guía No. 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Sobrecarga. Objetivos Describir como redefinir (sobrecargar) operadores para que funcionen con

Más detalles

Tema: Punteros a Objetos. Puntero this.

Tema: Punteros a Objetos. Puntero this. Programación II. Guía 6 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Punteros a Objetos. Puntero this. Objetivos Manejar objetos por medio de punteros. Utilizar el puntero

Más detalles

Funciones: Pasos por Referencia Recursividad

Funciones: Pasos por Referencia Recursividad Funciones: Pasos por Referencia Recursividad Fundamentos de Programación Fundamentos de Programación I Parámetros por referencia Con la instrucción return sólo se puede devolver un valor calculado. A veces

Más detalles

Conexión SQL Server y C# (Consola)

Conexión SQL Server y C# (Consola) Conexión SQL Server y C# (Consola) Objetivo: Manejar bases de datos usando SQL Server, creando tablas dentro una base de datos y esto a su vez enlazarlo a una aplicación de C#, haciendo uso del método

Más detalles

Tema: Funciones, Procedimientos y Recursividad en C#.

Tema: Funciones, Procedimientos y Recursividad en C#. Tema: Funciones, Procedimientos y Recursividad en C#. Objetivos Programación I, Guía 6 1 Utilizar la sintaxis de las funciones definidas por el usuario (programador) para resolver problemas. Identificar

Más detalles

Estructuras de datos utilizando JAVA

Estructuras de datos utilizando JAVA 1 Sistemas Expertos e Inteligencia Artificial / Guía II / Ciclo 01-2017 Centro de Investigación y Transferencia de Tecnología Estructuras de datos utilizando JAVA Facultad: Ingeniería Escuela: Computación

Más detalles

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Índice general:. Modelo y Aplicación de Lista con Punto de Interés

Más detalles

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos y Estructuras de Datos III Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos golosos Backtracking (búsqueda con retroceso) Divide and conquer

Más detalles

Grafos Eulerianos y Hamiltonianos. Algoritmos y Estructuras de Datos III

Grafos Eulerianos y Hamiltonianos. Algoritmos y Estructuras de Datos III Grafos Eulerianos y Hamiltonianos Algoritmos y Estructuras de Datos III Grafos eulerianos Definiciones: Un circuito C en un grafo (o multigrafo) G es un circuito euleriano si C pasa por todos las aristas

Más detalles

Tema 10: Árbol binario de búsqueda

Tema 10: Árbol binario de búsqueda Tema 10: Árbol binario de búsqueda M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Árbol binario de

Más detalles

Tema: Clases y Objetos en C#. Parte II.

Tema: Clases y Objetos en C#. Parte II. Programación II. Guía No. 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Clases y Objetos en C#. Parte II. Objetivos Implementar clases, objetos, propiedades, métodos y

Más detalles

Tema: Introducción al uso del simulador S7-PLCSIM

Tema: Introducción al uso del simulador S7-PLCSIM 1 Introducción Teórica Facultad: Ingeniería Escuela: Electrónica Asignatura: Autómatas Programables Lugar de ejecución: Instrumentación y Control (Edificio 3, 2da planta) Tema: Introducción al uso del

Más detalles

Dirección de Operaciones

Dirección de Operaciones Dirección de Operaciones 1 Sesión No. 9 Nombre: Problemas de transporte y asignación. Primera parte. Objetivo Al finalizar la sesión, el alumno será capaz de Contextualización Cuál es el valor de estudiar

Más detalles

259. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m

259. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m 258. Aplicar el algoritmo de programación dinámica para el problema del cambio de monedas sobre el siguiente ejemplo: n = 3, P = 9, c = (1, 3, 4). Qué ocurre si multiplicamos P y c por un valor constante,

Más detalles

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica TEMA 3. Árboles Objetivos En este tema se estudia una de las estructuras de datos no lineal más importante en computación, el árbol. Comenzaremos introduciendo la terminología asociada a los árboles y

Más detalles

INFOTECH MÓDULO 1 CURSO. Conocimientos esenciales de programación. Lógica y Lenguaje de Programación

INFOTECH MÓDULO 1 CURSO. Conocimientos esenciales de programación. Lógica y Lenguaje de Programación INFOTECH MÓDULO 1 Conocimientos esenciales de programación CURSO Lógica y Lenguaje de Programación INFOTECH Capacidades específicas Nombre del módulo 1 Contenidos Recursos Comprensión e Indagación y información

Más detalles

Tema: Autómata de Pila

Tema: Autómata de Pila Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores 1 Tema: Autómata de Pila Contenido La presente guía aborda los autómatas de pila, y se enfoca en la aplicación que se le puede dar a estas

Más detalles

Ejercicio 7 Tablas de Datos y Búsqueda

Ejercicio 7 Tablas de Datos y Búsqueda Ejercicio 7 Tablas de Datos y Búsqueda Una de las aplicaciones más útiles de Excel es guardar grandes cantidades de datos. Sobre todo en tablas de datos, estas tablas pueden contener información diversa

Más detalles

Tema: Configuración de spanning tree

Tema: Configuración de spanning tree Tema: Configuración de spanning tree Contenidos Verificación del STP por defecto en los switchs Reasignación del puente raíz Objetivos Específicos Comunicación de datos II. Guía 3 1 Facultad: Ingeniería

Más detalles

Prueba N o 1. Programación II

Prueba N o 1. Programación II UNIVERSIDAD ANDRÉS BELLO 1 Prueba N o 1 Programación II Profesores: José Luis Allende y Carlos Beyzaga. Fecha: 10 de Septiembre de 2013 Nombre: Nota: Instrucciones: Coloque su nombre a todas las hojas.

Más detalles

C a l ses P P y y NP C a l se P C a l se N P N P [No N n o -De D te t rmin i i n s i ti t c i Polynomial-tim i e]

C a l ses P P y y NP C a l se P C a l se N P N P [No N n o -De D te t rmin i i n s i ti t c i Polynomial-tim i e] Análisis y Diseño de Algoritmos Introducción Análisis y Diseño de Algoritmos Concepto de algoritmo Resolución de problemas Clasificación de problemas Algorítmica Análisis de la eficiencia de los algoritmos

Más detalles

public class AtaqueVoraz extends EsquemaVZ implements EstrategiaSolucion {

public class AtaqueVoraz extends EsquemaVZ implements EstrategiaSolucion { Problema EL VORAZ y El Señor de los Anillos Una manada de orcos ha desembarcado para atacar Rivendel (ciudad protegida por los humanos), Aragorn (rey de los humanos) necesita definir una estrategia de

Más detalles

Tema: Manejo del Puerto Paralelo con LabView

Tema: Manejo del Puerto Paralelo con LabView Facultad: Ingeniería Escuela: Electrónica Asignatura: Interfaces y Periféricos Tema: Manejo del Puerto Paralelo con LabView Objetivos Específicos. Configurar la entrada y salida del puerto paralelo por

Más detalles

Metaheurísticas y heurísticas. Algoritmos y Estructuras de Datos III

Metaheurísticas y heurísticas. Algoritmos y Estructuras de Datos III Metaheurísticas y heurísticas Algoritmos y Estructuras de Datos III Metaheurísticas Heurísticas clásicas. Metaheurísticas o heurísticas modernas. Cuándo usarlas? Problemas para los cuales no se conocen

Más detalles

Sudoku con AMPL. Stefano Nasini. Dept. of Statistics and Operations Research Universitat Politécnica de Catalunya

Sudoku con AMPL. Stefano Nasini. Dept. of Statistics and Operations Research Universitat Politécnica de Catalunya Sudoku con AMPL Stefano Nasini Dept. of Statistics and Operations Research Universitat Politécnica de Catalunya La solución de un sudoku siempre es un cuadrado latino, es decir, una matriz de n n elementos,

Más detalles

Unidad Nº V Listas Enlazadas

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

Más detalles

EDA. Tema 8 Colas de Prioridad: Heaps

EDA. Tema 8 Colas de Prioridad: Heaps EDA. Tema 8 Colas de Prioridad: Heaps Natividad Prieto Sáez. DSIC EDA, T-8. Curso 02/03. N.Prieto p.1/55 Objetivos Estudio de las definiciones asociadas a las Colas de Prioridad: Especificación: operaciones

Más detalles

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 1: Recursividad Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Ejemplos recursivos Recursividad

Más detalles

Procesos de Fabricación I. Guía 1 1 SISTEMAS HIDRÁULICOS Y NEUMÁTICOS.

Procesos de Fabricación I. Guía 1 1 SISTEMAS HIDRÁULICOS Y NEUMÁTICOS. Procesos de Fabricación I. Guía 1 1 SISTEMAS HIDRÁULICOS Y NEUMÁTICOS. Sistemas Hidráulicos y Neumáticos. Guía 5 1 Tema: Visualización de elementos y manejo de Software FluidSim Pneumatic Contenidos Simbología

Más detalles

Guia#12: Tema: Archivos en C#.

Guia#12: Tema: Archivos en C#. Guia#12: Tema: Archivos en C#. Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Objetivos Conocer la forma de transferencia de información en C#. Aprender las operaciones

Más detalles

Resolviendo Problemas Buscando Soluciones. Tomás Arredondo Vidal 16/6/2010

Resolviendo Problemas Buscando Soluciones. Tomás Arredondo Vidal 16/6/2010 Resolviendo Problemas Buscando Soluciones Tomás Arredondo Vidal 16/6/2010 Resolviendo Problemas Buscando Soluciones Contenidos Agentes que resuelven problemas Tipos de problemas Formulación de problemas

Más detalles

Agenda..NET C# Laboratorio #1

Agenda..NET C# Laboratorio #1 PROGRAMACIÓN III Agenda.NET C# Laboratorio #1 .NET Qué es.net? Una arquitectura tecnológica para la creación y distribución de software como servicio. Servicio en cualquier plataforma, cliente en cualquier

Más detalles

Inteligencia Artificial II Unidad Plan 2010-Ingeniería en Sistemas Computacionales

Inteligencia Artificial II Unidad Plan 2010-Ingeniería en Sistemas Computacionales Inteligencia Artificial II Unidad Plan 2010-Ingeniería en Sistemas Computacionales Rafael Vázquez Pérez Unidad II:Técnicas de Búsqueda. 2.1. Solución de problemas con búsqueda. 2.2. Espacios de estados.

Más detalles

PROGRAMACIÓN LINEAL ENTERA

PROGRAMACIÓN LINEAL ENTERA PROGRAMACIÓN LINEAL ENTERA MÉTODOS DE RESOLUCIÓN Redondeo: DESACONSEJABLE: Por producir malas soluciones Por producir soluciones infactibles Ejemplo PLA Max F(X) = 4x 1 + 3x 2 s.a. 2x 1 + x 2 2 3x 1 +

Más detalles

Porque usar Arreglos?

Porque usar Arreglos? Arreglos Porque usar Arreglos? Se tienen las calificaciones de 100 alumnos, como sacar cuantos alumnos tienen una calificación superior al promedio? Doble lectura: Un ciclo para leer y acumular las calificaciones,

Más detalles

Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros

Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros Especificación de TAD s. TAD Pila de Enteros. desapilar 2 7 3 5 apilar Cima de la Pila Cima de la Pila Definición: Estructura de Datos que

Más detalles

Programación III. 1. Facultad: Ingeniería Escuela: Computación Asignatura:Programación III I. OBJETIVOS II. INTRODUCCIÓN TEÓRICA

Programación III. 1. Facultad: Ingeniería Escuela: Computación Asignatura:Programación III I. OBJETIVOS II. INTRODUCCIÓN TEÓRICA Programación III. 1 Facultad: Ingeniería Escuela: Computación Asignatura:Programación III GUIA1: Uso de C# modo consola. I. OBJETIVOS Qué el estudiante: Conozca el lenguaje de programación Visual C#.Net

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

Taller de Programación Dinámica. Definiciones. Caso base. Laboratorio de Algoritmos y Estructuras de Datos III. 10 de Septiembre de 2010

Taller de Programación Dinámica. Definiciones. Caso base. Laboratorio de Algoritmos y Estructuras de Datos III. 10 de Septiembre de 2010 Menú del día Taller de 1 Definiciones Laboratorio de Algoritmos y Estructuras de Datos III Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 10 de Septiembre

Más detalles

Diseño Estructurado de Algoritmos

Diseño Estructurado de Algoritmos Diseño Estructurado de Algoritmos 1 Sesión No. 11 Nombre: Estructuras algorítmicas. Tercera parte. Objetivo de la sesión: Al concluir la sesión el estudiante aplicará las estructuras algorítmicas repetitivas

Más detalles

Análisis de Presupuestos, Herramientas de Análisis Y Si

Análisis de Presupuestos, Herramientas de Análisis Y Si Análisis de Presupuestos, Herramientas de Análisis Y Si http://www.infop.hn Autor:Swamy Matute Análisis de Presupuestos, Herramientas de Análisis Y Si Objetivos de la Unidad Al finalizar la presente unidad

Más detalles

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende

Más detalles

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Tema 7.- Fundamentos de la Programación Orientada a Objetos Tema 7.- Fundamentos de la Programación Orientada a Objetos 7 de enero de 2014 Objetivos Saber definir clases propias. Saber crear objetos de una clase determinada e interactuar con ellos (Problema 1).

Más detalles

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 12 de septiembre de 2013 Disponer sobre la mesa en lugar visible un documento

Más detalles

Algoritmos genéticos

Algoritmos genéticos Algoritmos genéticos Introducción 2 Esquema básico 3 El problema de la mochila 7 Asignación de recursos 0 El problema del viajante 3 Variantes del esquema básico 5 Por qué funciona? 9 Observaciones finales

Más detalles

Configurar DHCP en los routers, para que permitan configuración de los hosts locales conectados en su Ethernet.

Configurar DHCP en los routers, para que permitan configuración de los hosts locales conectados en su Ethernet. Comunicación de datos II. Guía 2 1 Facultad: Ingeniería Escuela: Electrónica Asignatura: Comunicación de datos II Tema: DHCP Contenidos Configuración DHCP en router Objetivo Configurar DHCP en los routers,

Más detalles

Búsqueda en línea y Búsqueda multiagente

Búsqueda en línea y Búsqueda multiagente Búsqueda en línea y Búsqueda multiagente Ingeniería Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani 1 Tema 2: Agentes basados en Búsqueda Resumen: 2. Agentes basados

Más detalles

GUÍA DE EXÁMENES DE PROGRAMACIÓN II

GUÍA DE EXÁMENES DE PROGRAMACIÓN II PROGRAMA GUÍA DE EXÁMENES DE PROGRAMACIÓN II Quinto Año - Ciclo Superior Computación Turno Noche Unidad 1: Revisión de conceptos básicos Diagramación, codificación y prueba de programas que abarcan los

Más detalles

El problema del agente viajero

El problema del agente viajero CO- (F0) //00 El problema del agente viajero Un vendedor tiene que visitar n + ciudades, cada una exactamente una vez. La distancia entre cada par de ciudades viene dada por d ij (en general d ij d ji

Más detalles

Clase 26. Introducción a los árboles. Árboles

Clase 26. Introducción a los árboles. Árboles Clase 26 Introducción a los árboles Árboles Árbol es el nombre que se le da a un grupo versátil de estructuras de datos. Se pueden utilizar para implementar un número de interfaces abstractas, incluida

Más detalles

1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila 0/1 para los siguientes casos:

1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila 0/1 para los siguientes casos: PROGRAMACIÓN DINÁMICA RELACIÓN DE EJERCICIOS Y PROBLEMAS 1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila /1 para los siguientes casos: a. Mochila de capacidad W=15:

Más detalles

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente:

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente: ASIGNATURA TITULACIÓN APELLIDOS ESTRUCTURA DE DATOS Y DE LA INFORMACIÓN EJERCICIO 1 (3 PUNTOS) GRUPO CURSO CONVOCATORIA NOMBRE 23 / 24 EXTRAORDINARIA- SEPTIEMBRE CALIFICACIÓN Dado el tipo abstracto de

Más detalles

GUIA 1: Entorno de Visual Studio. Lenguajes de Programación.

GUIA 1: Entorno de Visual Studio. Lenguajes de Programación. 1 Programación II, Guía 1 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II GUIA 1: Entorno de Visual Studio. Lenguajes de Programación. Objetivos Conocer los lenguajes de programación

Más detalles

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol Árboles Las listas enlazadas, pilas y colas son estructuras de datos lineales (es decir, secuencias). Un árbol es una estructura de datos bidimensional no lineal, con propiedades especiales. Los nodos

Más detalles

Estado 3.2 (coste = 9)

Estado 3.2 (coste = 9) Búsqueda heurística Fernando Berzal, [email protected] Búsqueda heurística Búsqueda primero el mejor p.ej. búsqueda de coste uniforme [UCS] Heurísticas Búsqueda greedy El algoritmo A* Heurísticas admisibles

Más detalles

Notación Asintótica 2

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

Más detalles

1. Título: Jugar sudoku

1. Título: Jugar sudoku 1. Título: Jugar sudoku 2. Introducción: El juego versión del Sudoku. Rellena las rejillas para que cada fila, columna y caja de 3x3 contenga todos los dígitos del 1 al 9 una sola vez. El tiempo juega

Más detalles

Grafos. Amalia Duch Brown Octubre de 2007

Grafos. Amalia Duch Brown Octubre de 2007 Grafos Amalia Duch Brown Octubre de 2007 Índice 1. Definiciones Básicas Intuitivamente un grafo es un conjunto de vértices unidos por un conjunto de líneas o flechas dependiendo de si el grafo es dirigido

Más detalles

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola) Objetivos de la sesión Entender el tipo de programas que se pueden realizar con aplicaciones de consola. Conocer el concepto de variable, la forma en que se declaran y su utilización. Conocer la forma

Más detalles

como les va con las practicas?

como les va con las practicas? como les va con las practicas? Problemas NP-completos y Estructuras de datos básicas (representación de datos) mat-151 1 Una maquina de Turing Aceptation state Una maquina de Turing Maquina de Turing Determinística,

Más detalles

Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) 1 DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Problema de Encontrar la Ruta más Corta 2 Se requiere llegar de

Más detalles