Proyecto 2: recorridos sobre grafos y componentes conexas

Documentos relacionados
Grafos. 19 de diciembre de 2013

Grafos. Amalia Duch Brown Octubre de 2007

Guía para la documentación de proyectos de software

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

INGENIERÍA DE SISTEMAS INVESTIGACIÓN OPERATIVA

El TAD Grafo. El TAD Grafo

Grafos. Suponiendo que e = [u, v]. Entonces los nodos u y v se llaman extremos de e y u y v se dice que son nodos adyacentes o vecinos.

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACION DE COMPUTACION

Algoritmos Elementales de Grafos. Agustín J. González ELO-320: Estructura de Datos Y Algoritmos 1er.Sem. 2002

Hamilton, Euler y Dijkstra

Guía práctica de estudio 03: Algoritmos

PRÁCTICAS DE PROCESADORES DEL LENGUAJE CURSO 2008/2009

Trayectorias y circuitos Eulerianos y Hamiltonianos,

Descripción del problema:

Práctica 1 de la Asignatura Programación y Estructuras de Datos Avanzadas Versión 1.1

Laboratorio 02: Ejercicios de programación en C

Algoritmos y Estructuras de Datos III

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

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

Universidad Simón Bolívar Departamento de Computación y Tecnología de la Información Organización del Computador CI-3815

Universidad Autónoma del Estado de México Facultad de Medicina

Liberación de Versiones de Desarrollo

ESTRUCTURAS DE DATOS II

Tema II: Metodología para la construcción de programas. Profesora: Nelly García Mora

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Laboratorio 2010 Principios de Programación

Programación Orientada a Objetos

Laboratorio de MTP-I. Curso Proyecto: Sistema de reserva y gestión de vuelos Noviembre 2008

1: PROCESO BÁSICO DE DESARROLLO CON

x 1, x 2 0 Maximizar 3x 1 + x 2 s.a 2x 1 + x 2 4 2x 1 + 3x 2 4 x 1 + 3x 2 3

Tema: Entorno a C# y Estructuras Secuenciales.

Caso de uso y procedimiento para autorización y rechazo de comprobaciones de gastos. Mayo de 2012

Estructura de Datos Página 1 de 13 ESTRUCTURA DE DATOS

Programación Lineal. María Muñoz Guillermo Matemáticas I U.P.C.T. M. Muñoz (U.P.C.T.) Programación Lineal Matemáticas I 1 / 13

Algoritmos y Estructuras de Datos III

Guía de trabajo Despliegue de aplicaciones web

Tema: Programación Dinámica.

Guía práctica de estudio 03: Algoritmos

LAS CIENCIAS DE LA PLANIFICACIÓN

Técnicas Avanzadas de Programación Tarea #3. Algoritmos de Grafos Fecha de Entrega: Jueves 17 de Diciembre de 2015

CIRCUITOS DE EULER Y HAMILTON

Tema: Programación Dinámica.

Escribir programas a partir de un diagrama de flujo

NORMAS INTERNACIONALES DE AUDITORIA. Sección 1009

Procedimientos Almacenados. Miguel Angel Garduño Cordova Isaac Méndez Hernández

Los grafos son estructuras de datos Representan relaciones entre objetos. Son aplicables en. Relaciones arbitrarias, es decir No jerárquicas.

SISTEMA DE SEGUIMIENTO Y CONTROL ACADEMICO SIS.SEG.BOL. UNIDAD EDUCATICA SIMÓN BOLÍVAR VERSION 1.0 ELISA ALANOCA QUISPE MODULO GESTION DE INSCRIPCION

ARBOLES GENERADORES. Orlando Arboleda Molina. 16 de septiembre de Escuela de Ingeniería de Sistemas y Computación de La Universidad del Valle

UNIVERSIDAD SIMÓN BOLÍVAR Vicerrectorado Académico

Estructuras de Datos Orientadas a Objetos. Pseudocódigo y aplicaciones en C#.NET. Capítulo 9.- Grafos

Tema 01: Algoritmia y diagramas de flujo. Estructuras de datos (Prof. Edgardo A. Franco)

SERVICIO NACIONAL DE APRENDIZAJE SENA SISTEMA INTEGRADO DE GESTIÓN Procedimiento Ejecución de la Formación Profesional Integral GUÍA DE APRENDIZAJE

Contenido. Prefacio Orígenes de la programación orientada a objetos... 1

Este reporte forma parte del Módulo Profesional de Localización de México.

Examen de Métodos de Programación Ingeniería Informática Primera Parte

Tema 2: Grafos y Árboles. Algoritmos y Estructuras de Datos 3

Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento fue tomada textualmente de varios

PRÁCTICA #6 TIPOS DE DATOS ESTRUCTURADOS: Arreglos, Registros y Archivos

Grafos (principiantes) - Parte I

PROGRAMACION II. Dr. Mario Rossainz López. Fac. de Cs. de la Computación Benemérita Universidad Autónoma de Puebla Primavera de 2017

Tema 2 Introducción a la Programación en C.

Estructuras de Datos y Algoritmos. Programa de la asignatura

Algoritmos y Programación Orientada a Objetos I. Contenedoras de tamaño fijo

Universidad Tecnológica Nacional Facultad Regional San Francisco. Tecnicatura Superior en Programación PROGRAMACIÓN II

Multiplicación de matrices simétricas

ESTRUCTURAS DE DECISIÓN SELECTIVAS O CONDICIONALES. Elaborado por Oralia Cortés Grajales Actualizado por Jeaneth Gutiérrez Rincón

FECHA DE DEVOLUCIÓN DEL INFORME POR EL ESTUDIANTE: Adjunto a la Segunda Prueba Integral UTILICE ESTA MISMA PÁGINA COMO CARÁTULA DE SU TAREA O TRABAJO

Programación de Ordenadores

Nombre de la asignatura: Diseño Estructurado de Algoritmos. Carrera: Ingeniería en Sistemas Computacionales. Clave de la asignatura: SCB-9316

Estructuras de datos utilizando JAVA

Proyecto 1: Criptografia Concurrente (15%)

FORMALIZACIÓN Y EJECUCIÓN DEPARTAMENTO DE ELECTRÓNICA Y COMPUTADORES. Mercedes Granda Departamento de Electrónica y Computadores

Practica 03: Eliminación Gaussiana

Instalación de MPE. (MPI Parallel Environment) Programación Distribuida y Paralela. Departamento del LSI. Universidad de Granada

INFORMACIÓN GENERAL LABORATORIO DE ESTRUCTURA DE DATOS Y ALGORITMOS CURSO Índice

Registrar información o datos de una persona REQUERIMIENTO QUE LO UTILIZA O ESPECIALIZA:

Tema 2: Representación de problemas como espacios de estados

Árboles. Un grafo no dirigido es un árbol si y sólo si existe una ruta unica simple entre cualquiera dos de sus vértices.

SYLLABUS CÓDIGO:

GUIA 1: Repaso sobre uso de C#. Funciones, procedimientos y arreglos.

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

MATEMÁTICA DISCRETA. Segundo cuatrimestre Año 2015 Práctico 7 Parte I TEORÍA DE GRAFOS: INTRODUCCIÓN

Universidad de Oriente Núcleo de Bolívar Unidad de cursos básicos Matemáticas IV. María Palma Roselvis Flores

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

APELLIDOS, Nombre: // Resto de s e r v i c i o s p ú b l i c o s e n t r e l o s que s e e n c u e n t r a n i n s e r t a r y // b o r r a r //...

Guía de Practica 4 (1er Semestre 2010/2011)

UNIVERSIDAD RICARDO PALMA FACULTAD DE INGENIERÍA ESCUELA ACADÉMICO PROFESIONAL DE INGENIERÍA ELECTRÓNICA

Principios de Computadoras II

NÚMEROS UTILIZADOS EN ELECTRÓNICA DIGITAL

INSTRUCTIVO ADMINISTRADOR DE CONTRATO

Figura 3.1. Grafo orientado.

ATLAS MANUAL DE USUARIO DEL ARQUETIPO JAR

Análisis de Algoritmos Problemas de grafos

Guía para el Examen de Computación

4.1 CONGRUENCIA ENTRE LOS OBJETIVOS DEL PLAN DE ESTUDIOS Y EL PERFIL DE EGRESO CON LAS LGAC:

Universidad Nacional Autónoma de Nicaragua UNAN-Managua. Curso de Investigación de Operaciones

Laboratorio 2010 Principios de Programación

Tema: Análisis Léxico

Evolución del software y su situación actual

IN Guía de Problemas Resueltos de Geometría de Programación Lineal v1.0

Transcripción:

Universidad Simón Bolívar Departamento de Computación y Tecnología de la Información CI-2693. Laboratorio de Algoritmos y Estructuras III Trimestre Abril-Julio 2015 1. Introducción Proyecto 2: recorridos sobre grafos y componentes conexas Se quiere que resuelva tres problemas en los que tiene que aplicar algoritmos de recorridos sobre grafos y algoritmos para determinar componentes conexas. 2. Problema 1: Camino factible Se desea contar con su ayuda para desarrollar un sistema que permita a un turista encontrar un camino desde una ciudad de partida hasta una ciudad destino bajo ciertas consideraciones. El mapa de las ciudades corresponderá a un grafo donde los vértices representan ciudades y los lados representan un viaje en un medio de transporte desde una ciudad a otra. El peso de los vértices indica el costo de visitar una ciudad, mientras que el peso de los lados es igual al costo del medio de transporte que lleva de una ciudad a otra. El costo de llegar a la ciudad destino debe ser menor al presupuesto del turista. El costo de visitar la ciudad destino incluye el costo del transporte hasta la ciudad más el costo de estadía de las ciudades que se visitan hasta la ciudad destino, incluyendo el costo de visitar la ciudad destino. También hay un valor máximo que el turista esta dispuesto a pagar por el transporte en un viaje desde una ciudad a otra. Cuando se viaja de una ciudad a otra, el sistema primero verifica que el costo del viaje es menor que lo que el turista está dispuesto a pagar. Si el valor es más bajo entonces acepta el viaje y descuenta el costo del mismo de su presupuesto. El sistema no puede recomendar una ruta de viaje que supere el presupuesto del turista. Para resolver este problema debe usar la técnica de búsqueda en profundidad o la de búsqueda en amplitud. 2.1. Entrada de los datos del Problema 1 Debe realizar un programa llamado RecorridoTurista.java que se debe poder ejecutar desde la consola con el siguiente comando: >java RecorridoTurista <origen> <destino> <presupuesto> <maxporviaje> <archivo> donde origen es el identificador de la ciudad desde donde comenzará el viaje, destino es el identificador de la ciudad destino, presupuesto es el presupuesto del turista, maxporviaje es la cantidad máxima está dispuesto dispuesto a el turista pagar por el transporte entre ciudades y archivo es el nombre de un archivo que contendrá los datos de un grafo, con el formato del Proyecto 1. 2.2. Salida de los datos del Problema 1 La primera línea de la salida debe ser una secuencia de ciudades y medios de transporte, separadas por comas, que corresponden a la ruta que debe seguir el turista desde la ciudad origen hasta la ciudad de destino. La segunda línea debe ser el presupuesto restante del turista. 1

2.3. Ejemplo del Problema 1 Considere un grafo de entrada escrito en el formato de archivo del proyecto 1, almacenado en un archivo llamado rutas.txt, con el siguiente contenido: 9 13 SanRafael 9 SanFrancisco 10 PaloAlto 10 SanJose 20 SantaCruz 6 Fremont 12 Oakland 30 Berkeley 11 Sunnyvale 90 Tren1 SanRafael SanFrancisco 2 Bus1 SanFrancisco PaloAlto 3 Bus2 PaloAlto SanJose 5 Tren2 PaloAlto SanJose 8 Avion1 SanJose PaloAlto 7 Cola SanFrancisco Berkeley 1 Bus3 Berkeley SanRafael 5 Bus4 Berkeley Oakland 3 Bus5 Berkeley Sunnyvale 4 Tren3 Sunnyvale SantaCruz 3 Bus6 Oakland Fremont 1 Avion2 Fremont SantaCruz 9 Avion3 SanJose SantaCruz 10 Si se ejecuta el comando: java RecorridoTurista SanFrancisco SantaCruz 100 10 ruta.txt Un solución posible que se puede mostrar por la salida estándar es: SanFrancisco, Cola, Berkeley, Bus4, Oakland, Bus6, Fremont, Avion2, SantaCruz 17 3. Problema 2: Listar caminos Dado un grafo dirigido, conexo y sin circuitos, debe encontrar el número de caminos desde un vértice inicial hasta cada uno de los vértices que componen un grafo, exceptuando al vértice inicial. Para resolver este problema debe usar la técnica de búsqueda en profundidad o la de búsqueda en amplitud. 3.1. Entrada de los datos del Problema 2 Debe realizar un programa llamado ListaCamino.java que se debe poder ejecutar desde la consola con el siguiente comando: 2

>java ListaCamino <inicio> <archivo> donde inicio es el identificador del vértice inicial, y archivo es el nombre de un archivo que contendrá los datos de un grafo, con el formato del Proyecto 1. 3.2. Salida de los datos del Problema 2 Se debe mostrar por cada vértice del grafo una línea en donde se imprima el siguiente par: identificador del vértice y el número de caminos. 3.3. Ejemplo del Problema 2 Suponga como entrada el grafo de la figura 1. En la tabla 1 se los caminos posibles desde el vértice a hasta cada uno de los vértices del grafo de la figura 1. Figura 1: Grafo 1 Vértice caminos desde el vértice a hasta cada vértice b < a, b > < a, c, b > c < a, c > d < a, c, d > < a, d > < a, e, d > e < a, e > f < a, b, f > < a, c, b, f > < a, c, f > g < a, c, g > < a, c, d, g > < a, d, g > < a, e, d, g > < a, e, g > h < a, b, f, h > < a, c, b, f, h > < a, c, f, h > < a, c, d, g, h > < a, d, g, h > < a, e, d, g, h > < a, c, g, h > < a, e, g, h > Cuadro 1: Caminos desde a hasta todos los vértices del grafo de la figura 1. Suponiendo que el archivo que contiene al grafo de la figura 1, se llama g.txt si ejecuta: >java ListaCamino a g.txt se obtiene como salida b 2 c 1 d 3 3

e 1 f 3 g 5 h 8 4. Problema 3: Camino entre componentes conexas Dado un grafo simple y no orientado se quiere determinar sus puntos de articulación y dado un vértice inicial y un vértice final, se quiere saber si son alcanzables suponiendo que no es posible formar un camino que contenga un punto de articulación entre los vértices inicial y final. Se tiene que el vértice inicial y/o final pueden ser puntos de articulación. Suponiendo que el grafo de entrada corresponde a intersecciones de calles, el problema puede interpretarse de la siguiente manera. Queremos saber si dadas dos personas paradas en dos intersecciones, una puede alcanzar a la otra suponiendo que las intersecciones que son puntos de articulación están bloqueadas. Si las personas parten desde una intersección que es un punto de articulación, entonces suponemos que la misma no está bloqueada porque hay una persona allí. 4.1. Entrada de los datos del Problema 3 Debe realizar un programa llamado Articulacion.java que se debe poder ejecutar desde la consola con el siguiente comando: >java Articulacion <vertice1> <vertice2> <archivo> donde vertice1 vertice2 son los identificador de los vértices a estudiar, y archivo es el nombre de un archivo que contendrá los datos de un grafo, con el formato del Proyecto 1. 4.2. Salida de los datos del Problema 3 Debe mostrar por la salida estándar dos líneas. La primera línea corresponde a los identificadores de los vértices que son los puntos de articulación del grafo de entrada. La segunda línea debe indicar si hay o no un camino entre los dos vértices imprimiendo las palabras si y no. 4.3. Ejemplo del Problema 3 Considere que el grafo de entrada es el de la figura 2 el cual estaría contenido en un archivo llamado g2.txt. Si se ejecuta el comando: Figura 2: Grafo de ejemplo 2 4

>java Articulacion g h g2.txt se obtiene el siguiente resultado por la salida estándar: a g f e h l si En otro ejemplo si se ejecuta: >java Articulacion m f g2.txt se debe obtener como salida: a g f e h l no 5. Detalles de la implementación Las técnicas búsqueda en profundidad (Depth First Search) y búsqueda en amplitud (Breadth First Search), deben ser implementadas como algoritmos particulares del modelo general de etiquetamiento [1]. Sus implementaciones deben ser razonablemente eficientes. Todo el código debe estar debidamente documentado. Para cada método se debe indicar su descripción, la descripción de los parámetros de entrada y salida, y las precondiciones y postcondiciones aplicando el estándar para la documentación de código en JAVA. Puede usar las librerías de JAVA que considere útiles. Su código debe hacer uso de la guía de estilo publicada en el Aula Virtual. En la evaluación del proyecto se tomará en cuenta aspectos como la documentación, el estilo de programación, la modularidad del código, la eficiencia en tiempo de ejecución y memoria, el buen uso de las librerías y la robustez. Si todos los archivos fuentes del proyecto no compilan correctamente, el proyecto será calificado con cero. 6. Condiciones de la entrega La entrega del proyecto es hasta el día miércoles de la semana 8 a las 1:30 pm y consiste de los siguientes elementos: Un sobre sellado y identificado con su nombre, carné y profesor de laboratorio, que debe contener dos documentos: Un reporte de no más de cuatro páginas en donde se explique y se justifique para cada problema, el diseño de su solución y los detalles de implementación más relevantes de los algoritmos y estructuras de datos utilizadas. La Declaración de Autenticidad para Entregas firmada por los integrantes del equipo. Un archivo comprimido del tipo TGZ con el código fuente de su proyecto, que debe ser entrgado en la página del curso en el Aula Virtual. El nombre del archivo deber ser Proy2ci2693AbrJun15- X-Y.tgz donde X y X son los números de carné de los autores del proyecto. El no cumplimento de todos los requerimientos podría resultar en el rechazo de su entrega. 5

Referencias [1] Oscar Meza y Maruja Ortega, Grafos y Algoritmos. Equinoccio, Caracas. 2da edición. 2006. Guillermo Palma / gvpalma@usb.ve / Mayo 2015 6