Tema: Algoritmos Backtracking.
|
|
|
- María Josefa Carrasco Zúñiga
- hace 8 años
- Vistas:
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.
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
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
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
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
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
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
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
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
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
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
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
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
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ú
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
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
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
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
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
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)
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
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,
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,
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
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
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
Á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
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
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
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
Á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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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,
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
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
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
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
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
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.
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
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
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
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
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,
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
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
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
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
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
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
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
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.
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 +
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,
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
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
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
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
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
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
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
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).
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
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
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,
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
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
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
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
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:
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
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
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
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
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
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
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
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
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,
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
