![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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/7.jpg)
¿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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/10.jpg)
Ejemplo práctico GrafoDemo
![Page 11: 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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/11.jpg)
Ejemplo práctico GrafoDemo. Lista Vector
http://dataweb.infor.uva.es/la-revolucion-de-los-datos-2-jugandoconlosbits/
2 4
1 3
2 4
5
1 3 5
2 4
![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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/14.jpg)
¿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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/18.jpg)
¿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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052011/6027798792ace14f480e00d2/html5/thumbnails/22.jpg)
Gracias!
@DataWebResearch