Algoritmos Métodos basados en grafos. Carlos Aguirre Maeso Escuela Politécnica Superior Universidad Autónoma de Madrid

Algoritmos Métodos basados en grafos Carlos Aguirre Maeso [email protected] Escuela Politécnica Superior Universidad Autónoma de Madrid Introdu

10 downloads 44 Views 390KB Size

Recommend Stories


UNIVERSIDAD CARLOS III DE MADRID ESCUELA POLITÉCNICA SUPERIOR
UNIVERSIDAD CARLOS III DE MADRID ESCUELA POLITÉCNICA SUPERIOR INGENIERÍA TÉCNICA INDUSTRIAL MECÁNICA PROYECTO FIN DE CARRERA ESTUDIO DEL NIVEL DE CO

UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES
UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES ANÁLISIS DE LOS PARÁMETROS TÉCNICOS EN LA APLICACIÓN DE LOS SIS

UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS AGRÓNOMOS
UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS AGRÓNOMOS Mechanisms of resistance of Ceratitis capitata (Wiedemann) (Dipter

UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES
UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES APLICACIÓN DEL CONTROL DIGITAL BASADO EN HARDWARE ESPECÍFICO PA

Universidad Carlos III Madrid
Universidad Carlos III Madrid Proyecto fin de grado Grado en Ingeniería Informática Happy Grow: Videojuego desarrollado con Unity3D para apoyo en la

Story Transcript

Algoritmos Métodos basados en grafos

Carlos Aguirre Maeso [email protected] Escuela Politécnica Superior Universidad Autónoma de Madrid

Introducción.

La teoría de grafos ha sido utilizada recientemente para: • • • •

Clasificación automática de secuencias de proteínas. Detección de jerarquías de proteínas. Análisis de redes genéticas. Reconstrucción de redes genéticas grandes obtenidas mediante modificación de genes.

Teoría de grafos.

Un grafo G es un par de conjuntos (V,E) • V={v1,v2,....vn} es el conjunto de vértices • E={(vi,vj),(vi’,vj’)......} es un conjunto de pares no ordenados de elementos de V. • E se denomina conjunto de ramas del grafo • El numero de nodos se denomina orden del grafo. • El número de ramas se denomina tamaño del grafo.

Ejemplo de grafo (Orden 8 y tamaño 11). v2

v4

v6

v1

v8 v3

v5

v7

V={v1,v2,v3,v4,v5,v6,v7,v8} E={(v1,v2),(v1,v3),(v2,v4),(v3,v5),(v4,v6), (v5,v7),(v6,v8),(v7,v8),(v2,v5),(v4,v5),(v6,v7)}

Bucles y ramas paralelas.

 Un bucle es una rama que empieza y termina en el mismo nodo (vi,vi).  Cuando dos ramas conectan el mismo par de vértices se denominan paralelas.  Un grafo con bucles se denomina pseudografo.  Un grafo con ramas paralelas pero sin bucles se denomina multigrafo.  Un grafo sin bucles ni ramas paralelas se denomina grafo simple.

Bucles y ramas paralelas. Ramas paralelas

v2

v4

v6

v1 Bucle

v8 v3

v5

v7

Grafos dirigidos.  Se puede considerar que los enlaces entre nodos son dirigidos (vi,vj) = (vj,vi).  Los grafos dirigidos se denominan también digrafos. v2

v4

v6

v1

v8 v3

v5

v7

Grafos ponderados.  A cada rama del grafo se le puede asociar un número.  El número asociado a cada rama puede indicar entre otras cosas una distancia, una capacidad, un valor temporal, etc… v2 v1

1

v4

5

v6 7

2

9

12 4

v3

10

v5

v8

2

6

v7

-1

Grafos dirigidos y ponderados.  Los grafos dirigidos y ponderados poseen ramas dirigidas a las que se asocia un número.

v2 v1

1

v4

5

v6 7

2

9

12 4

v3

10

v5

v8

2

6

v7

-1

Grado de un nodo.

 Dos nodos de un grafo son vecinos o adyacentes si existe una rama que los conecta.  El grado de un nodo es el número vecinos que tiene dicho nodo.  En los grafos dirigidos se calcula el grado de entrada y el grado de salida.  En los grafos ponderados, el grado se puede promediar por el número asociado a las ramas.  Un grafo se dice que es regular si todos los nodos tienen el mismo grado.

Grado del nodo V2. Grado 3

v2

v4

v6

v1 Grado de salida 1

Grado de entrada 2

v8

v2

v3

v5

v4

v7

v6

v1

v8 v3

v5

v7

Subgrafos.

 Un grafo G’=(V’,E’) es un sugrafo de un grafo G=(V,E) si V’ es un subconjunto de V y E’ es un subconjunto de E..

G

v2

v4

v6

v1

G’

v2

v6

v8 v3

v5

v7

v8 v3

v5

v7

Subgrafos.  Un subgrafo G’=(V’,E’) de un grafo G=(V,E) se dice que es abarcador si V=V’.

G

v2

v4

v2

v6

v1

v8 v3

v5

v7

G’

v4

v6

v1

v8 v3

v5

v7

Paseos, caminos, circuitos y ciclos.

 Un paseo de un nodo u a un nodo v es una secuencia de vértices {v0,v1,....vk} con v1=u vk=v y (vi-1,vi) rama del grafo.  El número de ramas del paseo es su longitud.  Un paseo en el cual no se repiten ramas se denomina rastro.  Un paseo en el cual todos los vertices {v0,v1,....vk} son distintos se denomina camino.  Un camino mínimo entre dos nodos es aquel de menor longitud de entre todos los posibles caminos entre ambos nodos.

v2

Paseo

v4

v6

v1

v8 v3

v5

v7

v4

v6

C={v1,v2,v5,v3,v1,v2,v4,v6,v7,v8} v2

Rastro v1

k=9

v8 v3

v5

v7

C={v1,v3,v5,v2,v4,v5,v7,v8}

k=7

v2

Camino

v4

v6

v1

v8 v3

v5

v7

v4

v6

C={v1,v2,v5,v4,v6,v7,v8} Camino mínimo

v2

k=6

v1

v8 v3

v5

C={v1,v2,v4,v6,v8}

v7

k=4

Paseos, caminos, circuitos y ciclos.

 Un paseo cerrado es un paseo {v0,v1,....vk} tal que v0=vk.  Un paseo cerrado en el que no se repiten ramas es un circuito.  Un ciclo es un circuito en el que no se repiten vértices.

Paseos, caminos, circuitos y ciclos.

v2

Ciclo

v4

v6

v1

v8 v3

v5

v7

C={v1,v2,v4,v6,v8,v7,v5,v3,v1}

k=7

Conexidad.  Un grafo es conexo si para cada par de nodos del grafo existe al menos un camino que los une. Grafo conexo v1

Grafo no conexo

v2

v1

v2

v5 v3

v4

v5 v3

v4

Conexidad.  Una componente conexa de un grafo es cada uno de los subgrafos maximales conexos Componentes conexas v1

v2 v5

v3

v4

Conexidad.  Un punto de articulación es un nodo que desconecta un grafo conexo.  Un corte es un conjunto de ramas que desconecta un grafo conexo,  Si un corte esta compuesto por una única rama, se denomina puente.  Un corte mínimo de un grafo es el mínimo número de ramas que al ser eliminadas desconectan el grafo.

Conexidad. v1

v3

Corte

v2

v4

v6

v5

Puente v8

v7

Punto de articulación

Bosques y árboles.  Un grafo sin ciclos (acíclico) se denomina bosque.  Un arbol es un grafo acíclico conexo.  Cada componente conexa de un bosque, es un árbol.

Bosques y árboles.

G

v2

v4

G v5

v6

v1

v8 v3

v5

v7

v7

v3 v1

v2

v8

v4 v6

Bosques y árboles.  Un subgrafo abarcador acíclico de un grafo G se denomina un bosque abarcador.  Un subgrafo abarcador conexo acíclico de un grafo G se denomina un arbol abarcador.

Bosques y árboles.

G

v2

v4

v6

v1

v2 v8

v3

v5

v7

G’

v4

v6

v1

v8 v3

Árbol abarcador

v5

v7

Representación de grafos Hay dos formas estándar de representar un grafo en un ordenador. • Matriz de adyacencia. • Lista de adyacencia.

v2

v4

v6

v1

v8 v3

Matriz de adyacencia 01100000 10011000 10001000 01001100 01110010 00010011 00001101 00000110

v5

v7 Lista de adyacencia 1 2 3 4 5 6 7 8

2

3

1

4

1

5

2

5

6

2

3

4

4

7

8

5

6

8

6

7

5

7

Matriz de Adyacencia

Lista de adyacencia

 Consume mucha memoria.  Fácil de añadir o eliminar ramas  Fácil saber si existe la rama (a,b).  Lento enumerar los vecinos de un nodo.

 Consumo limitado de memoria.  Costoso añadir o eliminar ramas.  Costoso saber si existe la rama (a,b).  Rápido enumerar los vecinos de un nodo.

Clasificación de grafos

 Los grafos se clasifican en función de unas determinadas métricas topológicas.  Las métricas mas empleadas son: • • • • • •

Tamaño |E| y orden |V| Dispersión (|E|/|V|) Distribución del grado de los nodos Grado medio () Coeficiente de agrupamiento (C) Camino carácteristico (L)

Coeficiente de agrupamiento  El coeficiente de agrupamiento (C) es un valor métrico local que mide el nivel de agrupamiento de los nodos.  Cálculo de C

• Para cada nodo v del grafo se obtiene su vencidario, es decir, el cojunto de nodos que son vecinos de v, el tamaño del vecindario coincide con el grado de v (kv) • Se calcula el coeficiente Nv/(kv(kv-1)) donde Nv es el numero de ramas que hay entre los vecinos de v. • El valor anterior se promedia entre todos los nodos del grafo Cv= 6/(4*3)=1/2

v

Camino característo  El camino característico (L) es un valor métrico global que mide el nivel grado de separacion de los nodos.  Cálculo de C

• Para cada nodo v se calcula la distancia promedio a todos los demas |V| nodos del grafo, Lv= Σk=1d(v,vk)/(|V|-1) • Se calcula|V|el promedio del valor anterior entre todos los nodos del grafo L= Σv=1 Lv /|V| .

Algunas topologias.  Las topologías mas frecuentes son: • • • •

Grafos aleatorios Grafos regulares Mundo pequeño Grafos libres de escala

Grafos aleatorios  Fueron estudiados principalmente por Erdos y Renyi en los años 50.  Cada rama del grafo existe con una determinada probabilidad p.  Erdos y Renyi estudiaron los valores de las metricas topológicas para diferentes valores de $p$.  Para la grafos dispersos (p pequeña) se puede comprobar que tanto C (aproximadamente 0) como L (aproximadamemte Ln(|V|) son pequeños

Grafos Regulares  Son los mejor conocidos de forma analítica  Existen expresiones cerradas para todas las métricas.  Para la grafos dispersos se puede comprobar que tanto C (aprximadamente 0.75) como L (aproximadamente |V|/) son grandes

Mundo pequeño (Watts y Strogatz 1998)  Son grafos que presentan altos valores de C (aprox .8) y bajos valores de L (aprox ln(|V|).  Se obtienen introduciendo pequeño número de “atajos” en un grafo regular  Representan bien un gran número de redes tales como redes sociales.

Libre de escala (Albert y Barabasi 1999)  Son grafos que presentan bajos valores de C (aprox 0) y bajos valores de L (aprox ln(|V|).  Se obtienen mediante crecimiento de la red y enlace preferencial  Cuando la distribución de los nodos se dibuja en escala log-log aparece una línea recta.  Representan bien un gran número de redes tales como internet o redes de reacciones químicas.

Metricas Anillo Regular

125.438

0.643

Mundo Pequeño

14.2

0.626

Libre de escala

3.409

0.0186

Aleatorio

3.89

0.004

|V|=2000

k=8

Algorítmos sobre grafos

 El algoritmo de búsqueda en anchura permite calcular un camino mínimo entre dos nodos de un grafo.  Dijkstra es una versión del algoritmo anterior para grafos ponderados.  Ambos algoritmos funcionan tanto en grafos dirigidos como no dirigidos.  Los algoritmos nos permiten calcular las métricas sobre el grafo.

BusquedaAnchura(V,E,s)

Para cada vertice u en V-s

visitado[u]=FALSE, d[u]=infinito,p[u]=NIL

visitado[s]=TRUE,d[s]=0,p[s]=NIL Encueue(Q,s)

While(NoVacia(Q)) u=Head(Q)

para cada v en adj(u)

if visitado[v]=FALSE

d[v]=d[u]+1,p[v]=u Enqueue(Q,v)

visitado[v]=TRUE

Dequeue(Q)

2

U=1

4

1

2

3

4

5

0

i

i

i

i

T

F

F

F

F

p

N

N

N

N

N

Q

1

d visitado

1 3

1 2 3 4 5

5

2

3

1

3

4

1

2

5

2

5

3

4

2

U=1

4

1

d

3

1 2 3 4 5

5

2

3

1

3

4

1

2

5

2

5

3

4

3

4

5

0

1

i

i

i

T

T

F

F

F

p

N

1

N

N

N

Q

1

2

visitado

1

2

2

U=1

4

1

d

1

1 2 3 4 5

5

2

3

1

3

4

1

2

5

2

5

3

4

3

4

5

0

1

1

i

i

T

T

T

F

F

p

N

1

1

N

N

Q

1

2

3

visitado

3

2

2

4

1

d

3

1 2 3 4 5

5

2

3

1

3

4

1

2

5

2

5

3

4

2

3

4

5

0

1

1

2

i

T

T

T

T

F

p

N

1

1

2

N

Q

2

3

visitado

1

1

U=2

2

4

1

d

3

1 2 3 4 5

5

2

3

1

3

4

1

2

5

2

5

3

4

2

3

4

5

0

1

1

2

i

T

T

T

T

F

p

N

1

1

2

N

Q

2

3

4

visitado

1

1

U=2

2

4

1

d

3

1 2 3 4 5

5

2

3

1

3

4

1

2

5

2

5

3

4

2

3

4

5

0

1

1

2

2

T

T

T

T

T

p

N

1

1

2

3

Q

3

4

5

visitado

1

1

U=2

2

4

1

U=3 1

2

3

4

5

0

1

1

2

2

T

T

T

T

T

p

N

1

1

2

3

Q

4

5

d visitado

3

1 2 3 4 5

5

2

3

1

3

4

1

2

5

2

5

3

4

2

4

1

1

d visitado

3

1 2 3 4 5

U=3

5

2

3

1

3

4

1

2

5

2

5

3

4

p Q

2

3

4

5

0

1

1

2

2

T

T

T

T

T

N

1

1

2

3

CLUSTERING-COEFFICIENT(w) 1 n = rows[w] 2 ci = 0 3 for i = 1 to n 4 do neighbor[i]= 0 5 for i = 1 to n 6 do k = 0 7 for j = 1 to n 8 do if W[i][j] = 1 9 then neighbor[k]= j 10 k = k + 1 11 12 realedges = 0 13 for p = 0 to k − 2 14 do for q = p + 1 to k − 1 15 do if w[neighbor[p]][neighbor[q]] = 1 16 then realedges = realedges + 1 17 18 19 totaledges = k(k − 1)/2 20 ci = ci + realedges/totaledges 21 ci = ci/n 22 return ci

DEGREE-DISTRIBUTION(w) 1 n = rows[w] 2 for i = 1 to n 3 do dist[i] = 0 4 for i = 1 to n 5 do numedges = 0 6 for j = 1 to n 7 do if w[i][j] = 1 and i != j 8 then numedges numedges + 1 9 10 distnumedges = distnumedges + 1 11 for i = 1 to n 12 do disti = disti/n 13 return dist

 El algoritmo de Búsqueda en profundidad permite calcular puntos de articulación de un grafo.  El algoritmo de Ford-Fulkerson permite calcular cortes mínimos.

Aplicaciones

 Las técnicas basadas en grafos se utilizan para el análisis o clasificación de cadenas de datos  La técnica suele consistir en la construcción de un grafo donde los nodos son cada uno de los datos obtenidos y las ramas posibles relaciones entre los datos y la aplicación de algún algoritmo conocido sobre este grafo.

Click

 Click (Sharan & Shamir) es un algoritmo de clustering aplicado al análisis de expresiones genéticas (gene expressions).  Click también ha sido utilizado para clustering de conjuntos de datos de proteínas (ProtoMap).

 El problema de clustering consiste en partir un conjunto V en k conjuntos disjuntos V1,V2,....Vk tal que la unión de todos ellos es V.  Para comprobar la calidad del clustering se definen dos medidas • Separación entre clusters • Homogeneidad de cada cluster

Click(G)

si V(G)={u}

Añade {u} al conjunto de vertices aislados

si G es un cluster

Añadir G a la lista de clusters

en otro caso

H, H’ = CorteMínimo(G) Click(H)

Click(H)’

 Click se ha utilizado para clustering de expresiones genéticas donde cada nodo es una expresión.  Dos nodos se conectan si un coeficiente de similitud entre ambas expresiones genéticas es mayor que un cierto umbral.

Resultados de click cuando se aplica al conjunto de datos de la respuesta de los fibroblastos humanos al suero

ProtoMap

 ProtoMap es un proyecto dedicado a la clasificación de secuencias de proteínas y jerarquización de familias de proteínas.  Cada vértice es una secuencia y el peso de cada rama es un coeficiente de similitud entre las proteínas.

 Los clusters se obtienen buscando grupos de nodos altamente conectados entre sí.  Los autores aplicaron el método a la base de datos SWISS-PROT.  Los resultados se pueden consultar en http://www.protomap.cs.huji.ac.il

Redes de interacción

 Tong et al. analizan redes de interacción de proteínas.  Cada nodo del grafo es una proteína.  Una rama significa una interacción entre ambas proteínas.

 Un k-core de un grafo G es un subgrafo G’ tal que el grado de cada nodo de G’ es al menos k.  Este algoritmo produce una jerarquía de subgrafos basandose en el k de los k-cores obtenidos para cada posible k.

Dominio SH3 (|V|=206 |E|=394)

6-Core del dominio SH3

Cliff

 Cliff (Xing & Karp) ha sido utilizado para clustering de datos con un número alto de dimensiones.  De nuevo cada nodo es una expresión genética (muy larga) y las ramas un coeficiente de similitud entre nodos.  Cliff usa cortes mínimos y técnicas bayesianas para definir los clusters.

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.