Algoritmos Métodos basados en grafos Carlos Aguirre Maeso

Transcripción

Algoritmos Métodos basados en grafos Carlos Aguirre Maeso
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 (<k>)
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|/<k>) 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.

Documentos relacionados