PROBLEMA NÚMERO 20  COLABORACIONES CIENTÍFICAS          Francisco Garrido Carrasco
RESÚMEN DEL ENUNCIADO• DOS CIENTÍFICOS SON AFINES SI:  – FIGURAN COMO AUTORES DE UN MISMO    ARTÍCULO.  – EXISTE UNA SUCES...
REPRESENTACIÓN DEL PROBLEMA      RELACIÓN DE COLABORACIÓN EN UN ARTÍCULO C1                                             C2...
REPRESENTACIÓN DEL PROBLEMA                     C2                                               C3   C1                  ...
DE LOS TAD´S VISTOS HASTA AHORA,EL QUE MEJOR SE CORRESPONDE CON      EL GRÁFICO ANTERIOR ES: TAD GRAFO             Francis...
Características del GRAFO• Vértices: Representan a los científicos.• Arcos: Representa la relación entre científicos,  es ...
Características GRAFO• Grafo no dirigido:   – A afín B     han colaborado en el mismo artículo.                           ...
Características del GRAFO• Grafo no dirigido:                       C2                                                    ...
Características del GRAFOEJEMPLO                                   A afín D && D afín A     A   B   C   D                 ...
Características del GRAFO  TIPOS DE IMPLEMENTACIÓN         Francisco Garrido Carrasco
Características del GRAFO         TIPOS DE IMPLEMENTACIÓN• Matriz de adyacencia                  Francisco Garrido Carrasco
Características del GRAFO         TIPOS DE IMPLEMENTACIÓN• Matriz de adyacencia• Dos conjuntos                  Francisco ...
Características del GRAFO         TIPOS DE IMPLEMENTACIÓN• Matriz de adyacencia• Dos conjuntos• Lista de adyacencia       ...
Características del GRAFO    TIPOS DE IMPLEMENTACIÓNMATRIZ DE ADYACENCIA(mejor tiempo de acceso)           Francisco Garri...
ALGORITMO Francisco Garrido Carrasco
ALGORITMO• DEBE SER ITERATIVO                 Francisco Garrido Carrasco
ALGORITMO• DEBE SER ITERATIVO• COSTE CUADRÁTICO                 Francisco Garrido Carrasco
ALGORITMO• DEBE SER ITERATIVO• COSTE CUADRÁTICO• DEBE DETERMINAR SI A Y Z SON AFINES                 Francisco Garrido Car...
ALGORITMO•   DEBE SER ITERATIVO•   COSTE CUADRÁTICO•   DEBE DETERMINAR SI A Y Z SON AFINES•   DADO UN NÚMERO “n”, QUE DETE...
ALGORITMO• DEBE SER ITERATIVO• COSTE CUADRÁTICO• DEBE DETERMINAR SI A Y Z SON AFINES• DADO UN NÚMERO “n”, QUE DETERMINA EL...
ALGORITMOEN REALIDAD MI PROBLEMA ES:Comprobar si dos científicos son AFINES,dado un número máximo de científicosintermedio...
ALGORITMO              SOLUCIÓNRECORRER EL GRAFO DESDE UN VÉRTICE(CIENTÍFICO) DADO, INTENTANDO LLEGAR ALOTRO VÉRTICE (CIEN...
ALGORITMOOPCIONES PARA RECORRER       Francisco Garrido Carrasco
ALGORITMOOPCIONES PARA RECORRER    Recorrido en anchura  Recorrido en profundidad    Recorrido topológico       Algoritmo ...
ALGORITMORECORRIDO EN ANCHURA      Complejidad: O(n2)       Recorrido iterativo Válido para grafos no dirigidos          V...
ALGORITMORECORRIDO EN PROFUNDIDAD       Complejidad: O(n2)  Puede ser recursivo e iterativo  Válido para grafos no dirigid...
ALGORITMO     RECORRIDO TOPOLÓGICO          Complejidad: O(n2)          Recorrido iterativoPARA GRAFOS DIRIGIDOS Y SIN CIC...
ALGORITMOALGORITMO DE MMCOMPLEJIDAD O(n4)  Recorrido iterativo  ¡ NO VALDRÍA !    Francisco Garrido Carrasco
ALGORITMOALGORITMO DE WARSHALL  COMPLEJIDAD O(n3)     Recorrido iterativo    ¡ NO VALDRÍA !       Francisco Garrido Carrasco
ALGORITMOALGORITMO DE FLOYD COMPLEJIDAD O(n3)   Recorrido iterativo    Grafos valuados   ¡ NO VALDRÍA !     Francisco Garr...
ALGORITMO      ALGORITMO DE DIJKSTRA           Complejidad O(n2)           Recorrido iterativo            Grafos valuados ...
ALGORITMO        ALGORITMO DE PRIM           Complejidad O(n2)           Recorrido iterativo            Grafos valuados   ...
ALGORITMO      ALGORITMO DE KRUSKAL           Complejidad O(n2)           Recorrido iterativo            Grafos valuados  ...
ALGORITMO   LOS VÁLIDOS SON  Recorrido en anchuraRecorrido en profundidad  Algoritmo de Dijkstra       Francisco Garrido C...
ALGORITMO     UTILIZARÉRecorrido en anchura     Francisco Garrido Carrasco
void Anchura(Grafo G, TipoVertice v, CjtoVertices &Visitados){     CjtoVertices Ady;     TipoVertice w;                   ...
ALGORITMO              HAY QUE MODIFICAR ALGUNAS COSAS• Añadir parámetros de entrada.• Cada vértice será una estructura, c...
bool Anchura(Grafo G, TipoVertice v, TipoVertice v2, CjtoVertices &Visitados, int n){   bool encontrado = false;    CjtoVe...
bool Anchura(Grafo G, TipoVertice v, TipoVertice v2, CjtoVertices &Visitados, int n){   bool encontrado = false;    CjtoVe...
¿PREGUNTAS?    Francisco Garrido Carrasco
ALGORITMO               MÁS FÁCIL         Algoritmo de Dijkstra(Distancia mínima de un vértice al resto)               Fra...
ALGORITMO                 RESUMIENDO– Algoritmo de Dijkstra– Todos las aristas tienen peso 1– Comprobar en la matriz el va...
ALGORITMO                                   IMPLEMENTACIÓNProcedimiento Dijkstra (ent G: grafo; ent v: vértice;           ...
ALGORITMO                             IMPLEMENTACIÓNProcedimiento Afines (ent G: grafo; ent v: vértice; ent v2: vértice) d...
Próxima SlideShare
Cargando en…5
×

Garrido_Carrasco_Francisco_[Grafos]

678 visualizaciones

Publicado el

Publicado en: Tecnología
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
678
En SlideShare
0
De insertados
0
Número de insertados
3
Acciones
Compartido
0
Descargas
6
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Garrido_Carrasco_Francisco_[Grafos]

  1. 1. PROBLEMA NÚMERO 20 COLABORACIONES CIENTÍFICAS Francisco Garrido Carrasco
  2. 2. RESÚMEN DEL ENUNCIADO• DOS CIENTÍFICOS SON AFINES SI: – FIGURAN COMO AUTORES DE UN MISMO ARTÍCULO. – EXISTE UNA SUCESIÓN DE CIENTÍFICOS Ci TAL QUE (A Y C1), (C1 Y C2), … , (Cn-1 Y Cn), (Cn Y Z), ES DECIR, FIGURAN COMO AUTORES DE UN MISMO ARTÍCULO.• HAY QUE DETERMINAR LOS CIENTÍFICOS (NO REPETIDOS) AFINES A UNO DADO. Francisco Garrido Carrasco
  3. 3. REPRESENTACIÓN DEL PROBLEMA RELACIÓN DE COLABORACIÓN EN UN ARTÍCULO C1 C2 Francisco Garrido Carrasco
  4. 4. REPRESENTACIÓN DEL PROBLEMA C2 C3 C1 C4 C5 Francisco Garrido Carrasco
  5. 5. DE LOS TAD´S VISTOS HASTA AHORA,EL QUE MEJOR SE CORRESPONDE CON EL GRÁFICO ANTERIOR ES: TAD GRAFO Francisco Garrido Carrasco
  6. 6. Características del GRAFO• Vértices: Representan a los científicos.• Arcos: Representa la relación entre científicos, es decir, si existe arco entre dos vértices (científicos) han colaborado en el mismo artículo. Francisco Garrido Carrasco
  7. 7. Características GRAFO• Grafo no dirigido: – A afín B han colaborado en el mismo artículo. OR – Existe sucesión de científicos Ci / A - C1 - C2 - … - B && – B afín A han colaborado en el mismo artículo. OR – Existe sucesión de científicos Ci / B - C1 - C2 - … - A• El grafo permite ciclos. Francisco Garrido Carrasco
  8. 8. Características del GRAFO• Grafo no dirigido: C2 C3 C1 ADY(C3, C4) = 1 && ADY(C4, C3) = 1 C4 C5 Francisco Garrido Carrasco
  9. 9. Características del GRAFOEJEMPLO A afín D && D afín A A B C D B afín C && C afín B B afín D && D afín B A 0 0 0 1 B 0 0 1 1 C 0 1 0 0 A afín C && C afín A D 1 1 0 0 A D B C Francisco Garrido Carrasco
  10. 10. Características del GRAFO TIPOS DE IMPLEMENTACIÓN Francisco Garrido Carrasco
  11. 11. Características del GRAFO TIPOS DE IMPLEMENTACIÓN• Matriz de adyacencia Francisco Garrido Carrasco
  12. 12. Características del GRAFO TIPOS DE IMPLEMENTACIÓN• Matriz de adyacencia• Dos conjuntos Francisco Garrido Carrasco
  13. 13. Características del GRAFO TIPOS DE IMPLEMENTACIÓN• Matriz de adyacencia• Dos conjuntos• Lista de adyacencia Francisco Garrido Carrasco
  14. 14. Características del GRAFO TIPOS DE IMPLEMENTACIÓNMATRIZ DE ADYACENCIA(mejor tiempo de acceso) Francisco Garrido Carrasco
  15. 15. ALGORITMO Francisco Garrido Carrasco
  16. 16. ALGORITMO• DEBE SER ITERATIVO Francisco Garrido Carrasco
  17. 17. ALGORITMO• DEBE SER ITERATIVO• COSTE CUADRÁTICO Francisco Garrido Carrasco
  18. 18. ALGORITMO• DEBE SER ITERATIVO• COSTE CUADRÁTICO• DEBE DETERMINAR SI A Y Z SON AFINES Francisco Garrido Carrasco
  19. 19. ALGORITMO• DEBE SER ITERATIVO• COSTE CUADRÁTICO• DEBE DETERMINAR SI A Y Z SON AFINES• DADO UN NÚMERO “n”, QUE DETERMINA EL MÁXIMO NÚMERO DE CIENTÍFICOS INTERMEDIOS QUE PUEDE HABER ENTRE A Y Z Francisco Garrido Carrasco
  20. 20. ALGORITMO• DEBE SER ITERATIVO• COSTE CUADRÁTICO• DEBE DETERMINAR SI A Y Z SON AFINES• DADO UN NÚMERO “n”, QUE DETERMINA EL MÁXIMO NÚMERO DE CIENTÍFICOS INTERMEDIOS QUE PUEDE HABER ENTRE A Y Z• “n” >= 0 Francisco Garrido Carrasco
  21. 21. ALGORITMOEN REALIDAD MI PROBLEMA ES:Comprobar si dos científicos son AFINES,dado un número máximo de científicosintermediosTRADUCIDO A MI TAD GRAFO ES:Comprobar si EXISTE CAMINO entre ellos yque la longitud de este sea menor o igualque un número dado Francisco Garrido Carrasco
  22. 22. ALGORITMO SOLUCIÓNRECORRER EL GRAFO DESDE UN VÉRTICE(CIENTÍFICO) DADO, INTENTANDO LLEGAR ALOTRO VÉRTICE (CIENTÍFICO) DADO. Francisco Garrido Carrasco
  23. 23. ALGORITMOOPCIONES PARA RECORRER Francisco Garrido Carrasco
  24. 24. ALGORITMOOPCIONES PARA RECORRER Recorrido en anchura Recorrido en profundidad Recorrido topológico Algoritmo MM Algoritmo de Warshall Algoritmo de Floyd Algoritmo de Dijkstra Algoritmo de Prim Algoritmo de Kruskal Francisco Garrido Carrasco
  25. 25. ALGORITMORECORRIDO EN ANCHURA Complejidad: O(n2) Recorrido iterativo Válido para grafos no dirigidos VALDRÍA Francisco Garrido Carrasco
  26. 26. ALGORITMORECORRIDO EN PROFUNDIDAD Complejidad: O(n2) Puede ser recursivo e iterativo Válido para grafos no dirigidos VALDRÍA Francisco Garrido Carrasco
  27. 27. ALGORITMO RECORRIDO TOPOLÓGICO Complejidad: O(n2) Recorrido iterativoPARA GRAFOS DIRIGIDOS Y SIN CICLO ¡ NO VALDRÍA ! Francisco Garrido Carrasco
  28. 28. ALGORITMOALGORITMO DE MMCOMPLEJIDAD O(n4) Recorrido iterativo ¡ NO VALDRÍA ! Francisco Garrido Carrasco
  29. 29. ALGORITMOALGORITMO DE WARSHALL COMPLEJIDAD O(n3) Recorrido iterativo ¡ NO VALDRÍA ! Francisco Garrido Carrasco
  30. 30. ALGORITMOALGORITMO DE FLOYD COMPLEJIDAD O(n3) Recorrido iterativo Grafos valuados ¡ NO VALDRÍA ! Francisco Garrido Carrasco
  31. 31. ALGORITMO ALGORITMO DE DIJKSTRA Complejidad O(n2) Recorrido iterativo Grafos valuados ¡ VALDRÍA !PONIENDO A TODAS LAS ARISTAS PESO 1 Francisco Garrido Carrasco
  32. 32. ALGORITMO ALGORITMO DE PRIM Complejidad O(n2) Recorrido iterativo Grafos valuados ¡ PUEDE O NO VALER! PERO NO TIENE POR QUÉPONIENDO A TODAS LAS ARISTAS PESO 1 Francisco Garrido Carrasco
  33. 33. ALGORITMO ALGORITMO DE KRUSKAL Complejidad O(n2) Recorrido iterativo Grafos valuados ¡ PUEDE O NO VALER! PERO NO TIENE POR QUÉPONIENDO A TODAS LAS ARISTAS PESO 1 Francisco Garrido Carrasco
  34. 34. ALGORITMO LOS VÁLIDOS SON Recorrido en anchuraRecorrido en profundidad Algoritmo de Dijkstra Francisco Garrido Carrasco
  35. 35. ALGORITMO UTILIZARÉRecorrido en anchura Francisco Garrido Carrasco
  36. 36. void Anchura(Grafo G, TipoVertice v, CjtoVertices &Visitados){ CjtoVertices Ady; TipoVertice w; ALGORITMO ColaTipoVertice C; Visitados.Crear(); Visitados.Insertar(v); RECORRIDO EN ANCHURA C.Crear(); C.Insertar(v); while(!C.Vacia()){ C.Primero(v); C.Borrar(); //Tratamiento de v Ady.Crear(); G.Adyacentes(v,Ady); while(!Ady.Vacio()){ w = Ady.Elegir(); Ady.Borrar(w); if(!Visitados.Pertenece(w)){ Visitados.Insertar(w); C.Insertar(w); } } }} Francisco Garrido Carrasco
  37. 37. ALGORITMO HAY QUE MODIFICAR ALGUNAS COSAS• Añadir parámetros de entrada.• Cada vértice será una estructura, compuesta por el valor numérico del vértice y un contador, que determina la distancia a la que se encuentra respecto del nodo de partida. typedef struct Vertice{ int numeroVertice; int contador; };• El algoritmo devolverá un tipo booleano. Francisco Garrido Carrasco
  38. 38. bool Anchura(Grafo G, TipoVertice v, TipoVertice v2, CjtoVertices &Visitados, int n){ bool encontrado = false; CjtoVertices Ady; TipoVertice w; ColaTipoVertice C; Visitados.Crear(); Visitados.Insertar(v); C.Crear(); C.Insertar(v); while((!C.Vacia()) && (!encontrado)){ ALGORITMO C.Primero(v); C.Borrar(); //Tratamiento de v RECORRIDO EN ANCHURA Ady.Crear(); G.Adyacentes(v,Ady); MODIFICADO while((!Ady.Vacio()) && (!encontrado)){ w = Ady.Elegir(); Ady.Borrar(w); if(!Visitados.Pertenece(w)){ w.contador = 1 + v.contador; if((w == v2) && (w.contador <= n)){ encontrado = true; } Visitados.Insertar(w); C.Insertar(w); } } } return encontrado;} Francisco Garrido Carrasco
  39. 39. bool Anchura(Grafo G, TipoVertice v, TipoVertice v2, CjtoVertices &Visitados, int n){ bool encontrado = false; CjtoVertices Ady; TipoVertice w; ColaTipoVertice C; Visitados.Crear(); Visitados.Insertar(v); C.Crear(); C.Insertar(v); while((!C.Vacia()) && (!encontrado)){ ALGORITMO C.Primero(v); C.Borrar(); //Tratamiento de v RECORRIDO EN ANCHURA Ady.Crear(); G.Adyacentes(v,Ady); MODIFICADO while((!Ady.Vacio()) && (!encontrado)){ (MEJORA) w = Ady.Elegir(); Ady.Borrar(w); if(!Visitados.Pertenece(w)){ w.contador = 1 + v.contador; if((w == v2) && (w.contador <= n)){ encontrado = true; } Visitados.Insertar(w); if(w.contador <= n){ C.Insertar(w); } } } } return encontrado; Francisco Garrido Carrasco}
  40. 40. ¿PREGUNTAS? Francisco Garrido Carrasco
  41. 41. ALGORITMO MÁS FÁCIL Algoritmo de Dijkstra(Distancia mínima de un vértice al resto) Francisco Garrido Carrasco
  42. 42. ALGORITMO RESUMIENDO– Algoritmo de Dijkstra– Todos las aristas tienen peso 1– Comprobar en la matriz el valor dado para el par de vértices (científicos), los cuales estamos comprobando su afinidad Si (valor <= n) -> Existe camino -> Científicos afines Si (valor > n) OR (valor == 0) -> Científicos no afines Francisco Garrido Carrasco
  43. 43. ALGORITMO IMPLEMENTACIÓNProcedimiento Dijkstra (ent G: grafo; ent v: vértice; sal MenorCoste: vector[n] de etiqueta)variables Visitados: Cjto Vértices;Inicio Para todo w de G.Vertices() hacer MenorCoste[w] = etiqueta (G, v, w) FinPara MenorCoste[v] = 0; // no hace falta, ya vale 0 Visitados.Crear(); Visitados.Insertar(v); mientras Visitados no contenga todos los vértices hacer seleccionar w no pertenece Visitados t.q. MenorCoste[w] sea mínimo Visitados.Insertar(w); para todo u no pertenece Visitados hacer MenorCoste[u] = mínimo (MenorCoste[u], MenorCoste[w]+etiqueta(G, u, w)) Francisco Garrido Carrasco
  44. 44. ALGORITMO IMPLEMENTACIÓNProcedimiento Afines (ent G: grafo; ent v: vértice; ent v2: vértice) devuelve booleanVariables sal MenorCoste: vector[n] de etiquetaInicio Dijkstra(G, v, menorCoste); si ((MenorCoste[v2 - 1] == 0) OR (MenorCoste[v2 - 1] > n)) { devuelve false; } sino{ devuelve true; }Fin Francisco Garrido Carrasco

×