Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guia 10 PDF
Guia 10 PDF
Gua 10 1
Facultad: Ingeniera
Escuela: Computacin
Asignatura: Programacin IV
Objetivos Especficos
Definir el concepto de Grafo.
A partir de una clase agregar la sintaxis necesaria para construir una funcin de grafos en C#
Materiales y Equipo
Introduccin Terica
Grafos.
Un grafo G=(V, E) est formado por un conjunto de elementos llamados vrtices V y un
conjunto de aristas E que conectan a los distintos vrtices. En ocasiones los vrtices son
llamados nodos y las aristas arcos.
Las aristas se definen como el par de vrtices que conectan y pueden tener asociado un valor
el cual representa el peso o dificultad para desplazarse de un vrtice a otro.
Ejemplo grfico de un grafo:
Donde:
Vrtices = {A, B, C, D, E}
Aristas = {(A, B), (A, D), (B, C), (B, D), (B, E), (C, E), (D, E), (E, D)}
2 Programacin IV. Gua 10
Tipos de grafos.
Existen dos tipos de grafos: los no dirigidos y los dirigidos.
Grafos No dirigidos.
Son aquellos en los cuales las aristas no estn orientadas (No son flechas). Cada lado se
representa entre parntesis, separando sus vrtices por comas, y teniendo en cuenta que
ambos vrtices son origen y destino a la vez: (Vi, Vj) = (Vj, Vi).
Grafos Dirigidos.
Son aquellos en los cuales las aristas estn orientadas (flechas). Cada arista se representa
entre parntesis, separando sus vrtices por comas y teniendo en cuenta (Vi, Vj) (Vj, Vi).
Matriz de adyacencia.
El grafo se representa por una matriz de tamao VxV, donde V son los vrtices que unen a los
nodos, la conjuncin de los dos vrtices representa la arista.
Representacin del ejemplo:
Programacin IV. Gua 10 3
Procedimiento
Ejemplo 1.
En los cdigos siguientes, se muestra la implementacin de un grafo a partir de listas
adyacentes. Tomar como base el grafo del ejemplo de la seccin terica y crearlo usando la
implementacin.
Crear un proyecto llamado grafo y en el principal agregar el siguiente cdigo:
Program.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace grafo
{ class Program
{ public static void Menu( )
{ Console.WriteLine("**MENU**");
Console.WriteLine("1. Crear grafo");
Console.WriteLine("2. Agregar vertice");
Console.WriteLine("3. Agregar arco");
Console.WriteLine("4. Mostrar vertices");
Console.WriteLine("5. Mostrar grafo");
Console.WriteLine("0. Salir");
Console.WriteLine("opcion: ");
}
Opcion = Console.ReadLine( );
switch (Opcion)
{ case "1"://Crear Grafo
Console.Write(" Desea Crear un Nuevo Grafo :(S)/(N) ");
flag = Console.ReadLine( );
if (flag == "S")
{ Grafo = new CGrafo( );
Console.WriteLine("Grafo Creado...");
}
break;
namespace grafo
{ class CVertice
{ public string nombre;
public CVertice( )
{
}
CLista.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace grafo
{ class Clista
{ //----------------ATRIBUTOS-------------------------
private CVertice aElemento;
private CLista aSubLista;
private int aPeso;
//----------------CONSTRUCTORES---------------------
6 Programacin IV. Gua 10
public CLista( )
{ aElemento = null;
aSubLista = null;
aPeso = 0;
}
//---------------PROPIEDADES------------------------
public CVertice Elemento
{ get
{ return aElemento;}
set
{ aElemento = value; }
}
set
{ aSubLista = value; }
}
set
{ aPeso = value;}
}
//------------------------METODOS-------------------
public bool EsVacia( )
{ return aElemento == null;
}
Programacin IV. Gua 10 7
CGrafo.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace grafo
{ class CGrafo
{
//==============================Atributos=========================
protected CVertice aVertice;
protected CLista aLista;
protected CGrafo aSiguiente;
Programacin IV. Gua 10 9
//========================Constructores============================
public CGrafo( )
{ aVertice = null;
aLista = null;
aSiguiente = null;
}
//==========================Propiedades============================
public CVertice Vertice
{ get
{ return aVertice; }
set
{ aVertice = value; }
}
set
{ aLista = value;}
}
//=====================Operaciones Base=================================
public bool EstaVacio( )
{ return (aVertice == null);
}
else
if (aSiguiente != null)
aSiguiente.agregarArco(pVerticeOrigen, pVerticeDestino,
pDistancia);
}
}
Identificar:
El tipo de estructura utilizada para el manejo del grafo.
El objetivo de cada atributo de las clases.
Para cada opcin del men, el mtodo invocado y los subsecuentes mtodos para llevar
a cabo la tarea.
Anlisis de resultados
Ejercicio 1.
Para el ejemplo desarrollado, agregar al men, las siguientes opciones:
Eliminar Vrtice.
Eliminar Arco.
12 Programacin IV. Gua 10
Investigacin Complementaria
EVALUACIN