SlideShare uma empresa Scribd logo
1 de 12
Técnicas de Programación I UNIVERSIDAD PRIVADA SAN PEDRO TEMA : TRABAJO DE INVESTIGACION DE GRAFOS ,[object Object],[object Object],[object Object],[object Object],[object Object],ESCUELA DE ING. INFORMATICA Y DE SISTEMAS FACULTAD DE INGENIERIA
GRAFOS: Estructura de datos no lineal (Programación no numérica) que permiten representar los diferentes tipos de relaciones entre objetos G=(N,A) Supongamos: N={1,2,3,4,5} Y la siguiente relación en A: R={(1,2);(2,3);(3,4);(4,5)} En forma de grafo sería: 1 2 3 4 5
TIPOS DE GRAFOS: ,[object Object],* * ,[object Object],* * ,[object Object]
Búsqueda en Profundidad: Se implementa de forma recursiva, aunque también puede realizarse con una pila. Se utiliza un array “val” para almacenar el orden en que fueron explorados los vértices. int  id=0; int  val[V];  void  buscar()  { int  i; for  (i=1; i<=V; i++)  val[i]=0; for  (i=1; i<=V; i++)  if  (val[i]==0)  visitar(i);  } void  visitar(int i) // matriz de adyacencia  {  int  t; val[i]=++id; for  (t=1; t<=V; t++)  if  (a[i][t] &&  val[t]==0)  visitar(t); } void  visitar(int i) // listas de adyacencia  {  nodo  *t;  val[i]=++id;  for  (t=a[i]; t!=z; t=t->sig)  if  (val[t->v]==0) visitar(t->v); }
Representación de Grafos:  Una característica especial en los grafos es que podemos representarlos utilizando dos estructuras de datos distintas. En los algoritmos que se aplican sobre ellos veremos que adoptarán tiempos distintos dependiendo de la forma de representación elegida. En particular, los tiempos de ejecución variarán en función del número de vértices y el de aristas, por lo que la utilización de una representación u otra dependerá en gran medida de si el grafo es denso o disperso. Para nombrar los nodos utilizaremos letras mayúsculas, aunque en el código deberemos hacer corresponder cada nodo con un entero entre 1 y N (número de nodos o vértices) de cara a la manipulación de los mismos.
Obtención del camino de un Grafo: Método DIJKSTRA: es un algoritmo para la determinación del camino más corto dado un vértice origen al resto de vértices en un grafo dirigido y con pesos en cada  arista . void  iniciaGrafo() { for  ( int  i=1; <=n; i++) memset(&C[i][1], 0, n * sizeof(int)); } void  insertarnodo( int  a,  int  b,  int  c) { C[a][b] = C[b][a] = c; } int  D[MAXN];  /* distancias mínima desde s al nodo i */ int  padre[MAXN];  /* ruta hacia el nodo i desde s */ int  permanente[MAXN]; /* verdadero al tener la menor ruta al nodo i */
// calculamos las distancias while (  ! pq.empty() ) { nodotmp = pq.top();  pq.pop(); Vi = nodotmp.second; if  ( !permanente[Vi] ) { permanente[Vi] =  true ; for  (Vj = 1; Vj <= n; Vj++) if (!permanente[Vj] && C[Vi][Vj]>0 && D[Vi]+C[Vi][Vj]<D[Vj]) D[Vj] = D[Vi] + C[Vi][Vj], padre[Vj] = Vi, pq.push( pair <int,int> (-D[Vj], Vj) ); } } }  // leemos las aristas for ( int  i=0; i<e; i++) cout <<“Ingrese Arista1: ”; cin >>a; cout <<“Ingrese Arista2: ”;  cin >>b; cout <<“Ingrese Arista3: ”;  cin>>c; insertanodo(a, b, c); // usamos dijkstra para calcular la menor distancia // desde el i-esimo nodo hacia los demas for  ( int  i=1; i<=n; i++) dijkstra( i ), cout <<“La menor distancia desde el nodo hacia los otros nodos es: “<< i; imprimeGrafo(n), cout <<endl; }
Método WARSHALL: Para lograr el propósito del recorrido mínimo dentro de un grafo G, es necesario para nuestro caso en particular (puesto que no es la única técnica existente) la utilización del algoritmo de WARSHALL para el camino mínimo, el cual se expresa de la forma siguiente:
#include <stdio.h> #include <conio.h> #include <ctype.h> #include <stdlib.h> #include <iostream.h> #include <string.h> #define N 50 struct grafo {int dato; grafo *grafo[N]; grafo *sig; }*Pgrafo; grafo *insertar(grafo *nodo, grafo *Agrafo, int num) {if( !Agrafo ) {Agrafo= (grafo*) malloc( sizeof( grafo ) ); Agrafo->sig= NULL; Agrafo->dato= num; if( !nodo ) return Agrafo; else nodo->sig= Agrafo; return Agrafo; }
insertar( Agrafo, Agrafo->sig, num ); return nodo;} int enlazarfull( grafo *nodo ) {  int i; int vacio; if( !nodo->sig )return 0; for( i=0;i<vacio(nodo);i++ ) nodo->grafo[i]= NULL; return 1;} void main() { char op='A'; int val; int i; while(op!='S' ) {clrscr(); cout<<&quot; [N].- Nuevo Nodo.&quot; ; cout<<&quot; [E].- Menu Enlazes.&quot;; cout<<&quot; [V].- Ver Grafo.&quot;; cout<<&quot; [S].- Salir.&quot;; cout<<&quot; Digite Opcion: [  ] &quot;; cin>>op;
switch(op) { case 'N': cout<<&quot; Numero: &quot;; cin>>(&quot;&i&quot;,&val); Pgrafo= insertar( Pgrafo, Pgrafo, val ); break; case 'E':  enlazarfull(Pgrafo); break; case 'V':  break; } } cout<<&quot; Pulsa una tecla para salir...&quot;; getch(); return 0; }
GRACIAS TOTALES, nos vemos en el bingo

Mais conteúdo relacionado

Mais procurados

Mais procurados (12)

Programacion ii
Programacion iiProgramacion ii
Programacion ii
 
Eficiencia en uso de recursos memoria2 p
Eficiencia en uso de recursos memoria2 pEficiencia en uso de recursos memoria2 p
Eficiencia en uso de recursos memoria2 p
 
Coordenadas1
Coordenadas1Coordenadas1
Coordenadas1
 
Act 2 gz_parte_ii
Act 2 gz_parte_iiAct 2 gz_parte_ii
Act 2 gz_parte_ii
 
Tarea 12 funcion gràfica uni minuto
Tarea 12 funcion gràfica uni minutoTarea 12 funcion gràfica uni minuto
Tarea 12 funcion gràfica uni minuto
 
Actividades
ActividadesActividades
Actividades
 
Comandos básicos.pptxe eni
Comandos básicos.pptxe eniComandos básicos.pptxe eni
Comandos básicos.pptxe eni
 
Clases graficas ultima_clase_matlab
Clases graficas ultima_clase_matlabClases graficas ultima_clase_matlab
Clases graficas ultima_clase_matlab
 
estructura lineal lenguaje C
estructura lineal lenguaje Cestructura lineal lenguaje C
estructura lineal lenguaje C
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Bfs en grafos
Bfs en grafosBfs en grafos
Bfs en grafos
 
algoritmos
algoritmosalgoritmos
algoritmos
 

Semelhante a Grafos

Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)José Antonio Sandoval Acosta
 
08 strings o cadenas
08 strings o cadenas08 strings o cadenas
08 strings o cadenashorusblom
 
Grafos-2021.pdf
Grafos-2021.pdfGrafos-2021.pdf
Grafos-2021.pdfNathanLux3
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)luis freddy
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)luis freddy
 
Ejercicios programacion cortos
Ejercicios programacion cortosEjercicios programacion cortos
Ejercicios programacion cortosmilanollarves
 
Matlab presentacion enero2012
Matlab presentacion enero2012Matlab presentacion enero2012
Matlab presentacion enero2012gerardoarbito
 
GRAFICOS POLARES CLASE 8 2023.pdf
GRAFICOS POLARES CLASE 8 2023.pdfGRAFICOS POLARES CLASE 8 2023.pdf
GRAFICOS POLARES CLASE 8 2023.pdfNandoMartiHufer
 
COMANDOS EJEMPLOS DE MATLAB.pdf
COMANDOS EJEMPLOS DE MATLAB.pdfCOMANDOS EJEMPLOS DE MATLAB.pdf
COMANDOS EJEMPLOS DE MATLAB.pdfSolitarioFredd
 
Agrupamiento Kmeans
Agrupamiento KmeansAgrupamiento Kmeans
Agrupamiento KmeansOmar Sanchez
 
Graficos en matlab
Graficos en matlabGraficos en matlab
Graficos en matlabMarc Llanos
 
Guia De Practica 3
Guia De Practica 3Guia De Practica 3
Guia De Practica 3louis
 

Semelhante a Grafos (20)

Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
 
08 strings o cadenas
08 strings o cadenas08 strings o cadenas
08 strings o cadenas
 
Grafos-2021.pdf
Grafos-2021.pdfGrafos-2021.pdf
Grafos-2021.pdf
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
 
Ejercicios programacion cortos
Ejercicios programacion cortosEjercicios programacion cortos
Ejercicios programacion cortos
 
Matlab presentacion enero2012
Matlab presentacion enero2012Matlab presentacion enero2012
Matlab presentacion enero2012
 
Informe tecnico
Informe tecnicoInforme tecnico
Informe tecnico
 
MéTodos Java
MéTodos JavaMéTodos Java
MéTodos Java
 
Funciones str
Funciones strFunciones str
Funciones str
 
GRAFICOS POLARES CLASE 8 2023.pdf
GRAFICOS POLARES CLASE 8 2023.pdfGRAFICOS POLARES CLASE 8 2023.pdf
GRAFICOS POLARES CLASE 8 2023.pdf
 
COMANDOS EJEMPLOS DE MATLAB.pdf
COMANDOS EJEMPLOS DE MATLAB.pdfCOMANDOS EJEMPLOS DE MATLAB.pdf
COMANDOS EJEMPLOS DE MATLAB.pdf
 
Agrupamiento Kmeans
Agrupamiento KmeansAgrupamiento Kmeans
Agrupamiento Kmeans
 
expo
expoexpo
expo
 
Graficos en matlab
Graficos en matlabGraficos en matlab
Graficos en matlab
 
Guia De Practica 3
Guia De Practica 3Guia De Practica 3
Guia De Practica 3
 
Strcat
StrcatStrcat
Strcat
 
Plots
PlotsPlots
Plots
 
Cadenas y punteros.ppt
Cadenas y punteros.pptCadenas y punteros.ppt
Cadenas y punteros.ppt
 
Luis Gamboa
Luis  GamboaLuis  Gamboa
Luis Gamboa
 

Último

Presentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdf
Presentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdfPresentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdf
Presentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdfLuisAlbertoAlvaradoF2
 
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONESCULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONESMarielaAldanaMoscoso
 
instrumentos de mercados financieros para estudiantes
instrumentos de mercados financieros  para estudiantesinstrumentos de mercados financieros  para estudiantes
instrumentos de mercados financieros para estudiantessuperamigo2014
 
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptxPIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptxJosePuentePadronPuen
 
modulo+penal+del+16+al+20+hhggde+enero.pdf
modulo+penal+del+16+al+20+hhggde+enero.pdfmodulo+penal+del+16+al+20+hhggde+enero.pdf
modulo+penal+del+16+al+20+hhggde+enero.pdfmisssusanalrescate01
 
MARKETING SENSORIAL CONTENIDO, KARLA JANETH
MARKETING SENSORIAL CONTENIDO, KARLA JANETHMARKETING SENSORIAL CONTENIDO, KARLA JANETH
MARKETING SENSORIAL CONTENIDO, KARLA JANETHkarlinda198328
 
el impuesto genera A LAS LAS lasventas IGV
el impuesto genera A LAS  LAS lasventas IGVel impuesto genera A LAS  LAS lasventas IGV
el impuesto genera A LAS LAS lasventas IGVTeresa Rc
 
TIPOS DE PLANES administracion una perspectiva global - KOONTZ.pptx
TIPOS DE PLANES administracion una perspectiva global - KOONTZ.pptxTIPOS DE PLANES administracion una perspectiva global - KOONTZ.pptx
TIPOS DE PLANES administracion una perspectiva global - KOONTZ.pptxKevinHeredia14
 
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptxINTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptxRENANRODRIGORAMIREZR
 
MARKETING SENSORIAL -GABRIELA ARDON .pptx
MARKETING SENSORIAL -GABRIELA ARDON .pptxMARKETING SENSORIAL -GABRIELA ARDON .pptx
MARKETING SENSORIAL -GABRIELA ARDON .pptxgabyardon485
 
COPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESA
COPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESACOPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESA
COPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESADanielAndresBrand
 
Contabilidad universitaria Septima edición de MCGrawsHill
Contabilidad universitaria Septima edición de MCGrawsHillContabilidad universitaria Septima edición de MCGrawsHill
Contabilidad universitaria Septima edición de MCGrawsHilldanilojaviersantiago
 
LIC-ZIEGLER-Planificación y Control de Gestión
LIC-ZIEGLER-Planificación y Control de GestiónLIC-ZIEGLER-Planificación y Control de Gestión
LIC-ZIEGLER-Planificación y Control de GestiónBahamondesOscar
 
Clima-laboral-estrategias-de-medicion-e-book-1.pdf
Clima-laboral-estrategias-de-medicion-e-book-1.pdfClima-laboral-estrategias-de-medicion-e-book-1.pdf
Clima-laboral-estrategias-de-medicion-e-book-1.pdfConstructiva
 
Efectos del cambio climatico en huanuco.pptx
Efectos del cambio climatico en huanuco.pptxEfectos del cambio climatico en huanuco.pptx
Efectos del cambio climatico en huanuco.pptxCONSTRUCTORAEINVERSI3
 
Como Construir Un Modelo De Negocio.pdf nociones basicas
Como Construir Un Modelo De Negocio.pdf   nociones basicasComo Construir Un Modelo De Negocio.pdf   nociones basicas
Como Construir Un Modelo De Negocio.pdf nociones basicasoscarhernandez98241
 
Ejemplo Caso: El Juego de la negociación
Ejemplo Caso: El Juego de la negociaciónEjemplo Caso: El Juego de la negociación
Ejemplo Caso: El Juego de la negociaciónlicmarinaglez
 
ANÁLISIS CAME, DIAGNOSTICO PUERTO DEL CALLAO
ANÁLISIS CAME, DIAGNOSTICO  PUERTO DEL CALLAOANÁLISIS CAME, DIAGNOSTICO  PUERTO DEL CALLAO
ANÁLISIS CAME, DIAGNOSTICO PUERTO DEL CALLAOCarlosAlbertoVillafu3
 
FORMAS DE TRANSPORTE EN MASA-PDF.pdf lclases
FORMAS DE TRANSPORTE EN MASA-PDF.pdf  lclasesFORMAS DE TRANSPORTE EN MASA-PDF.pdf  lclases
FORMAS DE TRANSPORTE EN MASA-PDF.pdf lclasesjvalenciama
 
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docx
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docxModelo de convenio de pago con morosos del condominio (GENÉRICO).docx
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docxedwinrojas836235
 

Último (20)

Presentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdf
Presentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdfPresentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdf
Presentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdf
 
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONESCULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
 
instrumentos de mercados financieros para estudiantes
instrumentos de mercados financieros  para estudiantesinstrumentos de mercados financieros  para estudiantes
instrumentos de mercados financieros para estudiantes
 
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptxPIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
 
modulo+penal+del+16+al+20+hhggde+enero.pdf
modulo+penal+del+16+al+20+hhggde+enero.pdfmodulo+penal+del+16+al+20+hhggde+enero.pdf
modulo+penal+del+16+al+20+hhggde+enero.pdf
 
MARKETING SENSORIAL CONTENIDO, KARLA JANETH
MARKETING SENSORIAL CONTENIDO, KARLA JANETHMARKETING SENSORIAL CONTENIDO, KARLA JANETH
MARKETING SENSORIAL CONTENIDO, KARLA JANETH
 
el impuesto genera A LAS LAS lasventas IGV
el impuesto genera A LAS  LAS lasventas IGVel impuesto genera A LAS  LAS lasventas IGV
el impuesto genera A LAS LAS lasventas IGV
 
TIPOS DE PLANES administracion una perspectiva global - KOONTZ.pptx
TIPOS DE PLANES administracion una perspectiva global - KOONTZ.pptxTIPOS DE PLANES administracion una perspectiva global - KOONTZ.pptx
TIPOS DE PLANES administracion una perspectiva global - KOONTZ.pptx
 
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptxINTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
 
MARKETING SENSORIAL -GABRIELA ARDON .pptx
MARKETING SENSORIAL -GABRIELA ARDON .pptxMARKETING SENSORIAL -GABRIELA ARDON .pptx
MARKETING SENSORIAL -GABRIELA ARDON .pptx
 
COPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESA
COPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESACOPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESA
COPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESA
 
Contabilidad universitaria Septima edición de MCGrawsHill
Contabilidad universitaria Septima edición de MCGrawsHillContabilidad universitaria Septima edición de MCGrawsHill
Contabilidad universitaria Septima edición de MCGrawsHill
 
LIC-ZIEGLER-Planificación y Control de Gestión
LIC-ZIEGLER-Planificación y Control de GestiónLIC-ZIEGLER-Planificación y Control de Gestión
LIC-ZIEGLER-Planificación y Control de Gestión
 
Clima-laboral-estrategias-de-medicion-e-book-1.pdf
Clima-laboral-estrategias-de-medicion-e-book-1.pdfClima-laboral-estrategias-de-medicion-e-book-1.pdf
Clima-laboral-estrategias-de-medicion-e-book-1.pdf
 
Efectos del cambio climatico en huanuco.pptx
Efectos del cambio climatico en huanuco.pptxEfectos del cambio climatico en huanuco.pptx
Efectos del cambio climatico en huanuco.pptx
 
Como Construir Un Modelo De Negocio.pdf nociones basicas
Como Construir Un Modelo De Negocio.pdf   nociones basicasComo Construir Un Modelo De Negocio.pdf   nociones basicas
Como Construir Un Modelo De Negocio.pdf nociones basicas
 
Ejemplo Caso: El Juego de la negociación
Ejemplo Caso: El Juego de la negociaciónEjemplo Caso: El Juego de la negociación
Ejemplo Caso: El Juego de la negociación
 
ANÁLISIS CAME, DIAGNOSTICO PUERTO DEL CALLAO
ANÁLISIS CAME, DIAGNOSTICO  PUERTO DEL CALLAOANÁLISIS CAME, DIAGNOSTICO  PUERTO DEL CALLAO
ANÁLISIS CAME, DIAGNOSTICO PUERTO DEL CALLAO
 
FORMAS DE TRANSPORTE EN MASA-PDF.pdf lclases
FORMAS DE TRANSPORTE EN MASA-PDF.pdf  lclasesFORMAS DE TRANSPORTE EN MASA-PDF.pdf  lclases
FORMAS DE TRANSPORTE EN MASA-PDF.pdf lclases
 
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docx
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docxModelo de convenio de pago con morosos del condominio (GENÉRICO).docx
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docx
 

Grafos

  • 1.
  • 2. GRAFOS: Estructura de datos no lineal (Programación no numérica) que permiten representar los diferentes tipos de relaciones entre objetos G=(N,A) Supongamos: N={1,2,3,4,5} Y la siguiente relación en A: R={(1,2);(2,3);(3,4);(4,5)} En forma de grafo sería: 1 2 3 4 5
  • 3.
  • 4. Búsqueda en Profundidad: Se implementa de forma recursiva, aunque también puede realizarse con una pila. Se utiliza un array “val” para almacenar el orden en que fueron explorados los vértices. int id=0; int val[V]; void buscar() { int i; for (i=1; i<=V; i++) val[i]=0; for (i=1; i<=V; i++) if (val[i]==0) visitar(i); } void visitar(int i) // matriz de adyacencia { int t; val[i]=++id; for (t=1; t<=V; t++) if (a[i][t] && val[t]==0) visitar(t); } void visitar(int i) // listas de adyacencia { nodo *t; val[i]=++id; for (t=a[i]; t!=z; t=t->sig) if (val[t->v]==0) visitar(t->v); }
  • 5. Representación de Grafos: Una característica especial en los grafos es que podemos representarlos utilizando dos estructuras de datos distintas. En los algoritmos que se aplican sobre ellos veremos que adoptarán tiempos distintos dependiendo de la forma de representación elegida. En particular, los tiempos de ejecución variarán en función del número de vértices y el de aristas, por lo que la utilización de una representación u otra dependerá en gran medida de si el grafo es denso o disperso. Para nombrar los nodos utilizaremos letras mayúsculas, aunque en el código deberemos hacer corresponder cada nodo con un entero entre 1 y N (número de nodos o vértices) de cara a la manipulación de los mismos.
  • 6. Obtención del camino de un Grafo: Método DIJKSTRA: es un algoritmo para la determinación del camino más corto dado un vértice origen al resto de vértices en un grafo dirigido y con pesos en cada arista . void iniciaGrafo() { for ( int i=1; <=n; i++) memset(&C[i][1], 0, n * sizeof(int)); } void insertarnodo( int a, int b, int c) { C[a][b] = C[b][a] = c; } int D[MAXN]; /* distancias mínima desde s al nodo i */ int padre[MAXN]; /* ruta hacia el nodo i desde s */ int permanente[MAXN]; /* verdadero al tener la menor ruta al nodo i */
  • 7. // calculamos las distancias while ( ! pq.empty() ) { nodotmp = pq.top(); pq.pop(); Vi = nodotmp.second; if ( !permanente[Vi] ) { permanente[Vi] = true ; for (Vj = 1; Vj <= n; Vj++) if (!permanente[Vj] && C[Vi][Vj]>0 && D[Vi]+C[Vi][Vj]<D[Vj]) D[Vj] = D[Vi] + C[Vi][Vj], padre[Vj] = Vi, pq.push( pair <int,int> (-D[Vj], Vj) ); } } } // leemos las aristas for ( int i=0; i<e; i++) cout <<“Ingrese Arista1: ”; cin >>a; cout <<“Ingrese Arista2: ”; cin >>b; cout <<“Ingrese Arista3: ”; cin>>c; insertanodo(a, b, c); // usamos dijkstra para calcular la menor distancia // desde el i-esimo nodo hacia los demas for ( int i=1; i<=n; i++) dijkstra( i ), cout <<“La menor distancia desde el nodo hacia los otros nodos es: “<< i; imprimeGrafo(n), cout <<endl; }
  • 8. Método WARSHALL: Para lograr el propósito del recorrido mínimo dentro de un grafo G, es necesario para nuestro caso en particular (puesto que no es la única técnica existente) la utilización del algoritmo de WARSHALL para el camino mínimo, el cual se expresa de la forma siguiente:
  • 9. #include <stdio.h> #include <conio.h> #include <ctype.h> #include <stdlib.h> #include <iostream.h> #include <string.h> #define N 50 struct grafo {int dato; grafo *grafo[N]; grafo *sig; }*Pgrafo; grafo *insertar(grafo *nodo, grafo *Agrafo, int num) {if( !Agrafo ) {Agrafo= (grafo*) malloc( sizeof( grafo ) ); Agrafo->sig= NULL; Agrafo->dato= num; if( !nodo ) return Agrafo; else nodo->sig= Agrafo; return Agrafo; }
  • 10. insertar( Agrafo, Agrafo->sig, num ); return nodo;} int enlazarfull( grafo *nodo ) { int i; int vacio; if( !nodo->sig )return 0; for( i=0;i<vacio(nodo);i++ ) nodo->grafo[i]= NULL; return 1;} void main() { char op='A'; int val; int i; while(op!='S' ) {clrscr(); cout<<&quot; [N].- Nuevo Nodo.&quot; ; cout<<&quot; [E].- Menu Enlazes.&quot;; cout<<&quot; [V].- Ver Grafo.&quot;; cout<<&quot; [S].- Salir.&quot;; cout<<&quot; Digite Opcion: [ ] &quot;; cin>>op;
  • 11. switch(op) { case 'N': cout<<&quot; Numero: &quot;; cin>>(&quot;&i&quot;,&val); Pgrafo= insertar( Pgrafo, Pgrafo, val ); break; case 'E': enlazarfull(Pgrafo); break; case 'V': break; } } cout<<&quot; Pulsa una tecla para salir...&quot;; getch(); return 0; }
  • 12. GRACIAS TOTALES, nos vemos en el bingo