An Elementary Introduction to the Wolfram Language
21Grafos y redes
Un grafo de conexiones muy sencillo:
In[1]:=
Click for copyable input
Out[1]=
In[2]:=
Click for copyable input
Out[2]=
In[3]:=
Click for copyable input
Out[3]=
Se añaden dos conexiones más, incluyendo una que conecta el 2 consigo mismo:
In[4]:=
Click for copyable input
Out[4]=
In[5]:=
Click for copyable input
Out[5]=
El camino más corto de 4 a 2 en el grafo pasa por 1:
In[6]:=
Click for copyable input
Out[6]=
Considere otro grafo. Ahora se tienen 3 nodos, con conexión entre cada uno de ellos.
Primero, se crea un arreglo con todas las conexiones posibles entre 3 objetos:
In[7]:=
Click for copyable input
Out[7]=
Aquí el resultado es una lista de listas, y lo que requiere Graph es una sola lista con las conexiones. Y esto se puede obtener usando Flatten para aplanar las sublistas.
Flatten aplana todas las sublistas, dondequiera que estas se encuentren:
In[8]:=
Click for copyable input
Out[8]=
Del arreglo, se obtiene una lista aplanada de las conexiones:
In[9]:=
Click for copyable input
Out[9]=
In[10]:=
Click for copyable input
Out[10]=
In[11]:=
Click for copyable input
Out[11]=
In[12]:=
Click for copyable input
Out[12]=
Construya un grafo con 20 conexiones entre nodos elegidos al azar y numerados del 0 al 10:
In[13]:=
Click for copyable input
Out[13]=
Se obtendrá un grafo diferente si se generan diferentes números al azar. He aquí 6 grafos.
Seis grafos generados aleatoriamente son:
In[14]:=
Click for copyable input
Out[14]=
In[15]:=
Click for copyable input
Out[15]=
El resultado es un grafo con exactamente las mismas conexiones que el original, pero con los nodos acomodados de manera que se ilustre la estructura de comunidades del grafo.
21.1Construya un grafo consistente en un bucle de tres nodos. »
Salida esperada:
Out[]=
21.2Produzca un grafo con 4 nodos donde todos los nodos estén conectados. »
Salida esperada:
Out[]=
21.3Construya una tabla de grafos no dirigidos con entre 2 y 10 nodos, donde todos los nodos estén conectados. »
Salida esperada:
Out[]=
21.4Use Table y Flatten para obtener {1, 2, 1, 2, 1, 2}»
Salida esperada:
Out[]=
21.5Muestre una gráfica con puntos unidos del resultado de concatenar todos los dígitos de los enteros del 1 al 100 (i.e. ..., 8, 9, 1, 0, 1, 1, 1, 2, ...). »
Salida esperada:
Out[]=
21.6Presente un grafo con 50 nodos, donde cada nodo i conecte con el nodo i+1»
Salida esperada:
Out[]=
21.7Muestre un grafo con 4 nodos, donde cada conexión conecte i con Max[i, j]»
Salida esperada:
Out[]=
21.8Presente un grafo donde cada conexión conecte i con j-i, donde tanto i como j varíen de 1 a 5. »
Salida esperada:
Out[]=
21.9Genere un grafo con 100 nodos, donde cada uno conecte con otro escogido al azar. »
Muestra de salida esperada:
Out[]=
21.10Genere un grafo con 100 nodos, donde cada nodo conecte con dos nodos escogidos al azar. »
Muestra de salida esperada:
Out[]=
21.11Para el grafo {12, 23, 34, 41, 31, 22}, forme un arreglo donde aparezcan los caminos más cortos entre cada par de nodos, de modo que el nodo inicial marque la fila del arreglo y el final marque la columna. »
Salida esperada:
Out[]=
+21.1Presente un grafo con 4 nodos donde todos los nodos estén conectados, mostrando el resultado en un dibujo radial. »
Salida esperada:
Out[]=
+21.2Genere un grafo donde un solo nodo esté conectado con otros 10. »
Salida esperada:
Out[]=
+21.3Use Flatten para generar una tabla de los números 1 al 50, donde los pares estén en color rojo. »
Salida esperada:
Out[]=
+21.4Use ImageData, Flatten y Total para encontrar el número de píxeles en blanco de Binarize[Rasterize["W"]]»
Salida esperada:
Out[]=
+21.5Use Flatten, IntegerDigits y Total para encontrar la suma de todos los dígitos de los números enteros hasta el 1000. »
Salida esperada:
Out[]=
+21.6Genere un grafo con 200 conexiones, cada una entre nodos cuyos números se elijan al azar entre 0 y 100. »
Muestra de salida esperada:
Out[]=
+21.7Genere una gráfica que muestre las comunidades en un grafo aleatorio con nodos numerados del 0 al 100, y que tenga 200 conexiones. »
Muestra de salida esperada:
Out[]=
¿Qué diferencia hay entre un grafo y una red?
No hay diferencia. Son simplemente palabras diferentes para la misma cosa, aunque grafo suele usarse más en matemáticas, mientras que red es más común en otras áreas más aplicadas.
En un grafo, los vértices son sus puntos o nodos. Las aristas son las conexiones. Los grafos han surgido en tantos campos diferentes que existe una amplia variedad de nombres para la misma cosa.
Significa Rule[i, j]. Las reglas se usan en muchas partes de Wolfram Language, tales como la especificación de opciones.
Sí. Use SocialMediaData["Facebook", "FriendNetwork"]. Note que solamente estarán incluidos los amigos que así se hayan manifestado en Facebook. (Vea la Sección 44).
¿De qué tamaño puede ser un grafo en Wolfram Language?
La limitación principal es la cantidad de memoria de la computadora que se use. Grafos con decenas o centenares de miles de nodos no plantean ningún problema.
¿Se pueden especificar propiedades para nodos y aristas?
Sí. Pueden proporcionarse a Graph listas de nodos y aristas que incluyan cosas tales como Property[nodo, VertexStyleRed] o Property[arista, EdgeWeight20]. Pueden darse también opciones globales a Graph.
 
Download Notebook Version
en