¡Hola a todos! En este artículo quiero compartir una forma interesante de analizar caminos narrativos en un libro-juego utilizando grafos. No se trata de una propuesta técnica avanzada sobre teoría de grafos, sino más bien de una aplicación creativa y accesible que muestra cómo esta herramienta puede ayudarnos a visualizar y entender la estructura de una historia interactiva.
El libro-juego:
Para este ejemplo, utilicé un pequeño libro-juego ambientado en el universo de Lovecraft. En este tipo de libros, el lector toma decisiones al final de cada página, eligiendo entre diferentes caminos que afectan el rumbo de la historia. Este mecanismo de decisiones convierte a la narrativa en una estructura perfecta para ser representada como un grafo.
Portada del libro-juego:
Muestra de una hoja del libro-juego:
Al final de cada hoja puedes elegir el capítulo con el que quieras continuar la historia, esto le da un toque de diversión ya que no hay una historia lineal sino que le ofrece mayor dinamismo la lector.
De libro a datos:
El objetivo era analizar todas las relaciones que se presentan en el libro-juego a lo largo de sus páginas. Para ello, era necesario transformar el contenido del libro desde su formato físico a un formato tabular. Como no contaba con una versión digital en PDF, decidí transcribir manualmente los caminos posibles entre páginas en una hoja de cálculo de Google Sheets.
A partir de allí, pasé al análisis en Google Colab, adoptando una estructura de datos típica para representar grafos, con nodos (páginas del libro) y aristas (decisiones o transiciones entre páginas).
Muestra de dataframe de Nodos:
Muestra de dataframe de Aristas:
Análisis en Colab:
Una vez importados los datasets en Google Colab, utilicé la librería NetworkX para construir un grafo dirigido, donde cada nodo representa una página del libro y cada arista, una decisión que conecta una página con otra.
A partir de este grafo, generé un DataFrame con algunas de las métricas más relevantes en el análisis de grafos, como el grado de entrada y salida de cada nodo, la centralidad, y la cantidad de caminos posibles desde cada punto. Estas métricas permiten explorar la estructura narrativa del libro-juego y entender mejor su complejidad, linealidad y puntos críticos de decisión.
Grafo de nodos:
metrics_df = pd.DataFrame({
'Nodo': list(G.nodes()),
'Degree': [degree_dict[n] for n in G.nodes()],
'In-degree': [in_degree_dict[n] for n in G.nodes()],
'Out-degree': [out_degree_dict[n] for n in G.nodes()],
'Closeness': [closeness_dict[n] for n in G.nodes()],
'Betweenness': [betweenness_dict[n] for n in G.nodes()],
'PageRank': [pagerank_dict[n] for n in G.nodes()],
})
Degree:
El siguiente gráfico muestra el grado de cada nodo, es decir, cuántas veces aparece cada página como destino en las decisiones del libro-juego. El nodo que más se repite es el 999, correspondiente al "Fin" de la historia. Esto nos indica que el libro cuenta con 14 posibles finales, ya que hay 14 caminos distintos que desembocan en esa misma página final.
Este tipo de análisis permite identificar los nodos más relevantes o transitados dentro de la narrativa, y entender cómo se distribuyen las decisiones a lo largo del libro.
Out-Degree:
Este gráfico muestra cuáles son los nodos (es decir, las páginas del libro) que ofrecen una mayor cantidad de decisiones al lector, es decir, más caminos posibles a seguir. El nodo con mayor out-degree es el 17, que presenta 4 opciones distintas para continuar la historia.
Esto lo convierte en un punto clave dentro de la narrativa, ya que representa un momento de alta ramificación, donde las decisiones del lector pueden llevar la historia en múltiples direcciones. Identificar estos nodos es útil para entender la estructura de elección y los puntos de mayor complejidad dentro del libro-juego.
In-Degree:
Este gráfico muestra cuáles son los nodos (páginas) a los que más caminos convergen, es decir, aquellas páginas a las que se puede llegar desde múltiples otras. Estos nodos actúan como etapas intermedias o puntos de retorno dentro de la narrativa, permitiendo que el lector reencuentre ciertos tramos de la historia sin necesidad de volver al inicio.
Son elementos interesantes desde el punto de vista del diseño narrativo, ya que pueden ofrecer una sensación de familiaridad o segunda oportunidad, y contribuyen a que la estructura del libro-juego no sea completamente lineal ni irreversible.
Shortest Path:
A continuación veremos el camino más corto desde el inicio de la historia 1 hasta el fin 999.
Longest Path:
Para identificar el camino más largo en la historia, primero es importante determinar si el grafo contiene ciclos. Luego de comprobarlo confirmé que la historia sí presenta ciclos.
Esto significa que no podemos aplicar directamente un algoritmo estándar de camino más largo (como se haría en un grafo acíclico), ya que los ciclos permitirían generar caminos infinitos.
Por lo tanto, si queremos encontrar el camino más largo de forma válida, debemos restringirnos a caminos simples, es decir, sin repetir nodos, para así evitar recorrer ciclos y obtener trayectorias significativas dentro de la estructura narrativa.
Camino mas largo evitando ciclos:
Espero les haya gustado !
Saludos!
Top comments (0)