Sunteți pe pagina 1din 15

[TÍTULO DEL

DOCUMENTO]

UNIVERSIDAD NACIONAL DEL ALTIPLANO

ESCUELA PROFESSIONAL DE INGENIERIA DE SISTEMAS

AREA: INTELIGENCIA ARTIFICIAL

SEMESTRE: VII

INTEGRANTES:

WHASHINGTON

MALENY QUISPE CHIPANA

LUZ CLARA TICONA ACERO

ADELAIDA CAHUANA VILCA


INDICE
1. GRAFO ................................................................................................................................... 4

1.1. ¿Qué es un grafo? ......................................................................................................... 4

1.2. Definicion ...................................................................................................................... 4

1.3. Tipos de Grafos ............................................................................................................. 5

1.4. Matriz de adyacencia de un grafo ................................................................................ 6

1.4.1. Lista de adyacencia de un grafo ........................................................................... 8

2. RECORRIDOS ......................................................................................................................... 8

2.1. El recorrido en profundidad ......................................................................................... 8

2.2. Recorrido en anchura ................................................................................................. 11

3. APLICACIÓN ........................................................................................................................ 11

3.1. Descripción de atributos y métodos .......................................................................... 12

3.2. Algoritmo de Prim ...................................................................................................... 13

4. UTILIDAD ............................................................................................................................. 15

5. CONCLUSIONES ................................................................................................................... 15

6. REFERENCIAS ...................................................................................................................... 15
1. GRAFO

1.1. ¿Qué es un grafo?


Un grafo es un conjunto, no vacío, de objetos llamados vértices (o nodos) y una selección de
pares de vértices, llamados aristas (edges en inglés) que pueden ser orientados o no.
Típicamente, un grafo se representa mediante una serie de puntos (los vértices) conectados por
líneas (las aristas).

1.2. Definicion
Un grafo es un objeto unitario de naturaleza abstracta que abarca a las grafias que componen
una letra. La palabra tiene origen griego y significa “imagen” o “dibujo”.

Para las ciencias de la computación y la matemática, un grafo es una representación gráfica de


diversos puntos que se conocen como nodos o vértices, los cuales se encuentran unidos a través
de líneas que reciben el nombre de aristas. Al analizar los grafos, los expertos logran conocer
cómo se desarrollan las relaciones recíprocas entre aquellas unidades que mantienen algún tipo
de interacción.

1.3. Tipos de Grafos


a) Grafo simple O simplemente grafo: Es aquel que acepta una sola una arista uniendo
dos vértices cualesquiera. Esto es equivalente a decir que una arista cualquiera es la
única que une dos vértices específicos.

b) Multígrafo. O pseudografo: Son grafos que aceptan más de una arista entre dos
vértices. Estas aristas se llaman múltiples o lazos (loops en inglés). Los grafos simples
son una subclase de esta categoría de grafos. También se les llama grafos no-dirigido.

c) Grafo etiquetado: Grafos en los cuales se ha añadido un peso a las aristas (número
entero generalmente) o un etiquetado a los vértices.

d) Grafo aleatorio: Grafo cuyas aristas están asociadas a una probabilidad.

e) Hipergrafo: Grafos en los cuales las aristas tienen más de dos extremos, es decir, las
aristas son incidentes a 3 o más vértices.

f) Abiertos

Grafos Dirigidos:

Un grafo en el cual toda arista es dirigida se denominará "digrafo" o bien "grafo dirigido".
Un grafo dirigido o dígrafo consiste de un conjunto de vértices V y un conjunto de arcos
A.

Los vértices se denominan nodos o puntos; los arcos


también se conocen como aristas o líneas dirigidas que
representan que entre un par de vértices existe una relación
unívoca.

Grafos no Dirigidos:
Un grafo en el cual todas las aristas son no dirigidas se
denominará "grafo no dirigido". El grafo no dirigido es aquel
que no tiene sentido su arista. Un grafo no dirigido G
representa elementos, y una arista (v, w) representa una
incompatibilidad entre los elementos v y w.

Si en un Grafo hay aristas dirigidas y aristas no dirigidas, entonces el grafo se denomina "mixto".

g) Cerrados

Un grafo es una representación, un modelo, compuesto por un número determinado de vértices


(nodos) y un número de arcos (aristas) que los relacionan, cada arista o arco tiene la capacidad
de relacionar dos nodos. La palabra ciclo se emplea en teoría de grafos para indicar un camino
cerrado en un grafo, es decir, en que el nodo de inicio y el nodo final son el mismo, como
contrapartida un camino hamiltoniano es un camino que recorre todos los vértices de un grafo
sin pasar dos veces por el mismo vértice. Si el camino es cerrado se dice un ciclo hamiltoniano.

1.4. Matriz de adyacencia de un grafo


Todo grafo simple puede ser representado por una matriz, que llamamos matriz de
adyacencia.Se trata de una matriz cuadrada de n filas x n columnas (siendo n el número de
vértices del grafo).

Para construir la matriz de adyacencia, cada elemento aij vale {{1}} cuando haya una arista que
una los vértices i y j . En caso contrario el elemento aij vale 0.

La matriz de adyacencia, por tanto, estará formada por ceros y unos.

Vamos a construir la matriz de adyacencia del siguiente grafo:


Como tiene 5 vértices, será una matriz de 5 filas x 5 columnas

Completamos la primera fila (la del 1). El 1 sólo está conectado al 2 y al 4, por tanto ponemos
un 1 en las columnas 2 y 4 y un 0 en las demás:

Procedemos de igual forma con el resto de filas y ya tenemos la matriz de adyacencia:

En la siguiente imagen podemos ver las conexiones entre el 1 y el 4


1.4.1. Lista de adyacencia de un grafo
Una lista de adyacencia es una representación de todas las aristas o arcos de un grafo mediante
una lista.

2. RECORRIDOS
Recorrer un grafo significa tratar de alcanzar todos los nodos que estés relacionados con un
grupo que llamaremos nodo de salida. Existen básicamente dos técnicas para recorrer un grafo.

2.1. El recorrido en profundidad


Trata de buscar los caminos que parten desde el nodo de salida hasta que ya no es posible
avanzar más .la búsqueda en profundidad empieza por un vértice V, del grafo G;V no visitado ;
así hasta que no haya más vértices adyacentes no visitados.
2.1.2. Algoritmo recorrido en profundidad:
2.2. Recorrido en anchura
Recorre a partir de un nodo dado, en niveles , es decir ,
primero están a una distancia de un arco del nodo de salida,
después los que están a dos arcos de distancia, y así
sucesivamente hasta alcanzar todo los nodos a los que se
pudiese llegar desde el nodo de salida.

2.2.1. Algoritmo de recorrido en anchura:

3. APLICACIÓN
Clases: En la siguiente figura se muestra la estructura de las clases, atributos y propiedades
para crear un grafo.
Ilustración 1Diagrama de clases de un grafo compuesto de nodos y
aristas

3.1. Descripción de atributos y métodos

a. Clase Nodo: Se compone de un identificador.


Atributos:
i. Id. - Identificador del resto de los nodos, o puede ser el nombre del nodo
para representar ciudades en una simulación.
Métodos:
ii. getId,setId. - Modificadores de acceso a los atributos.
b. Clase Arista: Se compone de dos nodos y el valor del peso de la arista.
Atributos:
i. Peso. – Para representar una ruta de un nodo a otro este será el costo
del camino.
Métodos:
ii. Nodo1 y Nodo2. – Los dos nodos que enlazara esta arista.
iii. getPeso y setPeso. –Modificadores de acceso al atributo peso.
iv. getNodo1 y getNodo2. – Modificadores de acceso a los nodos que
enlaza esta arista.
c. Clase Grafo: El grafo se compone de Un conjunto de nodos y aristas, para este
caso será una lista de ambos.
Atributos:
i. Aristas. – Contendrá la lista de aristas del grafo.
ii. Nodos. – Contendrá la lista de Nodos que forman el grafo.
iii. NumNodos.- Cantidad de nodos.
iv. NumAristas.-Cantidad de aristas.
Métodos:
v. EliminarArista. – Recibe dos identificadores, de los nodos que enlaza la
arista, se crea un iterador para recorrer la lista de aristas, se compara y
se elimina.
vi. eliminarAristasAdyacentes. – Recibe un identificador de un nodo,
elimina todas las aristas adyacentes a ese nodo.
vii. EliminarNodo. – Recibe un id para iterar sobre la lista de nodos y
eliminar el nodo que coincida con el id.
viii. ExisteAtista. – Verifica si una arista existe.
ix. ExisteNodo. – Verifica que un nodo exista.
x. GetArista. – Recibe el id de los dos nodos que conecta la arista, itera
sobre la lista de aristas y devuelve la arista.
xi. GetAristas. –Retorna la listas de aristas.
xii. GetNodo. –Recibe un id, para buscarlo en la lista de nodos y retorna el
nodo.
xiii. GetNodos.- Retorna una lista con todos los nodos.
xiv. Insertar aristas. – Recibe dos identificadores de los nodos y el peso, se
verifica que ambos nodos existan y se crea una nueva arista.
xv. Insertar Nodo.-Recibe un id e inserta un nuevo nodo en la lista de nodos
con el identificador pasado como argumento.
xvi. OrdenarAristas.- Toma la lista de aristas y las ordena de acuerdo a los
pesos de cada una.

3.2. Algoritmo de Prim


Devuelve el coste total del camino. Esta función recibe dos grafos, el primero es el grafo
sobre el cual buscara el árbol de expansión mínimo, el segundo es el grafo en el cual se
mostrará la solución, lo siguiente es el algoritmo de Prim aplicado a la estructura antes
descrita en el diagrama de clases.

88 double Prim(Grafo &g, Grafo &gSolucion)


89 {
90 bool s[NUM_NODOS];
91 double costeTotal=0;
92
93 g.ordenarAristas();
94 list<Arista *> &aristasOrdenadas=g.getAristas();
95 list<Arista *>::iterator it;
96
97 inicializarS(s);
98
99 Arista *ptrArista;
100 char *idNodo1;
101 char *idNodo2;
102 double peso;
103 bool primeraAristaInsertada=false;
104 for (it=aristasOrdenadas.begin(); it!=aristasOrdenadas.end(); it++) {
105 ptrArista=(*it);
106
107 idNodo1=ptrArista->getNodo1()->getId();
108 idNodo2=ptrArista->getNodo2()->getId();
109 peso=ptrArista->getPeso();
110 if (
111 !primeraAristaInsertada ||
112 (
113 estaNodoEnS(s,idNodo1) && !estaNodoEnS(s,idNodo2)
114 ) ||
115 (
116 !estaNodoEnS(s,idNodo1) && estaNodoEnS(s,idNodo2)
117 )
118 )
119 {
120 primeraAristaInsertada=true;
121 gSolucion.insertarArista(idNodo1,idNodo2,peso);
122 costeTotal+=peso;
123 incluirNodoEnS(s,idNodo1);
124 incluirNodoEnS(s,idNodo2);
125 it=aristasOrdenadas.begin();
126 }
127
128 }
129 return costeTotal;
130 }
4. UTILIDAD

Gracias a la teoría de grafos se pueden resolver diversos problemas como por ejemplo la
síntesis de circuitos secuenciales, contadores o sistemas de apertura. Se utiliza para
diferentes áreas por ejemplo, Dibujo computacional, en todas las áreas de Ingeniería. Los
grafos se utilizan también para modelar trayectos como el de una línea de autobús a través
de las calles de una ciudad, en el que podemos obtener caminos óptimos para el trayecto
aplicando diversos algoritmos como puede ser el algoritmo de Floyd Para la administración
de proyectos, utilizamos técnicas como PERT en las que se modelan los mismos utilizando
grafos y optimizando los tiempos para concretar los mismos.

La teoría de grafos también ha servido de inspiración para las ciencias sociales, en especial
para desarrollar un concepto no metafórico de red social que sustituye los nodos por los
actores sociales y verifica la posición, centralidad e importancia de cada actor dentro de la
red. Esta medida permite cuantificar y abstraer relaciones complejas, de manera que la
estructura social puede representarse gráficamente. Por ejemplo, una red social puede
representar la estructura de poder dentro de una sociedad al identificar los vínculos
(aristas), su dirección e intensidad y da idea de la manera en que el poder se transmite y a
quiénes. Los grafos son importantes en el estudio de la biología y hábitat. El vértice
representa un hábitat y las aristas (o "edges" en inglés) representa los senderos de los
animales o las migraciones. Con esta información, los científicos pueden entender cómo
esto puede cambiar o afectar a las especies en su hábitat.

5. CONCLUSIONES
Los grafos son una herramienta fundamental en resolución de problemas.

6. REFERENCIAS

S-ar putea să vă placă și