| http://img.scoop.it/9PkWDNq54W6bvNGjVdy1qzl72eJkfbmt4t8yenImKBVvK0kTmF0xjctABnaLJIm9 |
Contenido:
1. Arboles A.V.L.
1.1 Rotaciones
1.1.1 Rotación a la derecha.
1.1.2 Rotación a la izquierda.
1.1.3 Doble rotación a la derecha.
1.1.4 Doble rotación a la izquierda.
1.2 Creación de un árbol A.V.L.
1.3 Ejemplo de creación y balanceo de un árbol A.V.L.
2. Archivos.
2.1 Archivos de texto.
2.2 Archivos binarios.
2.3 Manejo de archivos.
2.3.1 Manejo de archivos.
3.Arboles B.
1. Arboles A.V.L.
1.1 Rotaciones
1.1.1 Rotación a la derecha.
1.1.2 Rotación a la izquierda.
1.1.3 Doble rotación a la derecha.
1.1.4 Doble rotación a la izquierda.
1.2 Creación de un árbol A.V.L.
1.3 Ejemplo de creación y balanceo de un árbol A.V.L.
2. Archivos.
2.1 Archivos de texto.
2.2 Archivos binarios.
2.3 Manejo de archivos.
2.3.1 Manejo de archivos.
3.Arboles B.
3.1 Generalidades de los arboles B.
3.2 operaciones principales de los arboles B.
3.2.1 inserción.
3.2.1 eliminación.
4. Arboles B+
4.1 Operaciones básicas.
4.1.1 búsqueda.
4.1.2 inserción.
4.1.3 eliminación.
5. Grafos
5.1 Características de los grafos
5.1.1 Adyacencia
5.1.2 Incidencia
5.1.3 Camino Simple
5.1.4 Arco cíclico
5.1.5 Grado de un vértice
5.2 Tipos de grafos
5.2.1 Grafo simple
5.2.2 Grafo completo
5.2.3 Grafo regular
5.2.4 Multigrafo
5.2.5 Grafo dirigido
5.2.6 Grafo Euleriano
5.2.7 Grafo Hamiltoniano
5.3 Almacenamiento de grafos
5.3.1 Lista de adyacencia
5.3.2 Matriz de adyacencia
5.4 Digrafo fuertemente conectado
6. Algoritmo de Warshall.
7. Algoritmo de Prim.
3.2 operaciones principales de los arboles B.
3.2.1 inserción.
3.2.1 eliminación.
4. Arboles B+
4.1 Operaciones básicas.
4.1.1 búsqueda.
4.1.2 inserción.
4.1.3 eliminación.
5. Grafos
5.1 Características de los grafos
5.1.1 Adyacencia
5.1.2 Incidencia
5.1.3 Camino Simple
5.1.4 Arco cíclico
5.1.5 Grado de un vértice
5.2 Tipos de grafos
5.2.1 Grafo simple
5.2.2 Grafo completo
5.2.3 Grafo regular
5.2.4 Multigrafo
5.2.5 Grafo dirigido
5.2.6 Grafo Euleriano
5.2.7 Grafo Hamiltoniano
5.3 Almacenamiento de grafos
5.3.1 Lista de adyacencia
5.3.2 Matriz de adyacencia
5.4 Digrafo fuertemente conectado
6. Algoritmo de Warshall.
7. Algoritmo de Prim.
8. Algoritmo de Dijkstra.
9. Algoritmo de Floyd.
9. Algoritmo de Floyd.
10. Algoritmo de Kruskal.
1. Arboles A.V.L.
1. Arboles A.V.L.
Son arboles binarios balanceados por altura, esto implica
que la altura de una rama menos la altura de la otra no sea mayor a 1 o menor a
-1.
-1 > 0 > 1

Factor de balance en
A: 0-0=0
Factor de balance en
B: 1-1=0
Factor de balance en
C: 0-0=0
Estructura de un árbol A.V.L.
struct nodo
{
Int info;
Int fb;
struct nodo*izq;
struct nodo*der;
};
1.1 Rotaciones
1.1.1 Rotación a la derecha:
Se hace una rotación a la derecha cuando la rama izquierda del árbol este des-balanceada y que el nodo que indica p tiene un factor de balance >1 y el nodo que indica q tienen factor de balance = 1, el inorden tiene que ser igual antes y después de hacer la rotación.
Se hace una rotación a la derecha cuando la rama izquierda del árbol este des-balanceada y que el nodo que indica p tiene un factor de balance >1 y el nodo que indica q tienen factor de balance = 1, el inorden tiene que ser igual antes y después de hacer la rotación.
1.1.2 Rotación a la izquierda:
Se hace una rotación a la izquierda cuando la rama derecha del árbol este des-balanceada que el nodo que indica p tiene un factor de balance <-1 y el nodo que indica q tienen factor de balance =-1, el inorden tiene que ser el mismo antes y después de la rotación.
Se hace una rotación a la izquierda cuando la rama derecha del árbol este des-balanceada que el nodo que indica p tiene un factor de balance <-1 y el nodo que indica q tienen factor de balance =-1, el inorden tiene que ser el mismo antes y después de la rotación.
1.1.3 doble rotación a la derecha:
Se hace una doble rotación a la derecha cuando el nodo que indica p tiene un factor de balance >1 y el nodo que indica q tienen factor de balance = -1, el inorden tiene que ser el mismo antes y después de la rotación.
Se hace una doble rotación a la derecha cuando el nodo que indica p tiene un factor de balance >1 y el nodo que indica q tienen factor de balance = -1, el inorden tiene que ser el mismo antes y después de la rotación.
1.1.4 doble rotación a la izquierda:
Se hace una doble rotación a la izquierda cuando el nodo que indica p tiene un factor de balance <-1 y el nodo que indica q tienen factor de balance =1, el inorden tiene que ser el mismo antes y después de la rotación.
Se hace una doble rotación a la izquierda cuando el nodo que indica p tiene un factor de balance <-1 y el nodo que indica q tienen factor de balance =1, el inorden tiene que ser el mismo antes y después de la rotación.
1.2 Creación de un árbol A.V.L:
Para la creación de un árbol A.V.L el primer elemento dado es la raíz, se van ingresando los siguientes elementos teniendo en cuenta que si es menor que la raíz se coloca al lado izquierdo y si es mayor se coloca al lado derecho. Los siguientes elemento a ingresar se comparan con los nodos hojas, se verifica el elemento que este mas cerca y se hace el mismo procedimiento que con la raíz, si el árbol queda des-balanceado se hace la o las rotaciones correspondientes.
Para la creación de un árbol A.V.L el primer elemento dado es la raíz, se van ingresando los siguientes elementos teniendo en cuenta que si es menor que la raíz se coloca al lado izquierdo y si es mayor se coloca al lado derecho. Los siguientes elemento a ingresar se comparan con los nodos hojas, se verifica el elemento que este mas cerca y se hace el mismo procedimiento que con la raíz, si el árbol queda des-balanceado se hace la o las rotaciones correspondientes.
1.3 Ejemplo
Dados los elementos crear el árbol A.V.L, balancearlo y decir cuantos saltos hay hasta el numero 20.
Dados los elementos crear el árbol A.V.L, balancearlo y decir cuantos saltos hay hasta el numero 20.
7, 4, 9, 20, 15.
2. Archivos.
Un archivo es una estructura de datos que almacenar datos de manera
ordenada, como una colección de información es decir una conjunto de registros,
existen dos tipos de archivos de texto y binarios.
2.1 Archivos de texto:
es una secuencia de caracteres organizados en lineas de texto, se puede almacenar textos planos, bases de datos entre otras, estos solo pueden tener textos.
es una secuencia de caracteres organizados en lineas de texto, se puede almacenar textos planos, bases de datos entre otras, estos solo pueden tener textos.
2.2 Archivos binarios:
es un conjunto de bytes que tienen comunicación entre si, estos archivo pueden ser textos con formatos, imágenes, vídeos, entre otros.
es un conjunto de bytes que tienen comunicación entre si, estos archivo pueden ser textos con formatos, imágenes, vídeos, entre otros.
2.3 Manejo de archivos:
Antes de empezar con la creación se debe crear un archivo .txt en algún lugar de la memoria del computador, para trabajar archivos se utiliza unos estructura especial dentro de
ella esta la función FILE se utiliza para crear el archivo, la funciones
"fstdio.h" trae todas las funciones de los archivos predefinidas por
defecto, por la general las instrucciones inician col la letra f.
2.3.1 Funciones básica:
se crea un apuntador de tipo FILE* , una vez creado el archivo se
procede abrir el archivo utilizando la función fopen que crea los ficheros en
el disco, dentro de el se asigna una instrucción que llama a nuestro apuntador.
Se pueden realizar operación cono de lectura, escritura, edición, etc. el
archivo se cierra con la función fclose.
el siguiente cuadro muestra las funciones de un archivo:
nombre
|
Función
|
fopen()
|
Abre
un archivo
|
fclose()
|
Cierra
un archivo
|
fgets()
|
Lee
una cadena de un archivo
|
fputs()
|
Escribe
una cadena de un archivo
|
fseek()
|
Busca
un byte especifico de un archivo
|
fprintf()
|
Escribe
una salida con formato en el archivo
|
fscanf()
|
Lee
una entrada con un formato en el archivo
|
feof()
|
Devuelve
cierto si se llega al final del archivo
|
ferror()
|
Devuelve
cierto si se produce un error
|
rewind()
|
Coloca
el cursor de posición en el archivo al principio del mismo
|
remove()
|
Borra
un archivo
|
fflush()
|
Vacía
un archivo
|
fread()
|
Lee
un bloque de una “stream” de datos (binario)
|
fwrite()
|
Escribe
un bloque de datos a un archivo como “stream” (binario)
|
FILE *
fopen (const char *filename, const char *opentype); //apertura de un archivo.
int fclose
(FILE *stream); //cierre de archivos.
opentype es una lista de parámetros para la función fopen que dice el
tipo de fichero que esta llamando.
parámetro
|
descripción
|
r
|
Abrir
un archivo para lectura, el fichero debe existir.
|
w
|
Abrir
un archivo para escritura, se crea si no existe o se sobrescribe si existe
|
a
|
Abrir
un archivo para escritura al final del contenido, si no existe se crea.
|
rt
|
Abrir
un archivo para lectura y escritura, el fichero debe existir.
|
wt
|
Crear
un archivo para lectura y escritura, se crea si no existe o se sobrescribe si
existe.
|
r+b o rb+
|
Abre
un archivo en modo binario para actualización (lectura y escritura).
|
rb
|
Abre
un archivo en modo binario para lectura.
|
este es un prototipo de un archivo para lectura, es necesario verificar
si el archivo se abrio correctamente con lña condicion " if(fp==NULL)
".
#include
<fstdio.h>
#include
<stdlib.h>
int
main(int argc, char** argv)
{
FILE
*fp;
fp
= fopen ( "fichero.in", "r"
);
if
(fp==NULL)
{
fputs ("File
error",stderr); exit (1);
}
fclose
( fp );
return
0;
}
3.Arboles B.
Son estructuras de datos utilizados para búsqueda de información, son arboles no binarios y con condiciones de balanceados, estos arboles son muy utilizados en las bases de datos.
3.1 generalidades de los arboles B.
- Utilizan un método de búsqueda externo.
- Cada nodo o pagina en un árbol B de orden D debe tener 2d calves como máximo y d claves como mínimo.
- cada pagina de un árbol B tiene 2d+1 hijos como máximo y d+1 hijos como mínimo, excepto la raíz que debe tener 1 clave y por consiguiente 2 hijos.
- Las paginas hijas van todas en el mismo nivel.
- los arboles B crecen de abajo hacia arriba.
3.2 operaciones básicas de arboles B
3.2.1 inserción:
Para insertar un nuevo elemento a un árbol B debemos tener en cuenta la clave a ingresar y donde lo vamos a ingresar. Se ingresa siempre en las paginas hijas, si la pagina tiene campo se busca el lugar donde va a quedar esta nueva clave y simplemente se ingresa, si la pagina esta llena se ingresa la clave y se sube el que esta mas hacia el centro de la pagina como raíz y se divide la pagina hija en dos.
3.2.2 Eliminación:
Esta operación es mas complicada que la inserción, trata de quitar una clave del árbol sin violar los principios del mismo, en la pagina raíz no debe haber menos de d claves ni mas de 2d claves, si se encuentra en la hoja simplemente se elimina, pero si no debe bajarse el adyacente de la pagina antecedente y sustituir esta clave con la que se encuentra mas a la derecha del sub-árbol izquierdo o la que esta mas a la izquierda del sub-árbol derecho.
4. Arboles B+.
Es una estructura de datos de tipo árbol, en el se encuentran reunidos datos ordenados de manera ordenada y donde el árbol quede balanceado, se pueden hacer operación en el como los que se pueden hacer en los demás arboles como lo es la búsqueda, la inserción y el borrado de claves. En un árbol B+ se puede tomar cualquier camino desde la raíz hasta una calve y debe tener la misma longitud, este tipo de arboles ocupa mas espacios ya que hay duplicidad de las claves.
4.1 operaciones básicas:
Estas operaciones son la búsqueda, la inserción y la eliminación.
4.1.1 Búsqueda:
Se comienza desde la raíz hasta llegar al hoja que se pida.
4.1.2 Inserción:
La inserción en un árbol B+ es parecida a la inserción el los arboles B, cuando se inserta una clave en una pagina y esta esta llena, se divide en dos a la izquierda y la derecha que deban tener d y d+1 claves. Una copia de la clave del medio sube a la pagina antecesora.
4.1.3 Borrado:
El borrado en un árbol B+es mas simple que en el árbol B por que las claves siempre están en las hojas del árbol, existen dos casos para la eliminación
- Al eliminar una clave m la pagina queda >=d termina la operación, las claves de la pagina raíz o de las demás no se modifican ya que son copias.
- Si m > d debe realizarse una distribución de claves como de paginas hojas, el árbol puede disminuir su altura.
5. Grafos
Un grafo es una estructura de datos que permite representar varias relaciones entre objetos, un grafo contiene vértices y arcos. Los grafos tiene una gran cantidad de aplicaciones, como los son el manejo de redes, construcción de circuitos electrónicos, en estrategias de ventas, cartografía, economía, entre otras.
5.1 Características de los grafos
5.1.1. Adyacencia:
Dos vértices tienen adyacencia si están unidos por un arco.
5.1.2. Incidencia.
Un arco es incidente en un vértice si una de de la puntas llega a ese vértice.
5.1.3. Camino simple.
Se tiene camino simple en un grafo si partiendo de cualquier vértice podemos recorrer todos los vértices sin repetir arcos.
5.1.4. Arco cíclico.
Un arco cíclico es cuando partiendo desde un vértice se llega al mismo vértice.
5.1.5. Grado de un vértice.
Es el numero de arcos que inciden en un vértice.
5.2 Tipos de grafos:
5.2.1. Grafos simples:
un grafo es simple si en su estructura no tiene arcos cíclicos y solo hay un solo arco entre dos vértices.
5.2.2 Grafo Completo.
Un grafo es completo su su grado es de n-1, donde n es la cantidad de vértices que comprenden toa la estructura del grafo.
5.2.3 Grafo regular.
Un grafo es regular si todos sus vértices tienen el mismo grado.
5.2.4 Multigrafo.
Es un grafo donde dos de sus vértices esta unidos por mas de un arco.
5.2.5 Grafo dirigido
Es cuando los arcos de un grafo tienen dirección (Dígrafo).
5.2.6 Grafo Euleriano
Es un grafo donde se parte de cualquier vértice podemos recorrer todos los arcos llegando de nuevo al vértice origen, se puede pasar por los vértices cuantas veces sea necesario pero los arcos solo se recorren una vez.
5.2.7 Grafo Hamiltoniano
Es un grafo donde se parte de cualquier vértice podemos recorrer todo los vértices sin repetir ninguno y finalmente llegar al vértice origen, los arcos pueden ser recorridos cuantas veces sea necesario.
5.3.1 Lista de adyacencia
Se utiliza una lista de adyacencia para guardar los adjuntos a un vértice dado.
5.3.1 Matriz de adyacencia
Se implementa una matriz de adyacencia para observar los caminos que hay de un vértice a otro, se coloca un 1 cuando hay camino de lo contrario un 0.
1 2 3 4 5
|
|||||
1
2
3
4
5
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
|
1
|
1
|
0
|
0
|
0
|
|
0
|
1
|
1
|
0
|
0
|
|
0
|
0
|
0
|
1
|
0
|
|
5.4 Digrafo fuertemente conectado
Un digrafo esta fuertemente conectado si desde un vértice se puede llegar a todos los demás. Para saber si esta fuertemente conectado es necesario hallar la sumatoria de matrices
S= M+ M2+M3+... Mnv
Donde nv es el numero de vértices
"El siguiente escrito fue realizado por el estudiante de ingeniería de sistemas de la Universidad INCCA de Colombia Jeisson Gonzalez"
Es un algoritmo de análisis
sobre grafos para encontrar el camino mínimo entre un par de vértices, como
resultado nos da la mejor ruta para poder llegar al vértice destino en grafos
dirigidos Como resultado nos dará una matriz de clausura transitiva.
Ejemplo:
PASOS
1) Hallamos la
matriz de adyacencia.
2) Tomamos cada vértice como pivote llenando su
respectiva matriz dependiendo si hay camino o no.
3) Como resultado nos da una matriz de adyacencia
transitiva con la cual podemos saber si hay un camino de un vértice cualquiera
a otro vértice elegido al azar
PIVOTE=cuando se dice
tomamos el vértice como pivote quiere decir que podemos formar una conexión
directa entre un vértice y un tercero, como
si el vértice tomado como pivote no estuviera
·
Matriz de adyacencia.
a
|
b
|
c
|
D
|
|
a
|
0
|
1
|
0
|
0
|
b
|
0
|
0
|
1
|
0
|
c
|
1
|
0
|
0
|
1
|
d
|
0
|
0
|
0
|
0
|
·
Tomamos como pivote a (a)
M1 (a)
a
|
b
|
c
|
D
|
|
a
|
0
|
1
|
0
|
0
|
b
|
0
|
0
|
1
|
0
|
c
|
1
|
1
|
0
|
1
|
d
|
0
|
0
|
0
|
0
|
·
Tomamos como pivote a (b) sin olvidar que (a)
sigue siendo pivote
M2 (b)
a
|
b
|
c
|
D
|
|
a
|
0
|
1
|
1
|
0
|
b
|
0
|
0
|
1
|
0
|
c
|
1
|
1
|
1
|
1
|
d
|
0
|
0
|
0
|
0
|
·
Tomamos como pivote a (c) sin olvidar que los anteriores vértices
siguen siendo pivotes en este caso (a) y
(b)
M3 (c)
a
|
b
|
c
|
D
|
|
a
|
1
|
1
|
1
|
1
|
b
|
1
|
1
|
1
|
1
|
c
|
1
|
1
|
1
|
1
|
d
|
0
|
0
|
0
|
0
|
·
No realizamos la matriz con el pivote (d) ya
que no tiene ningún arco de adyacencia
por lo tanto la matriz serian ceros ( 0
)
·
Matriz de clausura transitiva.
a
|
b
|
c
|
D
|
|
a
|
1
|
1
|
1
|
1
|
b
|
1
|
1
|
1
|
1
|
c
|
1
|
1
|
1
|
1
|
d
|
0
|
0
|
0
|
0
|
7. Algoritmo de Prim.
"El siguiente escrito fue realizado por el estudiante de ingeniería de sistemas de la Universidad INCCA de Colombia Rafael Echeveri"
"El siguiente escrito fue realizado por el estudiante de ingeniería de sistemas de la Universidad INCCA de Colombia Rafael Echeveri"
El
algoritmo de Prim consiste en recorrer todos los vértices de un grafo en el
menor peso posible, esto genera un árbol recubridor de menor peso, para que
esto se cumpla el grafo debe ser conexo, estar etiquetado y sus arcos deben de
tener un peso. Es decir
Si
observamos el arco que hay entre el vértice 0 y 2 tiene un numero en rojo, eso
es lo que llamamos “peso” luego también es un grafo conexo y esta etiquetado.
En
el algoritmo de Prim podemos comenzar por cualquier vértice luego para
recorrerlo hay que tener los vértices adyacentes al que hemos escogido como
punto de partida es decir, si empezamos con el vértice “0” este tiene dos
vértices adyacentes que son el “2” y el “3”.
Entonces
para saber a cuál de los dos escoger, entre el vértice “2” o “3” miramos el
peso que tiene cada arco. Así el peso del vértice “0” al vértice “2” es de 5, y del vértice “0” al vértice
“3” es de 8 entonces
simplemente escogemos el de menor peso que es del vértice “0” al vértice “2” y
ya tenemos trazado un arco. Así tenemos que hacer el mismo proceso para los
demás vértices hasta completar todo el grafo, hay que tener en cuenta que al
hacer el árbol recubridor, este no puede quedar cerrado por que quedaría como
un ciclo y no queremos eso. Aquí tendremos un ejemplo…
8. Algoritmo de Dijkstra.
Se le atribuye el nombre al
científico de computación Holandés Edsger Dijkstra, también llamado al
algoritmo de caminos mínimos. Consiste en encontrar el camino más corto entre
dos vértices, cada uno de los vértices debe tener una etiquete y los arcos un
peso. El grafo no debe estar dirigido ya que si lo esta no sería de este tipo.
Primero tomamos un punto de
partida x, este puede ser cualquier vértices y tomamos uno como el punto de
llegada, se toman los vértices adyacentes al origen y se evalúa el de menor
peso, es decir, el que tenga la etiqueta con el número menor, se toma ese
camino y se hace el mismo proceso hasta llegar al vértice que se tomó como
final.
Ejemplo
Calcular la longitud entre a
y g.
Vértice
|
1
|
2
|
3
|
5
|
6
|
a
|
[0 ,
x]
|
||||
b
|
[8 –
a]
|
[6 –
d]
|
[10
– e]
|
||
c
|
[5 –
a]
|
||||
d
|
[3 –
c]
|
||||
e
|
[2 –
d]
|
||||
f
|
[7 –
c]
|
[5 –
d]
|
|||
g
|
[1 -
e]
|
Camino mas corto: a, c, d, e, g.
En el anterior cuadro se
puede ver como se aplica el algoritmo de Dijkstra, se inicia en el primer
vértice donde se pone el peso acumulado y el vértice de donde procede al ser el
primero no tienen peso acumulado ni un vértice de procedencia, en la segunda casilla
se toman los vértices adyacente al primero y se compara, el recuadro azul da la
etiqueta definitiva que dice que este es el camino más corto entre los dos
vértices comparados, se realiza hasta el final y obtenemos el camino más corto.
9. Algoritmo de Floyd.
"El siguiente escrito fue realizado por la estudiante de ingeniería de sistemas de la Universidad INCCA de Colombia Luisa Parez"
"El siguiente escrito fue realizado por la estudiante de ingeniería de sistemas de la Universidad INCCA de Colombia Luisa Parez"
Es un algoritmo de análisis
sobre grafos para encontrar el camino mínimo en grafos dirigidos ponderados. El
algoritmo encuentra el camino entre todos los pares de vértices en una única
ejecución. El algoritmo de Floyd es un ejemplo de programación dinámica.
El algoritmo de Floyd es más
importante desde el punto de almacenamiento dado que puede ser implementado una
vez se halla actualizado la distancia de la matriz.
EJEMPLO:
Primero hacemos una matriz de caminos y una de padres.
MATRIZ DE CAMINOS MATRIZ DE PADRES
Fila A y columna A
Lo siguiente es coger una columna con una fila
y sumarla, si la suma de la fila y la columna es menor que el número que
está en la posición evaluada se cambia
pero si es mayor no se cambia. Si hay un infinito en la posición evaluada también
se cambia por el número que haya dado la suma.
Teniendo en cuenta que no se puede sumar un infinito con
otro número u otro infinito.
En la matriz de padres se coloca la letra que se está
evaluando que es de donde proviene el número que se puso en la matriz de
caminos.
Para saber cuál es el camino que tiene menor peso para llegar de la A a la E se mira en la última matriz de padres entonces para llegar a la E tiene que pasar por la C que es la letra que esta subrayada y si vemos es la que menor peso tiene para llegar a esta esto se ve en la matriz de camino. Otro ejemplo es para llegar de la E a la C tiene que pasar por la B que es la letra subrayada y también es el menor peso por el cual se puede ir lo podemos observar en la matriz de caminos
10. Algoritmo de Kruskal.
"El siguiente escrito fue realizado por el estudiante de ingeniería de sistemas de la Universidad INCCA de Colombia Santiago Rodriguez"
El algoritmo de Kruskal es un algoritmo de recubrimiento mínimo conexo ponderado, o sea que va unir todos los nodos formando un árbol, tomando las aristas que tengan un peso que siempre sea el menor.
Este árbol generado por el grafo es un sub-grafo que contiene todos sus vértices o nodos. Un grafo puede tener múltiples arboles.
Algoritmo basado en las aristas
- Agrega las aristas, una a la vez, en orden de peso creciente.
- objetivo del algoritmo de Kruskal es construir un árbol (sub-grafo sin ciclos) formado por arcos sucesivamente seleccionados de mínimo peso a partir de un grafo con pesos en sus arcos.
- Resuelve la misma clase de problemas que el Algoritmo de Prim a diferencia que no se escoge un nodo al azar.
- Trabaja con grafos ponderados y no dirigido.
Ejemplo:
http://eafranco.com/docencia/algoritmia/files/27_28/Clase_27_28.pdf
http://dis.um.es/~ginesgm/files/doc/aed/sec4.4.pdf
.png)
.png)
.png)




























No hay comentarios.:
Publicar un comentario