{"id":181,"date":"2020-06-14T23:06:50","date_gmt":"2020-06-14T21:06:50","guid":{"rendered":"https:\/\/raulbalanza.me\/?p=181"},"modified":"2024-01-18T23:18:08","modified_gmt":"2024-01-18T22:18:08","slug":"recorriendo-la-red-de-metro-madrid-de-forma-eficiente","status":"publish","type":"post","link":"https:\/\/raulbalanza.me\/es\/2020\/06\/14\/recorriendo-la-red-de-metro-madrid-de-forma-eficiente\/","title":{"rendered":"Recorriendo la red de Metro Madrid de forma eficiente"},"content":{"rendered":"<p><em>Este art\u00edculo fue escrito originalmente en Espa\u00f1ol. Sin embargo, una versi\u00f3n traducida autom\u00e1ticamente se encuentra <a href=\"https:\/\/translate.google.com\/translate?sl=es&amp;tl=en&amp;u=https%3A%2F%2Fraulbalanza.me%2F2020%2F06%2F14%2Frecorriendo-la-red-de-metro-madrid-de-forma-eficiente%2F\">aqu\u00ed<\/a>.<\/em><\/p>\n\n\n\n<p><em>Una versi\u00f3n de este art\u00edculo en formato PDF lista para imprimir tambi\u00e9n est\u00e1 disponible <a href=\"https:\/\/raulbalanza.me\/es\/pdf\/metromadrid.pdf\/\" target=\"_blank\" rel=\"noreferrer noopener\">aqu\u00ed<\/a>.<\/em><\/p>\n\n\n\n<p>A veces resulta interesante poner a prueba diferentes conceptos te\u00f3ricos y algoritmos utilizados en diferentes ramas de las matem\u00e1ticas, y comprobar su grado de correspondencia y precisi\u00f3n respecto a la realidad.<\/p>\n\n\n\n<p>En este caso el objetivo del estudio fue analizar un algoritmo incluido dentro del espectro de la teor\u00eda de grafos, conocido como el <strong>Cartero Chino<\/strong>. Este algoritmo permite, definido en base a conceptos de la rama previamente mencionada, obtener un camino cerrado de <em>longitud m\u00ednima<\/em> que visite todas las <em>aristas <\/em>de un grafo dado al menos una vez. Para <em>grafos ponderados <\/em>(como el utilizado en este caso), la longitud es definida como la suma de los <em>pesos <\/em>de cada <em>arista <\/em>que forma parte del camino.<\/p>\n\n\n\n<p>Para ello se ha modelado la red de l\u00edneas y paradas de <em>Metro Madrid<\/em>, intentando obtener un camino que permita recorrerla en el menor tiempo posible, considerando adem\u00e1s que el recorrido debe comenzar y terminar en el mismo punto (es decir, en la misma <em>parada<\/em>) y pasar al menos una vez por todas las paradas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Punto de partida<\/h2>\n\n\n\n<p>El punto de inicio sobre el que se comenz\u00f3 a modelar el grafo fue el mapa m\u00e1s actualizado de la red de Metro Madrid al momento de realizar la prueba (actualizado a fecha de Febrero de 2020), que se muestra a continuaci\u00f3n:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"920\" height=\"1024\" src=\"https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadrid0220-920x1024.jpg\" alt=\"\" class=\"wp-image-184\" srcset=\"https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadrid0220-920x1024.jpg 920w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadrid0220-269x300.jpg 269w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadrid0220-768x855.jpg 768w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadrid0220-1379x1536.jpg 1379w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadrid0220-1839x2048.jpg 1839w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadrid0220-1200x1336.jpg 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption class=\"wp-element-caption\">Figura 1. Mapa de Metro Madrid (actualizado: Febrero 2020)<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Caracter\u00edsticas del grafo<\/h2>\n\n\n\n<p>En base a las caracter\u00edsticas del problema a abordar, se han considerado las siguientes variables para el grafo utilizado:<\/p>\n\n\n\n<ul>\n<li><strong>V\u00e9rtices<\/strong>: aquellas paradas que permiten un transbordo entre varias l\u00edneas. Se han descartado aquellas que, aunque en el mapa original figuran como opci\u00f3n de transbordo, requieren atravesar un pasaje a pie de una longitud no despreciable.<\/li>\n\n\n\n<li><strong>Aristas<\/strong>: trayecto de una o m\u00e1s l\u00edneas (mayoritariamente s\u00f3lo una) entre dos estaciones.<\/li>\n\n\n\n<li><strong>Ponderado<\/strong>: se define el peso de cada arista como el tiempo estimado que se tarda en recorrer el trayecto desde su v\u00e9rtice de origen a su v\u00e9rtice de destino<sup>[1]<\/sup>.<\/li>\n\n\n\n<li><strong>No dirigido<\/strong>: como las l\u00edneas de metro en cada parada permiten dirigirse hacia ambas direcciones, se han incluido las dos en una sola arista sin direcci\u00f3n definida.<\/li>\n<\/ul>\n\n\n\n<p>Finalmente cabe remarcar que el grafo <strong>no contiene<\/strong> ning\u00fan bucle, ya que carece de sentido ir de una parada a s\u00ed misma, y <strong>tampoco contiene<\/strong> diferentes aristas entre un mismo par de v\u00e9rtices en aquellos casos en los que dicho trayecto se puede realizar en m\u00e1s de una l\u00ednea, ya que se asume que el trayecto va a tener la misma duraci\u00f3n independientemente de la l\u00ednea en que se realice.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Herramientas utilizadas<\/h2>\n\n\n\n<p>Para la correcta realizaci\u00f3n del an\u00e1lisis y con el objetivo de acelerar tanto el modelado del grafo como la ejecuci\u00f3n del algoritmo, el siguiente software y librer\u00edas fueron utilizadas:<\/p>\n\n\n\n<ul>\n<li><strong>Adobe Photoshop CC<\/strong>, para trazar sobre el mapa de la red de Metro Madrid el primer boceto del grafo, remarcando las paradas y los trayectos convenientes y facilitar su posterior transformaci\u00f3n al c\u00f3digo.<\/li>\n\n\n\n<li>Librer\u00eda <strong>JGraphT<\/strong>, basada en Java, que incluye las clases necesarias que implementan el tipo de grafo deseado, y permite ejecutar el algoritmo del <em>Cartero Chino<\/em><sup>[2]<\/sup>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Obtenci\u00f3n del grafo<\/h2>\n\n\n\n<p><strong>En primer lugar<\/strong>, y antes de comenzar con cualquier otra fase, se comprob\u00f3 el funcionamiento de las librer\u00edas elegidas, siguiendo ejemplos con resultados ya conocidos<sup>[3]<\/sup>.<\/p>\n\n\n\n<p>Una vez comprobado el adecuado funcionamiento de dichas librer\u00edas se comenz\u00f3 con el modelado del grafo, marcando sobre el mapa previamente mostrado las <em>paradas <\/em>de inter\u00e9s y sus correspondientes <em>trayectos<\/em>. Finalizada esta etapa, el mapa\/grafo se encontraba en el siguiente estado:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"920\" height=\"1024\" src=\"https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadridMapaGrafo-920x1024.png\" alt=\"\" class=\"wp-image-186\" srcset=\"https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadridMapaGrafo-920x1024.png 920w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadridMapaGrafo-269x300.png 269w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadridMapaGrafo-768x855.png 768w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadridMapaGrafo-1379x1536.png 1379w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadridMapaGrafo-1839x2048.png 1839w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/MetroMadridMapaGrafo-1200x1336.png 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption class=\"wp-element-caption\">Figura 2. Primera etapa del modelado del grafo<\/figcaption><\/figure>\n\n\n\n<p>Como se puede observar, sobre la red original de paradas y l\u00edneas se encuentran marcadas con <strong>puntos negros<\/strong> aquellas <em>paradas <\/em>que incluyen transbordos entre varias l\u00edneas, y \u00e9stas se encuentran <strong>unidas <\/strong>entre s\u00ed en base a los <em>trayectos <\/em>que las unen pero dispuestas en l\u00ednea recta, para facilitar la representaci\u00f3n visual posterior del grafo final.<\/p>\n\n\n\n<p>Se eliminaron del grafo los trayectos que no incluyen ning\u00fan transbordo y que representan el final de cada l\u00ednea, ya que se conoce que la \u00fanica manera de recorrerlos ser\u00eda linealmente, en un trayecto de ida seguido del mismo trayecto de vuelta, sin ning\u00fan transbordo durante ese recorrido. De este modo, posteriormente se detalla que, una vez el camino alcanza uno de estos recorridos, se deben recorrer de la manera especificada, sin ser necesario que esto sea representado en el modelo.<\/p>\n\n\n\n<p><strong>Seguidamente<\/strong>, eliminando ya el fondo del mapa original, se a\u00f1adieron etiquetas a los v\u00e9rtices (<em>paradas<\/em>) del grafo, representados por el nombre de cada una de las paradas, y tambi\u00e9n se rellenaron los pesos que corresponden a cada una de las aristas (<em>trayectos<\/em>), expresados en minutos de trayecto. De esta forma se asegura el parecido a la realidad, ya que los trayectos en Metro Ligero son m\u00e1s costosos debido a los vagones en los que se realizan, que viajan a una menor velocidad.<\/p>\n\n\n\n<p>No se ha considerado en el c\u00e1lculo del peso de las aristas el tiempo de espera a la llegada del tren ni el de transbordo (salir de un vag\u00f3n de una l\u00ednea y entrar a otro), ya que es un valor muy variable y que a\u00f1adir\u00eda imprecisi\u00f3n al resultado final. Posteriormente, en la puesta en pr\u00e1ctica de la ruta, se podr\u00eda obtener una media del tiempo de espera debido a los factores mencionados.<\/p>\n\n\n\n<p>Considerados todos los puntos anteriores, y realizadas las modificaciones especificadas, el grafo de <strong>36 vertices<\/strong> y <strong>64 aristas<\/strong> finalmente queda como se muestra a continuaci\u00f3n:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"1024\" src=\"https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/GrafoMetroMadrid_final-1024x1024.png\" alt=\"\" class=\"wp-image-190\" srcset=\"https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/GrafoMetroMadrid_final-1024x1024.png 1024w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/GrafoMetroMadrid_final-300x300.png 300w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/GrafoMetroMadrid_final-150x150.png 150w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/GrafoMetroMadrid_final-768x768.png 768w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/GrafoMetroMadrid_final-1536x1536.png 1536w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/GrafoMetroMadrid_final-2048x2048.png 2048w, https:\/\/raulbalanza.me\/wp-content\/uploads\/2020\/06\/GrafoMetroMadrid_final-1200x1200.png 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption class=\"wp-element-caption\">Figura 3. Grafo final de transbordos de la red de Metro Madrid<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Ejecuci\u00f3n del algoritmo<\/h2>\n\n\n\n<p>Una vez obtenido el grafo, se procedi\u00f3 a su adaptaci\u00f3n a la sintaxis y la estructura impuesta por la librer\u00eda <strong>JGraphT<\/strong>, elegida para la representaci\u00f3n del grafo en c\u00f3digo y la ejecuci\u00f3n del algoritmo.<\/p>\n\n\n\n<p>En <a href=\"https:\/\/pastebin.com\/5b73wESt\">este enlace<\/a> se encuentra el c\u00f3digo utilizado para la generaci\u00f3n del grafo y para el c\u00e1lculo del camino obtenido por el algoritmo del Cartero Chino. La lista de <a href=\"https:\/\/pastebin.com\/7U635xpU\">paradas<\/a> y de <a href=\"https:\/\/pastebin.com\/SEDXz053\">trayectos<\/a> considerada tambi\u00e9n est\u00e1 disponible.<\/p>\n\n\n\n<p>La ejecuci\u00f3n de el algoritmo siguiendo la implementaci\u00f3n de la librer\u00eda elegida tiene un coste temporal asint\u00f3tico de <strong>O(N<sup>3<\/sup>)<\/strong>, siendo <em>N<\/em> el n\u00famero de v\u00e9rtices. Sin embargo, dado el tama\u00f1o del grafo obtenido, el tiempo de ejecuci\u00f3n fue m\u00ednimo en este caso.<\/p>\n\n\n\n<p>Al finalizar, se obtiene como resultado del c\u00e1lculo la<strong> sucesi\u00f3n de transbordos<\/strong> a realizar, a partir de la cual se puede deducir el camino a seguir. Tambi\u00e9n se puede estimar el <strong>coste total<\/strong> en tiempo de la realizaci\u00f3n del recorrido, definido como la suma de los pesos de todas las aristas que conforman el camino, y teniendo en cuenta las limitaciones previamente especificadas, es decir, sin tener en cuenta el tiempo de transbordo ni de espera al tren, y a falta de a\u00f1adir el tiempo necesario para recorrer aquellos trayectos de ida y vuelta que representan los finales de l\u00ednea y algunas l\u00edneas de Metro Ligero.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Trayectos lineales<\/h2>\n\n\n\n<p>Antes de detallar los resultados finales obtenidos tras la ejecuci\u00f3n del algoritmo, conviene estimar el tiempo de duraci\u00f3n de aquellos trayectos que no han sido considerados en el modelo original, para poder a\u00f1adirlos a dicho an\u00e1lisis y obtener as\u00ed una estimacion realista del tiempo requerido para recorrer toda la red de Metro Madrid. <\/p>\n\n\n\n<p>Todos los trayectos se muestran con su tiempo duplicado, ya que se tiene en cuenta tanto el trayecto de ida como el de vuelta. Dichos trayectos son los que se listan a continuaci\u00f3n, junto a su duraci\u00f3n:<\/p>\n\n\n\n<ul>\n<li><strong>Colonia Jard\u00edn &lt;-&gt; Puerta de Boadilla<\/strong>: 36 * 2 = 72 minutos.<\/li>\n\n\n\n<li><strong>Colonia Jard\u00edn &lt;-&gt; Estaci\u00f3n de Aravaca<\/strong>: 21 * 2 = 42 minutos.<\/li>\n\n\n\n<li><strong>Plaza El\u00edptica &lt;-&gt; La Fortuna<\/strong>: 10 * 2 = 20 minutos.<\/li>\n\n\n\n<li><strong>Legazpi &lt;-&gt; Villaverde Alto<\/strong>: 13 * 2 = 26 minutos.<\/li>\n\n\n\n<li><strong>Pac\u00edfico &lt;-&gt; Valdecarros<\/strong>: 26 * 2 = 52 minutos.<\/li>\n\n\n\n<li><strong>Sainz de Baranda &lt;-&gt; Arganda del Rey<\/strong>: 32 * 2 = 64 minutos.<\/li>\n\n\n\n<li><strong>Ventas &lt;-&gt; Las Rosas<\/strong>: 9 * 2 = 18 minutos.<\/li>\n\n\n\n<li><strong>Pueblo Nuevo &lt;-&gt; Hospital del Henares<\/strong>: 22 * 2 = 44 minutos.<\/li>\n\n\n\n<li><strong>Pueblo Nuevo &lt;-&gt; Alameda de Osuna<\/strong>: 11 * 2 = 22 minutos.<\/li>\n\n\n\n<li><strong>Mar de Cristal &lt;-&gt; Aeropuerto T4<\/strong>: 11 * 2 = 22 minutos.<\/li>\n\n\n\n<li><strong>Las Tablas &lt;-&gt; Hospital Infanta Sof\u00eda<\/strong>: 17 * 2 = 34 minutos.<\/li>\n\n\n\n<li><strong>Plaza de Castilla &lt;-&gt; Paco de Luc\u00eda<\/strong>: 10 * 2 = 20 minutos.<\/li>\n\n\n\n<li><strong>Guzm\u00e1n el Bueno &lt;-&gt; Pitis<\/strong>: 10 * 2 = 20 minutos.<\/li>\n\n\n\n<li><strong>Puerta del Sur &lt;-&gt; Puerta del Sur (L\u00ednea 12 &#8211; circular)<\/strong>: 32 minutos.<\/li>\n<\/ul>\n\n\n\n<p>Todos los trayectos mencionados suman un total de <strong>488 minutos<\/strong> adicionales (\u22488.14 horas), un tiempo significativo a considerar.<\/p>\n\n\n\n<p>Una vez m\u00e1s, cabe remarcar que ser\u00eda necesario obtener una estimaci\u00f3n media del tiempo de espera y de transbordo, que deber\u00eda ser multiplicada por el n\u00famero de transbordos realizados y sumada a los resultados que se exponen en la secci\u00f3n siguiente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resultados del an\u00e1lisis<\/h2>\n\n\n\n<p>Una vez consideradas todas las variables en el an\u00e1lisis, a continuaci\u00f3n se presentan los datos obtenidos: el algoritmo del <strong>Cartero Chino<\/strong> obtuvo un camino eficiente para recorrer el n\u00facleo de la red de Metro Madrid (la zona que abarca el grafo) en un tiempo aproximado de <strong>273 minutos<\/strong>. Esta duraci\u00f3n de trayecto se ve superada en gran magnitud por aquellas zonas que no pueden ser optimizadas, al solo disponer de una posibilidad de recorrido, a\u00f1adiendo este factor un total de <strong>488 minutos<\/strong> al recorrido previamente mencionado.<\/p>\n\n\n\n<p>El total de tiempo en el que se podr\u00eda recorrer, por tanto, la red de Metro Madrid, es de <strong>761 minutos<\/strong> (unas 12.7 horas) + el tiempo necesario para esperar a los trenes y realizar transbordos. Obtenidos estos resultados, cabe destacar que ser\u00eda t\u00e9cnicamente posible realizar este recorrido en un s\u00f3lo dia de funcionamiento de la red, que est\u00e1 activa durante <strong>20 horas al d\u00eda<\/strong>, asumiendo que el tiempo de espera no supera en la mayor\u00eda de casos al de trayecto.<\/p>\n\n\n\n<p>El <strong>camino requerido<\/strong> para poder obtener estos resultados se describe a continuaci\u00f3n, a modo de lista de estaciones en las que realizar transbordo, situando el comienzo (y el final) de la ruta en la estaci\u00f3n de <em>Plaza de Castilla<\/em>, y siempre considerando que se realizan las rutas lineales descritas previamente al llegar a su parada de comienzo:<\/p>\n\n\n\n<p class=\"has-dark-gray-color has-light-gray-background-color has-text-color has-background\">[Plaza de Castilla, Cuatro Caminos, Guzman el Bueno, Moncloa, Arguelles, Principe Pio, Oporto, Plaza Eliptica, Legazpi, Pacifico, Sainz de Baranda, Manuel Becerra, Ventas, Pueblo Nuevo, Av. de America, Mar de Cristal, Colombia, Nuevos Ministerios, Gregorio Maranon, Alonso Martinez, Ventas, Manuel Becerra, Sainz de Baranda, Principe de Vergara, Sol, Pacifico, Legazpi, Sol, Opera, Oporto, Casa de Campo, Colonia Jardin, Puerta del Sur, Colonia Jardin, Casa de Campo, Principe Pio, Plaza de Espana, Tribunal, Sol, Callao, Sol, Tribunal, Alonso Martinez, Goya, Principe de Vergara, Av. de America, Manuel Becerra, Goya, Av. de America, Gregorio Maranon, Canal, San Bernardo, Bilbao, Alonso Martinez, Callao, Opera, San Bernardo, Arguelles, Plaza de Espana, Tribunal, Bilbao, Cuatro Caminos, Canal, Guzman el Bueno, Cuatro Caminos, Av. de America, Colombia, Nuevos Ministerios, Plaza de Castilla, Colombia, Mar de Cristal, Pinar de Chamartin, Chamartin, Pinar de Chamartin, Las Tablas, Chamartin, Plaza de Castilla]\n\n\n\n<p>Despu\u00e9s de a\u00f1adir al camino anterior las rutas lineales y de detallar los trayectos a seguir para llegar a los diferentes v\u00e9rtices del mismo, se obtiene la ruta completa a trav\u00e9s de la red de Metro Madrid, que est\u00e1 disponible en <a href=\"https:\/\/files.raulbalanza.me\/pdf\/metromadrid_recorrido.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">este documento<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusiones<\/h2>\n\n\n\n<p>Como punto final a este an\u00e1lisis, puede afirmarse que queda demostrada la (poca) viabilidad de realizar el recorrido de toda la red de Metro Madrid en el tiempo limitado de un d\u00eda, incluso intentando maximizar su eficiencia.<\/p>\n\n\n\n<p>Resulta llamativo observar la diferencia entre la duraci\u00f3n del recorrido optimizado del n\u00facleo de la red, que es pr\u00e1cticamente duplicada por la de una zona no optimizable, como es la periferia de la misma. Esto deja en evidencia la utilidad del algoritmo utilizado, y la importancia de hacer uso de herramientas como esta al realizar estimaciones de gran magnitud, lo cual era un objetivo principal del an\u00e1lisis expuesto en este art\u00edculo.<\/p>\n\n\n\n<p>Sin embargo, independientemente de la utilidad pr\u00e1ctica del an\u00e1lisis que aqu\u00ed se expone, diferentes datos y mediciones pueden ser extra\u00eddos para otros prop\u00f3sitos. A modo de ejemplo, el grafo modelado de la red de Metro Madrid, con la adici\u00f3n de los trayectos lineales no incluidos, podr\u00eda utilizarse junto a otros algoritmos como el algoritmo de Dijkstra, que permitir\u00eda obtener el camino m\u00e1s corto para realizar el trayecto desde una estaci\u00f3n a otra, una aplicaci\u00f3n muy \u00fatil y comunmente utilizada por los usuarios de transporte p\u00fablico.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Autores<\/h2>\n\n\n\n<ul>\n<li><strong>Ra\u00fal Balanz\u00e1<\/strong>: modelado del grafo, programaci\u00f3n y redacci\u00f3n<\/li>\n\n\n\n<li><strong>Diana Seti\u00e9n<\/strong>: modelado del grafo<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Referencias<\/h2>\n\n\n\n<ul>\n<li><sup>[1]<\/sup><a href=\"https:\/\/citymapper.com\/\">Citymapper<\/a>: estimaciones de tiempo para todos los trayectos<\/li>\n\n\n\n<li><sup>[2]<\/sup><a href=\"https:\/\/jgrapht.org\/\">JGraphT<\/a>: librer\u00eda programada en Java para uso de grafos<\/li>\n\n\n\n<li><sup>[3]<\/sup><em><a href=\"http:\/\/cc.etsii.ull.es\/ftp\/antiguo\/PRGCOM\/trabajos\/circuitos_eulerianos\/postman_problems.pdf\">The Postman Problems<\/a><\/em>, Universidad de La Laguna: ejemplos conocidos del algoritmo del <strong>Cartero Chino<\/strong><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>This article was originally written in Spanish. However, an automatically translated version can be found here. A ready-to-print PDF version of this article is also available here. A veces resulta interesante poner a prueba diferentes conceptos te\u00f3ricos y algoritmos utilizados en diferentes ramas de las matem\u00e1ticas, y comprobar su grado de correspondencia y precisi\u00f3n respecto &hellip; <a href=\"https:\/\/raulbalanza.me\/es\/2020\/06\/14\/recorriendo-la-red-de-metro-madrid-de-forma-eficiente\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> &#8220;Recorriendo la red de Metro Madrid de forma eficiente&#8221;<\/span><\/a><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/raulbalanza.me\/es\/wp-json\/wp\/v2\/posts\/181"}],"collection":[{"href":"https:\/\/raulbalanza.me\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/raulbalanza.me\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/raulbalanza.me\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/raulbalanza.me\/es\/wp-json\/wp\/v2\/comments?post=181"}],"version-history":[{"count":60,"href":"https:\/\/raulbalanza.me\/es\/wp-json\/wp\/v2\/posts\/181\/revisions"}],"predecessor-version":[{"id":575,"href":"https:\/\/raulbalanza.me\/es\/wp-json\/wp\/v2\/posts\/181\/revisions\/575"}],"wp:attachment":[{"href":"https:\/\/raulbalanza.me\/es\/wp-json\/wp\/v2\/media?parent=181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/raulbalanza.me\/es\/wp-json\/wp\/v2\/categories?post=181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/raulbalanza.me\/es\/wp-json\/wp\/v2\/tags?post=181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}