diff --git a/notebooks/Agent-Close-Following.ipynb b/notebooks/Agent-Close-Following.ipynb index 41986e7fa8a90e1b49cea01aaca14950a999126a..1e4438e71b9a6276bb3e2045747bdef39581cd24 100644 --- a/notebooks/Agent-Close-Following.ipynb +++ b/notebooks/Agent-Close-Following.ipynb @@ -54,9 +54,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "<style>.container { width:95% !important; }</style>" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", @@ -66,7 +79,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -78,7 +91,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -104,9 +117,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Flatland agent_chains ignoring ImportError - install pygraphviz to render graphs\n", + "<class 'NoneType'>\n" + ] + } + ], "source": [ "omc = ac.MotionCheck()\n", "ac.create_test_agents2(omc)\n", @@ -130,7 +152,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -139,9 +161,675 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n", + " -->\n", + "<!-- Pages: 1 -->\n", + "<svg width=\"537pt\" height=\"1136pt\"\n", + " viewBox=\"0.00 0.00 537.14 1136.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 1132)\">\n", + "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-1132 533.1419,-1132 533.1419,4 -4,4\"/>\n", + "<!-- (1, 0) -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>(1, 0)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"82.5473\" cy=\"-48\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-44.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(1, 0)</text>\n", + "<text text-anchor=\"middle\" x=\"30.5\" y=\"-18.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">stopped</text>\n", + "<text text-anchor=\"middle\" x=\"30.5\" y=\"-3.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">chain</text>\n", + "</g>\n", + "<!-- (1, 1) -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>(1, 1)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"187.5473\" cy=\"-48\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-44.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(1, 1)</text>\n", + "</g>\n", + "<!-- (1, 0)->(1, 1) -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>(1, 0)->(1, 1)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M113.1999,-48C123.5669,-48 135.3172,-48 146.3654,-48\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"146.6748,-51.5001 156.6748,-48 146.6748,-44.5001 146.6748,-51.5001\"/>\n", + "</g>\n", + "<!-- (1, 2) -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>(1, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"292.5473\" cy=\"-48\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"292.5473\" y=\"-44.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(1, 2)</text>\n", + "</g>\n", + "<!-- (1, 1)->(1, 2) -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>(1, 1)->(1, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M218.1999,-48C228.5669,-48 240.3172,-48 251.3654,-48\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"251.6748,-51.5001 261.6748,-48 251.6748,-44.5001 251.6748,-51.5001\"/>\n", + "</g>\n", + "<!-- (1, 3) -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>(1, 3)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"397.5473\" cy=\"-48\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"397.5473\" y=\"-44.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(1, 3)</text>\n", + "</g>\n", + "<!-- (1, 2)->(1, 3) -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>(1, 2)->(1, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M323.1999,-48C333.5669,-48 345.3172,-48 356.3654,-48\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"356.6748,-51.5001 366.6748,-48 356.6748,-44.5001 356.6748,-51.5001\"/>\n", + "</g>\n", + "<!-- (1, 3)->(1, 3) -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>(1, 3)->(1, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M380.6283,-63.1666C375.5014,-73.6641 381.141,-84 397.5473,-84 408.5702,-84 414.733,-79.3342 416.0355,-73.0884\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"419.4855,-72.497 414.4662,-63.1666 412.5715,-73.5906 419.4855,-72.497\"/>\n", + "</g>\n", + "<!-- (2, 0) -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>(2, 0)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"82.5473\" cy=\"-120\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-116.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(2, 0)</text>\n", + "<text text-anchor=\"middle\" x=\"30.5\" y=\"-90.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">running</text>\n", + "<text text-anchor=\"middle\" x=\"30.5\" y=\"-75.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">chain</text>\n", + "</g>\n", + "<!-- (2, 1) -->\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>(2, 1)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"187.5473\" cy=\"-120\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-116.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(2, 1)</text>\n", + "</g>\n", + "<!-- (2, 0)->(2, 1) -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>(2, 0)->(2, 1)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M113.1999,-120C123.5669,-120 135.3172,-120 146.3654,-120\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"146.6748,-123.5001 156.6748,-120 146.6748,-116.5001 146.6748,-123.5001\"/>\n", + "</g>\n", + "<!-- (2, 2) -->\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>(2, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"292.5473\" cy=\"-120\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"292.5473\" y=\"-116.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(2, 2)</text>\n", + "</g>\n", + "<!-- (2, 1)->(2, 2) -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>(2, 1)->(2, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M218.1999,-120C228.5669,-120 240.3172,-120 251.3654,-120\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"251.6748,-123.5001 261.6748,-120 251.6748,-116.5001 251.6748,-123.5001\"/>\n", + "</g>\n", + "<!-- (2, 3) -->\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>(2, 3)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"397.5473\" cy=\"-120\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"397.5473\" y=\"-116.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(2, 3)</text>\n", + "</g>\n", + "<!-- (2, 2)->(2, 3) -->\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>(2, 2)->(2, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M323.1999,-120C333.5669,-120 345.3172,-120 356.3654,-120\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"356.6748,-123.5001 366.6748,-120 356.6748,-116.5001 356.6748,-123.5001\"/>\n", + "</g>\n", + "<!-- (2, 4) -->\n", + "<g id=\"node9\" class=\"node\">\n", + "<title>(2, 4)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"498.5946\" cy=\"-120\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"498.5946\" y=\"-116.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(2, 4)</text>\n", + "</g>\n", + "<!-- (2, 3)->(2, 4) -->\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>(2, 3)->(2, 4)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M428.139,-120C437.4512,-120 447.8392,-120 457.7164,-120\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"457.7581,-123.5001 467.7581,-120 457.7581,-116.5001 457.7581,-123.5001\"/>\n", + "</g>\n", + "<!-- (3, 0) -->\n", + "<g id=\"node10\" class=\"node\">\n", + "<title>(3, 0)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"82.5473\" cy=\"-174\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-170.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(3, 0)</text>\n", + "<text text-anchor=\"middle\" x=\"29\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">stopped </text>\n", + "<text text-anchor=\"middle\" x=\"29\" y=\"-129.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">short</text>\n", + "<text text-anchor=\"middle\" x=\"29\" y=\"-114.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> chain</text>\n", + "</g>\n", + "<!-- (3, 1) -->\n", + "<g id=\"node11\" class=\"node\">\n", + "<title>(3, 1)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"187.5473\" cy=\"-174\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-170.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(3, 1)</text>\n", + "</g>\n", + "<!-- (3, 0)->(3, 1) -->\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>(3, 0)->(3, 1)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M113.1999,-174C123.5669,-174 135.3172,-174 146.3654,-174\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"146.6748,-177.5001 156.6748,-174 146.6748,-170.5001 146.6748,-177.5001\"/>\n", + "</g>\n", + "<!-- (3, 1)->(3, 1) -->\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>(3, 1)->(3, 1)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M169.9516,-189.1666C164.6196,-199.6641 170.4848,-210 187.5473,-210 199.0112,-210 205.4204,-205.3342 206.775,-199.0884\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"210.2197,-198.4659 205.143,-189.1666 203.3126,-199.6021 210.2197,-198.4659\"/>\n", + "</g>\n", + "<!-- (4, 1) -->\n", + "<g id=\"node12\" class=\"node\">\n", + "<title>(4, 1)</title>\n", + "<ellipse fill=\"none\" stroke=\"#a020f0\" cx=\"82.5473\" cy=\"-246\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-242.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(4, 1)</text>\n", + "<text text-anchor=\"middle\" x=\"38\" y=\"-216.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">swap</text>\n", + "</g>\n", + "<!-- (4, 2) -->\n", + "<g id=\"node13\" class=\"node\">\n", + "<title>(4, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#a020f0\" cx=\"187.5473\" cy=\"-246\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-242.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(4, 2)</text>\n", + "</g>\n", + "<!-- (4, 1)->(4, 2) -->\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>(4, 1)->(4, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M111.517,-239.8928C122.9934,-239.2218 136.3613,-239.0761 148.6589,-239.4558\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"148.5274,-242.9533 158.6722,-239.8983 148.8365,-235.9602 148.5274,-242.9533\"/>\n", + "</g>\n", + "<!-- (4, 2)->(4, 1) -->\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>(4, 2)->(4, 1)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M158.6722,-252.1017C147.2061,-252.7756 133.8405,-252.9241 121.537,-252.5473\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"121.6609,-249.0495 111.517,-252.1072 121.3537,-256.0427 121.6609,-249.0495\"/>\n", + "</g>\n", + "<!-- (5, 1) -->\n", + "<g id=\"node14\" class=\"node\">\n", + "<title>(5, 1)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"82.5473\" cy=\"-300\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-296.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(5, 1)</text>\n", + "<text text-anchor=\"middle\" x=\"37\" y=\"-270.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">chain</text>\n", + "<text text-anchor=\"middle\" x=\"37\" y=\"-255.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">swap</text>\n", + "</g>\n", + "<!-- (5, 2) -->\n", + "<g id=\"node15\" class=\"node\">\n", + "<title>(5, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#a020f0\" cx=\"187.5473\" cy=\"-300\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-296.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(5, 2)</text>\n", + "</g>\n", + "<!-- (5, 1)->(5, 2) -->\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>(5, 1)->(5, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M113.1999,-300C123.5669,-300 135.3172,-300 146.3654,-300\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"146.6748,-303.5001 156.6748,-300 146.6748,-296.5001 146.6748,-303.5001\"/>\n", + "</g>\n", + "<!-- (5, 3) -->\n", + "<g id=\"node16\" class=\"node\">\n", + "<title>(5, 3)</title>\n", + "<ellipse fill=\"none\" stroke=\"#a020f0\" cx=\"292.5473\" cy=\"-300\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"292.5473\" y=\"-296.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(5, 3)</text>\n", + "</g>\n", + "<!-- (5, 2)->(5, 3) -->\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>(5, 2)->(5, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M216.517,-293.8928C227.9934,-293.2218 241.3613,-293.0761 253.6589,-293.4558\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"253.5274,-296.9533 263.6722,-293.8983 253.8365,-289.9602 253.5274,-296.9533\"/>\n", + "</g>\n", + "<!-- (5, 3)->(5, 2) -->\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>(5, 3)->(5, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M263.6722,-306.1017C252.2061,-306.7756 238.8405,-306.9241 226.537,-306.5473\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"226.6609,-303.0495 216.517,-306.1072 226.3537,-310.0427 226.6609,-303.0495\"/>\n", + "</g>\n", + "<!-- (6, 1) -->\n", + "<g id=\"node17\" class=\"node\">\n", + "<title>(6, 1)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"82.5473\" cy=\"-354\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-350.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(6, 1)</text>\n", + "<text text-anchor=\"middle\" x=\"26\" y=\"-324.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">midchain</text>\n", + "<text text-anchor=\"middle\" x=\"26\" y=\"-309.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">stop</text>\n", + "</g>\n", + "<!-- (6, 2) -->\n", + "<g id=\"node18\" class=\"node\">\n", + "<title>(6, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"187.5473\" cy=\"-354\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-350.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(6, 2)</text>\n", + "</g>\n", + "<!-- (6, 1)->(6, 2) -->\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>(6, 1)->(6, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M113.1999,-354C123.5669,-354 135.3172,-354 146.3654,-354\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"146.6748,-357.5001 156.6748,-354 146.6748,-350.5001 146.6748,-357.5001\"/>\n", + "</g>\n", + "<!-- (6, 3) -->\n", + "<g id=\"node19\" class=\"node\">\n", + "<title>(6, 3)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"292.5473\" cy=\"-354\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"292.5473\" y=\"-350.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(6, 3)</text>\n", + "</g>\n", + "<!-- (6, 2)->(6, 3) -->\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>(6, 2)->(6, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M218.1999,-354C228.5669,-354 240.3172,-354 251.3654,-354\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"251.6748,-357.5001 261.6748,-354 251.6748,-350.5001 251.6748,-357.5001\"/>\n", + "</g>\n", + "<!-- (6, 4) -->\n", + "<g id=\"node20\" class=\"node\">\n", + "<title>(6, 4)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"397.5473\" cy=\"-354\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"397.5473\" y=\"-350.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(6, 4)</text>\n", + "</g>\n", + "<!-- (6, 3)->(6, 4) -->\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>(6, 3)->(6, 4)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M323.1999,-354C333.5669,-354 345.3172,-354 356.3654,-354\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"356.6748,-357.5001 366.6748,-354 356.6748,-350.5001 356.6748,-357.5001\"/>\n", + "</g>\n", + "<!-- (6, 4)->(6, 4) -->\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>(6, 4)->(6, 4)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M380.6283,-369.1666C375.5014,-379.6641 381.141,-390 397.5473,-390 408.5702,-390 414.733,-385.3342 416.0355,-379.0884\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"419.4855,-378.497 414.4662,-369.1666 412.5715,-379.5906 419.4855,-378.497\"/>\n", + "</g>\n", + "<!-- (6, 5) -->\n", + "<g id=\"node21\" class=\"node\">\n", + "<title>(6, 5)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"82.5473\" cy=\"-408\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-404.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(6, 5)</text>\n", + "</g>\n", + "<!-- (6, 6) -->\n", + "<g id=\"node22\" class=\"node\">\n", + "<title>(6, 6)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"187.5473\" cy=\"-408\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-404.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(6, 6)</text>\n", + "</g>\n", + "<!-- (6, 5)->(6, 6) -->\n", + "<g id=\"edge20\" class=\"edge\">\n", + "<title>(6, 5)->(6, 6)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M113.1999,-408C123.5669,-408 135.3172,-408 146.3654,-408\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"146.6748,-411.5001 156.6748,-408 146.6748,-404.5001 146.6748,-411.5001\"/>\n", + "</g>\n", + "<!-- (6, 7) -->\n", + "<g id=\"node23\" class=\"node\">\n", + "<title>(6, 7)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"292.5473\" cy=\"-408\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"292.5473\" y=\"-404.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(6, 7)</text>\n", + "</g>\n", + "<!-- (6, 6)->(6, 7) -->\n", + "<g id=\"edge21\" class=\"edge\">\n", + "<title>(6, 6)->(6, 7)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M218.1999,-408C228.5669,-408 240.3172,-408 251.3654,-408\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"251.6748,-411.5001 261.6748,-408 251.6748,-404.5001 251.6748,-411.5001\"/>\n", + "</g>\n", + "<!-- (7, 1) -->\n", + "<g id=\"node24\" class=\"node\">\n", + "<title>(7, 1)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"82.5473\" cy=\"-516\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-512.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(7, 1)</text>\n", + "<text text-anchor=\"middle\" x=\"26\" y=\"-486.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">midchain</text>\n", + "<text text-anchor=\"middle\" x=\"26\" y=\"-471.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">swap</text>\n", + "</g>\n", + "<!-- (7, 2) -->\n", + "<g id=\"node25\" class=\"node\">\n", + "<title>(7, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"187.5473\" cy=\"-516\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-512.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(7, 2)</text>\n", + "</g>\n", + "<!-- (7, 1)->(7, 2) -->\n", + "<g id=\"edge22\" class=\"edge\">\n", + "<title>(7, 1)->(7, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M113.1999,-516C123.5669,-516 135.3172,-516 146.3654,-516\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"146.6748,-519.5001 156.6748,-516 146.6748,-512.5001 146.6748,-519.5001\"/>\n", + "</g>\n", + "<!-- (7, 3) -->\n", + "<g id=\"node26\" class=\"node\">\n", + "<title>(7, 3)</title>\n", + "<ellipse fill=\"none\" stroke=\"#a020f0\" cx=\"292.5473\" cy=\"-516\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"292.5473\" y=\"-512.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(7, 3)</text>\n", + "</g>\n", + "<!-- (7, 2)->(7, 3) -->\n", + "<g id=\"edge23\" class=\"edge\">\n", + "<title>(7, 2)->(7, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M218.1999,-516C228.5669,-516 240.3172,-516 251.3654,-516\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"251.6748,-519.5001 261.6748,-516 251.6748,-512.5001 251.6748,-519.5001\"/>\n", + "</g>\n", + "<!-- (7, 4) -->\n", + "<g id=\"node27\" class=\"node\">\n", + "<title>(7, 4)</title>\n", + "<ellipse fill=\"none\" stroke=\"#a020f0\" cx=\"397.5473\" cy=\"-516\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"397.5473\" y=\"-512.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(7, 4)</text>\n", + "</g>\n", + "<!-- (7, 3)->(7, 4) -->\n", + "<g id=\"edge24\" class=\"edge\">\n", + "<title>(7, 3)->(7, 4)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M321.517,-509.8928C332.9934,-509.2218 346.3613,-509.0761 358.6589,-509.4558\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"358.5274,-512.9533 368.6722,-509.8983 358.8365,-505.9602 358.5274,-512.9533\"/>\n", + "</g>\n", + "<!-- (7, 4)->(7, 3) -->\n", + "<g id=\"edge25\" class=\"edge\">\n", + "<title>(7, 4)->(7, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M368.6722,-522.1017C357.2061,-522.7756 343.8405,-522.9241 331.537,-522.5473\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"331.6609,-519.0495 321.517,-522.1072 331.3537,-526.0427 331.6609,-519.0495\"/>\n", + "</g>\n", + "<!-- (7, 5) -->\n", + "<g id=\"node28\" class=\"node\">\n", + "<title>(7, 5)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"292.5473\" cy=\"-462\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"292.5473\" y=\"-458.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(7, 5)</text>\n", + "</g>\n", + "<!-- (7, 5)->(7, 4) -->\n", + "<g id=\"edge26\" class=\"edge\">\n", + "<title>(7, 5)->(7, 4)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M315.59,-473.8505C330.1236,-481.325 349.1103,-491.0896 365.1489,-499.3379\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"363.7019,-502.5295 374.1955,-503.9905 366.9033,-496.3045 363.7019,-502.5295\"/>\n", + "</g>\n", + "<!-- (7, 6) -->\n", + "<g id=\"node29\" class=\"node\">\n", + "<title>(7, 6)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"187.5473\" cy=\"-462\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-458.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(7, 6)</text>\n", + "</g>\n", + "<!-- (7, 6)->(7, 5) -->\n", + "<g id=\"edge27\" class=\"edge\">\n", + "<title>(7, 6)->(7, 5)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M218.1999,-462C228.5669,-462 240.3172,-462 251.3654,-462\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"251.6748,-465.5001 261.6748,-462 251.6748,-458.5001 251.6748,-465.5001\"/>\n", + "</g>\n", + "<!-- (8, 1) -->\n", + "<g id=\"node30\" class=\"node\">\n", + "<title>(8, 1)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"82.5473\" cy=\"-624\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-620.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(8, 1)</text>\n", + "<text text-anchor=\"middle\" x=\"29\" y=\"-594.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Land on</text>\n", + "<text text-anchor=\"middle\" x=\"29\" y=\"-579.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Same</text>\n", + "</g>\n", + "<!-- (8, 2) -->\n", + "<g id=\"node31\" class=\"node\">\n", + "<title>(8, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#0000ff\" cx=\"187.5473\" cy=\"-597\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-593.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(8, 2)</text>\n", + "</g>\n", + "<!-- (8, 1)->(8, 2) -->\n", + "<g id=\"edge28\" class=\"edge\">\n", + "<title>(8, 1)->(8, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M110.6854,-616.7645C122.5727,-613.7077 136.6012,-610.1004 149.3976,-606.8099\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"150.5183,-610.1357 159.3315,-604.2555 148.7749,-603.3562 150.5183,-610.1357\"/>\n", + "</g>\n", + "<!-- (8, 3) -->\n", + "<g id=\"node32\" class=\"node\">\n", + "<title>(8, 3)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"82.5473\" cy=\"-570\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-566.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(8, 3)</text>\n", + "</g>\n", + "<!-- (8, 3)->(8, 2) -->\n", + "<g id=\"edge29\" class=\"edge\">\n", + "<title>(8, 3)->(8, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M110.6854,-577.2355C122.5727,-580.2923 136.6012,-583.8996 149.3976,-587.1901\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"148.7749,-590.6438 159.3315,-589.7445 150.5183,-583.8643 148.7749,-590.6438\"/>\n", + "</g>\n", + "<!-- (9, 1) -->\n", + "<g id=\"node33\" class=\"node\">\n", + "<title>(9, 1)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"82.5473\" cy=\"-732\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-728.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(9, 1)</text>\n", + "<text text-anchor=\"middle\" x=\"34.5\" y=\"-702.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">chains</text>\n", + "<text text-anchor=\"middle\" x=\"34.5\" y=\"-687.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">onto</text>\n", + "<text text-anchor=\"middle\" x=\"34.5\" y=\"-672.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">same</text>\n", + "</g>\n", + "<!-- (9, 2) -->\n", + "<g id=\"node34\" class=\"node\">\n", + "<title>(9, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"187.5473\" cy=\"-732\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-728.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(9, 2)</text>\n", + "</g>\n", + "<!-- (9, 1)->(9, 2) -->\n", + "<g id=\"edge30\" class=\"edge\">\n", + "<title>(9, 1)->(9, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M113.1999,-732C123.5669,-732 135.3172,-732 146.3654,-732\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"146.6748,-735.5001 156.6748,-732 146.6748,-728.5001 146.6748,-735.5001\"/>\n", + "</g>\n", + "<!-- (9, 3) -->\n", + "<g id=\"node35\" class=\"node\">\n", + "<title>(9, 3)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"292.5473\" cy=\"-732\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"292.5473\" y=\"-728.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(9, 3)</text>\n", + "</g>\n", + "<!-- (9, 2)->(9, 3) -->\n", + "<g id=\"edge31\" class=\"edge\">\n", + "<title>(9, 2)->(9, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M218.1999,-732C228.5669,-732 240.3172,-732 251.3654,-732\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"251.6748,-735.5001 261.6748,-732 251.6748,-728.5001 251.6748,-735.5001\"/>\n", + "</g>\n", + "<!-- (9, 4) -->\n", + "<g id=\"node36\" class=\"node\">\n", + "<title>(9, 4)</title>\n", + "<ellipse fill=\"none\" stroke=\"#0000ff\" cx=\"397.5473\" cy=\"-705\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"397.5473\" y=\"-701.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(9, 4)</text>\n", + "</g>\n", + "<!-- (9, 3)->(9, 4) -->\n", + "<g id=\"edge32\" class=\"edge\">\n", + "<title>(9, 3)->(9, 4)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M320.6854,-724.7645C332.5727,-721.7077 346.6012,-718.1004 359.3976,-714.8099\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"360.5183,-718.1357 369.3315,-712.2555 358.7749,-711.3562 360.5183,-718.1357\"/>\n", + "</g>\n", + "<!-- (9, 5) -->\n", + "<g id=\"node37\" class=\"node\">\n", + "<title>(9, 5)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"292.5473\" cy=\"-678\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"292.5473\" y=\"-674.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(9, 5)</text>\n", + "</g>\n", + "<!-- (9, 5)->(9, 4) -->\n", + "<g id=\"edge33\" class=\"edge\">\n", + "<title>(9, 5)->(9, 4)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M320.6854,-685.2355C332.5727,-688.2923 346.6012,-691.8996 359.3976,-695.1901\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"358.7749,-698.6438 369.3315,-697.7445 360.5183,-691.8643 358.7749,-698.6438\"/>\n", + "</g>\n", + "<!-- (9, 6) -->\n", + "<g id=\"node38\" class=\"node\">\n", + "<title>(9, 6)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"187.5473\" cy=\"-678\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-674.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(9, 6)</text>\n", + "</g>\n", + "<!-- (9, 6)->(9, 5) -->\n", + "<g id=\"edge34\" class=\"edge\">\n", + "<title>(9, 6)->(9, 5)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M218.1999,-678C228.5669,-678 240.3172,-678 251.3654,-678\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"251.6748,-681.5001 261.6748,-678 251.6748,-674.5001 251.6748,-681.5001\"/>\n", + "</g>\n", + "<!-- (9, 7) -->\n", + "<g id=\"node39\" class=\"node\">\n", + "<title>(9, 7)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"82.5473\" cy=\"-678\" rx=\"30.5947\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-674.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(9, 7)</text>\n", + "</g>\n", + "<!-- (9, 7)->(9, 6) -->\n", + "<g id=\"edge35\" class=\"edge\">\n", + "<title>(9, 7)->(9, 6)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M113.1999,-678C123.5669,-678 135.3172,-678 146.3654,-678\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"146.6748,-681.5001 156.6748,-678 146.6748,-674.5001 146.6748,-681.5001\"/>\n", + "</g>\n", + "<!-- (10, 1) -->\n", + "<g id=\"node40\" class=\"node\">\n", + "<title>(10, 1)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"82.5473\" cy=\"-894\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-890.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(10, 1)</text>\n", + "<text text-anchor=\"middle\" x=\"31.0473\" y=\"-864.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">3-way</text>\n", + "<text text-anchor=\"middle\" x=\"31.0473\" y=\"-849.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">same</text>\n", + "</g>\n", + "<!-- (10, 2) -->\n", + "<g id=\"node41\" class=\"node\">\n", + "<title>(10, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#0000ff\" cx=\"187.5473\" cy=\"-840\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-836.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(10, 2)</text>\n", + "</g>\n", + "<!-- (10, 1)->(10, 2) -->\n", + "<g id=\"edge36\" class=\"edge\">\n", + "<title>(10, 1)->(10, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M107.1651,-881.3394C121.0194,-874.2143 138.5231,-865.2124 153.657,-857.4293\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"155.4277,-860.4544 162.7199,-852.7684 152.2262,-854.2294 155.4277,-860.4544\"/>\n", + "</g>\n", + "<!-- (10, 3) -->\n", + "<g id=\"node42\" class=\"node\">\n", + "<title>(10, 3)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"82.5473\" cy=\"-840\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-836.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(10, 3)</text>\n", + "</g>\n", + "<!-- (10, 3)->(10, 2) -->\n", + "<g id=\"edge37\" class=\"edge\">\n", + "<title>(10, 3)->(10, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M117.2192,-840C125.373,-840 134.1778,-840 142.707,-840\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"142.9118,-843.5001 152.9118,-840 142.9117,-836.5001 142.9118,-843.5001\"/>\n", + "</g>\n", + "<!-- (11, 2) -->\n", + "<g id=\"node43\" class=\"node\">\n", + "<title>(11, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"82.5473\" cy=\"-786\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-782.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(11, 2)</text>\n", + "</g>\n", + "<!-- (11, 2)->(10, 2) -->\n", + "<g id=\"edge38\" class=\"edge\">\n", + "<title>(11, 2)->(10, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M107.1651,-798.6606C121.0194,-805.7857 138.5231,-814.7876 153.657,-822.5707\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"152.2262,-825.7706 162.7199,-827.2316 155.4277,-819.5456 152.2262,-825.7706\"/>\n", + "</g>\n", + "<!-- (12, 1) -->\n", + "<g id=\"node44\" class=\"node\">\n", + "<title>(12, 1)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"82.5473\" cy=\"-948\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-944.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(12, 1)</text>\n", + "<text text-anchor=\"middle\" x=\"37.5473\" y=\"-918.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Tee</text>\n", + "</g>\n", + "<!-- (12, 2) -->\n", + "<g id=\"node45\" class=\"node\">\n", + "<title>(12, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"187.5473\" cy=\"-948\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-944.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(12, 2)</text>\n", + "</g>\n", + "<!-- (12, 1)->(12, 2) -->\n", + "<g id=\"edge39\" class=\"edge\">\n", + "<title>(12, 1)->(12, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M117.2192,-948C125.373,-948 134.1778,-948 142.707,-948\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"142.9118,-951.5001 152.9118,-948 142.9117,-944.5001 142.9118,-951.5001\"/>\n", + "</g>\n", + "<!-- (12, 3) -->\n", + "<g id=\"node46\" class=\"node\">\n", + "<title>(12, 3)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff00ff\" cx=\"292.5473\" cy=\"-921\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"292.5473\" y=\"-917.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(12, 3)</text>\n", + "</g>\n", + "<!-- (12, 2)->(12, 3) -->\n", + "<g id=\"edge40\" class=\"edge\">\n", + "<title>(12, 2)->(12, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M218.7665,-939.9722C229.0413,-937.3301 240.6252,-934.3514 251.5168,-931.5507\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"252.4538,-934.9237 261.2671,-929.0435 250.7105,-928.1442 252.4538,-934.9237\"/>\n", + "</g>\n", + "<!-- (12, 4) -->\n", + "<g id=\"node47\" class=\"node\">\n", + "<title>(12, 4)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"397.5473\" cy=\"-921\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"397.5473\" y=\"-917.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(12, 4)</text>\n", + "</g>\n", + "<!-- (12, 3)->(12, 4) -->\n", + "<g id=\"edge41\" class=\"edge\">\n", + "<title>(12, 3)->(12, 4)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M327.2192,-921C335.373,-921 344.1778,-921 352.707,-921\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"352.9118,-924.5001 362.9118,-921 352.9117,-917.5001 352.9118,-924.5001\"/>\n", + "</g>\n", + "<!-- (13, 3) -->\n", + "<g id=\"node48\" class=\"node\">\n", + "<title>(13, 3)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"187.5473\" cy=\"-894\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-890.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(13, 3)</text>\n", + "</g>\n", + "<!-- (13, 3)->(12, 3) -->\n", + "<g id=\"edge42\" class=\"edge\">\n", + "<title>(13, 3)->(12, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M218.7665,-902.0278C229.0413,-904.6699 240.6252,-907.6486 251.5168,-910.4493\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"250.7105,-913.8558 261.2671,-912.9565 252.4538,-907.0763 250.7105,-913.8558\"/>\n", + "</g>\n", + "<!-- (14, 1) -->\n", + "<g id=\"node49\" class=\"node\">\n", + "<title>(14, 1)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"82.5473\" cy=\"-1110\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-1106.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(14, 1)</text>\n", + "<text text-anchor=\"middle\" x=\"35.5473\" y=\"-1080.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Tree</text>\n", + "</g>\n", + "<!-- (14, 2) -->\n", + "<g id=\"node50\" class=\"node\">\n", + "<title>(14, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"187.5473\" cy=\"-1110\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-1106.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(14, 2)</text>\n", + "</g>\n", + "<!-- (14, 1)->(14, 2) -->\n", + "<g id=\"edge43\" class=\"edge\">\n", + "<title>(14, 1)->(14, 2)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M117.2192,-1110C125.373,-1110 134.1778,-1110 142.707,-1110\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"142.9118,-1113.5001 152.9118,-1110 142.9117,-1106.5001 142.9118,-1113.5001\"/>\n", + "</g>\n", + "<!-- (14, 3) -->\n", + "<g id=\"node51\" class=\"node\">\n", + "<title>(14, 3)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff00ff\" cx=\"292.5473\" cy=\"-1083\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"292.5473\" y=\"-1079.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(14, 3)</text>\n", + "</g>\n", + "<!-- (14, 2)->(14, 3) -->\n", + "<g id=\"edge44\" class=\"edge\">\n", + "<title>(14, 2)->(14, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M218.7665,-1101.9722C229.0413,-1099.3301 240.6252,-1096.3514 251.5168,-1093.5507\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"252.4538,-1096.9237 261.2671,-1091.0435 250.7105,-1090.1442 252.4538,-1096.9237\"/>\n", + "</g>\n", + "<!-- (14, 4) -->\n", + "<g id=\"node52\" class=\"node\">\n", + "<title>(14, 4)</title>\n", + "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"397.5473\" cy=\"-1083\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"397.5473\" y=\"-1079.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(14, 4)</text>\n", + "</g>\n", + "<!-- (14, 3)->(14, 4) -->\n", + "<g id=\"edge45\" class=\"edge\">\n", + "<title>(14, 3)->(14, 4)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M327.2192,-1083C335.373,-1083 344.1778,-1083 352.707,-1083\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"352.9118,-1086.5001 362.9118,-1083 352.9117,-1079.5001 352.9118,-1086.5001\"/>\n", + "</g>\n", + "<!-- (15, 3) -->\n", + "<g id=\"node53\" class=\"node\">\n", + "<title>(15, 3)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"187.5473\" cy=\"-1056\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"187.5473\" y=\"-1052.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(15, 3)</text>\n", + "</g>\n", + "<!-- (15, 3)->(14, 3) -->\n", + "<g id=\"edge46\" class=\"edge\">\n", + "<title>(15, 3)->(14, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M218.7665,-1064.0278C229.0413,-1066.6699 240.6252,-1069.6486 251.5168,-1072.4493\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"250.7105,-1075.8558 261.2671,-1074.9565 252.4538,-1069.0763 250.7105,-1075.8558\"/>\n", + "</g>\n", + "<!-- (15, 2) -->\n", + "<g id=\"node54\" class=\"node\">\n", + "<title>(15, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"82.5473\" cy=\"-1056\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-1052.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(15, 2)</text>\n", + "</g>\n", + "<!-- (15, 2)->(15, 3) -->\n", + "<g id=\"edge47\" class=\"edge\">\n", + "<title>(15, 2)->(15, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M117.2192,-1056C125.373,-1056 134.1778,-1056 142.707,-1056\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"142.9118,-1059.5001 152.9118,-1056 142.9117,-1052.5001 142.9118,-1059.5001\"/>\n", + "</g>\n", + "<!-- (16, 2) -->\n", + "<g id=\"node55\" class=\"node\">\n", + "<title>(16, 2)</title>\n", + "<ellipse fill=\"none\" stroke=\"#ff0000\" cx=\"82.5473\" cy=\"-1002\" rx=\"34.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"82.5473\" y=\"-998.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">(16, 2)</text>\n", + "</g>\n", + "<!-- (16, 2)->(15, 3) -->\n", + "<g id=\"edge48\" class=\"edge\">\n", + "<title>(16, 2)->(15, 3)</title>\n", + "<path fill=\"none\" stroke=\"#000000\" d=\"M107.1651,-1014.6606C121.0194,-1021.7857 138.5231,-1030.7876 153.657,-1038.5707\"/>\n", + "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"152.2262,-1041.7706 162.7199,-1043.2316 155.4277,-1035.5456 152.2262,-1041.7706\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<graphviz.files.Source at 0x7f904f9993c8>" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "gvDot = ac.render(omc)\n", "gvDot" @@ -149,7 +837,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -158,9 +846,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ImportError", + "evalue": "('requires pygraphviz ', 'http://pygraphviz.github.io/')", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/home3/jeremy/projects/aicrowd/rl-trains/networkx/networkx/drawing/nx_agraph.py\u001b[0m in \u001b[0;36mto_agraph\u001b[0;34m(N)\u001b[0m\n\u001b[1;32m 124\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 125\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mpygraphviz\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 126\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'pygraphviz'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-8-0d3b3cd04c90>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0moAG\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdrawing\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnx_agraph\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_agraph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0momc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mG\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0moAG\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlayout\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"dot\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0msDot\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0moAG\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_string\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0moSrc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgraphviz\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSource\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msDot\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/home3/jeremy/projects/aicrowd/rl-trains/networkx/networkx/drawing/nx_agraph.py\u001b[0m in \u001b[0;36mto_agraph\u001b[0;34m(N)\u001b[0m\n\u001b[1;32m 126\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 127\u001b[0m raise ImportError('requires pygraphviz ',\n\u001b[0;32m--> 128\u001b[0;31m 'http://pygraphviz.github.io/')\n\u001b[0m\u001b[1;32m 129\u001b[0m \u001b[0mdirected\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mN\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_directed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 130\u001b[0m \u001b[0mstrict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnumber_of_selfloops\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mN\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mN\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_multigraph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mImportError\u001b[0m: ('requires pygraphviz ', 'http://pygraphviz.github.io/')" + ] + } + ], "source": [ "oAG = nx.drawing.nx_agraph.to_agraph(omc.G)\n", "oAG.layout(\"dot\")\n",