Академический Документы
Профессиональный Документы
Культура Документы
CLASE MODELO
TEMA: ESTRUCTURAS DINÁMICAS NO LINEALES
GRAFOS.
ING. HUBNER JANAMPA PATILLA
AYACUCHO - PERÚ
2017
1
Objetivos de aprendizaje:
1.- Manejar conceptualmente y gráficamente las estructuras no lineales
mediante la implementación de grafos.
2.- Definir la matriz de adyacencia para las estructuras no lineales y su
forma de conceptualizarlo gráficamente a través de los grafos.
3.- Definir la implementación de los grafos mediante un lenguaje de
programación de alto nivel.
4.- Comprender los mecanismos de recorridos y búsquedas recursivas
en las estructuras no lineales.
2
1.- Introducción.
Los grafos son útiles para modelar y resolver problemas del mundo real.
Por ejemplo, el problema para encontrar que el menor número de
vuelos entre dos ciudades se puede modelar usando un grafo, donde
los vértices representan ciudades y los aristas representan los vuelos
entre dos ciudades adyacentes, como se muestra en la figura 1.
4
El estudio de los problemas de grafos se conoce como teoría de grafos.
La teoría de grafos fue fundada por Leonhard Euler en 1736, cuando introdujo
la terminología gráfica para resolver el famoso problema de los Siete Puentes
de Königsberg.
5
La ciudad de Königsberg, Prusia (ahora Kaliningrad, Rusia), fue dividida
por el río Pregel. Había dos islas en el río. La ciudad y las islas estaban
conectadas por siete puentes, como se muestra en la Figura 2. La
pregunta es, ¿se puede caminar, cruzar cada puente exactamente una
vez y regresar al punto de partida? Euler demostró que no es posible.
6
2. Terminología básica de grafos.
7
Por ejemplo los ,V y E para el gráfico de la figura 3 son los siguientes:
8
Un grafo puede ser dirigido o no dirigido. En un grafo dirigido, cada arista tiene
una dirección, lo que indica que puede moverse de un vértice al otro a través de la
arista. Puede modelar las relaciones padre / hijo usando un grafo dirigido. La figura 4
muestra un gráfico dirigido.
10
Los vértices pueden ser objetos de cualquier tipo. Por ejemplo, puede
considerar ciudades como objetos que contienen información, como el
nombre, población y alcalde. Por lo tanto, puedes definir vértices de la
siguiente manera:
Figura Nº 5 : Representación de
una clase en Java para un grafo.
11
Figura Nº 5 : Representación de
una clase en Java para un grafo.
12
Los vértices se pueden etiquetar convenientemente usando los números
naturales 0, 1, 2, … , n - 1, para un grafo para n vértices.
Figura Nº 6 : Representación de
un grafo y su matriz.
13
4. Representando las aristas mediante listas de adyacencia.
14
Fig. 8 Los vértices del grafo
representado mediante una
lista de aristas de adyacencia.
15
Según Liang (2015), usar matrices como listas es más eficiente para nuestros
algoritmos cuando implementamos grafos.
Utilizando listas de arreglos definimos la lista de aristas de adyacencia, que se puede
construir de la siguiente manera (Fig. 9):
16
5. Algoritmo de búsqueda de profundidad primero.
(Depth-First Search Algorithm)
• La primera visita es 0, y luego cualquiera de sus vecinos, digamos 1.
• Ahora se visita 1, como se muestra en la figura 10. El vértice 1 tiene
tres vecinos: 0, 2 y 4. Como ya se ha visitado 0, visitará 2 o 4.
• Como se han visitado todos los vecinos de 1, retroceda a 0. Como
se han visitado todos los vecinos de 0, la búsqueda finaliza.
• Como cada arista y cada vértice se visitan solo una vez, la
complejidad de tiempo del método es O (| E | + | V |), donde | E |
denota el número de aristas y | V | el número de vértices.
17
Fig. 10 : La búsqueda recursiva en profundidad para
la visita de un nodo y sus vecinos, los vértices son
visitados en el orden: 0, 1, 2, 3, 2, 1, 4.
18
6. Implementación mediante clases.
19
Fig. 12 : La interfaz Graph define las
operaciones comunes para todos los
tipos de grafos.
20
Bibliografía.
I. Liang, D.(2015). Introduction to Java Programming :(Tenth Edition)
EEUU: Pearson.
II. Horton, I. (2005). Beginning Java™ 2, JDK™ 5 Edition : (First Edition)
EEUU: Wrox.
III. Deitel, P. (2015). Java™ For Programmers: (Second Edition) EEUU:
Deitel Developer Series.
21
Gracias….
22