Mundo de las matemáticas
Teoría de graficas
4.5 Grafos de Similaridad
Estos surgen a partir de los grafos isomorfos con la diferencia de que entre cada adyacencia e incidencia deben tener la misma distancia entre cada vértice.
Por ejemplo.
Observando los grafos isomorfos vemos que ambos tienen la misma distancia entre cada uno de los vértices siendo así dos grafos similares en el caso contrario, aunque sean isomorfos si alguno de los grafos tiene una distancia diferente en uno de sus vértices ya no sería similares el cual es el caso contrario.
Ejercicio 1.
- El número de líneas en el programa.
- El número de instrucciones para regresar(return).
- El número de llamadas de funciones en el programa.
|
PROGRAMA |
# DE
LINEAS EN EL PROGRAMA |
# DE
INTRUCCIONES RETURN |
# DE
LLAMADAS DE FUNCIONES |
|
1 |
66 |
20 |
1 |
|
2 |
41 |
10 |
2 |
|
3 |
68 |
5 |
8 |
|
4 |
90 |
34 |
5 |
|
5 |
75 |
12 |
14 |
La singularidad es dependiendo del rango que se le dé, por ejemplo:
S=25 S (U, V) <= 25
Entonces nuestro grafo y rango queda de la siguiente forma:
A continuación, un video para una mejor comprensión:
4.6 Grafos Bipartidos
Un grafo bipartito es un grafo cuyos vértices se
pueden dividir en dos conjuntos disjuntos e
independientes U y V, es decir, cada arista conecta un vértice
en U uno en V. Los conjuntos de vértices U y
V generalmente se denominan partes del gráfico. De manera
equivalente, un gráfico bipartito es un gráfico que no contiene ciclos de
longitud impar.
Los dos conjuntos pueden considerarse como una coloración
del gráfico con dos colores: si uno colorea todos los nodos en U azul
y todos los nodos en verde, cada borde tiene extremos de diferentes colores,
como se requiere en el problema de coloración del gráfico. En cambio, tal
coloración es imposible en el caso de un grafo no bipartito, como un triángulo:
después de que un nodo se colorea de azul y otro de verde, el tercer vértice
del triángulo se conecta a vértices de ambos colores, impidiendo que siendo asignado
cualquiera de los dos colores. VUV
A menudo se escribe G = (U, V, E) para denotar un
gráfico bipartito cuya partición tiene las
partes U y V, E denotando los bordes del gráfico. Si
un gráfico bipartito no está conectado, puede tener más de una bipartición; en
este caso, la (U, V, E) notación es útil para especificar una
bipartición particular que puede ser importante en una aplicación. Si |U|
= | V|, es decir, si los dos subconjuntos tienen la misma cardinalidad,
entonces G se llama un gráfico bipartito balanceado. Si
todos los vértices del mismo lado de la bipartición tienen el mismo grado,
entonces G se llama biregular.
Los gráficos
bipartitos se pueden caracterizar de varias maneras diferentes:
- Un grafo es bipartito si y solo si no contiene un ciclo impar.
- Un grafo es bipartito si y sólo si es bicoloreable (es decir, su número cromático es menor o igual a 2).
- Un grafo es bipartito si y solo si cada arista pertenece a un número impar de enlaces, subconjuntos mínimos de aristas cuya eliminación aumenta el número de componentes del grafo.
- Un grafo es bipartito si y solo si el espectro del grafo es simétrico.
4.7 Representación de graficas
Existen diferentes formas de representar un grafo (simple), además de la geométrica y muchos métodos para almacenarlos en una computadora. La estructura de datos usada depende de las características del grafo y el algoritmo usado para manipularlo. Entre las estructuras más sencillas y usadas se encuentran las listas y las matrices, aunque frecuentemente se usa una combinación de ambas
4.7.1 Matrices
4.7.1.1 De incidencia
La matriz de incidencia es una matriz de tipo lógica y establece una conexión inequívoca entre los conjuntos. A los cuartiles que representan la relación entre los elementos de los conjuntos se les denomina relación de incidencia.
En el cruce de una fila n de X con una
columna m de Y, encontramos un valor clave: si este valor es 1,
indica que el elemento n del conjunto X está relacionado o
incide con el elemento m del conjunto Y. Por el contrario, un
valor 0 en esta intersección señala que no existe tal relación o incidencia
entre los elementos n y m.
Este concepto es fundamental para las matemáticas en
general, ya que una matriz de incidencia es una herramienta matemática versátil
y efectiva para representar y analizar las relaciones entre dos conjuntos de
elementos.
4.7.1.2 De adyacencia
Una matriz de
adyacencia es una matriz cuadrada utilizada para representar un gráfico
finito. Los elementos de la matriz indican si los pares de vértices son
adyacentes o no en el gráfico.
En el caso especial de un gráfico simple finito, la matriz
de adyacencia es una matriz (0,1) con ceros en su diagonal. Si el gráfico no
está dirigido (es decir, todos sus bordes son bidireccionales), la matriz de
adyacencia es simétrica. La relación entre un gráfico y los valores propios y
los vectores propios de su matriz de adyacencia se estudia en la teoría de
gráficos espectrales.
La matriz de adyacencia de un grafo debe distinguirse de su
matriz de incidencia, una representación de matriz diferente cuyos elementos
indican si los pares vértice-arista son incidentes o no, y su matriz de grado,
que contiene información sobre el grado de cada vértice.
Ejercicio 1
4.8 Caminos de circuitos
En un grafo se puede recorrer la información de diferentes maneras para llegar de un punto a otro.
4.8.1 Longitud de un camino
4.8.2 Algoritmo del camino más corto
4.9 Grafos Conexos
A continuación, un video para una mejor comprensión:
4.9.1 Circuito de Euler y de Hamilton
Circuito de Euler
Condiciones para saber si un grafo dado tiene un paseo o circuito de Euler.
1) Un grafo no dirigido G tiene un paseo de Euler si y solo si tiene cero o dos vértices de valencia impar.
2) Si un grafo no dirigido G tiene un circuito de Euler entonces todo vértice de G tiene valencia par, además de ser conexo.
Circuito de Hamilton
4.9.2 Graficas ponderadas
4.9.3 Coloración de grafos
- Esto significa que cada par de vértices adyacentes deberán estar iluminados con un color diferente
- En la coloración de grafos se busca usar la menor cantidad de colores posible
4.9.3.1 Numero cromático
Se llama número cromático del grafo G al número mínimo de colores con que se puede colorear un grafo, cuidando que los vértices adyacentes no tengan el mismo color.
Pasos para colorear un grafo:
1. Seleccionar el vértice v de mayor grado e iluminarlo con cualquier color del conjunto C
2. Colorear los vértices adyacentes al vértice v verificando que no existan vértices adyacentes del mismo color. En caso de ser necesario intercambiar colores. Si ya están coloreados todos los vértices, terminamos, en caso contrario continuar con el paso
3 seleccionar el vértice v de mayor grado que ya este coloreado y que todavía tenga vértices adyacentes sin colorear. Regresar al paso 2
4.9.4 Graficas isomorfas
- El número de aristas
- El número de vértices
- El conjunto de grados
- Ser o no conexos
- El número de circuitos de longitud n
- Tener o no circuito de Euler
A continuación, un video para una mejor comprensión:
4.9.5 Graficas planas
A continuación, un video para comprender mejor
4.9.6 Graficas homeomorfas
ARBOLES
5.1 PROPIEDADES DE LOS ARBOLES
Las propiedades en los árboles se componen de:
- Grado: es el número de nodos hijos de un nodo.
- Grado del árbol: es el máximo grado de todos los nodos.
- Nivel: número de arcos que se recorren para ir a un determinado nodo.
- La raíz: es de nivel 1(primer vértice).
- Altura del árbol: máximo número de niveles de todos los nodos.
- Rama: camino del nodo raíz a una hoja.
- Todo árbol que no es vacío, tiene un nodo raíz.
- Un nodo X es descendiente directo de un nodo Y, si el nodo X apunta al nodo Y; entonces X es hijo de Y.
- Un nodo X es antecesor directo de un nodo Y, si el nodo X apunta al nodo Y. entonces X es el padre de Y.
- Se dice que todos los nodos son descendiente directo; entonces, se dice que todos los nodos que son descendientes directos (hijos), de un mismo nodo (padre), son hermanos.
- Todo nodo que no tiene ramificaciones (hijos) se conoce con el nombre de terminal u hoja.
- Todo nodo que no es raíz, ni terminal u hoja se conoce con el nombre de nodo interior.
A continuación, un video para una mejor comprensión:
5.2 ARBOLES GENERADORES
A continuación, un video para una mejor comprensión:
5.3 ARBOLES GENERADORES MINIMALES
A continuación, un video para una mejor comprensión:
5.4 RECORRIDO DE ARBOL
El recorrido de un árbol es el proceso para recorrer (desplazarse a lo largo) un árbol de manera sistemática a fin de que cada vértice se visite y procese exactamente una vez .Hay tres métodos para recorrer un árbol binario a saber recorridos de pre orden , de in orden y de pos orden.
En ciencias de la computación, el recorrido de árboles se refiere al proceso de visitar de una manera sistemática, exactamente una vez, cada nodo en una estructura de datos de árbol (examinando y/o actualizando los datos en los nodos). Tales recorridos están clasificados por el orden en el cual son visitados los nodos. Los siguientes algoritmos son descritos para un árbol binario, pero también pueden ser generalizados a otros árboles.
Recorridos
Comparado a las estructuras de datos lineales como las listas enlazadas y arreglos unidimensionales, que tienen un método canónico de recorrido, las estructuras arborescentes pueden ser recorridas de muchas maneras diferentes. Comenzando en la raíz de un árbol binario, hay tres pasos principales que pueden ser realizados y el orden en la cual son realizados define el tipo de recorrido. Estos pasos (en ningún orden particular) son: ejecución de una acción en el nodo actual (referido como “visitando” el nodo), recorriendo al nodo hijo de la izquierda, y recorriendo al nodo hijo de la derecha. Así el proceso más fácilmente descrito a través de la recursión.
Los nombres dados para un estilo particular de recorrido vienen de la posición del elemento de raíz con respecto a los nodos izquierdo y derecho. Imagine que los nodos izquierdo y derecho son constantes en espacio, entonces el nodo raíz pudiera colocarse a la izquierda del nodo izquierdo (pre-orden), entre el nodo izquierdo y derecho (in-orden), o a la derecha del nodo derecho (post-orden).
Con el fin de ilustrar, se asume que los nodos izquierdos tienen siempre prioridad sobre los nodos derechos. Este ordenamiento puede ser invertido mientras el mismo orden sea asumido para todos los métodos de recorrido.
5.4.1. Notación prefija y posfija
• Visite la raíz
• Atraviese el sub-árbol izquierdo
• Atraviese el sub-árbol derecho
• Atraviese el sub-árbol izquierdo
• Visite la raíz
• Atraviese el sub-árbol derecho
Postorden: (izquierdo, derecho, raíz). Para recorrer un árbol binario no vacío en postorden, hay que realizar las siguientes operaciones recursivamente en cada nodo:
• Atraviese el sub-árbol izquierdo
• Atraviese el sub-árbol derecho
• Visite la raíz
A continuación, un video para una mejor comprensión:
5.5 EJECUCIONES DE LOS PRINCIPALES ALGORITMOS
5.3.1. Algoritmo de Prim
En informática, el algoritmo de Prim es un algoritmo codicioso que encuentra un árbol de expansión mínimo para un gráfico no dirigido ponderado. Esto significa que encuentra un subconjunto de las aristas que forma un árbol que incluye todos los vértices, donde se minimiza el peso total de todas las aristas del árbol. El algoritmo opera construyendo este árbol un vértice a la vez, desde un vértice inicial arbitrario, en cada paso agregando la conexión más económica posible del árbol a otro vértice.
El algoritmo fue desarrollado en 1930 por el matemático checo Vojtěch Jarník y luego redescubierto y vuelto a publicar por los informáticos Robert C. Prim en 1957 y Edsger W. Dijkstra en 1959. Por lo tanto, a veces también se le llama Jarník' algoritmo;s, algoritmo Prim-Jarník, algoritmo Prim-Dijkstra o el algoritmo DJP.
Otros algoritmos conocidos para este problema incluyen el algoritmo de Kruskal y el algoritmo de Borůvka. Estos algoritmos encuentran el bosque de expansión mínimo en un gráfico posiblemente desconectado; por el contrario, la forma más básica del algoritmo de Prim solo encuentra árboles de expansión mínimos en gráficos conectados. Sin embargo, al ejecutar el algoritmo de Prim por separado para cada componente conectado del gráfico, también se puede usar para encontrar el bosque de expansión mínimo. En términos de su complejidad temporal asintótica, estos tres algoritmos son igualmente rápidos para gráficos dispersos, pero más lentos que otros algoritmos más sofisticados. Sin embargo, para gráficos que son lo suficientemente densos, el algoritmo de Prim puede ejecutarse en tiempo lineal, cumpliendo o mejorando los límites de tiempo de otros algoritmos.
El algoritmo de Prim comienza en el vértice A. En el tercer paso, los bordes BD y AB tienen peso 2, por lo que BD es elegido arbitrariamente. Después de ese paso, AB ya no es un candidato para añadir al árbol porque vincula dos nodos que ya están en el árbol.
DescripciónEl algoritmo puede describirse de manera informal realizando los siguientes pasos:
Inicia un árbol con un solo vértice, elegido arbitrariamente del gráfico.Crece el árbol por un borde: de los bordes que conectan el árbol a los vértices que aún no están en el árbol, encontrar el borde mínimo-peso, y transferirlo al árbol.Repita el paso 2 (hasta que todos los vértices estén en el árbol).
Describa la acción del algoritmo de Prim para el grafo en la figura siguiente como un punto de partida.
calculamos el número de aristas y vértices. vértices = 8-1visitamos la arista de menor peso =74volvemos a elegir el de menor peso = 262 Gelegimos nueva línea incidente = 242 Eel siguiente de menor peso es =83 Del siguiente de menor peso =151 Fel siguiente que encontramos =230 Cy el último es ultimo A =355
74+232+242+83+151+230+355=1267
5.3.2. Algoritmo de Kruskal
En informática, el algoritmo de Prim es un algoritmo codicioso que encuentra un árbol de expansión mínimo para un gráfico no dirigido ponderado. Esto significa que encuentra un subconjunto de las aristas que forma un árbol que incluye todos los vértices, donde se minimiza el peso total de todas las aristas del árbol. El algoritmo opera construyendo este árbol un vértice a la vez, desde un vértice inicial arbitrario, en cada paso agregando la conexión más económica posible del árbol a otro vértice.
El algoritmo fue desarrollado en 1930 por el matemático checo Vojtěch Jarník y luego redescubierto y vuelto a publicar por los informáticos Robert C. Prim en 1957 y Edsger W. Dijkstra en 1959. Por lo tanto, a veces también se le llama Jarník' algoritmo;s, algoritmo Prim-Jarník, algoritmo Prim-Dijkstra o el algoritmo DJP.
Otros algoritmos conocidos para este problema incluyen el algoritmo de Kruskal y el algoritmo de Borůvka. Estos algoritmos encuentran el bosque de expansión mínimo en un gráfico posiblemente desconectado; por el contrario, la forma más básica del algoritmo de Prim solo encuentra árboles de expansión mínimos en gráficos conectados. Sin embargo, al ejecutar el algoritmo de Prim por separado para cada componente conectado del gráfico, también se puede usar para encontrar el bosque de expansión mínimo. En términos de su complejidad temporal asintótica, estos tres algoritmos son igualmente rápidos para gráficos dispersos, pero más lentos que otros algoritmos más sofisticados. Sin embargo, para gráficos que son lo suficientemente densos, el algoritmo de Prim puede ejecutarse en tiempo lineal, cumpliendo o mejorando los límites de tiempo de otros algoritmos.
El algoritmo de Kruskal es un algoritmo de la teoría de grafos para encontrar un árbol recubridor mínimo en un grafo conexo y ponderado. Es decir, busca un subconjunto de aristas que, formando un árbol, incluyen todos los vértices y donde el valor de la suma de todas las aristas del árbol es el mínimo. Si el grafo no es conexo, entonces busca un bosque expandido mínimo (un árbol expandido mínimo para cada componente conexa).
DescripciónEl algoritmo de Kruskal es un ejemplo de algoritmo voraz que funciona de la siguiente manera:
se crea un bosque B (un conjunto de árboles), donde cada vértice del grafo es un árbol separado se crea un conjunto C que contenga a todas las aristas del grafo mientras C es no vacío eliminar una arista de peso mínimo de C si esa arista conecta dos árboles diferentes se añade al bosque, combinando los dos árboles en un solo árbol en caso contrario, se desecha la arista. Al acabar el algoritmo, el bosque tiene un solo componente, el cual forma un árbol de expansión mínimo del grafo.
En un árbol de expansión mínimo se cumple:
la cantidad de aristas del árbol es la cantidad de nodos menos uno.
A continuación, un video para una mejor comprensión:
Referencias
Kleinberg, J., & Tardos, E. (2006). Algorithm Design. Pearson. ISBN 9780321295354.
Bondy, J. A., & Murty, U. S. R. (2008). Graph Theory (Graduate Texts in Mathematics). Springer. ISBN 9781846289699.
Bondy, J. A., & Murty, U. S. R. (2008). Graph Theory (Vol. 244). Springer.
Wilson, R. J. (2010). Introduction to Graph Theory (5th ed.). Pearson.
Gross, J. L., & Yellen, J. (2005). Graph Theory and Its Applications (2nd ed.). Chapman and Hall/CRC.
West, D. B. (2001). Introduction to Graph Theory (2nd ed.). Prentice Hall.
Diestel, R. (2017). Graph Theory (5th ed.). Springer.
Harary, F. (1969). Graph Theory. Addison-Wesley.
Deo, N. (2004). Graph Theory with Applications to Engineering and Computer Science. Dover Publications.
Tutte, W. T. (2001). Graph Theory As I Have Known It. Clarendon Press.
Mohar, B., & Thomassen, C. (2001). Graphs on Surfaces. Johns Hopkins University Press.
Whitney, H. (1932). Congruent Graphs and the Connectivity of Graphs. American Journal of Mathematics, 54(1), 150-168.
Bollobás, B. (1998). Modern Graph Theory. Springer.
Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms (3rd ed.). MIT Press.
Jarník, V. (1930). O jistém problému minimálním. Práce Moravské Přírodovědecké Společnosti, 6, 57-63.
Prim, R. C. (1957). Shortest Connection Networks And Some Generalizations. Bell System Technical Journal, 36(6), 1389-1401.
Kruskal, J. B. (1956). On the Shortest Spanning Subtree of a Graph and the Traveling Salesman Problem. Proceedings of the American Mathematical Society, 7(1), 48-50.








Comentarios
Publicar un comentario