22
DataWeb Research http://dataweb.infor.uva.es/ Miguel A. Martínez Prieto & Javier D. Fernández Universidad de Valladolid El grafo Web: Implementaciones Clásicas vs. Estructuras Compactas La Revolución de los Datos II Valladolid, 05/03/2013

El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

DataWeb Research http://dataweb.infor.uva.es/

Miguel A. Martínez Prieto & Javier D. Fernández

Universidad de Valladolid

El grafo Web:

Implementaciones Clásicas vs.

Estructuras Compactas

La Revolución de los Datos II

Valladolid, 05/03/2013

Page 2: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

World Wide Web

Page 3: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Grafo Web -> Grafo Dirigido

miblog.es

uva.es

tublog.es

periodico.es

conferencias.es

facultad.es

unileon.es

Page 4: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Estudio del grafo de la Web

Distancia media entre nodos es pequeña

6.83

Diámetro es pequeño (camino más largo entre nodos)

16-28 (se suele tomar 19)

Distribuciones Zipf

Enlaces fuera y enlaces que llegan a una Web

Localidad de referencia

>75% de las páginas tiene al menos 1 enlace externo (en promedio entre 5 y 15)

Pero la mayoría en el mismo dominio (servidor)

Page 5: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Grafo Web -> Red Libre de Escala

Page 6: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Topología

28% 24% 24%

9 % no conectados

Page 7: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

¿Qué pretendemos? -> Operaciones Básicas

Conocer qué enlaces tiene una Web

Vecinos_Directos(1) = 2, 4, 5

Conocer qué enlaces llegan a una Web

Vecinos_Reversos(2) = 1, 4, 7

Conocer si una Web tiene cierto enlace

Conectados(1,2) = true;

Conectados(2,1) = false;

Page 8: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Dos implementaciones clásicas

Lista de Adyacencias

Matriz de Adyacencias

http://es.wikipedia.org/wiki/Grafo_(estructura_de_datos)

Page 9: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Lista de Adyacencias

Fácil implementación (list enlazada, vectores…)

A priori no ocupa demasiado espacio

NO permite vecinos reversos de manera eficiente

Page 10: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Ejemplo práctico GrafoDemo

Page 12: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Ejemplo práctico GrafoDemo. Lista Vector

Conocer qué enlaces tiene una Web

Vecinos_Directos(1)?

Acceso directo, listaDestinos[1]

Conocer qué enlaces llegan a una Web

Vecinos_Reversos(2)?

Recorrido Secuencial

Conocer si una Web tiene cierto enlace

Conectados(2,5) ?

Búsqueda Binaria

2 4

1 3

2 4

5

1 3 5

2 4

Page 13: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Ejemplo práctico GrafoDemo. Lista Vector

¿Tamaño?

Tantos punteros como nodos origen + Tantos ints como aristas

Influencia de los punteros

2 4

1 3

2 4

5

1 3 5

2 4

Demo!

Page 14: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

¿Y si colocamos todos los enteros juntos y marcamos el final de cada lista?

Ejemplo práctico GrafoDemo. Lista Bitmap

2 4

1 3

2 4

5

1 3 5

2 4

2 4 1 3 2 4 5 1 3 5 2 4

0 1 0 0 1 0 1 0 0 1 0 1

1er Nodo 2º Nodo 3er Nodo 4º Nodo 5º Nodo

Page 15: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Vuelta a la teoría…

Page 16: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Ejemplo práctico GrafoDemo. Lista Bitmap

2 4 1 3 2 4 5 1 3 5 2 4

0 1 0 0 1 0 1 0 0 1 0 1

Conocer qué enlaces tiene una Web

Vecinos_Directos(2)?

Fin vecinos = localizar la posición del 2º bit = bitmap->select1(2)

Inicio vecinos = localizar la posición del 1er bit+1 = bitmap->select1(1) + 1

Acceder elementos[] entre las posiciones inicio y fin.

Conocer qué enlaces llegan a una Web

Vecinos_Reversos(2)?

Recorrido Secuencial

Conocer si una Web tiene cierto enlace

Conectados(2,5) ?

Obtener inicio y fin vecinos y hacer búsqueda binaria en elementos

1er Nodo 2º Nodo 3er Nodo 4º Nodo 5º Nodo

Page 17: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Ejemplo práctico GrafoDemo. Lista Bitmap

2 4 1 3 2 4 5 1 3 5 2 4

0 1 0 0 1 0 1 0 0 1 0 1

¿Tamaño?

Tantos punteros bits como nodos origen (+overhead) + Tantos ints como aristas

Se puede mejorar usando logBits para los elementos Ejemplo: 4 enteros se representan con 4 enteros*4 bytes/entero = 16 Bytes

Log (4) = 2 bits para representar un entero. Por tanto 4 enteros se pueden representar con 4 enteros * 2 bits/entero = 8 bits (1Byte)

0 00

1 01

2 10

3 11

1er Nodo 2º Nodo 3er Nodo 4º Nodo 5º Nodo

Demo!

Page 18: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

¿Y cómo hacemos los vecinos reversos?

Ejemplo práctico GrafoDemo. Lista Wavelet

2 4 1 3 2 4 5 1 3 5 2 4

0 1 0 0 1 0 1 0 0 1 0 1

1er Nodo 2º Nodo 3er Nodo 4º Nodo 5º Nodo

Ej: Me gustaría saber las posiciones en donde aparece el 3

IntSequence Wavelet Tree

Page 19: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Vuelta a la teoría…

Page 20: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Ejemplo práctico GrafoDemo. Lista Wavelet

2 4 1 3 2 4 5 1 3 5 2 4

0 1 0 0 1 0 1 0 0 1 0 1

Conocer qué enlaces tiene una Web

Vecinos_Directos(2)?

Fin vecinos = localizar la posición del 2º bit = bitmap->select1(2)

Inicio vecinos = localizar la posición del 1er bit+1 = bitmap->select1(1) + 1

Acceder elementos[] entre las posiciones inicio y fin.

Conocer qué enlaces llegan a una Web

Vecinos_Reversos(2)?

int numOcurrencias = el->rank(2, el->getNumberOfElements());

for (int i = 0; i < numOcurrencias; i++) {

int pos = el->select(5, i);

cout << " Nodo Origen:" << bitmap->rank1(pos) << endl;

}

1er Nodo 2º Nodo 3er Nodo 4º Nodo 5º Nodo

Page 21: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Ejemplo práctico GrafoDemo. Lista Wavelet

2 4 1 3 2 4 5 1 3 5 2 4

0 1 0 0 1 0 1 0 0 1 0 1

Tamaño

Número de Aristas * Log (Número de Destinos) + overhead +

¿Tamaño?

Tantos bits como nodos origen (+overhead) + Tantos ints como aristas +número de Aristas * Log (Número de Destinos) (+overhead)

1er Nodo 2º Nodo 3er Nodo 4º Nodo 5º Nodo

Page 22: El grafo Web: Implementaciones Clásicas vs. Estructuras ...dataweb.infor.uva.es/wp-content/uploads/2013/03/... · Miguel A. Martínez Prieto & Javier D. Fernández Universidad de

Gracias!

@DataWebResearch