Saltar al contenido

Diario de clases

Clases de Jesús Soto

Menú
  • Fórmulas
Menú

Navegación de entradas

MAD: Teoría de Grafos ←

MAD: graphs: grafos con maxima

Posted on 25 de marzo de 2026

graphs

El paquete graphs proporciona estructuras de datos de grafos y dígrafos para Maxima. Los grafos y dígrafos son simples (no tienen aristas múltiples ni bucles), aunque los dígrafos pueden tener una arista dirigida de u a v y una arista dirigida de v a u.

Para trabajar con graphs es necesario cargar el paquete graphs. A continuación, utilizamos el comando

  • create_graph (v_list, e_list): Creates a new graph on the set of vertices v_list and with edges e_list.

y lo mostramos con

  • draw_graph (graph, option1, …, optionk): Draws the graph using the draw package.

Veamos un ejemplo:

(%i1) load(«graphs»);

0 errores, 0 advertencias0 errores, 0 advertencias(%o1) /usr/share/maxima/5.41.0/share/graphs/graphs.mac

(%i3) g:create_graph([1,2,3,4], [[1,2], [2,3], [1,3],[1,4],[2,4]])$
draw_graph(g)$

(%t3)  (Gráficos)


También podemos crear digrafos:

(%i5) g:create_graph([1,2,3,4], [[1,2], [2,4], [1,3],[1,4],[4,1]],directed= true)$
draw_graph(g,
   show_id=true,
   show_vertices=[1,2,3,4],
   show_vertex_size=3,
   show_vertex_color=green,
   edge_color=blue,
   edge_width=1,    
   text_color=red)$

(%t5)  (Gráficos)


Las principales funciones para trabajar con grafos están en:

  • Funciones y variables para graphs

Ejercicio: Construir el grafo \(G_1(V,E)\)


(%i4) v:[1,2,3,4,5]$
g:create_graph(v,
   [[1,2],[1,5],
       [1,4],[2,3],
       [3,5],[3,4],
       [4,5]])$
draw_graph(g,
   show_id=true,
   show_vertices=v,
   show_vertex_size=3,    
   edge_width=1)$

 (Gráficos)


Ejercicio: Construir el digrafo


(%i1) load(«graphs»);

0 errores, 0 advertencias0 errores, 0 advertencias(%o1) /usr/share/maxima/5.41.0/share/graphs/graphs.mac

(%i4) v:[1,2,3,4,5,6,7,8]$
g:create_graph(v,
   [[1,2],[2,3],[2,5],
       [3,4],[3,7],[4,3],
       [4,8],[5,1],[6,7],
       [7,6],[8,4]],
   directed= true)$
draw_graph(g,
   vertex_type=filled_square,
   show_id=true,
   show_vertices=v,
   show_vertex_size=3,
   show_vertex_color=yellow,
   show_vertex_type=filled_square,
   edge_color=cyan,
   edge_width=1,    
   text_color=black)$

(%t4)  (Gráficos)


Ejercicio: Construir el grafo de los divisores del número 1221

(%i1) load(«graphs»)$

Consegimos los divisores de 1221, V,y los arcos, E, del digrafo:

(%i5) V:[1,3,11,33,37,111,407,1221]$
E:[[1,3],[1,11],[1,37],[3,33],[3,111],[11,33],[11,407],[33,1221],[37,111],[37,407],[111,1221],[407,1221]]$
g:create_graph(V,E,directed=true)$
draw_graph(g,
  show_id=true,
  show_vertices=V,
  show_vertex_size=5,
  show_vertex_color=cyan,
  edge_color=black,
  edge_width=1,   
  text_color=red)$

 (Graphics)


Proposición: Sea \( n = p_1^{a_1} p_2^{a_2} \cdots p_r^{a_r} \) la factorización en números primos de un entero positivo \( n \). Entonces, el número de aristas del grafo de los divisores de \(n\) viene dado por
\[
E(n)=\tau(n)\sum_{i=1}^r \frac{a_i}{a_i+1},
\]
donde
\[
\tau(n)=\prod_{i=1}^r (a_i+1)
\]
es el número de divisores positivos de \(n\).

Ejercicio: Construye una función que nos devuelva el número de aristas del grafo de los divisores de \(n\)

(%i2) num_aristas_divisores(n):=block(
   [factores,d_n,suma,i,e_i],
  
   /* 1. Obtenemos la factorización: [[p1, e1], [p2, e2], …] */
   factores:ifactors(n),
  
   /* 2. Calculamos el número total de divisores d(n) */
   d_n:length(divisors(n)),
  
   /* 3. Aplicamos la fórmula combinatoria */
   suma:0,
   for i:1 thru length(factores) do (
       e_i:factores[i][2],
       suma:suma+(e_i·d_n/(e_i+1))
   ),
  
   return(suma)
)$
num_aristas_divisores(24);

\[\operatorname{ }10\]


Ejercicio: Dibuja el grafo de coprimalidad de $S = \{12,2,34,35,4,41,29\}$

(%i1) load(graphs)$

Dibujemos el grafo de coprimalidad de S = {12,2,34,35,4,41,29}

(%i4) V:[12,2,34,35,4,41,29]$
g:create_graph(V,[[12,35],[12,41],[12,29],
       [2,35],[2,41],[2,29],
       [34,35],[34,41],[34,29],
       [35,4],[35,41],[35,29],
       [4,41],[4,29],
       [41,29]
   ])$
draw_graph(g,
  show_id=true,
  show_vertices=V,
  show_vertex_size=3,
  show_vertex_color=cyan,
  edge_color=blue,
  edge_width=1,   
  text_color=black)$

 (Graphics)


Ejercicio: Utilizando la definición, construye un algoritmo que nos determine el número de aristas de un grafo de coprimalidad de un conjunto de números naturales $S$ y aplícalo para calcular las aristas de $\{12,2,34,35,4,41,29\}$

Veamos cuántas serían las aristas del grafo de coprimalidad de S = {12,2,34,35,4,41,29}
Primero definimos una función para el mcd:

(%i1) mcd(n,m):=if m=0 then abs(n) else mcd(m,mod(n,m))$

Ahora definimos el algoritmo que nos proporcionará el número de aristas:

(%i2) num_aristas(v):=block([s],
   s:0,
   for i:1 thru length(v)−1 do (
       for j :(i+1) thru length(v) do (
           if (mcd(v[i],v[j])=1) then s:s+1
       )
   ),
  
   return(s)
)$

(%i4) V:[12,2,34,35,4,41,29]$
num_aristas(V);

\[\operatorname{ }15\]


Ejercicio: Dibuja el grafo de factorización de $S = \{4,6,9,10,15,21,32\}$

(%i1) load(graphs)$

Dibujemos el grafo de factorización de S = {4,6,9,10,15,21,32}

V:[4,6,9,10,15,21,32]$
g:create_graph(V,[[4,6],[4,10],[4,32],[6,9],[6,10],
       [6,15],[6,21],[6,32],[9,15],[9,21],[10,15],[10,32],[15,21]])$
draw_graph(g,
  show_id=true,
  show_vertices=V,
  show_vertex_size=3,
  show_vertex_color=cyan,
  edge_color=blue,
  edge_width=1,   
  text_color=black)$

(%i4)

\[\operatorname{ }\]

 (Graphics)


Ejercicio: Modifica el algoritmo anterior para ofrecer un algoritmo que nos determine el número de aristas de un grafo de factorización de un conjunto de números naturales $S$

Navegación de entradas

MAD: Teoría de Grafos

Novela

La Loba, la lucha fraticida por un reino

La Loba, la lucha fratricida por un reino.

Urraca, señora de Zamora, acusada de instigar la muerte de su hermano, el rey Sancho de Castilla, deberá defenderse de la acusación, al tiempo que luchará por mantener la cohesión entre los hermanos y los reinos cristianos: una lobera de fieros lobeznos.

👉 En amazon

Entradas recientes

  • MAD: graphs: grafos con maxima
  • MAD: Teoría de Grafos
  • MAD: Ecuaciones diofánticas y de congruencias con maxima
  • MAD: Anexo a la Teoría de números
  • MAD: Ecuación diofántica
marzo 2026
L M X J V S D
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
« Feb    

Categorías

  • Álgebra Lineal
  • general
  • Matemática Discreta
  • MathBio

Etiquetas

Prácticas MAD Prácticas MathBio Prácticas Álgebra

Meta

  • Acceder
  • Feed de entradas
  • Feed de comentarios
  • WordPress.org
©2026 Diario de clases | Diseño: Tema de WordPress Newspaperly