Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Grafos C#
Grafos C#
Gua 10
Facultad:
Ingeniera
Escuela:
Computacin
Asignatura: Programacin IV
A partir de una clase agregar la sintaxis necesaria para construir una funcin de grafos en C#
Materiales y Equipo
Gua Nmero 10.
Computadora con programa Microsoft Visual C#.
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)}
Listas adyacentes.
Cada vrtice tiene una lista de vrtices los cuales son adyacentes a l.
Representacin del ejemplo:
(A) => B => D
(B) => C => D => E
(C) => E
(D) => E
(E) => D
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:
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: ");
}
static void Main( )
{
string Opcion;
string flag;
CGrafo Grafo = new CGrafo( );
CVertice Ver = new CVertice( );
CVertice Ver1 = new CVertice( );
CVertice Ver2 = new CVertice( );
do
{
Menu( );
aElemento = value; }
}
public CLista SubLista
{
get
{
return aSubLista; }
set
{
aSubLista = value; }
}
public int Peso
{
get
{
return aPeso; }
set
{
aPeso = value;}
}
//------------------------METODOS------------------public bool EsVacia( )
{
return aElemento == null;
}
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;
//========================Constructores============================
public CGrafo( )
{
aVertice = null;
aLista = null;
aSiguiente = null;
}
public CGrafo(CVertice pVertice, CLista pLista, CGrafo pSiguiente)
{
aVertice = pVertice;
aLista = pLista;
aSiguiente = pSiguiente;
}
//==========================Propiedades============================
public CVertice Vertice
{
get
{
return aVertice; }
set
{
aVertice = value; }
}
public CLista Lista
{
get
{
return aLista; }
set
{
aLista = value;}
}
public CGrafo Siguiente
{
get{
return aSiguiente; }
set{
aSiguiente = value; }
}
//=====================Operaciones Base=================================
public bool EstaVacio( )
{
return (aVertice == null);
}
public int NumerodeVertices( )
{
if (aVertice == null)
return 0;
else
return 1 + aSiguiente.NumerodeVertices();
}
11
else
if (aSiguiente != null)
aSiguiente.agregarArco(pVerticeOrigen, pVerticeDestino,
pDistancia);
}
}
public void MostrarVertices( )
{
if (aVertice != null)
{
Console.WriteLine(aVertice.nombre);
aSiguiente.MostrarVertices();
}
}
public void MostrarGrafo( )
{
if (aVertice != null)
{
for (int i = 1; i <= aLista.NroElementos(); i++)
Console.WriteLine(aVertice.nombre + " ==> " +
aLista.IesimoElemento(i) + " Con peso>>>>(" +
aLista.IesimoElementoPeso(i) + " ) ");
aSiguiente.MostrarGrafo( );
}
}
}
}
Identificar:
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.
Investigacin Complementaria
Hoja de cotejo:
Mquina No:
Docente:
GL:
13
10
Fecha:
EVALUACIN
%
CONOCIMIENTO
Del 20
al 30%
APLICACIN
DEL
CONOCIMIENTO
Del 40%
al 60%
ACTITUD
Del 15%
al 30%
TOTAL
100%
1-4
5-7
8-10
Conocimiento
deficiente
de los
fundamentos
tericos
Conocimiento
y explicacin
incompleta de
los
fundamentos
tericos
Conocimiento
completo y
explicacin
clara de los
fundamentos
tericos
No tiene
actitud
proactiva.
Actitud
propositiva y
con
propuestas no
aplicables al
contenido de
la gua.
Tiene actitud
proactiva y
sus propuestas
son concretas.
Nota